Bladeren bron

归档后用户部门修改+账号修改+角色权限修改

jzh 1 jaar geleden
bovenliggende
commit
447b1a29e8

+ 40 - 11
zjugis-module-adm/zjugis-module-adm-biz/src/main/java/com/zjugis/module/adm/service/staff/RecordsServiceImpl.java

@@ -1,5 +1,6 @@
 package com.zjugis.module.adm.service.staff;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -14,10 +15,10 @@ import com.zjugis.module.adm.dal.dataobject.staff.StaffRecordSDO;
 import com.zjugis.module.adm.dal.mysql.staff.RecordsMapper;
 import com.zjugis.module.system.api.user.AdminUserApi;
 import com.zjugis.module.system.api.user.dto.AdminUserRespDTO;
-import com.zjugis.module.system.api.user.dto.UserCreateReqDTO;
+import com.zjugis.module.system.api.user.dto.UserBaseDTO;
+import com.zjugis.module.system.api.user.dto.UserUpdateDTO;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.RequestParam;
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
@@ -121,6 +122,12 @@ public class RecordsServiceImpl implements RecordsService {
         staffRecordSDO.setUpdateTime(LocalDateTime.now());
         staffRecordSDO.setUpdater(WebFrameworkUtils.getLoginUserId());
         recordsMapper.update(staffRecordSDO, new LambdaQueryWrapperX<StaffRecordSDO>().eq(StaffRecordSDO::getId, vo.getId()));
+
+        //远程更新部门
+        UserUpdateDTO dto = new UserUpdateDTO();
+        dto.setUserId(vo.getUserId());
+        dto.setDeptId(vo.getDeptId());
+        userApi.updateUserDept(dto);
         return "更新成功";
     }
 
@@ -132,25 +139,47 @@ public class RecordsServiceImpl implements RecordsService {
     }
 
     @Override
+    @Transactional
     public String insertStaff(StaffRecordsDTO dto) {
-        //档案新增
         StaffRecordSDO staffRecordSDO = RecordsConvert.INSTANCE.convertDetail(dto);
-        staffRecordSDO.setCreateTime(LocalDateTime.now());
-        staffRecordSDO.setCreator(WebFrameworkUtils.getLoginUserId());
-        recordsMapper.insert(staffRecordSDO);
 
-        //新增用户账号和相关部门角色关联关系
-        UserCreateReqDTO user = initUser(staffRecordSDO);
-        userApi.createUser(user);
+        //新建员工账号以及其相关的关系 如果账号已经存在就开启账号的使用状态 以及修改其相关的权限和部门关系
+        UserBaseDTO user = initUser(staffRecordSDO);
+        CommonResult<String> result = userApi.createUser(user);
+        if (result.getCode() != 0) {
+            throw new RuntimeException(result.getMsg());
+        }
+        String userId = result.getData();
+
+
+        //判断该员工档案是否已经存在 存在的话就直接改状态不存在就新增
+        StaffRecordSDO ex = recordsMapper.selectOne(new LambdaQueryWrapperX<StaffRecordSDO>().eq(StaffRecordSDO::getUserId, userId));
+        if (ex != null) {
+            BeanUtil.copyProperties(staffRecordSDO, ex);
+            ex.setUpdater(WebFrameworkUtils.getLoginUserId());
+            ex.setUpdateTime(LocalDateTime.now());
+            recordsMapper.updateById(ex);
+        } else {
+            staffRecordSDO.setCreator(WebFrameworkUtils.getLoginUserId());
+            staffRecordSDO.setCreateTime(LocalDateTime.now());
+            staffRecordSDO.setUserId(userId);
+            recordsMapper.insert(staffRecordSDO);
+        }
+
+
         return "true";
     }
 
-    private UserCreateReqDTO initUser(StaffRecordSDO staffRecordSDO) {
-        UserCreateReqDTO dto = new UserCreateReqDTO();
+    private UserBaseDTO initUser(StaffRecordSDO staffRecordSDO) {
+        UserBaseDTO dto = new UserBaseDTO();
         dto.setUsername(staffRecordSDO.getLoginName());
         dto.setNickname(staffRecordSDO.getNickname());
         dto.setDeptId(staffRecordSDO.getDeptId());
         dto.setMobile(staffRecordSDO.getMobilePhone());
+        dto.setSex(staffRecordSDO.getSex());
+        if (staffRecordSDO.getUserId() != null) {
+            dto.setUserId(staffRecordSDO.getUserId());
+        }
         return dto;
     }
 }

