|
|
@@ -20,10 +20,12 @@ import cn.start.tz.module.system.controller.admin.user.vo.profile.UserProfileUpd
|
|
|
import cn.start.tz.module.system.controller.admin.user.vo.user.*;
|
|
|
import cn.start.tz.module.system.dal.dataobject.dept.DeptDO;
|
|
|
import cn.start.tz.module.system.dal.dataobject.dept.UserPostDO;
|
|
|
+import cn.start.tz.module.system.dal.dataobject.permission.RoleDO;
|
|
|
import cn.start.tz.module.system.dal.dataobject.permission.UserRoleDO;
|
|
|
import cn.start.tz.module.system.dal.dataobject.user.AdminUserDO;
|
|
|
import cn.start.tz.module.system.dal.dataobject.userqualifications.UserQualificationsDO;
|
|
|
import cn.start.tz.module.system.dal.mysql.dept.UserPostMapper;
|
|
|
+import cn.start.tz.module.system.dal.mysql.permission.RoleMapper;
|
|
|
import cn.start.tz.module.system.dal.mysql.permission.UserRoleMapper;
|
|
|
import cn.start.tz.module.system.dal.mysql.user.AdminUserMapper;
|
|
|
import cn.start.tz.module.system.dal.mysql.userqualifications.UserQualificationsMapper;
|
|
|
@@ -89,6 +91,9 @@ public class AdminUserServiceImpl implements AdminUserService {
|
|
|
@Resource
|
|
|
private UserRoleMapper userRoleMapper;
|
|
|
|
|
|
+ @Resource
|
|
|
+ private RoleMapper roleMapper;
|
|
|
+
|
|
|
@Resource
|
|
|
private FileApi fileApi;
|
|
|
@Resource
|
|
|
@@ -572,6 +577,69 @@ public class AdminUserServiceImpl implements AdminUserService {
|
|
|
return respVO;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public UserRoleImportRespVO importUserRoleList(List<UserRoleImportExcelVO> importList) {
|
|
|
+ if (CollUtil.isEmpty(importList)) {
|
|
|
+ throw exception(USER_IMPORT_LIST_IS_EMPTY);
|
|
|
+ }
|
|
|
+
|
|
|
+ UserRoleImportRespVO respVO = UserRoleImportRespVO.builder()
|
|
|
+ .createUsernames(new ArrayList<>())
|
|
|
+ .failureUsernames(new LinkedHashMap<>())
|
|
|
+ .build();
|
|
|
+
|
|
|
+ importList.forEach(item -> {
|
|
|
+ try {
|
|
|
+ if (item.getUsername() == null || item.getUsername().trim().isEmpty()) {
|
|
|
+ respVO.getFailureUsernames().put(item.getUsername() == null ? "未知" : item.getUsername(), "用户名不能为空");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (item.getRoleCode() == null || item.getRoleCode().trim().isEmpty()) {
|
|
|
+ respVO.getFailureUsernames().put(item.getUsername(), "角色标识不能为空");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 1. 校验用户名是否存在
|
|
|
+ AdminUserDO user = userMapper.selectByUsername(item.getUsername().trim());
|
|
|
+ if (user == null) {
|
|
|
+ respVO.getFailureUsernames().put(item.getUsername(), "用户不存在");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 2. 校验角色标识是否存在
|
|
|
+ RoleDO role = roleMapper.selectByCode(item.getRoleCode().trim());
|
|
|
+ if (role == null) {
|
|
|
+ respVO.getFailureUsernames().put(item.getUsername(), "角色标识不存在: " + item.getRoleCode());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 3. 检查是否已关联
|
|
|
+ List<UserRoleDO> existList = userRoleMapper.selectList(
|
|
|
+ new LambdaQueryWrapperX<UserRoleDO>()
|
|
|
+ .eq(UserRoleDO::getUserId, user.getId())
|
|
|
+ .eq(UserRoleDO::getRoleId, role.getId()));
|
|
|
+ if (CollUtil.isNotEmpty(existList)) {
|
|
|
+ respVO.getFailureUsernames().put(item.getUsername(), "用户已拥有该角色");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 4. 插入关联
|
|
|
+ UserRoleDO userRole = new UserRoleDO();
|
|
|
+ userRole.setUserId(user.getId());
|
|
|
+ userRole.setRoleId(role.getId());
|
|
|
+ userRoleMapper.insert(userRole);
|
|
|
+ respVO.getCreateUsernames().add(item.getUsername());
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("[importUserRoleList] 导入用户角色关联失败: {}", item.getUsername(), e);
|
|
|
+ respVO.getFailureUsernames().put(item.getUsername(), "系统异常: " + e.getMessage());
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ return respVO;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public List<AdminUserDO> getUserListByStatus(Integer status) {
|
|
|
return userMapper.selectListByStatus(status);
|