package com.gkhy.labRiskManage.domain.account.service.impl; import cn.hutool.core.util.ObjectUtil; import com.gkhy.labRiskManage.commons.enums.ResultCode; import com.gkhy.labRiskManage.commons.exception.BusinessException; import com.gkhy.labRiskManage.domain.account.entity.SysUserIdentityBind; import com.gkhy.labRiskManage.domain.account.entity.SysUserRoleBind; import com.gkhy.labRiskManage.domain.account.model.dto.UserIdentityDomainDTO; import com.gkhy.labRiskManage.domain.account.model.dto.UserInfoDomainDTO; import com.gkhy.labRiskManage.domain.account.repository.jpa.SysUserIdentityBindReposity; import com.gkhy.labRiskManage.domain.account.service.SysUserIdentityBindDomainService; import com.gkhy.labRiskManage.domain.account.service.UserDomainService; import com.gkhy.labRiskManage.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 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 userIdentityDomainDTOList = userIdentityDomainService.getListByIds(identityIds); for(Long identityId : identityIds){ List 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 sysUserIdentityBinds = new ArrayList<>(); for(Long identityId : identityIds){ SysUserIdentityBind userIdentityBind = new SysUserIdentityBind(); userIdentityBind.setUserIdentityId(identityId); userIdentityBind.setUserId(userId); sysUserIdentityBinds.add(userIdentityBind); } List result = sysUserIdentityBindReposity.saveAll(sysUserIdentityBinds); if(CollectionUtils.isEmpty(result)){ return false; } return true; } @Override public boolean updateBatchUserIndentityBind(List identityIds, Long userId) { if(CollectionUtils.isEmpty(identityIds) || userId == null){ return false; } //获取原来的身份id List oldUserIdentityIds = sysUserIdentityBindReposity.getByUserId(userId); List deleteUserIdentityIdList = new ArrayList<>(); List 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 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; } }