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.converter.UserRoleBindConverter;
|
import com.gkhy.testFourierSpecialGasMonitor.domain.account.entity.SysUserRoleBind;
|
import com.gkhy.testFourierSpecialGasMonitor.domain.account.model.dto.RoleInfoDoaminDTO;
|
import com.gkhy.testFourierSpecialGasMonitor.domain.account.model.dto.SysUserRoleBindDomainDTO;
|
import com.gkhy.testFourierSpecialGasMonitor.domain.account.model.dto.UserInfoDomainDTO;
|
|
import com.gkhy.testFourierSpecialGasMonitor.domain.account.repository.jpa.UserRoleBindReposity;
|
import com.gkhy.testFourierSpecialGasMonitor.domain.account.service.RoleDomainService;
|
import com.gkhy.testFourierSpecialGasMonitor.domain.account.service.UserDomainService;
|
import com.gkhy.testFourierSpecialGasMonitor.domain.account.service.UserRoleDomainService;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.stereotype.Service;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
/**
|
* @email 1603559716@qq.com
|
* @author: zf
|
* @date: 2023/3/13
|
* @time: 9:26
|
*/
|
@Service
|
public class UserRoleDomainServiceImpl implements UserRoleDomainService {
|
@Autowired
|
private UserRoleBindReposity userRoleBindReposity;
|
|
@Autowired
|
private RoleDomainService roleDomainService;
|
|
@Autowired
|
private UserDomainService userDomainService;
|
|
@Autowired
|
private UserRoleBindConverter converter;
|
|
@Override
|
public List<SysUserRoleBindDomainDTO> insertBatchUserBindRole(List<Long> roleIds, Long userId) {
|
if(ObjectUtil.isEmpty(roleIds) || ObjectUtil.isEmpty(userId)){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "参数缺失");
|
}
|
//验证用户
|
UserInfoDomainDTO user = userDomainService.getUserInfoById(userId);
|
if(ObjectUtil.isEmpty(user)){
|
throw new BusinessException(this.getClass(), ResultCode.BUSINESS_ERROR_DATA_NOT_EXISIST.getCode(), "用户不存在");
|
}
|
//验证角色是否都存在
|
List<RoleInfoDoaminDTO> roleList = roleDomainService.findAllByIdIn(roleIds);
|
for(Long roleId : roleIds){
|
List<RoleInfoDoaminDTO> collect = roleList.stream().filter(role -> role.getId().equals(roleId)).collect(Collectors.toList());
|
if(collect.size() == 0){
|
throw new BusinessException(this.getClass(), ResultCode.BUSINESS_ERROR_DATA_NOT_EXISIST.getCode(), "角色不存在");
|
}
|
}
|
//绑定用户角色
|
List<SysUserRoleBind> sysUserRoleBindList = new ArrayList<>();
|
for(Long roleId : roleIds){
|
SysUserRoleBind sysUserRoleBind = new SysUserRoleBind();
|
sysUserRoleBind.setRoleId(roleId);
|
sysUserRoleBind.setUserId(userId);
|
sysUserRoleBindList.add(sysUserRoleBind);
|
}
|
List<SysUserRoleBindDomainDTO> list = converter.userRoleBindDomainConverter(userRoleBindReposity.saveAll(sysUserRoleBindList));
|
return list;
|
}
|
|
@Transactional
|
@Override
|
public void updateUserRole(Long userId, List<Long> roleIds) {
|
if(ObjectUtil.isEmpty(roleIds) || ObjectUtil.isEmpty(userId)){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "参数缺失");
|
}
|
//获取原来的角色id
|
List<Long> oldRoleIds = userRoleBindReposity.getByUserId(userId);
|
List<Long> deleteRoleIdList = new ArrayList<>();
|
List<Long> addRoleIdList = roleIds;
|
if (ObjectUtil.isNotEmpty(oldRoleIds)) {
|
//新增
|
addRoleIdList = roleIds.stream().filter(item -> !oldRoleIds.contains(item)).collect(Collectors.toList());
|
//删除
|
deleteRoleIdList = oldRoleIds.stream().filter(item -> !roleIds.contains(item)).collect(Collectors.toList());
|
|
}
|
List<SysUserRoleBind> saveList = new ArrayList<>();
|
for(Long roleId : addRoleIdList){
|
SysUserRoleBind sysUserRoleBind = new SysUserRoleBind();
|
sysUserRoleBind.setRoleId(roleId);
|
sysUserRoleBind.setUserId(userId);
|
saveList.add(sysUserRoleBind);
|
}
|
//删除不需要角色
|
if(deleteRoleIdList.size()>0){
|
userRoleBindReposity.deleteByUserIdAndRoleIds(userId, deleteRoleIdList);
|
}
|
//绑定新增角色
|
if(saveList.size()>0){
|
userRoleBindReposity.saveAll(saveList);
|
}
|
}
|
|
@Override
|
public boolean deleteByUser(Long userId) {
|
if(null == userId){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "参数缺失");
|
}
|
if(userRoleBindReposity.deleteByUserId(userId) > 0){
|
return true;
|
}
|
return false;
|
}
|
|
/*@Override
|
public List<SysUserRoleBindDomainDTO> getUserRoleBind(Long userId) {
|
if(null == userId){
|
throw new BusinessException(this.getClass(), ResultCode.PARAM_ERROR_NULL.getCode(), "参数缺失");
|
}
|
return null;
|
}*/
|
}
|