Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

xuqiang 1 год назад
Родитель
Сommit
b8b8c2b1d5
41 измененных файлов с 557 добавлено и 423 удалено
  1. 2 1
      authentication/src/main/java/com/jzg/config/JzgAuthenticationProvider.java
  2. 10 1
      authentication/src/main/java/com/jzg/controller/AuthController.java
  3. 3 0
      authentication/src/main/java/com/jzg/entity/SysUser.java
  4. 4 0
      authentication/src/main/java/com/jzg/entity/vo/ModifyPassWordFormVo.java
  5. 8 0
      authentication/src/main/java/com/jzg/mapper/SysUserMapper.java
  6. 10 0
      authentication/src/main/java/com/jzg/service/SysUserService.java
  7. 9 0
      authentication/src/main/java/com/jzg/service/impl/SysUserServiceImpl.java
  8. 13 1
      authentication/src/main/resources/mapper/SysUserMapper.xml
  9. 4 0
      commons/src/main/java/com/jzg/commons/config/DataPermissionInterceptor.java
  10. 7 6
      commons/src/main/java/com/jzg/commons/core/base/BaseController.java
  11. 3 0
      commons/src/main/java/com/jzg/commons/entity/dto/SysUserJzgInfoDto.java
  12. 0 73
      commons/src/main/java/com/jzg/commons/entity/po/SysOperLog.java
  13. 27 0
      commons/src/main/java/com/jzg/commons/entity/po/SysUserJzgInfo.java
  14. 20 0
      commons/src/main/java/com/jzg/commons/entity/vo/ChangeDeptVo.java
  15. 20 0
      commons/src/main/java/com/jzg/commons/entity/vo/DeptLeaderVo.java
  16. 3 0
      commons/src/main/java/com/jzg/commons/entity/vo/SysUserInfoListVo.java
  17. 5 0
      commons/src/main/java/com/jzg/commons/entity/vo/SysUserSelectVo.java
  18. 23 0
      commons/src/main/java/com/jzg/commons/entity/vo/UserTransferInfoVo.java
  19. 16 0
      commons/src/main/java/com/jzg/commons/entity/vo/UserTransferVo.java
  20. 1 0
      gateway/src/main/java/com/jzg/config/CorsConfig.java
  21. 1 1
      platform/src/main/java/com/jzg/controller/UserRoleController.java
  22. 0 52
      platform/src/main/java/com/jzg/mapper/SysOperLogMapper.java
  23. 0 49
      platform/src/main/java/com/jzg/service/SysOperLogService.java
  24. 0 79
      platform/src/main/java/com/jzg/service/impl/SysOperLogServiceImpl.java
  25. 19 16
      platform/src/main/java/com/jzg/service/impl/UserRoleServiceImpl.java
  26. 1 1
      platform/src/main/resources/application.yml
  27. 0 87
      platform/src/main/resources/mapper/SysOperLogMapper.xml
  28. 14 5
      tenant/organization/src/main/java/com/jzg/organization/controller/DeptController.java
  29. 32 2
      tenant/organization/src/main/java/com/jzg/organization/controller/UserController.java
  30. 9 1
      tenant/organization/src/main/java/com/jzg/organization/mapper/SysUserMapper.java
  31. 17 0
      tenant/organization/src/main/java/com/jzg/organization/service/SysDeptService.java
  32. 7 0
      tenant/organization/src/main/java/com/jzg/organization/service/SysUserJzgInfoService.java
  33. 29 1
      tenant/organization/src/main/java/com/jzg/organization/service/SysUserService.java
  34. 44 13
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysDeptServiceImpl.java
  35. 9 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserJzgInfoServiceImpl.java
  36. 128 10
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserServiceImpl.java
  37. 5 0
      tenant/organization/src/main/java/com/jzg/organization/state/UserState.java
  38. 5 1
      tenant/organization/src/main/java/com/jzg/organization/state/config/UserStateConfig.java
  39. 10 7
      tenant/organization/src/main/resources/application.yml
  40. 20 15
      tenant/organization/src/main/resources/mapper/SysUserJzgInfoMapper.xml
  41. 19 1
      tenant/organization/src/main/resources/mapper/SysUserMapper.xml

