فهرست منبع

成员相关信息

785834757 1 سال پیش
والد
کامیت
f8b1c8016b
30فایلهای تغییر یافته به همراه493 افزوده شده و 58 حذف شده
  1. 10 1
      authentication/src/main/java/com/jzg/controller/AuthController.java
  2. 3 0
      authentication/src/main/java/com/jzg/entity/SysUser.java
  3. 4 0
      authentication/src/main/java/com/jzg/entity/vo/ModifyPassWordFormVo.java
  4. 2 0
      authentication/src/main/java/com/jzg/service/SysUserService.java
  5. 3 0
      authentication/src/main/java/com/jzg/service/impl/SysUserServiceImpl.java
  6. 4 0
      commons/src/main/java/com/jzg/commons/config/DataPermissionInterceptor.java
  7. 3 0
      commons/src/main/java/com/jzg/commons/entity/dto/SysUserJzgInfoDto.java
  8. 27 0
      commons/src/main/java/com/jzg/commons/entity/po/SysUserJzgInfo.java
  9. 20 0
      commons/src/main/java/com/jzg/commons/entity/vo/ChangeDeptVo.java
  10. 20 0
      commons/src/main/java/com/jzg/commons/entity/vo/DeptLeaderVo.java
  11. 3 0
      commons/src/main/java/com/jzg/commons/entity/vo/SysUserInfoListVo.java
  12. 5 0
      commons/src/main/java/com/jzg/commons/entity/vo/SysUserSelectVo.java
  13. 23 0
      commons/src/main/java/com/jzg/commons/entity/vo/UserTransferInfoVo.java
  14. 16 0
      commons/src/main/java/com/jzg/commons/entity/vo/UserTransferVo.java
  15. 1 0
      gateway/src/main/java/com/jzg/config/CorsConfig.java
  16. 1 1
      platform/src/main/resources/application.yml
  17. 14 5
      tenant/organization/src/main/java/com/jzg/organization/controller/DeptController.java
  18. 32 2
      tenant/organization/src/main/java/com/jzg/organization/controller/UserController.java
  19. 9 1
      tenant/organization/src/main/java/com/jzg/organization/mapper/SysUserMapper.java
  20. 17 0
      tenant/organization/src/main/java/com/jzg/organization/service/SysDeptService.java
  21. 7 0
      tenant/organization/src/main/java/com/jzg/organization/service/SysUserJzgInfoService.java
  22. 29 1
      tenant/organization/src/main/java/com/jzg/organization/service/SysUserService.java
  23. 44 13
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysDeptServiceImpl.java
  24. 9 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserJzgInfoServiceImpl.java
  25. 128 10
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserServiceImpl.java
  26. 5 0
      tenant/organization/src/main/java/com/jzg/organization/state/UserState.java
  27. 5 1
      tenant/organization/src/main/java/com/jzg/organization/state/config/UserStateConfig.java
  28. 10 7
      tenant/organization/src/main/resources/application.yml
  29. 20 15
      tenant/organization/src/main/resources/mapper/SysUserJzgInfoMapper.xml
  30. 19 1
      tenant/organization/src/main/resources/mapper/SysUserMapper.xml

+ 10 - 1
authentication/src/main/java/com/jzg/controller/AuthController.java

@@ -157,6 +157,16 @@ public class AuthController extends BaseController {
         return delete ? HttpResult.ok("退出登录成功") : HttpResult.error("退出登录失败");
     }
 
+    @PostMapping("changeHeadSculpture")
+    @Operation(summary = "修改头像")
+    public HttpResult changeHeadSculpture(@RequestBody String headSculpture){
+        String userName = getUserName();
+        SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper<SysUser>()
+                .eq(SysUser::getUsername, userName));
+        sysUser.setHeadSculpture(headSculpture);
+        return sysUserService.updateById(sysUser)? HttpResult.ok("头像修改成功") : HttpResult.error("头像修改失败");
+    }
+
     @PostMapping("getUsers")
     @Operation(summary = "用户列表")
     public HttpResult getUsers(){
@@ -172,5 +182,4 @@ public class AuthController extends BaseController {
         List<String> userPerms = getUserPerms();
         return HttpResult.ok(userPerms);
     }
-
 }

+ 3 - 0
authentication/src/main/java/com/jzg/entity/SysUser.java