+ 13 - 1
zjugis-module-system/zjugis-module-system-api/src/main/java/com/zjugis/module/system/api/user/AdminUserApi.java

@@ -3,7 +3,9 @@ package com.zjugis.module.system.api.user;
 import com.zjugis.framework.common.pojo.CommonResult;
 import com.zjugis.framework.common.util.collection.CollectionUtils;
 import com.zjugis.module.system.api.user.dto.AdminUserRespDTO;
+import com.zjugis.module.system.api.user.dto.UserBaseDTO;
 import com.zjugis.module.system.api.user.dto.UserCreateReqDTO;
+import com.zjugis.module.system.api.user.dto.UserUpdateDTO;
 import com.zjugis.module.system.enums.ApiConstants;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import io.swagger.v3.oas.annotations.Parameter;
@@ -95,9 +97,19 @@ public interface AdminUserApi {
     CommonResult<Boolean> validateUserList(@RequestParam("ids") Set<String> ids);
 
 
+    /**
+     * 新增用户+职位+角色+部门
+     */
     @PostMapping(PREFIX + "/createUser")
     @Operation(summary = "新增用户")
-    CommonResult<Boolean> createUser(UserCreateReqDTO vo);
+    CommonResult<String> createUser(UserBaseDTO vo);
+
+    /**
+     * 编辑用户部门关联关系(增删改)
+     */
+    @PostMapping(PREFIX + "updateUserDept")
+    @Operation(summary = "编辑用户部门关联关系")
+    CommonResult<Boolean> updateUserDept(UserUpdateDTO dto);
 
 
 }

+ 2 - 17
zjugis-module-system/zjugis-module-system-api/src/main/java/com/zjugis/module/system/api/user/dto/UserBaseDTO.java

