From 826976ff37a83fc8fec64aeb19727d69afc6fcfa Mon Sep 17 00:00:00 2001 From: heheng <475597332@qq.com> Date: 星期四, 31 七月 2025 16:05:24 +0800 Subject: [PATCH] 修改人员角色绑定 --- multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java | 82 +++++++++++++++++++++++++++++++--------- 1 files changed, 63 insertions(+), 19 deletions(-) diff --git a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java index 379e974..04d642e 100644 --- a/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java +++ b/multi-system/src/main/java/com/gkhy/exam/system/service/impl/SysUserServiceImpl.java @@ -7,6 +7,7 @@ import com.gkhy.exam.common.api.CommonPage; import com.gkhy.exam.common.constant.CacheConstant; import com.gkhy.exam.common.constant.UserConstant; +import com.gkhy.exam.common.domain.entity.SysRole; import com.gkhy.exam.common.domain.entity.SysUser; import com.gkhy.exam.common.enums.UserTypeEnum; import com.gkhy.exam.common.exception.ApiException; @@ -14,19 +15,19 @@ import com.gkhy.exam.common.utils.RedisUtils; import com.gkhy.exam.common.utils.SecurityUtils; import com.gkhy.exam.common.utils.StringUtils; +import com.gkhy.exam.system.domain.ExStudent; import com.gkhy.exam.system.domain.SysUserRole; import com.gkhy.exam.system.mapper.SysUserMapper; import com.gkhy.exam.system.mapper.SysUserRoleMapper; +import com.gkhy.exam.system.service.ExStudentService; import com.gkhy.exam.system.service.SysConfigService; import com.gkhy.exam.system.service.SysUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import javax.validation.Validator; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.TimeUnit; @@ -50,6 +51,9 @@ @Autowired private SysUserRoleMapper userRoleMapper; + @Autowired + private ExStudentService exStudentService; + @Override public CommonPage<SysUser> selectUserList(SysUser user) { SysUser currentUser=SecurityUtils.getLoginUser().getUser(); @@ -58,7 +62,7 @@ if(!currentUser.getUserType().equals(UserTypeEnum.SYSTEM_USER.getCode())){ user.setCompanyId(currentUser.getCompanyId()); Map<String,Object> paramsMap=new HashMap<>(); - paramsMap.put("userType",currentUser.getUserType()); +// paramsMap.put("userType",currentUser.getUserType()); user.setParams(paramsMap); } PageUtils.startPage(); @@ -124,28 +128,62 @@ @Override public int deleteUserById(Long userId) { SysUser user=checkUserDataScope(userId); + if (user.getId().toString().equals("1")){ + throw new ApiException("管理员用户不能被删除"); + } delCacheByUsername(user.getUsername()); return baseMapper.deleteUserById(userId); } @Override + @Transactional(rollbackFor = RuntimeException.class) public int addUser(SysUser user) { + ExStudent exStudent = new ExStudent(); + exStudent.setCompanyId(user.getCompanyId()); + exStudent.setName(user.getName()); + exStudent.setPassword(user.getPassword()); + exStudent.setDeptId(user.getDeptId()); + exStudent.setDuty(user.getDuty()); + exStudent.setSex(user.getSex()); + exStudent.setPhone(user.getPhone()); checkRequestData(user); checkUserAllowed(user); user.setCreateBy(SecurityUtils.getUsername()); user.setPassword(SecurityUtils.encryptPassword(Base64.decodeStr(user.getPassword()))); int row=baseMapper.insert(user); - List<SysUserRole> userRoleList = new ArrayList<>(); - SysUserRole sysUserRole = new SysUserRole(); - sysUserRole.setUserId(user.getId()); - sysUserRole.setRoleId(2L); - userRoleList.add(sysUserRole); - userRoleMapper.batchUserRole(userRoleList); + + batchSaveRole(user.getRoles(),user.getId(),false); + + exStudentService.insertStudent(exStudent); if(row<1){ throw new ApiException("新增用户失败"); } return row; + } + + public void batchSaveRole(List<SysRole> roleIds, Long userId, boolean isUpdate){ + + if (isUpdate){ + userRoleMapper.deleteUserRoleByUserId(userId); + } + + List<SysUserRole> userRoleList = new ArrayList<>(); + if(roleIds != null && !roleIds.isEmpty()){ + + for (SysRole roleId : roleIds) { + SysUserRole sysUserRole = new SysUserRole(); + sysUserRole.setUserId(userId); + sysUserRole.setRoleId(roleId.getRoleId()); + userRoleList.add(sysUserRole); + } + }else { + SysUserRole sysUserRole = new SysUserRole(); + sysUserRole.setUserId(userId); + sysUserRole.setRoleId(2L); + userRoleList.add(sysUserRole); + } + userRoleMapper.batchUserRole(userRoleList); } @Override @@ -155,6 +193,8 @@ user.setUpdateBy(SecurityUtils.getUsername()); user.setPassword(null); int row=baseMapper.updateById(user); + batchSaveRole(user.getRoles(),user.getId(),true); + if(row<1){ throw new ApiException("更新用户信息失败"); } @@ -227,20 +267,24 @@ Integer currentUserType=currentUser.getUserType(); Integer userType=user.getUserType(); //校验权限,规则:上一级用户可以增加下一级用户类型的用户 - if(currentUserType.equals(UserTypeEnum.SYSTEM_USER.getCode())){ - if( !userType.equals(UserTypeEnum.SYSTEM_USER.getCode())&&!userType.equals(UserTypeEnum.OTHER_USER.getCode()) &&!userType.equals(UserTypeEnum.COMPANY_USER.getCode())){ - throw new ApiException("管理员只能操作管理员、企业级和其他类型的用户"); - } - }else{ +// if(currentUserType.equals(UserTypeEnum.SYSTEM_USER.getCode())){ +// if( !userType.equals(UserTypeEnum.SYSTEM_USER.getCode())&&!userType.equals(UserTypeEnum.OTHER_USER.getCode()) &&!userType.equals(UserTypeEnum.COMPANY_USER.getCode())){ +// throw new ApiException("管理员只能操作管理员、企业级和其他类型的用户"); +// } +// if (user.getId().toString().equals("1")){ +// throw new ApiException("管理员用户不能被删除"); +// } +// }else{ + if(!currentUserType.equals(UserTypeEnum.SYSTEM_USER.getCode())){ if(userType.equals(UserTypeEnum.OTHER_USER.getCode())){ throw new ApiException("没有权限操作或者更新上级用户类型的用户"); } - if(currentUserType.equals(UserTypeEnum.OTHER_USER.getCode())){ - if(userType<=UserTypeEnum.COMPANY_USER.getCode()){ + if(currentUserType.equals(UserTypeEnum.OTHER_USER.getCode()) || currentUserType.equals(UserTypeEnum.COMPANY_ADMIN.getCode())){ + if(userType<=UserTypeEnum.COMPANY_USER.getCode() && !currentUserType.equals(UserTypeEnum.COMPANY_ADMIN.getCode())){ throw new ApiException("没有权限操作或者更新上级用户类型的用户"); } }else{ - if(userType<=currentUserType){ + if(userType<currentUserType){ throw new ApiException("没有权限操作或者更新上级用户类型的用户"); } } -- Gitblit v1.9.2