+ 2 - 1
authentication/src/main/java/com/jzg/config/JzgAuthenticationProvider.java

@@ -68,7 +68,8 @@ public class JzgAuthenticationProvider implements AuthenticationProvider {
 //            throw new SystemException("验证码错误,请重新输入");
 //        }
 
-        SysUser byId = sysUserService.getById(username);
+
+        SysUser byId = sysUserService.getByUserName(username);
         String salt = byId.getSalt();
 
         // 加密密码和盐值

+ 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;
 

+ 8 - 0
authentication/src/main/java/com/jzg/mapper/SysUserMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.jzg.entity.SysUser;
 import com.jzg.entity.vo.SysUserJzgVo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 @Mapper
 public interface SysUserMapper extends BaseMapper<SysUser> {
@@ -13,4 +14,11 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
      * @return
      */
     public SysUserJzgVo getJzgUserInfo(String userId);
+
+    /**
+     * 获取用户信息
+     * @param username
+     * @return
+     */
+    public SysUser selectByUserName(@Param("username") String username);
 }

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

@@ -22,4 +22,14 @@ public interface SysUserService extends IService<SysUser> {
      * @return
      */
     public SysUserJzgVo getJzgUserInfo(String userId);
+
+
+
+
+    /**
+     *
+     * @param username
+     * @return
+     */
+    SysUser getByUserName(String username);
 }

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

@@ -1,7 +1,9 @@
 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;
@@ -21,4 +23,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         SysUserJzgVo jzgUserInfo = baseMapper.getJzgUserInfo(userId);
         return jzgUserInfo;
     }
+
+    @Override
+    public SysUser getByUserName(String username) {
+        return baseMapper.selectByUserName(username);
+    }
+
+
 }

+ 13 - 1
authentication/src/main/resources/mapper/SysUserMapper.xml

@@ -13,4 +13,16 @@
         WHERE
             su.id = #{userId}
     </select>
-</mapper>
+
+    <select id="selectByUserName" resultType="com.jzg.entity.SysUser">
+        SELECT
+            su.*
+        FROM
+            sys_user su
+        WHERE
+        account_status = 1 AND is_delete = 0
+        <if test="username != null and username != ''">
+           AND (su.username = #{username} or su.mobile = #{username})
+        </if>
+    </select>
+</mapper>

+ 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+"%'");

+ 7 - 6
commons/src/main/java/com/jzg/commons/core/base/BaseController.java