@@ -19,13 +19,9 @@ import java.util.Set;
 public class UserBaseDTO {
 
     @Schema(description = "用户账号", requiredMode = Schema.RequiredMode.REQUIRED, example = "zjugis")
-    @NotBlank(message = "用户账号不能为空")
-    @Pattern(regexp = "^[a-zA-Z0-9]{4,30}$", message = "用户账号由 数字、字母 组成")
-    @Size(min = 4, max = 30, message = "用户账号长度为 4-30 个字符")
     private String username;
 
     @Schema(description = "用户昵称", requiredMode = Schema.RequiredMode.REQUIRED, example = "芋艿")
-    @Size(max = 30, message = "用户昵称长度不能超过30个字符")
     private String nickname;
 
     @Schema(description = "备注", example = "我是一个用户")
@@ -34,15 +30,7 @@ public class UserBaseDTO {
     @Schema(description = "部门ID", example = "我是一个用户")
     private String deptId;
 
-    @Schema(description = "次要部门", example = "我是一个用户")
-    private List<String> deptIds;
-
-    @Schema(description = "岗位编号数组", example = "1")
-    private Set<Long> postIds;
-
     @Schema(description = "用户邮箱", example = "zjugis@iocoder.cn")
-    @Email(message = "邮箱格式不正确")
-    @Size(max = 50, message = "邮箱长度不能超过 50 个字符")
     private String email;
 
     @Schema(description = "手机号码", example = "15601691300")
@@ -52,9 +40,6 @@ public class UserBaseDTO {
     @Schema(description = "用户性别,参见 SexEnum 枚举类", example = "1")
     private Integer sex;
 
-    @Schema(description = "用户头像", example = "https://10.10.10.7:18080/xxx.png")
-    private String avatar;
-
-    @Schema(description = "电子签名", example = "https://10.10.10.7:18080/xxx.png")
-    private String signatureUrl;
+    @Schema(description = "用户ID")
+    private String userId;
 }

+ 26 - 0
zjugis-module-system/zjugis-module-system-api/src/main/java/com/zjugis/module/system/api/user/dto/UserUpdateDTO.java

@@ -0,0 +1,26 @@
+package com.zjugis.module.system.api.user.dto;
+
+import com.zjugis.framework.common.validation.Mobile;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import javax.validation.constraints.Email;
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.Pattern;
+import javax.validation.constraints.Size;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @author jzh
+ * @since 2024/3/1 10:05
+ */
+@Data
+public class UserUpdateDTO {
+
+    @Schema(description = "用户ID")
+    private String userId;
+
+    @Schema(description = "部门ID")
+    private String deptId;
+}

+ 14 - 7
zjugis-module-system/zjugis-module-system-biz/src/main/java/com/zjugis/module/system/api/user/AdminUserApiImpl.java

@@ -3,10 +3,16 @@ package com.zjugis.module.system.api.user;
 import com.zjugis.framework.common.enums.CommonStatusEnum;
 import com.zjugis.framework.common.pojo.CommonResult;
 import com.zjugis.module.system.api.user.dto.AdminUserRespDTO;
+import com.zjugis.module.system.api.user.dto.UserBaseDTO;
 import com.zjugis.module.system.api.user.dto.UserCreateReqDTO;
+import com.zjugis.module.system.api.user.dto.UserUpdateDTO;
 import com.zjugis.module.system.controller.admin.user.vo.user.UserCreateReqVO;
+import com.zjugis.module.system.controller.admin.user.vo.user.UserUpdateDeptIdsReqVO;
 import com.zjugis.module.system.convert.user.UserConvert;
+import com.zjugis.module.system.dal.dataobject.dept.UserDeptDO;
 import com.zjugis.module.system.dal.dataobject.user.AdminUserDO;
+import com.zjugis.module.system.dal.mysql.dept.UserDeptMapper;
+import com.zjugis.module.system.dal.mysql.user.AdminUserMapper;
 import com.zjugis.module.system.enums.social.SocialTypeEnum;
 import com.zjugis.module.system.service.permission.PermissionService;
 import com.zjugis.module.system.service.social.SocialUserService;
@@ -118,13 +124,14 @@ public class AdminUserApiImpl implements AdminUserApi {
     }
 
     @Override
-    public CommonResult<Boolean> createUser(UserCreateReqDTO dto) {
-        UserCreateReqVO vo = UserConvert.INSTANCE.convertRPC(dto);
-        //新增用户
-        String userId = userService.createUser(vo);
-        //新增默认角色(统一为普通用户)
-        Set<Long> roleIds = asSet(2L);
-        permissionService.assignUserRole(userId, roleIds);
+    public CommonResult<String> createUser(UserBaseDTO dto) {
+        String userId = userService.createUserAndDeptPost(dto);
+        return success(userId);
+    }
+
+    @Override
+    public CommonResult<Boolean> updateUserDept(UserUpdateDTO dto) {
+        userService.updateUserDept(dto);
         return success(true);
     }
 

+ 2 - 1
zjugis-module-system/zjugis-module-system-biz/src/main/java/com/zjugis/module/system/convert/user/UserConvert.java

@@ -1,6 +1,7 @@
 package com.zjugis.module.system.convert.user;
 
 import com.zjugis.module.system.api.user.dto.AdminUserRespDTO;
+import com.zjugis.module.system.api.user.dto.UserBaseDTO;
 import com.zjugis.module.system.api.user.dto.UserCreateReqDTO;
 import com.zjugis.module.system.controller.admin.user.vo.profile.UserProfileRespVO;
 import com.zjugis.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO;
@@ -54,6 +55,6 @@ public interface UserConvert {
 
     List<AdminUserRespDTO> convertList4(List<AdminUserDO> users);
 
-    UserCreateReqVO convertRPC(UserCreateReqDTO dto);
+    UserCreateReqVO convertRPC(UserBaseDTO dto);
 
 }

+ 13 - 0
zjugis-module-system/zjugis-module-system-biz/src/main/java/com/zjugis/module/system/service/user/AdminUserService.java

@@ -2,6 +2,8 @@ package com.zjugis.module.system.service.user;
 
 import cn.hutool.core.collection.CollUtil;
 import com.zjugis.framework.common.util.collection.CollectionUtils;
+import com.zjugis.module.system.api.user.dto.UserBaseDTO;
+import com.zjugis.module.system.api.user.dto.UserUpdateDTO;
 import com.zjugis.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO;
 import com.zjugis.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO;
 import com.zjugis.module.system.controller.admin.user.vo.user.*;
@@ -245,4 +247,15 @@ public interface AdminUserService {
      * @param reqVO
      */
     void removeUserDeptIds(UserUpdateDeptIdsReqVO reqVO);
+
+    /**
+     * 更新用户的主要部门
+     */
+    void updateUserDept(UserUpdateDTO dto);
+
+
+    /**
+     * 新增用户并添加对应的部门和岗位
+     */
+    String createUserAndDeptPost(UserBaseDTO dto);
 }

+ 64 - 1
zjugis-module-system/zjugis-module-system-biz/src/main/java/com/zjugis/module/system/service/user/AdminUserServiceImpl.java

@@ -10,7 +10,11 @@ import com.zjugis.framework.common.exception.ServiceException;
 import com.zjugis.framework.common.pojo.PageResult;
 import com.zjugis.framework.common.util.collection.CollectionUtils;
 import com.zjugis.framework.datapermission.core.util.DataPermissionUtils;
+import com.zjugis.framework.mybatis.core.query.LambdaQueryWrapperX;
+import com.zjugis.framework.web.core.util.WebFrameworkUtils;
 import com.zjugis.module.infra.api.file.FileApi;
+import com.zjugis.module.system.api.user.dto.UserBaseDTO;
+import com.zjugis.module.system.api.user.dto.UserUpdateDTO;
 import com.zjugis.module.system.controller.admin.user.vo.profile.UserProfileUpdatePasswordReqVO;
 import com.zjugis.module.system.controller.admin.user.vo.profile.UserProfileUpdateReqVO;
 import com.zjugis.module.system.controller.admin.user.vo.user.*;
@@ -43,6 +47,7 @@ import java.util.*;
 import static com.zjugis.framework.common.exception.util.ServiceExceptionUtil.exception;
 import static com.zjugis.framework.common.util.collection.CollectionUtils.convertList;
 import static com.zjugis.framework.common.util.collection.CollectionUtils.convertSet;
+import static com.zjugis.framework.common.util.collection.SetUtils.asSet;
 import static com.zjugis.module.system.enums.ErrorCodeConstants.*;
 
 /**
@@ -499,7 +504,7 @@ public class AdminUserServiceImpl implements AdminUserService {
         userDept.setDeptId(reqVO.getMinorDeptId());
         userDeptMapper.insert(userDept);
         List<String> deptIds = adminUserDO.getDeptIds();
-        if(CollectionUtil.isEmpty(deptIds)){
+        if (CollectionUtil.isEmpty(deptIds)) {
             deptIds = new ArrayList<>();
         }
         deptIds.add(reqVO.getMinorDeptId());
@@ -521,6 +526,64 @@ public class AdminUserServiceImpl implements AdminUserService {
         userMapper.updateById(adminUserDO);
     }
 
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public void updateUserDept(UserUpdateDTO dto) {
+        //校验用户是否存在
+        AdminUserDO user = validateUserExists(dto.getUserId());
+
+        //查看企业是否有变更 有就更新没有就新增
+        if (!user.getDeptId().equals(dto.getDeptId())) {
+            //查部门关联关系
+            UserDeptDO userDeptDO = userDeptMapper.getByUserIdAndDeptId(user.getId(), user.getDeptId());
+            if (userDeptDO != null) {
+                userDeptDO.setDeptId(dto.getDeptId());
+                userDeptMapper.updateById(userDeptDO);
+            } else {
+                userDeptDO = new UserDeptDO();
+                userDeptDO.setUserId(dto.getUserId());
+                userDeptDO.setDeptId(dto.getDeptId());
+                userDeptMapper.insert(userDeptDO);
+            }
+            user.setDeptId(dto.getDeptId());
+            userMapper.updateById(user);
+        }
+
+    }
+
+    @Transactional(rollbackFor = Exception.class)
+    @Override
+    public String createUserAndDeptPost(UserBaseDTO dto) {
+        String userId;
+        //员工账号 存在就变更状态 不存在就新增
+        if (StrUtil.isNotEmpty(dto.getUserId())) {
+            AdminUserDO user = validateUserExists(dto.getUserId());
+            user.setStatus(CommonStatusEnum.ENABLE.getStatus()); // 开启账号
+            user.setPassword(encodePassword(userInitPassword)); // 默认密码
+            user.setUpdateTime(LocalDateTime.now());
+            user.setUpdater(WebFrameworkUtils.getLoginUserId());
+            userMapper.updateById(user); //数据更新
+            userId = dto.getUserId();
+        } else {
+            //新增用户
+            UserCreateReqVO vo = UserConvert.INSTANCE.convertRPC(dto);
+            vo.setPassword(userInitPassword);
+            userId = createUser(vo); //新增
+        }
+
+        //员工部门
+        UserUpdateDTO userDept = new UserUpdateDTO();
+        userDept.setUserId(userId);
+        userDept.setDeptId(dto.getDeptId());
+        updateUserDept(userDept);
+
+
+        //员工角色新增
+        Set<Long> roleIds = asSet(2L); //角色全部默认为普通员工
+        permissionService.assignUserRole(userId, roleIds);
+        return userId;
+    }
+
     /**
      * 对密码进行加密
      *