package com.gkhy.testFourierSpecialGasMonitor.domain.account.service.impl;
|
|
import cn.hutool.core.util.ObjectUtil;
|
import com.gkhy.testFourierSpecialGasMonitor.commons.enums.ResultCode;
|
import com.gkhy.testFourierSpecialGasMonitor.commons.exception.BusinessException;
|
import com.gkhy.testFourierSpecialGasMonitor.domain.account.entity.SysUserIdentityBind;
|
import com.gkhy.testFourierSpecialGasMonitor.domain.account.model.dto.UserIdentityDomainDTO;
|
import com.gkhy.testFourierSpecialGasMonitor.domain.account.model.dto.UserInfoDomainDTO;
|
import com.gkhy.testFourierSpecialGasMonitor.domain.account.repository.jpa.SysUserIdentityBindReposity;
|
import com.gkhy.testFourierSpecialGasMonitor.domain.account.service.SysUserIdentityBindDomainService;
|
import com.gkhy.testFourierSpecialGasMonitor.domain.account.service.UserDomainService;
|
import com.gkhy.testFourierSpecialGasMonitor.domain.account.service.UserIdentityDomainService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.util.CollectionUtils;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* @email 1603559716@qq.com
|
* @author: zf
|
* @date: 2023/4/28
|
* @time: 16:40
|
*/
|
@Service
|
public class SysUserIdentityBindDomainServiceImpl implements SysUserIdentityBindDomainService {
|
@Autowired
|
private UserIdentityDomainService userIdentityDomainService;
|
@Autowired
|
private UserDomainService userDomainService;
|
|
@Autowired
|
private SysUserIdentityBindReposity sysUserIdentityBindReposity;
|
|
@Override
|
public boolean insertBatchUserIndentityBind(List<Long> identityIds, Long userId) {
|
if(CollectionUtils.isEmpty(identityIds) || userId == null){
|
return false;
|
}
|
//验证用户
|
UserInfoDomainDTO user = userDomainService.getUserInfoById(userId);
|
if(ObjectUtil.isEmpty(user)){
|
throw new BusinessException(this.getClass(), ResultCode.BUSINESS_ERROR_DATA_NOT_EXISIST.getCode(), "用户不存在");
|
}
|
//验证身份是否都存在
|
List<UserIdentityDomainDTO> userIdentityDomainDTOList = userIdentityDomainService.getListByIds(identityIds);
|
for(Long identityId : identityIds){
|
List<UserIdentityDomainDTO> collect = userIdentityDomainDTOList.stream().filter(identity -> identity.getId().equals(identityId)).collect(Collectors.toList());
|
if(collect.size() == 0){
|
throw new BusinessException(this.getClass(), ResultCode.BUSINESS_ERROR_DATA_NOT_EXISIST.getCode(), "身份不存在");
|
}
|
}
|
//绑定用户身份
|
List<SysUserIdentityBind> sysUserIdentityBinds = new ArrayList<>();
|
for(Long identityId : identityIds){
|
SysUserIdentityBind userIdentityBind = new SysUserIdentityBind();
|
userIdentityBind.setUserIdentityId(identityId);
|
userIdentityBind.setUserId(userId);
|
sysUserIdentityBinds.add(userIdentityBind);
|
}
|
List<SysUserIdentityBind> result = sysUserIdentityBindReposity.saveAll(sysUserIdentityBinds);
|
if(CollectionUtils.isEmpty(result)){
|
return false;
|
}
|
return true;
|
}
|
|
@Override
|
public boolean updateBatchUserIndentityBind(List<Long> identityIds, Long userId) {
|
if(CollectionUtils.isEmpty(identityIds) || userId == null){
|
return false;
|
}
|
//获取原来的身份id
|
List<Long> oldUserIdentityIds = sysUserIdentityBindReposity.getByUserId(userId);
|
List<Long> deleteUserIdentityIdList = new ArrayList<>();
|
List<Long> addUserIdentityIdList = identityIds;
|
if (ObjectUtil.isNotEmpty(oldUserIdentityIds)) {
|
//新增
|
addUserIdentityIdList = identityIds.stream().filter(item -> !oldUserIdentityIds.contains(item)).collect(Collectors.toList());
|
//删除
|
deleteUserIdentityIdList = oldUserIdentityIds.stream().filter(item -> !identityIds.contains(item)).collect(Collectors.toList());
|
|
}
|
List<SysUserIdentityBind> saveList = new ArrayList<>();
|
for(Long userIdentityId : addUserIdentityIdList){
|
SysUserIdentityBind sysUserIdentityBind = new SysUserIdentityBind();
|
sysUserIdentityBind.setUserIdentityId(userIdentityId);
|
sysUserIdentityBind.setUserId(userId);
|
saveList.add(sysUserIdentityBind);
|
}
|
//删除不需要角色
|
if(deleteUserIdentityIdList.size()>0){
|
sysUserIdentityBindReposity.deleteByUserIdAndUserIdentityIds(userId, deleteUserIdentityIdList);
|
}
|
//绑定新增角色
|
if(saveList.size()>0){
|
sysUserIdentityBindReposity.saveAll(saveList);
|
}
|
|
return true;
|
}
|
|
@Override
|
public boolean deleteByUser(Long userId) {
|
if(null == userId){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "参数缺失");
|
}
|
if(sysUserIdentityBindReposity.deleteByUserId(userId) > 0){
|
return true;
|
}
|
return false;
|
}
|
}
|