@@ -23,6 +23,9 @@ public class SysUser extends BaseModel {
     @Schema(description = "手机号")
     private String mobile;
 
+    @Schema(description = "用户头像")
+    private String headSculpture;
+
     @Schema(description = "账号状态")
     private Integer account_status;
 

+ 4 - 0
authentication/src/main/java/com/jzg/entity/vo/ModifyPassWordFormVo.java

@@ -1,14 +1,18 @@
 package com.jzg.entity.vo;
 
 import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
 import lombok.Data;
 
 @Data
 @Schema(description = "修改密码表单Vo")
 public class ModifyPassWordFormVo {
+
+    @NotBlank(message = "请输入旧密码")
     @Schema(description = "旧密码")
     private String oldPassWord;
 
+    @NotBlank(message = "请输入新密码")
     @Schema(description = "新密码")
     private String newPassWord;
 

+ 2 - 0
authentication/src/main/java/com/jzg/service/SysUserService.java

@@ -24,6 +24,8 @@ public interface SysUserService extends IService<SysUser> {
     public SysUserJzgVo getJzgUserInfo(String userId);
 
 
+
+
     /**
      *
      * @param username

+ 3 - 0
authentication/src/main/java/com/jzg/service/impl/SysUserServiceImpl.java

@@ -3,6 +3,7 @@ package com.jzg.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.entity.SysUser;
+import com.jzg.entity.vo.ModifyPassWordFormVo;
 import com.jzg.entity.vo.SysUserJzgVo;
 import com.jzg.mapper.SysUserMapper;
 import com.jzg.service.SysUserService;
@@ -27,4 +28,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     public SysUser getByUserName(String username) {
         return baseMapper.selectByUserName(username);
     }
+
+
 }

+ 4 - 0
commons/src/main/java/com/jzg/commons/config/DataPermissionInterceptor.java

@@ -73,6 +73,10 @@ public class DataPermissionInterceptor implements InnerInterceptor {
                 JSONObject dataScope = JSONObject.parseObject(userDataScope);
                 List<String> deptIds = new ArrayList<>();
                 StringBuilder additionalSql = new StringBuilder();
+                //如果数据权限为空   并且用户名为admin 则不做数据权限
+                if(dataScope.isEmpty() && baseController.getUserName().equals("admin")){
+                    return;
+                }
                 if (dataScope.getString("dataMark").equals("2")) {
                     additionalSql.append(" AND dept_id in (");
                     additionalSql.append("select id from sys_dept where route like '"+currentUserDeptId+"%'");

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/dto/SysUserJzgInfoDto.java

@@ -1,5 +1,6 @@
 package com.jzg.commons.entity.dto;
 
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 /**
@@ -28,5 +29,7 @@ public class SysUserJzgInfoDto {
     public String leaderName;
     public String referrerId;
     public String referrerName;
+    @Schema(description = "角色名称")
+    public String roleName;
 
 }

+ 27 - 0
commons/src/main/java/com/jzg/commons/entity/po/SysUserJzgInfo.java

@@ -31,6 +31,10 @@ public class SysUserJzgInfo extends BaseModel {
     @Schema(description = "姓名")
     private String name;
 
+    @TableField(value = "work_number")
+    @Schema(description = "工号")
+    private String workNumber;
+
     @TableField(value = "status")
     @Schema(description = "状态 0:未认证 1:实名认证失败 2:待入职 3:入职待审核 4:审核不通过 5:已入职")
     private Integer status;
@@ -200,6 +204,18 @@ public class SysUserJzgInfo extends BaseModel {
     @Schema(description = "居住地址")
     private String liveAddress;
 
+    @TableField(value = "province")
+    @Schema(description = "省")
+    private String province;
+
+    @TableField(value = "city")
+    @Schema(description = "市")
+    private String city;
+
+    @TableField(value = "district")
+    @Schema(description = "区")
+    private String district;
+
     @TableField(value = "is_delete")
     @Schema(description = "是否删除 0未删除 1 删除")
     private Integer isDelete;
@@ -237,5 +253,16 @@ public class SysUserJzgInfo extends BaseModel {
     @Schema(description = "附件列表")
     private List<SysUserJzgInfoFile> fileList;
 
+    @TableField(exist = false)
+    @Schema(description = "部门名称")
+    private String deptName;
+
+    @TableField(exist = false)
+    @Schema(description = "区划信息")
+    private String region;
+
+    @TableField(exist = false)
+    @Schema(description = "手机号")
+    private String mobile;
 
 }

+ 20 - 0
commons/src/main/java/com/jzg/commons/entity/vo/ChangeDeptVo.java

@@ -0,0 +1,20 @@
+package com.jzg.commons.entity.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotBlank;
+import lombok.Data;
+
+/**
+ * 变更机构VO
+ */
+@Data
+public class ChangeDeptVo {
+
+    @NotBlank(message = "机构id不能为空")
+    @Schema(description = "机构id")
+    private String deptId;
+
+    @NotBlank(message = "用户id不能为空")
+    @Schema(description = "用户id")
+    private String userId;
+}

+ 20 - 0
commons/src/main/java/com/jzg/commons/entity/vo/DeptLeaderVo.java

@@ -0,0 +1,20 @@
+package com.jzg.commons.entity.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 部门负责人
+ */
+@Data
+public class DeptLeaderVo {
+
+
+    @Schema(description = "部门id")
+    private List<String> deptId;
+
+    @Schema(description = "负责人id")
+    private String leaderId;
+}

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/vo/SysUserInfoListVo.java

@@ -40,4 +40,7 @@ public class SysUserInfoListVo extends PageRequest {
     @Schema(description = "用户类型")
     private String typeAttr;
 
+    @Schema(description = "搜索关键字")
+    private String name;
+
 }

+ 5 - 0
commons/src/main/java/com/jzg/commons/entity/vo/SysUserSelectVo.java

@@ -1,5 +1,6 @@
 package com.jzg.commons.entity.vo;
 
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 /**
@@ -11,5 +12,9 @@ import lombok.Data;
 public class SysUserSelectVo {
     private String id;
 
+    @Schema(description = "姓名")
     private String name;
+
+    @Schema(description = "手机号")
+    private String mobile;
 }

+ 23 - 0
commons/src/main/java/com/jzg/commons/entity/vo/UserTransferInfoVo.java

@@ -0,0 +1,23 @@
+package com.jzg.commons.entity.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * 成员资源转移VO
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class UserTransferInfoVo {
+    @Schema(description = "成员id")
+    private String userId;
+
+    @Schema(description = "转移业务员数量")
+    private String count;
+
+    @Schema(description = "所属部门")
+    private String deptName;
+}

+ 16 - 0
commons/src/main/java/com/jzg/commons/entity/vo/UserTransferVo.java

@@ -0,0 +1,16 @@
+package com.jzg.commons.entity.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+/**
+ * 成员资源转移VO
+ */
+@Data
+public class UserTransferVo {
+    @Schema(description = "被转移成员id")
+    private String OriginalUserId;
+
+    @Schema(description = "转移成员id")
+    private String TransferUserId;
+}

+ 1 - 0
gateway/src/main/java/com/jzg/config/CorsConfig.java

@@ -30,6 +30,7 @@ public class CorsConfig {
         corsConfiguration.addAllowedOrigin("http://192.168.0.149:9000");
         corsConfiguration.addAllowedOrigin("http://192.168.0.69:9000");
         corsConfiguration.addAllowedOrigin("http://192.168.0.20:9000");
+        corsConfiguration.addAllowedOrigin("http://192.168.0.22:9000");
         corsConfiguration.addAllowedOrigin("http://192.168.0.22:9001");
         // 允许的方法
         corsConfiguration.addAllowedMethod("*");

+ 1 - 1
platform/src/main/resources/application.yml

@@ -44,7 +44,7 @@ data-scope:
   ignoreTables:
 
 minio:
-  url: http://192.168.5.250:9000
+  url: http://192.168.0.250:9000
   access-key: v7Zb8XhyLcYNcSHlxvyK
   secret-key: 58YibMwpxGKtXcekPL065OM4GonC1hf2tFMjI9EN
   bucket-name: jzg

+ 14 - 5
tenant/organization/src/main/java/com/jzg/organization/controller/DeptController.java

@@ -4,6 +4,9 @@ import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.SysDeptParam;
 import com.jzg.commons.entity.po.SysDept;
+import com.jzg.commons.entity.vo.ChangeDeptVo;
+import com.jzg.commons.entity.vo.DeptLeaderVo;
+import com.jzg.commons.entity.vo.SysAreaVo;
 import com.jzg.commons.entity.vo.SysDeptVo;
 import com.jzg.commons.util.StringUtils;
 import com.jzg.organization.service.SysAreaService;
@@ -43,11 +46,11 @@ public class DeptController extends BaseController {
     }
 
 
-    @Operation(summary = "批量设置机构负责人接口", description = "批量设置机构负责人接口")
-    @PostMapping(value = "/batchLeader")
-    public HttpResult batchLeader(@RequestBody SysDeptVo sysDeptVo) {
-        return sysDeptService.batchLeader(sysDeptVo);
-    }
+//    @Operation(summary = "批量设置机构负责人接口", description = "批量设置机构负责人接口")
+//    @PostMapping(value = "/batchLeader")
+//    public HttpResult batchLeader(@RequestBody SysDeptVo sysDeptVo) {
+//        return sysDeptService.batchLeader(sysDeptVo);
+//    }
 
     @Operation(summary = "批量删除机构接口", description = "批量删除机构接口")
     @PostMapping(value = "/batchDeleteDept")
@@ -55,6 +58,12 @@ public class DeptController extends BaseController {
         return sysDeptService.batchDeleteDept(sysDeptVo);
     }
 
+    @Operation(summary = "设置机构负责人接口", description = "设置机构负责人接口")
+    @PostMapping(value = "/setDeptLeader")
+    public HttpResult setDeptLeader(@RequestBody DeptLeaderVo deptLeaderVo) {
+        return sysDeptService.setDeptLeader(deptLeaderVo) ? HttpResult.ok("设置成功") : HttpResult.error("设置失败");
+    }
+
     @Operation(summary = "机构树形查询")
     @PostMapping(value = "/getDeptTree")
     public HttpResult<List<SysDeptVo>> getDeptTree(@RequestBody SysDeptParam param){

+ 32 - 2
tenant/organization/src/main/java/com/jzg/organization/controller/UserController.java

@@ -4,8 +4,10 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.vo.*;
+import com.jzg.organization.service.SysDeptService;
 import io.swagger.v3.oas.annotations.Operation;
 import jakarta.annotation.Resource;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import com.jzg.organization.service.SysUserService;
 
@@ -20,6 +22,9 @@ public class UserController extends BaseController {
     @Resource
     private SysUserService sysUserService;
 
+    @Autowired
+    private SysDeptService sysDeptService;
+
     @Operation(summary = "分页获取业务员列表接口", description = "分页获取业务员列表接口")
     @PostMapping(value = "/getUserInfoList")
     public HttpResult getUserInfoList(@RequestBody SysUserInfoListVo sysUserInfoListVo) {
@@ -29,8 +34,8 @@ public class UserController extends BaseController {
 
     @Operation(summary = "获取人员列表接口", description = "获取人员列表接口")
     @PostMapping(value = "/getUser")
-    public HttpResult getUser() {
-        return sysUserService.getUserSelect();
+    public HttpResult getUser(@RequestBody SysUserInfoListVo sysUserInfoListVo) {
+        return sysUserService.getUserSelect(sysUserInfoListVo);
     }
 
     @Operation(summary = "新增业务员接口", description = "新增业务员接口")
@@ -75,4 +80,29 @@ public class UserController extends BaseController {
         return sysUserService.getUserInfoById(id);
     }
 
+    @Operation(summary = "获取成员资源转移信息接口", description = "获取成员资源转移信息接口")
+    @GetMapping(value = "/getTransferInfo")
+    public HttpResult getTransferInfo(@RequestParam String userId) {
+        return HttpResult.ok(sysUserService.getTransferInfo(userId));
+    }
+
+
+    @Operation(summary = "成员资源转移接口", description = "成员资源转移接口")
+    @PostMapping(value = "/transfer")
+    public HttpResult transfer(@RequestBody UserTransferVo userTransferVo) {
+        return sysUserService.userTransfer(userTransferVo) ? HttpResult.ok("转移成功") : HttpResult.error("转移失败");
+    }
+
+    @Operation(summary = "变更机构",description = "变更机构")
+    @PostMapping(value = "/changeDept")
+    public HttpResult changeDept(@RequestBody ChangeDeptVo changeDeptVo){
+        return sysDeptService.changeDept(changeDeptVo) ? HttpResult.ok("变更机构成功") : HttpResult.error("变更机构失败");
+    }
+
+    @Operation(summary = "离职申请",description = "离职申请")
+    @PostMapping(value = "/userQuitApply")
+    public HttpResult userQuitApply(@RequestBody String userId){
+        return sysUserService.userQuitApply(userId)? HttpResult.ok("离职成功") : HttpResult.error("离职失败");
+    }
+
 }

+ 9 - 1
tenant/organization/src/main/java/com/jzg/organization/mapper/SysUserMapper.java

@@ -3,6 +3,7 @@ package com.jzg.organization.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.jzg.commons.entity.po.SysUser;
 import com.jzg.commons.entity.po.SysUserJzgInfo;
+import com.jzg.commons.entity.vo.SysUserInfoListVo;
 import com.jzg.commons.entity.vo.SysUserSelectVo;
 import com.jzg.commons.entity.vo.SysUserVo;
 import org.apache.ibatis.annotations.Mapper;
@@ -15,9 +16,16 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
 
     List<SysUserVo> getUserInfo(@Param("param") SysUserVo sysUserVo);
 
-    List<SysUserSelectVo> getUserSelect();
+    List<SysUserSelectVo> getUserSelect(@Param("param") SysUserInfoListVo sysUserInfoListVo);
 
     SysUser getUserByMobile(@Param("mobile") String mobile);
 
+    /**
+     * 获取用户角色名称
+     * @param userId
+     * @return
+     */
+    List<String> getUserRoleName(String userId);
+
 
 }

+ 17 - 0
tenant/organization/src/main/java/com/jzg/organization/service/SysDeptService.java

@@ -4,7 +4,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.SysDeptParam;
 import com.jzg.commons.entity.po.SysDept;
+import com.jzg.commons.entity.vo.ChangeDeptVo;
+import com.jzg.commons.entity.vo.DeptLeaderVo;
 import com.jzg.commons.entity.vo.SysDeptVo;
+import org.springframework.web.bind.annotation.RequestBody;
 
 import java.util.List;
 
@@ -40,6 +43,20 @@ public interface SysDeptService extends IService<SysDept> {
      */
     List<SysDeptVo> getDeptTree(String deptId, SysDeptParam param);
 
+    /**
+     * 设置机构负责人
+     * @param deptLeaderVo
+     * @return
+     */
+    boolean setDeptLeader(DeptLeaderVo deptLeaderVo);
+
+    /**
+     * 变更机构
+     * @param changeDeptVo
+     * @return
+     */
+    boolean changeDept(ChangeDeptVo changeDeptVo);
+
 
     /**
      * 根据id获取机构信息

+ 7 - 0
tenant/organization/src/main/java/com/jzg/organization/service/SysUserJzgInfoService.java

@@ -8,4 +8,11 @@ import java.util.List;
 
 public interface SysUserJzgInfoService extends IService<SysUserJzgInfo> {
     List<SysUserJzgInfo> getUserInfoByIdentity(String identity,String userId);
+
+    /**
+     * 通过用id查询用户信息
+     * @param userId
+     * @return
+     */
+    SysUserJzgInfo getUserByUserId(String userId);
 }

+ 29 - 1
tenant/organization/src/main/java/com/jzg/organization/service/SysUserService.java

@@ -7,6 +7,8 @@ import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.po.SysUser;
 import com.jzg.commons.entity.po.SysUserJzgInfo;
 import com.jzg.commons.entity.vo.*;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
 
 import java.util.List;
 
@@ -24,7 +26,7 @@ public interface SysUserService extends IService<SysUser> {
      */
     List<SysUserVo> getUserInfo(SysUserVo sysUserVo);
 
-    HttpResult getUserSelect();
+    HttpResult getUserSelect(SysUserInfoListVo sysUserInfoListVo);
     /**
      * 添加业务员
      * @param sysUserVo
@@ -46,6 +48,32 @@ public interface SysUserService extends IService<SysUser> {
 
     Page<SysUserJzgInfo> getUserInfoList(Page page, SysUserInfoListVo sysUserInfoListVo);
 
+    /**
+     * 获取成员转移资源信息
+     * @param userId
+     * @return
+     */
+    UserTransferInfoVo getTransferInfo(@RequestParam String userId);
+
+    /**
+     * 成员资源转移
+     * @param userTransferVo
+     * @return
+     */
+    boolean userTransfer(@RequestBody UserTransferVo userTransferVo);
 
+    /**
+     * 获取用户角色名称
+     * @param userId
+     * @return
+     */
+    List<String> getUserRoleName(String userId);
+
+    /**
+     * 用户离职申请
+     * @param userId
+     * @return
+     */
+    boolean userQuitApply(String userId);
 
 }

+ 44 - 13
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysDeptServiceImpl.java

@@ -5,20 +5,17 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.core.page.HttpResult;
-import com.jzg.commons.entity.po.SysArea;
+import com.jzg.commons.entity.po.*;
 import com.jzg.commons.entity.dto.SysDeptParam;
-import com.jzg.commons.entity.po.SysDept;
-import com.jzg.commons.entity.po.SysSystem;
+import com.jzg.commons.entity.vo.ChangeDeptVo;
+import com.jzg.commons.entity.vo.DeptLeaderVo;
 import com.jzg.commons.entity.vo.SysUserVo;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.commons.util.StringUtils;
 import com.jzg.commons.util.idgen.IdGenerate;
 import com.jzg.commons.entity.vo.SysDeptVo;
 import com.jzg.organization.mapper.SysDeptMapper;
-import com.jzg.organization.service.SysAreaService;
-import com.jzg.organization.service.SysDeptService;
-import com.jzg.organization.service.SysSystemService;
-import com.jzg.organization.service.SysUserService;
+import com.jzg.organization.service.*;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -45,6 +42,9 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
     @Autowired
     private SysAreaService sysAreaService;
 
+    @Autowired
+    SysUserJzgInfoService sysUserJzgInfoService;
+
     private void validateDept(SysDeptVo sysDeptVo,boolean isAdd){
         if(isAdd){
             if(this.count(new LambdaQueryWrapper<SysDept>()
@@ -192,12 +192,12 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
             areas.add(item.getCity());
             areas.add(item.getArea());
             List<SysArea> sysAreaVos = sysAreaService.queryAllByAreaCode(areas);
-            if(CollUtil.isNotEmpty(sysAreaVos)) {
-                String areaString = "";
-                for(int i=0;i<sysAreaVos.size();i++){
-                    areaString = areaString + sysAreaVos.get(i).getAreaCname() + "-";
-                }
-                item.setDivision(areaString.substring(0,areaString.length()-1));
+            String areaString = "";
+            for(int i=0;i<sysAreaVos.size();i++){
+                areaString = areaString + sysAreaVos.get(i).getAreaCname() + "-";
+            }
+            if(areaString.length()>0) {
+                item.setDivision(areaString.substring(0, areaString.length() - 1));
             }
         });
 
@@ -217,6 +217,37 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
         return newResultDept;
     }
 
+    @Override
+    public boolean setDeptLeader(DeptLeaderVo deptLeaderVo) {
+        List<SysDept> depts = this.list(new LambdaQueryWrapper<SysDept>()
+                .in(SysDept::getId,deptLeaderVo.getDeptId()));
+//        if(Objects.isNull(depts)){
+//            throw new SystemException("机构不存在");
+//        }
+        SysUser user = userService.getById(deptLeaderVo.getLeaderId());
+        if(Objects.isNull(user)){
+            throw new SystemException("用户不存在");
+        }
+        depts.forEach(item->{
+            item.setLeaderId(deptLeaderVo.getLeaderId());
+        });
+        return this.updateBatchById(depts);
+    }
+
+    @Override
+    public boolean changeDept(ChangeDeptVo changeDeptVo) {
+        //获取用户的角色 是否是管理员
+        SysUser sysUser = userService.getById(changeDeptVo.getUserId());
+        SysUserJzgInfo userJzgInfo = sysUserJzgInfoService.getOne(new LambdaQueryWrapper<SysUserJzgInfo>()
+                .eq(SysUserJzgInfo::getUserId, changeDeptVo.getUserId()));
+        List<String> userRoleName = userService.getUserRoleName(changeDeptVo.getUserId());
+        if(userRoleName.contains("管理员")){
+            throw new SystemException("管理员不允许变更机构");
+        }
+        userJzgInfo.setDeptId(changeDeptVo.getDeptId());
+        return sysUserJzgInfoService.updateById(userJzgInfo);
+    }
+
     @Override
     public SysDeptVo queryById(String id) {
         SysDept sysDept = getById(id);

+ 9 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserJzgInfoServiceImpl.java

@@ -1,5 +1,6 @@
 package com.jzg.organization.service.impl;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.commons.entity.po.SysUserJzgInfo;
 import com.jzg.organization.mapper.SysUserJzgInfoMapper;
@@ -20,4 +21,12 @@ public class SysUserJzgInfoServiceImpl extends ServiceImpl<SysUserJzgInfoMapper,
     public List<SysUserJzgInfo> getUserInfoByIdentity(String identity, String userId) {
         return baseMapper.getUserInfoByIdentity(identity, userId);
     }
+
+    @Override
+    public SysUserJzgInfo getUserByUserId(String userId) {
+        return baseMapper.selectOne(new LambdaQueryWrapper<SysUserJzgInfo>()
+                .eq(SysUserJzgInfo::getUserId, userId));
+    }
+
+
 }

+ 128 - 10
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserServiceImpl.java

@@ -3,6 +3,8 @@ package com.jzg.organization.service.impl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jzg.commons.core.base.BaseController;
+import com.jzg.commons.core.base.PageRequest;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.po.*;
 import com.jzg.commons.entity.vo.*;
@@ -14,12 +16,18 @@ import com.jzg.organization.mapper.SysUserJzgInfoMapper;
 import com.jzg.organization.mapper.SysUserMapper;
 import com.jzg.organization.service.*;
 import com.jzg.organization.utils.MinioUtils;
+import com.jzg.organization.service.*;
+import com.jzg.organization.state.UserState;
 import jakarta.annotation.Resource;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.statemachine.StateMachine;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * @author Administrator
@@ -40,6 +48,48 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     @Resource
     private SysUserJzgInfoMapper sysUserJzgInfoMapper;
 
+    @Autowired
+    private SysAreaService sysAreaService;
+
+    @Autowired
+    private SysUserService sysUserService;
+
+    @Autowired
+    private StateMachine<UserState.UserStateEnum, UserState.UserStateEvent> stateMachine;
+
+    private String getCurrentAreaCode(String province,String city,String area){
+        String userWorkNumber = "";
+        if (!area.isEmpty()) {
+            userWorkNumber += area;  // 使用县
+        } else if (!city.isEmpty()) {
+            userWorkNumber += city.substring(0,4);  // 使用市
+        } else if (!province.isEmpty()) {
+            userWorkNumber += province.substring(0,2);  // 使用省
+        }
+        return userWorkNumber;
+    }
+
+//    /**
+//     * 用户工号生成
+//     * @return
+//     */
+//    private String userWorkNumberGenerator(String typeArr,String deptId,String organizationId) {
+//        SysDept sysDept = sysDeptService.getById(deptId);
+//        String userWorkNumber = "";
+//        //后线人员生成
+//        if(typeArr.equals("2")){
+//            userWorkNumber = getCurrentAreaCode(sysDept.getProvince(),sysDept.getCity(),sysDept.getArea());
+//            long count = sysUserJzgInfoService.count(new LambdaQueryWrapper<SysUserJzgInfo>()
+//                    .eq(SysUserJzgInfo::getDeptId, deptId)
+//                    .eq(SysUserJzgInfo::getTypeAttr, typeArr));
+//            userWorkNumber += String.valueOf(count + 1);
+//        }else if(typeArr.equals("1")){
+//            //前线人员生成
+//            userWorkNumber = getCurrentAreaCode(sysDept.getProvince(),sysDept.getCity(),sysDept.getArea());
+//        }
+//        return userWorkNumber;
+//    }
+
     @Resource
     private SysUploadFilesMapper sysUploadFilesMapper;
 
@@ -55,8 +105,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     }
 
     @Override
-    public HttpResult getUserSelect(){
-        return HttpResult.ok(baseMapper.getUserSelect());
+    public HttpResult getUserSelect(SysUserInfoListVo sysUserInfoListVo){
+        return HttpResult.ok(baseMapper.getUserSelect(sysUserInfoListVo));
     }
 
     @Override
@@ -64,12 +114,48 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return sysUserJzgInfoMapper.getUserInfoList(page,sysUserInfoListVo);
     }
 
+    @Override
+    public UserTransferInfoVo getTransferInfo(String userId) {
+        SysUserJzgInfo userJzgInfo = sysUserJzgInfoService.getOne(new LambdaQueryWrapper<SysUserJzgInfo>()
+                .eq(SysUserJzgInfo::getUserId,userId));
+        SysDept dept = sysDeptService.getById(userJzgInfo.getDeptId());
+        if(Objects.isNull(dept)){
+            throw new SystemException("人员所属机构不存在");
+        }
+        long count = sysUserJzgInfoService.count(new LambdaQueryWrapper<SysUserJzgInfo>()
+                .eq(SysUserJzgInfo::getLeaderId, userId));
+        return new UserTransferInfoVo(userId,String.valueOf(count),dept.getName());
+    }
+
+    @Override
+    public boolean userTransfer(UserTransferVo userTransferVo) {
+        String originalUserId = userTransferVo.getOriginalUserId();
+        //检查用户的业务员数量
+        List<SysUserJzgInfo> list = sysUserJzgInfoService.list(new LambdaQueryWrapper<SysUserJzgInfo>()
+                .eq(SysUserJzgInfo::getLeaderId, originalUserId));
+        list.forEach(item->{
+            item.setLeaderId(userTransferVo.getTransferUserId());
+        });
+        return sysUserJzgInfoService.updateBatchById(list);
+    }
+
+    @Override
+    public List<String> getUserRoleName(String userId) {
+        return baseMapper.getUserRoleName(userId);
+    }
+
+    @Override
+    public boolean userQuitApply(String userId) {
+//        sysUserJzgInfoService.getById()
+        return false;
+    }
+
     @Override
     @Transactional(rollbackFor = Exception.class)
     public HttpResult addUserInfo(SysUserVo sysUserVo) {
         SysUser sysUser = baseMapper.getUserByMobile(sysUserVo.getMobile());
         if (sysUser != null) {
-            verifyUser(sysUserVo.getDeptId(),sysUserVo.getIdentity(),sysUser.getId(),sysUserVo.getLeaderId(),sysUserVo.getReferrerId());
+            verifyUser(sysUserVo.getTypeAttr(),sysUserVo.getDeptId(),sysUserVo.getIdentity(),sysUser.getId(),sysUserVo.getLeaderId(),sysUserVo.getReferrerId());
             SysUserJzgInfo sysUserJzgInfo = new SysUserJzgInfo();
             BeanUtils.copyProperties(sysUserVo, sysUserJzgInfo);
             sysUserJzgInfo.setUserId(sysUser.getId());
@@ -125,7 +211,13 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                 sysUserJzgInfoBankCardService.save(sysUserJzgInfoBankCard);
             }
         }
-        return HttpResult.ok("添加业务员成功");
+        String resultMsg = "";
+        if(sysUserVo.getTypeAttr().equals("2")){
+            resultMsg = "添加成员成功";
+        }else{
+            resultMsg = "添加业务员成功";
+        }
+        return HttpResult.ok(resultMsg);
     }
 
     @Override
@@ -207,6 +299,30 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         if (sysUserJzgInfo == null) {
             throw new SystemException("该用户不存在");
         }
+        SysUser sysUser = sysUserService.getById(sysUserJzgInfo.getUserId());
+        sysUserJzgInfo.setMobile(sysUser.getMobile());
+        SysDept dept = sysDeptService.getById(sysUserJzgInfo.getDeptId());
+        if(!Objects.isNull(dept)){
+            sysUserJzgInfo.setDeptName(dept.getName());
+        }
+        List<String> areaList = new ArrayList<>();
+        if(!Objects.isNull(sysUserJzgInfo.getProvince()) && !sysUserJzgInfo.getProvince().isEmpty()){
+            areaList.add(sysUserJzgInfo.getProvince());
+        }else if(!Objects.isNull(sysUserJzgInfo.getCity()) && !sysUserJzgInfo.getCity().isEmpty()) {
+            areaList.add(sysUserJzgInfo.getCity());
+        }else if(!Objects.isNull(sysUserJzgInfo.getDistrict()) && !sysUserJzgInfo.getDistrict().isEmpty()){
+            areaList.add(sysUserJzgInfo.getDistrict());
+        }
+        if(areaList.size() == 0){
+            sysUserJzgInfo.setRegion("");
+        }else {
+            List<SysArea> sysAreas = sysAreaService.queryAllByAreaCode(areaList);
+            String region = "";
+            for (int i = 0; i < sysAreas.size(); i++) {
+                region = region + sysAreas.get(i).getAreaCname() + "-";
+            }
+            sysUserJzgInfo.setRegion(region.substring(0, region.length() - 1));
+        }
         List<SysUserJzgInfoFile> sysUserJzgInfoFile = sysUserJzgInfoFileService.list
                 (new LambdaQueryWrapper<SysUserJzgInfoFile>().eq(SysUserJzgInfoFile::getUserJzgInfoId,id));
         sysUserJzgInfo.setFileList(sysUserJzgInfoFile);
@@ -214,7 +330,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     }
 
 
-    public void verifyUser(String deptId,String identity,String userId,String leaderId,String referrerId){
+    public void verifyUser(String typeAttr,String deptId,String identity,String userId,String leaderId,String referrerId){
         SysDept sysDept = sysDeptService.getById(deptId);
         List<SysUserJzgInfo> sysUserJzgInfos  = sysUserJzgInfoService.getUserInfoByIdentity(identity, userId);
         SysUserJzgInfo sysUserJzgInfoByLeaderId = sysUserJzgInfoService.getOne
@@ -227,11 +343,13 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         if (sysDept == null) {
             throw new SystemException("所选机构不存在");
         }
-        if (sysUserJzgInfoByLeaderId == null) {
-            throw new SystemException("所选管理员不存在");
-        }
-        if (sysUserJzgInfoByReferrerId == null) {
-            throw new SystemException("所选推荐人不存在");
+        if(!typeAttr.equals("2")) {
+            if (sysUserJzgInfoByLeaderId == null) {
+                throw new SystemException("所选管理员不存在");
+            }
+            if (sysUserJzgInfoByReferrerId == null) {
+                throw new SystemException("所选推荐人不存在");
+            }
         }
     }
 

+ 5 - 0
tenant/organization/src/main/java/com/jzg/organization/state/UserState.java

@@ -14,6 +14,8 @@ public class UserState {
         COMPANY_REVIEW_ING, // 入司审核中
         COMPANY_REVIEW_FAILED, // 入司审核失败
         ALREADY_EMPLOYEE, // 已入职
+        RESIGN_ING, // 离职待审核
+        RESIGN, // 离职
     }
 
     public enum UserStateEvent{
@@ -24,6 +26,9 @@ public class UserState {
         COMPANY_REVIEW_SUCCESS, // 入司审核成功事件
         COMPANY_REVIEW_FAILED, // 入司审核失败事件
         EMPLOYEE, // 入职
+        RESIGN_ING, // 待离职
+        RESIGN_FAILED, // 离职失败事件
+        RESIGN // 离职
     }
 
 

+ 5 - 1
tenant/organization/src/main/java/com/jzg/organization/state/config/UserStateConfig.java

@@ -49,6 +49,10 @@ public class UserStateConfig extends StateMachineConfigurerAdapter<UserState.Use
                 .and()
                 .withExternal()
                 //入司审核中 -> 已入职
-                .source(UserState.UserStateEnum.COMPANY_REVIEW_ING).target(UserState.UserStateEnum.ALREADY_EMPLOYEE).event(UserState.UserStateEvent.COMPANY_REVIEW_SUCCESS);
+                .source(UserState.UserStateEnum.COMPANY_REVIEW_ING).target(UserState.UserStateEnum.ALREADY_EMPLOYEE).event(UserState.UserStateEvent.COMPANY_REVIEW_SUCCESS)
+                .and()
+                .withExternal()
+                //已入职 -> 离职中
+                .source(UserState.UserStateEnum.ALREADY_EMPLOYEE).target(UserState.UserStateEnum.RESIGN_ING).event(UserState.UserStateEvent.RESIGN_ING);
     }
 }

+ 10 - 7
tenant/organization/src/main/resources/application.yml

@@ -27,13 +27,6 @@ mybatis-plus:
 config:
   sso: 1
 
-minio:
-  url: http://192.168.0.250:9000
-  access-key: v7Zb8XhyLcYNcSHlxvyK
-  secret-key: 58YibMwpxGKtXcekPL065OM4GonC1hf2tFMjI9EN
-  bucket-name: jzg
-
-
 #多租户配置
 tenant:
   enable: true
@@ -45,8 +38,18 @@ tenant:
     - sys_area
     - sys_dict
     - sys_user
+    - sys_user_jzg_info_bank_card
+    - sys_user_role
     - sys_user_jzg_info_file
   ignoreLoginNames:
 
 data-scope:
   tables:
+    - sys_user_jzg_info
+    - sys_dept
+
+minio:
+  url: http://192.168.0.250:9000
+  access-key: v7Zb8XhyLcYNcSHlxvyK
+  secret-key: 58YibMwpxGKtXcekPL065OM4GonC1hf2tFMjI9EN
+  bucket-name: jzg

+ 20 - 15
tenant/organization/src/main/resources/mapper/SysUserJzgInfoMapper.xml

@@ -17,6 +17,7 @@
         <result column="leader_name" jdbcType="VARCHAR" property="leaderName"/>
         <result column="referrer_id" jdbcType="VARCHAR" property="referrerId"/>
         <result column="referrer_name" jdbcType="VARCHAR" property="referrerName"/>
+        <result column="role_name" jdbcType="VARCHAR" property="roleName"/>
     </resultMap>
 
     <select id="getUserInfoByIdentity" resultType="com.jzg.commons.entity.po.SysUserJzgInfo">
@@ -36,27 +37,30 @@
 
     <select id="getUserInfoList" resultMap="BaseResultMap">
         select
-            suji.id,
-            suji.user_id,
-            su.username,
-            suji.name,
-            su.mobile,
-            suji.dept_id,
-            sd.name as dept_name,
-            suji.type_attr,
-            suji.status,
-            suji.is_enable,
-            suji.leader_id,
-            su.username as leader_name,
-            suji.referrer_id,
-            su.username as referrer_name
+        suji.id,
+        suji.user_id,
+        su.username,
+        su.mobile,
+        suji.name,
+        suji.dept_id,
+        sd.name as dept_name,
+        suji.type_attr,
+        suji.status,
+        suji.is_enable,
+        suji.leader_id,
+        su.username as leader_name,
+        suji.referrer_id,
+        su.username as referrer_name,
+        GROUP_CONCAT(sr.name) as role_name
         from
         sys_user_jzg_info suji
         left join sys_user su on su.id = suji.user_id
         left join sys_dept sd on sd.id = suji.dept_id
+        left join sys_user_role sur on sur.user_id = su.id
+        left join sys_role sr on sr.id = sur.role_id
         where
         1=1
-          and suji.is_delete = 0
+        and suji.is_delete = 0
         <if test="sysUserInfoListVo.deptId != null and sysUserInfoListVo.deptId != ''">
             and suji.dept_id = #{sysUserInfoListVo.deptId}
         </if>
@@ -82,6 +86,7 @@
             or  su.mobile = #{sysUserInfoListVo.salesman}
             or  suji.id = #{sysUserInfoListVo.salesman})
         </if>
+        group by    suji.id
         order by suji.create_time desc
     </select>
 </mapper>

+ 19 - 1
tenant/organization/src/main/resources/mapper/SysUserMapper.xml

@@ -21,11 +21,19 @@
     <select id="getUserSelect" resultType="com.jzg.commons.entity.vo.SysUserSelectVo">
         SELECT
         suji.id,
-        suji.name
+        suji.name,
+        su.mobile
         FROM
         sys_user_jzg_info suji
+        inner join sys_user su on su.id = suji.user_id
         WHERE
         1=1
+        <if test="param.deptId!= null and param.deptId!= ''">
+            AND suji.dept_id = #{param.deptId}
+        </if>
+        <if test="param.name!= null and param.name!= ''">
+            AND (suji.name = #{param.name} or su.mobile = #{param.name}) or suji.work_number = #{param.name})
+        </if>
     </select>
 
     <select id="getUserByMobile" resultType="com.jzg.commons.entity.po.SysUser">
@@ -39,4 +47,14 @@
             AND su.mobile = #{mobile}
         </if>
     </select>
+
+    <select id="getUserRoleName" resultType="String">
+        SELECT NAME AS
+                   role_name
+        FROM
+            sys_user_role sur
+                LEFT JOIN sys_role sr ON sur.role_id = sr.id
+        WHERE
+            sur.user_id = #{userId}
+    </select>
 </mapper>