@@ -4,6 +4,7 @@ package com.jzg.commons.core.base;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.jzg.commons.exception.SystemException;
+import com.jzg.commons.exception.TokenExpireException;
 import jakarta.servlet.http.HttpServletRequest;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -26,7 +27,7 @@ public class BaseController {
         HttpServletRequest request = attributes.getRequest();
         String authorizationHeader = request.getHeader("Authorization");
         if(Objects.isNull(authorizationHeader) || Objects.isNull(redissonClient.getBucket(authorizationHeader).get())){
-            throw new SystemException("用户登录信息过期");
+            throw new TokenExpireException("用户登录信息过期");
         }
         String userJsonStr = redissonClient.getBucket(authorizationHeader).get().toString();
         JSONObject userInfo = JSONObject.parseObject(userJsonStr);
@@ -42,7 +43,7 @@ public class BaseController {
         HttpServletRequest request = attributes.getRequest();
         String authorizationHeader = request.getHeader("Authorization");
         if(Objects.isNull(authorizationHeader) || Objects.isNull(redissonClient.getBucket(authorizationHeader).get())){
-            throw new SystemException("用户登录信息过期");
+            throw new TokenExpireException("用户登录信息过期");
         }
         String userJsonStr = redissonClient.getBucket(authorizationHeader).get().toString();
         JSONObject userInfo = JSONObject.parseObject(userJsonStr);
@@ -58,7 +59,7 @@ public class BaseController {
         HttpServletRequest request = attributes.getRequest();
         String authorizationHeader = request.getHeader("Authorization");
         if(Objects.isNull(authorizationHeader) || Objects.isNull(redissonClient.getBucket(authorizationHeader).get())){
-            throw new SystemException("用户登录信息过期");
+            throw new TokenExpireException("用户登录信息过期");
         }
         List<String> userPerms = new ArrayList<>();
         String userJsonStr = redissonClient.getBucket(authorizationHeader).get().toString();
@@ -79,7 +80,7 @@ public class BaseController {
         HttpServletRequest request = attributes.getRequest();
         String authorizationHeader = request.getHeader("Authorization");
         if(Objects.isNull(authorizationHeader) || Objects.isNull(redissonClient.getBucket(authorizationHeader).get())){
-            throw new SystemException("用户登录信息过期");
+            throw new TokenExpireException("用户登录信息过期");
         }
         String userJsonStr = redissonClient.getBucket(authorizationHeader).get().toString();
         JSONObject userInfo = JSONObject.parseObject(userJsonStr);
@@ -91,7 +92,7 @@ public class BaseController {
         HttpServletRequest request = attributes.getRequest();
         String authorizationHeader = request.getHeader("Authorization");
         if(Objects.isNull(authorizationHeader) || Objects.isNull(redissonClient.getBucket(authorizationHeader).get())){
-            throw new SystemException("用户登录信息过期");
+            throw new TokenExpireException("用户登录信息过期");
         }
         String userJsonStr = redissonClient.getBucket(authorizationHeader).get().toString();
         JSONObject userInfo = JSONObject.parseObject(userJsonStr);
@@ -107,7 +108,7 @@ public class BaseController {
         HttpServletRequest request = attributes.getRequest();
         String authorizationHeader = request.getHeader("Authorization");
         if(Objects.isNull(authorizationHeader) || Objects.isNull(redissonClient.getBucket(authorizationHeader).get())){
-            throw new SystemException("用户登录信息过期");
+            throw new TokenExpireException("用户登录信息过期");
         }
         String userJsonStr = redissonClient.getBucket(authorizationHeader).get().toString();
         JSONObject userInfo = JSONObject.parseObject(userJsonStr);

+ 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;
 
 }

+ 0 - 73
commons/src/main/java/com/jzg/commons/entity/po/SysOperLog.java

@@ -1,73 +0,0 @@
-package com.jzg.commons.entity.po;
-
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Data;
-
-import java.util.Date;
-
-/**
- * 操作日志记录表 oper_log
- * 
- * @author dongxin
- */
-@Data
-public class SysOperLog {
-
-    /** 日志主键 */
-    private String Id;
-
-    /** 操作模块 */
-    private String title;
-
-    /** 业务类型(0其它 1新增 2修改 3删除) */
-    private Integer businessType;
-
-    /** 业务类型数组 */
-    private Integer[] businessTypes;
-
-    /** 请求方法 */
-    private String method;
-
-    /** 请求方式 */
-    private String requestMethod;
-
-    /** 操作类别(0其它 1后台用户 2手机端用户) */
-    private Integer operatorType;
-
-    /** 操作人员 */
-    private String operName;
-
-    /** 部门名称 */
-    private String deptName;
-
-    /** 租户CODE */
-    private String sysCode;
-
-    /** 请求url */
-    private String operUrl;
-
-    /** 操作地址 */
-    private String operIp;
-
-    /** 操作地点 */
-    private String operLocation;
-
-    /** 请求参数 */
-    private String operParam;
-
-    /** 返回参数 */
-    private String jsonResult;
-
-    /** 操作状态(0正常 1异常) */
-    private Integer status;
-
-    /** 错误消息 */
-    private String errorMsg;
-
-    /** 操作时间 */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    private Date operTime;
-
-    /** 消耗时间 */
-    private Long costTime;
-}

+ 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/java/com/jzg/controller/UserRoleController.java

@@ -68,7 +68,7 @@ public class UserRoleController extends BaseController {
             //从用户信息中获取租户code
             sysRoleVo.setSystemCode(getUserSystemCode());
             //租户校验 部门表单
-            if(Objects.isNull(sysRoleVo.getDeptId()) && sysRoleVo.getDeptId().isEmpty()){
+            if(Objects.isNull(sysRoleVo.getDeptId()) || sysRoleVo.getDeptId().isEmpty()){
                 throw new ValidateException("请选择部门");
             }
         }

+ 0 - 52
platform/src/main/java/com/jzg/mapper/SysOperLogMapper.java

@@ -1,52 +0,0 @@
-package com.jzg.mapper;
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.jzg.commons.entity.po.SysOperLog;
-import org.apache.ibatis.annotations.Mapper;
-
-import java.util.List;
-
-/**
- * 操作日志 数据层
- * 
- * @author dongxin
- */
-@Mapper
-public interface SysOperLogMapper extends BaseMapper<SysOperLog>
-{
-    /**
-     * 新增操作日志
-     * 
-     * @param operLog 操作日志对象
-     */
-    public void insertOperlog(SysOperLog operLog);
-
-    /**
-     * 查询系统操作日志集合
-     * 
-     * @param operLog 操作日志对象
-     * @return 操作日志集合
-     */
-    public List<SysOperLog> selectOperLogList(SysOperLog operLog);
-
-    /**
-     * 批量删除系统操作日志
-     * 
-     * @param operIds 需要删除的操作日志ID
-     * @return 结果
-     */
-    public int deleteOperLogByIds(Long[] operIds);
-
-    /**
-     * 查询操作日志详细
-     * 
-     * @param operId 操作ID
-     * @return 操作日志对象
-     */
-    public SysOperLog selectOperLogById(Long operId);
-
-    /**
-     * 清空操作日志
-     */
-    public void cleanOperLog();
-}

+ 0 - 49
platform/src/main/java/com/jzg/service/SysOperLogService.java

@@ -1,49 +0,0 @@
-package com.jzg.service;
-import com.baomidou.mybatisplus.extension.service.IService;
-import com.jzg.commons.entity.po.SysOperLog;
-
-import java.util.List;
-
-/**
- * 操作日志 服务层
- *
- * @author dongxin
- */
-public interface SysOperLogService extends IService<SysOperLog>
-{
-    /**
-     * 新增操作日志
-     *
-     * @param operLog 操作日志对象
-     */
-    public void insertOperlog(SysOperLog operLog);
-
-    /**
-     * 查询系统操作日志集合
-     *
-     * @param operLog 操作日志对象
-     * @return 操作日志集合
-     */
-    public List<SysOperLog> selectOperLogList(SysOperLog operLog);
-
-    /**
-     * 批量删除系统操作日志
-     *
-     * @param operIds 需要删除的操作日志ID
-     * @return 结果
-     */
-    public int deleteOperLogByIds(Long[] operIds);
-
-    /**
-     * 查询操作日志详细
-     *
-     * @param operId 操作ID
-     * @return 操作日志对象
-     */
-    public SysOperLog selectOperLogById(Long operId);
-
-    /**
-     * 清空操作日志
-     */
-    public void cleanOperLog();
-}

+ 0 - 79
platform/src/main/java/com/jzg/service/impl/SysOperLogServiceImpl.java

@@ -1,79 +0,0 @@
-package com.jzg.service.impl;
-
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.jzg.commons.entity.po.SysOperLog;
-import com.jzg.mapper.SysOperLogMapper;
-import com.jzg.service.SysOperLogService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-/**
- * 操作日志 服务层处理
- * 
- * @author dongxin
- */
-@Service
-public class SysOperLogServiceImpl extends ServiceImpl<SysOperLogMapper, SysOperLog>
-        implements SysOperLogService
-{
-    @Autowired
-    private SysOperLogMapper sysOperLogMapper;
-
-    /**
-     * 新增操作日志
-     * 
-     * @param operLog 操作日志对象
-     */
-    @Override
-    public void insertOperlog(SysOperLog operLog)
-    {
-        sysOperLogMapper.insertOperlog(operLog);
-    }
-
-    /**
-     * 查询系统操作日志集合
-     * 
-     * @param operLog 操作日志对象
-     * @return 操作日志集合
-     */
-    @Override
-    public List<SysOperLog> selectOperLogList(SysOperLog operLog)
-    {
-        return sysOperLogMapper.selectOperLogList(operLog);
-    }
-
-    /**
-     * 批量删除系统操作日志
-     * 
-     * @param operIds 需要删除的操作日志ID
-     * @return 结果
-     */
-    @Override
-    public int deleteOperLogByIds(Long[] operIds)
-    {
-        return sysOperLogMapper.deleteOperLogByIds(operIds);
-    }
-
-    /**
-     * 查询操作日志详细
-     * 
-     * @param operId 操作ID
-     * @return 操作日志对象
-     */
-    @Override
-    public SysOperLog selectOperLogById(Long operId)
-    {
-        return sysOperLogMapper.selectOperLogById(operId);
-    }
-
-    /**
-     * 清空操作日志
-     */
-    @Override
-    public void cleanOperLog()
-    {
-        sysOperLogMapper.cleanOperLog();
-    }
-}

+ 19 - 16
platform/src/main/java/com/jzg/service/impl/UserRoleServiceImpl.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.commons.annotation.IgnoreTenant;
+import com.jzg.commons.constants.SystemConstants;
 import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.entity.po.*;
 import com.jzg.commons.entity.vo.RolePermissionVo;
@@ -144,22 +145,24 @@ public class UserRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> imp
         sysRoleDataScopeLinkMapper.delete(new LambdaQueryWrapper<SysRoleDataScopeLink>()
               .eq(SysRoleDataScopeLink::getRoleId,sysRole.getId()));
 
-        //保存角色数据权限
-        SysRoleDataScope sysRoleDataScope = new SysRoleDataScope();
-        sysRoleDataScope.setId(IdGenerate.nextId());
-        sysRoleDataScope.setRoleId(sysRole.getId());
-        sysRoleDataScope.setDataMark(sysRoleVo.getDataScope().getDataMark());
-        sysRoleDataScopeMapper.insert(sysRoleDataScope);
-        if(sysRoleDataScope.getDataMark().equals("2") || sysRoleDataScope.getDataMark().equals("1")) {
-            List<SysRoleDataScopeLink> sysRoleDataScopeLinks = new ArrayList<>();
-            sysRoleVo.getDataScope().getDeptIds().forEach(item -> {
-                SysRoleDataScopeLink sysRoleDataScopeLink = new SysRoleDataScopeLink();
-                sysRoleDataScopeLink.setId(IdGenerate.nextId());
-                sysRoleDataScopeLink.setRoleId(sysRole.getId());
-                sysRoleDataScopeLink.setDeptId(item);
-                sysRoleDataScopeLinks.add(sysRoleDataScopeLink);
-            });
-            sysRoleDataScopeLinkMapper.insert(sysRoleDataScopeLinks);
+        //保存角色数据权限  如果是平台则直接跳过
+        if(!baseController.getUserSystemCode().equals(SystemConstants.SYSTEM_PLATFORM.getCode())) {
+            SysRoleDataScope sysRoleDataScope = new SysRoleDataScope();
+            sysRoleDataScope.setId(IdGenerate.nextId());
+            sysRoleDataScope.setRoleId(sysRole.getId());
+            sysRoleDataScope.setDataMark(sysRoleVo.getDataScope().getDataMark());
+            sysRoleDataScopeMapper.insert(sysRoleDataScope);
+            if (sysRoleDataScope.getDataMark().equals("2") || sysRoleDataScope.getDataMark().equals("1")) {
+                List<SysRoleDataScopeLink> sysRoleDataScopeLinks = new ArrayList<>();
+                sysRoleVo.getDataScope().getDeptIds().forEach(item -> {
+                    SysRoleDataScopeLink sysRoleDataScopeLink = new SysRoleDataScopeLink();
+                    sysRoleDataScopeLink.setId(IdGenerate.nextId());
+                    sysRoleDataScopeLink.setRoleId(sysRole.getId());
+                    sysRoleDataScopeLink.setDeptId(item);
+                    sysRoleDataScopeLinks.add(sysRoleDataScopeLink);
+                });
+                sysRoleDataScopeLinkMapper.insert(sysRoleDataScopeLinks);
+            }
         }
 
         if(sysRolePermsMapper.insert(sysRolePermsList).stream().count() > 0 && baseMapper.updateById(sysRole) > 0){

+ 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

+ 0 - 87
platform/src/main/resources/mapper/SysOperLogMapper.xml

@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="com.jzg.mapper.SysOperLogMapper">
-
-	<resultMap type="com.jzg.commons.entity.po.SysOperLog" id="SysOperLogResult">
-		<id     property="id"         column="id"        />
-		<result property="title"          column="title"          />
-		<result property="businessType"   column="business_type"  />
-		<result property="method"         column="method"         />
-		<result property="requestMethod"  column="request_method" />
-		<result property="operatorType"   column="operator_type"  />
-		<result property="operName"       column="oper_name"      />
-		<result property="deptName"       column="dept_name"      />
-		<result property="operUrl"        column="oper_url"       />
-		<result property="operIp"         column="oper_ip"        />
-		<result property="operLocation"   column="oper_location"  />
-		<result property="operParam"      column="oper_param"     />
-		<result property="jsonResult"     column="json_result"    />
-		<result property="status"         column="status"         />
-		<result property="errorMsg"       column="error_msg"      />
-		<result property="operTime"       column="oper_time"      />
-		<result property="costTime"       column="cost_time"      />
-	</resultMap>
-
-	<sql id="selectOperLogVo">
-        select id, title, business_type, method, request_method, operator_type, oper_name ,dept_name, oper_url, oper_ip, oper_location, oper_param, json_result, status, error_msg, oper_time, cost_time
-        from sys_oper_log
-    </sql>
-    
-	<insert id="insertOperlog" parameterType="com.jzg.commons.entity.po.SysOperLog">
-		insert into sys_oper_log(title, business_type, method, request_method, operator_type, oper_name,dept_name, oper_url, oper_ip, oper_location, oper_param, json_result, status, error_msg, cost_time, oper_time)
-        values (#{title}, #{businessType}, #{method}, #{requestMethod}, #{operatorType}, #{operName} ,#{deptName}, #{operUrl}, #{operIp}, #{operLocation}, #{operParam}, #{jsonResult}, #{status}, #{errorMsg}, #{costTime}, sysdate())
-	</insert>
-	
-	<select id="selectOperLogList" parameterType="com.jzg.commons.entity.po.SysOperLog" resultMap="SysOperLogResult">
-		<include refid="selectOperLogVo"/>
-		<where>
-			<if test="operIp != null and operIp != ''">
-				AND oper_ip like concat('%', #{operIp}, '%')
-			</if>
-			<if test="title != null and title != ''">
-				AND title like concat('%', #{title}, '%')
-			</if>
-			<if test="businessType != null">
-				AND business_type = #{businessType}
-			</if>
-			<if test="businessTypes != null and businessTypes.length > 0">
-			    AND business_type in
-			    <foreach collection="businessTypes" item="businessType" open="(" separator="," close=")">
-		 			#{businessType}
-		        </foreach> 
-			</if>
-			<if test="status != null">
-				AND status = #{status}
-			</if>
-			<if test="operName != null and operName != ''">
-				AND oper_name like concat('%', #{operName}, '%')
-			</if>
-			<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->
-				AND oper_time &gt;= #{params.beginTime}
-			</if>
-			<if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->
-				AND oper_time &lt;= #{params.endTime}
-			</if>
-		</where>
-		order by id desc
-	</select>
-	
-	<delete id="deleteOperLogByIds" parameterType="Long">
- 		delete from sys_oper_log where id in
- 		<foreach collection="array" item="operId" open="(" separator="," close=")">
- 			#{operId}
-        </foreach> 
- 	</delete>
- 	
- 	<select id="selectOperLogById" parameterType="Long" resultMap="SysOperLogResult">
-		<include refid="selectOperLogVo"/>
-		where id = #{operId}
-	</select>
-	
-	<update id="cleanOperLog">
-        truncate table sys_oper_log
-    </update>
-
-</mapper> 

+ 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>