785834757 1 год назад
Родитель
Сommit
30cb174926
21 измененных файлов с 450 добавлено и 57 удалено
  1. 3 1
      authentication/src/main/java/com/jzg/controller/AuthController.java
  2. 5 0
      commons/src/main/java/com/jzg/commons/constants/Constants.java
  3. 13 0
      commons/src/main/java/com/jzg/commons/core/base/StateResult.java
  4. 18 0
      commons/src/main/java/com/jzg/commons/entity/po/SysUser.java
  5. 7 0
      commons/src/main/java/com/jzg/commons/entity/po/SysUserJzgInfo.java
  6. 15 0
      commons/src/main/java/com/jzg/commons/entity/po/SysUserJzgInfoBankCard.java
  7. 6 0
      commons/src/main/java/com/jzg/commons/entity/po/SysUserRole.java
  8. 6 0
      commons/src/main/java/com/jzg/commons/entity/vo/SysUserVo.java
  9. 2 1
      platform/src/main/java/com/jzg/service/impl/SysSystemServiceImpl.java
  10. 22 1
      tenant/organization/src/main/java/com/jzg/organization/controller/UserController.java
  11. 18 0
      tenant/organization/src/main/java/com/jzg/organization/mapper/SysUserRoleMapper.java
  12. 2 0
      tenant/organization/src/main/java/com/jzg/organization/service/SysDeptService.java
  13. 24 0
      tenant/organization/src/main/java/com/jzg/organization/service/SysUserRoleService.java
  14. 14 0
      tenant/organization/src/main/java/com/jzg/organization/service/SysUserService.java
  15. 13 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysDeptServiceImpl.java
  16. 37 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserRoleServiceImpl.java
  17. 89 44
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserServiceImpl.java
  18. 32 9
      tenant/organization/src/main/java/com/jzg/organization/state/UserState.java
  19. 15 1
      tenant/organization/src/main/java/com/jzg/organization/state/config/UserStateConfig.java
  20. 96 0
      tenant/organization/src/main/java/com/jzg/organization/state/listener/UserStateListener.java
  21. 13 0
      tenant/organization/src/main/resources/mapper/SysUserRoleMapper.xml

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

@@ -144,7 +144,9 @@ public class AuthController extends BaseController {
     public HttpResult modifyPass(@RequestBody ModifyPassWordFormVo modifyPassWordFormVo){
         String userName = getUserName();
         SysUser sysUser = sysUserService.getOne(new LambdaQueryWrapper<SysUser>()
-                .eq(SysUser::getUsername, userName));
+                .eq(SysUser::getUsername, userName)
+                .or()
+                .eq(SysUser::getMobile, userName));
         //如果旧密码一致更改密码
         if(!PasswordUtils.encode(modifyPassWordFormVo.getOldPassWord(),sysUser.getSalt()).equals(sysUser.getPassword()))
         {

+ 5 - 0
commons/src/main/java/com/jzg/commons/constants/Constants.java

@@ -70,4 +70,9 @@ public class Constants
     public static final String LOGIN_FAIL = "Error";
 
 
+    /**
+     * 默认密码
+     */
+    public static final String DEFAULT_PASSWORD = "12345678";
+
 }

+ 13 - 0
commons/src/main/java/com/jzg/commons/core/base/StateResult.java

@@ -0,0 +1,13 @@
+package com.jzg.commons.core.base;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class StateResult {
+    @Schema(description = "结果")
+    private boolean result;
+
+    @Schema(description = "当前状态")
+    private Integer currentState;
+}

+ 18 - 0
commons/src/main/java/com/jzg/commons/entity/po/SysUser.java

@@ -6,11 +6,14 @@ import com.jzg.commons.entity.dto.SysSystemAddParam;
 import com.jzg.commons.entity.dto.SysSystemEditParam;
 import com.jzg.commons.entity.vo.SysSystemVo;
 import com.jzg.commons.util.PasswordUtils;
+import com.jzg.commons.util.idgen.IdGenerate;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import static com.jzg.commons.constants.Constants.DEFAULT_PASSWORD;
+
 /**
  * 核心用户管理表实体 sys_user
  *
@@ -59,4 +62,19 @@ public class SysUser extends BaseModel{
         this.username = param.getUserName();
         this.mobile = param.getUserAccount();
     }
+
+    /**
+     * 生成新用户
+     * @return
+     */
+    public SysUser(String username,String mobile){
+        this.id = IdGenerate.nextId();
+        this.username = username;
+        this.mobile = mobile;
+        this.password = DEFAULT_PASSWORD;
+        String salt = PasswordUtils.getSalt();
+        this.salt = salt;
+        this.password = PasswordUtils.encode(this.password,salt);
+        this.accountStatus = 1;
+    }
 }

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

@@ -269,4 +269,11 @@ public class SysUserJzgInfo extends BaseModel {
     @Schema(description = "手机号")
     private String mobile;
 
+    @TableField(exist = false)
+    @Schema(description = "角色名称集合")
+    private List<String> roleIds;
+
+    @TableField(exist = false)
+    @Schema(description = "密码")
+    private String password;
 }

+ 15 - 0
commons/src/main/java/com/jzg/commons/entity/po/SysUserJzgInfoBankCard.java

@@ -3,6 +3,7 @@ package com.jzg.commons.entity.po;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.jzg.commons.util.idgen.IdGenerate;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -45,4 +46,18 @@ public class SysUserJzgInfoBankCard {
     @TableField(value = "remark")
     @Schema(description = "备注")
     private String remark;
+
+    public SysUserJzgInfoBankCard(){
+
+    }
+
+    public SysUserJzgInfoBankCard(String userJzgInfoId,String bankCardNumber,String bankName){
+        this.id = IdGenerate.nextId();
+        this.userJzgInfoId = userJzgInfoId;
+        this.bankCardNumber = bankCardNumber;
+        this.bankName = bankName;
+        this.isDefault = 0;
+        this.auditStatus = 0;
+
+    }
 }

+ 6 - 0
commons/src/main/java/com/jzg/commons/entity/po/SysUserRole.java

@@ -2,6 +2,7 @@ package com.jzg.commons.entity.po;
 
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.jzg.commons.core.base.BaseModel;
+import com.jzg.commons.util.idgen.IdGenerate;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -29,4 +30,9 @@ public class SysUserRole extends BaseModel {
     @Schema(description = "角色名称")
     private String name;
 
+    public SysUserRole(String userId, String roleId) {
+        this.id = IdGenerate.nextId();
+        this.userId = userId;
+        this.roleId = roleId;
+    }
 }

+ 6 - 0
commons/src/main/java/com/jzg/commons/entity/vo/SysUserVo.java

@@ -20,6 +20,9 @@ public class SysUserVo extends PageRequest {
     @Schema(description = "平台用户id")
     private String id;
 
+    @Schema(description = "用户id")
+    private String userId;
+
     /** 用户状态 : 1 正常 0 锁定 */
     @Schema(description = "用户状态 : 1 正常 0 锁定")
     private Integer accountStatus;
@@ -169,6 +172,9 @@ public class SysUserVo extends PageRequest {
     @Schema(description = "团队、渠道、电销id")
     private String organizationId;
 
+    @Schema(description = "角色id")
+    private List<String> roleIds;
+
     @Data
     @AllArgsConstructor
     @NoArgsConstructor

+ 2 - 1
platform/src/main/java/com/jzg/service/impl/SysSystemServiceImpl.java

@@ -2,6 +2,7 @@ package com.jzg.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.convert.Convert;
+import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -61,7 +62,7 @@ public class SysSystemServiceImpl extends ServiceImpl<SysSystemMapper, SysSystem
 
     @Override
     public boolean updatePerms(SysSystemPermsVo sysSystemPermsVo) {
-        String permsStr = sysSystemPermsVo.getPermsStr();
+        String permsStr = JSON.toJSONString(sysSystemPermsVo.getPerms());
         List<SysConfig> configs = sysConfigMapper.selectList(new LambdaQueryWrapper<SysConfig>()
                 .eq(SysConfig::getType, 1).eq(SysConfig::getSystemCode,sysSystemPermsVo.getSystemCode()));
         SysConfig config;

+ 22 - 1
tenant/organization/src/main/java/com/jzg/organization/controller/UserController.java

@@ -4,7 +4,9 @@ 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.commons.request.RequestSingleParam;
 import com.jzg.organization.service.SysDeptService;
+import com.jzg.organization.state.listener.UserStateListener;
 import io.swagger.v3.oas.annotations.Operation;
 import jakarta.annotation.Resource;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -93,6 +95,12 @@ public class UserController extends BaseController {
         return sysUserService.userTransfer(userTransferVo) ? HttpResult.ok("转移成功") : HttpResult.error("转移失败");
     }
 
+    @Operation(summary = "变更机构检测",description = "变更机构检测")
+    @PostMapping(value = "/checkChangeDept")
+    public HttpResult checkChangeDept(@RequestSingleParam(value="userId") String userId){
+        return sysDeptService.checkChangeDept(userId) ? HttpResult.ok("允许变更机构") : HttpResult.error("不允许变更机构");
+    }
+
     @Operation(summary = "变更机构",description = "变更机构")
     @PostMapping(value = "/changeDept")
     public HttpResult changeDept(@RequestBody ChangeDeptVo changeDeptVo){
@@ -101,8 +109,21 @@ public class UserController extends BaseController {
 
     @Operation(summary = "离职申请",description = "离职申请")
     @PostMapping(value = "/userQuitApply")
-    public HttpResult userQuitApply(@RequestBody String userId){
+    public HttpResult userQuitApply(@RequestSingleParam(value="userId") String userId){
         return sysUserService.userQuitApply(userId)? HttpResult.ok("离职成功") : HttpResult.error("离职失败");
     }
 
+    @Operation(summary = "实名认证",description = "实名认证")
+    @PostMapping(value = "/realNameAuth")
+    public HttpResult realNameAuth(@RequestSingleParam(value = "userId") String userId){
+        return sysUserService.realNameAuth(userId) ? HttpResult.ok("实名认证提交成功") : HttpResult.error("实名认证提交失败");
+    }
+
+    @Operation(summary = "实名认证审核失败",description = "实名认证审核失败")
+    @PostMapping(value = "/realNameAuthFailed")
+    public HttpResult realNameAuthFailed(@RequestSingleParam(value = "userId") String userId){
+        return sysUserService.realNameAuthFailed(userId)? HttpResult.ok("实名认证审核失败") : HttpResult.error("实名认证审核失败");
+    }
+
+
 }

+ 18 - 0
tenant/organization/src/main/java/com/jzg/organization/mapper/SysUserRoleMapper.java

@@ -0,0 +1,18 @@
+package com.jzg.organization.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.Wrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.jzg.commons.entity.po.SysDept;
+import com.jzg.commons.entity.po.SysRole;
+import com.jzg.commons.entity.po.SysUserRole;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface SysUserRoleMapper extends BaseMapper<SysUserRole> {
+
+    List<SysRole> getUserRole(String userId);
+}

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

@@ -57,6 +57,8 @@ public interface SysDeptService extends IService<SysDept> {
      */
     boolean changeDept(ChangeDeptVo changeDeptVo);
 
+    boolean checkChangeDept(String userId);
+
 
     /**
      * 根据id获取机构信息

+ 24 - 0
tenant/organization/src/main/java/com/jzg/organization/service/SysUserRoleService.java

@@ -0,0 +1,24 @@
+package com.jzg.organization.service;
+
+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.po.SysRole;
+import com.jzg.commons.entity.po.SysUserRole;
+import com.jzg.commons.entity.vo.ChangeDeptVo;
+import com.jzg.commons.entity.vo.DeptLeaderVo;
+import com.jzg.commons.entity.vo.SysDeptVo;
+
+import java.util.List;
+
+public interface SysUserRoleService extends IService<SysUserRole> {
+
+    /**
+     * 获取用户角色
+     * @param userId
+     * @return
+     */
+    List<SysRole> getUserRole(String userId);
+
+}

+ 14 - 0
tenant/organization/src/main/java/com/jzg/organization/service/SysUserService.java

@@ -7,6 +7,7 @@ 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 com.jzg.commons.request.RequestSingleParam;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
@@ -76,4 +77,17 @@ public interface SysUserService extends IService<SysUser> {
      */
     boolean userQuitApply(String userId);
 
+    /**
+     * 实名认证
+     * @param userId
+     * @return
+     */
+    boolean realNameAuth(String userId);
+
+    /**
+     * 实名认证审核失败
+     * @param userId
+     * @return
+     */
+    boolean realNameAuthFailed(String userId);
 }

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

@@ -248,6 +248,19 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
         return sysUserJzgInfoService.updateById(userJzgInfo);
     }
 
+    @Override
+    public boolean checkChangeDept(String userId) {
+        //获取用户的角色 是否是管理员
+        SysUser sysUser = userService.getById(userId);
+        SysUserJzgInfo userJzgInfo = sysUserJzgInfoService.getOne(new LambdaQueryWrapper<SysUserJzgInfo>()
+                .eq(SysUserJzgInfo::getUserId, userId));
+        List<String> userRoleName = userService.getUserRoleName(userId);
+        if(userRoleName.contains("管理员")){
+            throw new SystemException("管理员不允许变更机构");
+        }
+        return true;
+    }
+
     @Override
     public SysDeptVo queryById(String id) {
         SysDept sysDept = getById(id);

+ 37 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserRoleServiceImpl.java

@@ -0,0 +1,37 @@
+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.core.base.BaseController;
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.dto.SysDeptParam;
+import com.jzg.commons.entity.po.*;
+import com.jzg.commons.entity.vo.ChangeDeptVo;
+import com.jzg.commons.entity.vo.DeptLeaderVo;
+import com.jzg.commons.entity.vo.SysDeptVo;
+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.organization.mapper.SysDeptMapper;
+import com.jzg.organization.mapper.SysUserRoleMapper;
+import com.jzg.organization.service.*;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
+
+@Service
+public class SysUserRoleServiceImpl extends ServiceImpl<SysUserRoleMapper, SysUserRole> implements SysUserRoleService {
+
+    @Override
+    public List<SysRole> getUserRole(String userId) {
+        return baseMapper.getUserRole(userId);
+    }
+}

+ 89 - 44
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserServiceImpl.java

@@ -5,6 +5,7 @@ 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.base.StateResult;
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.po.*;
 import com.jzg.commons.entity.vo.*;
@@ -18,6 +19,7 @@ import com.jzg.organization.mapper.SysUserMapper;
 import com.jzg.organization.service.*;
 import com.jzg.organization.service.*;
 import com.jzg.organization.state.UserState;
+import com.jzg.organization.state.listener.UserStateListener;
 import jakarta.annotation.Resource;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -28,6 +30,9 @@ import org.springframework.transaction.annotation.Transactional;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Objects;
+import java.util.stream.Collectors;
+
+import static com.jzg.commons.constants.Constants.DEFAULT_PASSWORD;
 
 /**
  * @author Administrator
@@ -60,6 +65,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     @Resource
     private SysOrganizationUserLinkService sysOrganizationUserLinkService;
 
+    @Autowired
+    private UserStateListener userStateListener;
+
+    @Autowired
+    private SysUserRoleService sysUserRoleService;
+
     private String getCurrentAreaCode(String province,String city,String area){
         String userWorkNumber = "";
         if (!area.isEmpty()) {
@@ -148,70 +159,82 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     @Override
     public boolean userQuitApply(String userId) {
         SysUserJzgInfo userByUserId = sysUserJzgInfoService.getUserByUserId(userId);
+        StateResult resign = userStateListener.Resign(userByUserId);
+        if(resign.isResult()){
+            //更新状态
+            userByUserId.setStatus(UserState.UserStateEnum.RESIGN_ING.getValue());
+            sysUserJzgInfoService.updateById(userByUserId);
+        }
+        return true;
+    }
 
-        return false;
+    @Override
+    public boolean realNameAuth(String userId){
+        SysUserJzgInfo userByUserId = sysUserJzgInfoService.getUserByUserId(userId);
+        StateResult stateResult = userStateListener.AuthCert(userByUserId);
+        if(stateResult.isResult()){
+            //更新状态
+            userByUserId.setStatus(stateResult.getCurrentState());
+            sysUserJzgInfoService.updateById(userByUserId);
+        }
+        return true;
+    }
+
+    @Override
+    public boolean realNameAuthFailed(String userId){
+        SysUserJzgInfo userByUserId = sysUserJzgInfoService.getUserByUserId(userId);
+        StateResult stateResult = userStateListener.AuthCertFailed(userByUserId);
+        if(stateResult.isResult()){
+            //更新状态
+            userByUserId.setStatus(stateResult.getCurrentState());
+            sysUserJzgInfoService.updateById(userByUserId);
+        }
+        return true;
     }
 
     @Override
     @Transactional(rollbackFor = Exception.class)
     public HttpResult addUserInfo(SysUserVo sysUserVo) {
         SysUser sysUser = baseMapper.getUserByMobile(sysUserVo.getMobile());
-        if (sysUser != null) {
+        String sysUserJzgInfoId = "",sysUserId = "";
+        if (!Objects.isNull(sysUser)) {
             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());
-            sysUserJzgInfo.setStatus(0);
-            sysUserJzgInfo.setIsEnable(0);
-            sysUserJzgInfo.setIsDelete(0);
             sysUserJzgInfoService.save(sysUserJzgInfo);
+            sysUserJzgInfoId = sysUserJzgInfo.getId();
+            sysUserId = sysUser.getId();
             saveOrganization(sysUserVo.getOrganizationId(), sysUserJzgInfo.getId());
             saveFile(sysUserVo.getSfz1(), sysUserVo.getSfz2(), sysUserVo.getQualification(), sysUserVo.getContract(), sysUserVo.getApplicant(), sysUserVo.getSalaryTable(), sysUserVo.getLeaveTable(),sysUserJzgInfo.getId());
-            //如果表单输入的银行卡号和银行名不为空,则保存银行卡信息
-            if (sysUserVo.getBankCardId() != null && sysUserVo.getBankName() != null) {
-                SysUserJzgInfoBankCard sysUserJzgInfoBankCard = new SysUserJzgInfoBankCard();
-                sysUserJzgInfoBankCard.setId(IdGenerate.nextId());
-                sysUserJzgInfoBankCard.setUserJzgInfoId(sysUserJzgInfo.getId());
-                sysUserJzgInfoBankCard.setBankCardNumber(sysUserVo.getBankCardId());
-                sysUserJzgInfoBankCard.setBankName(sysUserVo.getBankName());
-                sysUserJzgInfoBankCard.setIsDefault(0); //设为非默认卡
-                sysUserJzgInfoBankCard.setAuditStatus(0); //设为待审核
-                sysUserJzgInfoBankCard.setRemark("");
-                sysUserJzgInfoBankCardService.save(sysUserJzgInfoBankCard);
-            }
         } else {
             // 如果手机号为新号 重新生成SysUser 设置默认密码
-            SysUser sysUser1 = new SysUser();
-            sysUser1.setId(IdGenerate.nextId());
-            sysUser1.setUsername(sysUserVo.getMobile());
-            String pwd = "12345678";
-            String salt = PasswordUtils.getSalt();
-            sysUser1.setPassword(PasswordUtils.encode(pwd, salt));
-            sysUser1.setSalt(salt);
-            sysUser1.setMobile(sysUserVo.getMobile());
-            sysUser1.setAccountStatus(1);
+            SysUser sysUser1 = new SysUser(sysUserVo.getMobile(),sysUserVo.getMobile());
             this.save(sysUser1);
             SysUserJzgInfo sysUserJzgInfo = new SysUserJzgInfo();
             BeanUtils.copyProperties(sysUserVo, sysUserJzgInfo);
             sysUserJzgInfo.setId(IdGenerate.nextId());
             sysUserJzgInfo.setUserId(sysUser1.getId());
-            sysUserJzgInfo.setStatus(0);
-            sysUserJzgInfo.setIsEnable(0);
-            sysUserJzgInfo.setIsDelete(0);
+            sysUserJzgInfoId = sysUserJzgInfo.getId();
+            sysUserId = sysUser1.getId();
             sysUserJzgInfoService.save(sysUserJzgInfo);
+        }
 
-            //如果表单输入的银行卡号和银行名不为空,则保存银行卡信息
-            if (sysUserVo.getBankCardId() != null && sysUserVo.getBankName() != null) {
-                SysUserJzgInfoBankCard sysUserJzgInfoBankCard = new SysUserJzgInfoBankCard();
-                sysUserJzgInfoBankCard.setId(IdGenerate.nextId());
-                sysUserJzgInfoBankCard.setUserJzgInfoId(sysUserJzgInfo.getId());
-                sysUserJzgInfoBankCard.setBankCardNumber(sysUserVo.getBankCardId());
-                sysUserJzgInfoBankCard.setBankName(sysUserVo.getBankName());
-                sysUserJzgInfoBankCard.setIsDefault(0); //设为非默认卡
-                sysUserJzgInfoBankCard.setAuditStatus(0); //设为待审核
-                sysUserJzgInfoBankCard.setRemark("");
-                sysUserJzgInfoBankCardService.save(sysUserJzgInfoBankCard);
-            }
+        //如果表单输入的银行卡号和银行名不为空,则保存银行卡信息
+        if (sysUserVo.getBankCardId() != null && sysUserVo.getBankName() != null) {
+            SysUserJzgInfoBankCard sysUserJzgInfoBankCard =
+                    new SysUserJzgInfoBankCard(sysUserJzgInfoId, sysUserVo.getBankCardId(), sysUserVo.getBankName());
+            sysUserJzgInfoBankCardService.save(sysUserJzgInfoBankCard);
+        }
+        //如果角色存在的话则存储角色
+        if(!Objects.isNull(sysUserVo.getRoleIds()) && !sysUserVo.getRoleIds().isEmpty()){
+            String finalSysUserId = sysUserId;
+            List<SysUserRole> sysUserRoleList = new ArrayList<>();
+            sysUserVo.getRoleIds().forEach(roleId -> {
+                SysUserRole sysUserRole = new SysUserRole(finalSysUserId,roleId);
+                sysUserRoleList.add(sysUserRole);
+            });
+            sysUserRoleService.saveBatch(sysUserRoleList);
         }
         String resultMsg = "";
         if(sysUserVo.getTypeAttr().equals("2")){
@@ -230,8 +253,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             if (sysUserJzgInfo == null) {
                 throw new SystemException("该用户不存在");
             }
-            sysUserJzgInfo.setIsDelete(1);
-            sysUserJzgInfoService.updateById(sysUserJzgInfo);
+            sysUserJzgInfoService.removeById(id);
         }
         return HttpResult.ok("删除业务员成功");
     }
@@ -303,12 +325,28 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 //        }
         BeanUtils.copyProperties(sysUserVo, sysUserJzgInfo);
         sysUserJzgInfoService.updateById(sysUserJzgInfo);
+
+        //用户角色处理
+        List<SysRole> userRole = sysUserRoleService.getUserRole(sysUserVo.getId());
+        List<String> roleIds = userRole.stream().map(u -> u.getId()).collect(Collectors.toList());
+        if(!roleIds.isEmpty()) {
+            sysUserRoleService.remove(new LambdaQueryWrapper<SysUserRole>()
+                    .eq(SysUserRole::getUserId, sysUserVo.getId())
+                    .in(SysUserRole::getRoleId, roleIds));
+        }
+        List<SysUserRole> sysUserRoleList = new ArrayList<>();
+        sysUserVo.getRoleIds().forEach(roleId->{
+            SysUserRole sysUserRole = new SysUserRole(sysUserVo.getId(),roleId);
+            sysUserRoleList.add(sysUserRole);
+        });
+        sysUserRoleService.saveBatch(sysUserRoleList);
+
         return HttpResult.ok("修改业务员成功");
     }
 
     @Override
     public HttpResult getUserInfoById(String id) {
-        SysUserJzgInfo sysUserJzgInfo = sysUserJzgInfoService.getById(id);
+        SysUserJzgInfo sysUserJzgInfo = sysUserJzgInfoService.getUserByUserId(id);
         if (sysUserJzgInfo == null) {
             throw new SystemException("该用户不存在");
         }
@@ -336,6 +374,13 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             }
             sysUserJzgInfo.setRegion(region.substring(0, region.length() - 1));
         }
+        //给前端返
+        sysUserJzgInfo.setPassword("******");
+        //角色
+        List<SysRole> userRole = sysUserRoleService.getUserRole(sysUser.getId());
+        List<String> roleIds = userRole.stream().map(u -> u.getId()).collect(Collectors.toList());
+        sysUserJzgInfo.setRoleIds(roleIds);
+
         List<SysUserJzgInfoFile> sysUserJzgInfoFile = sysUserJzgInfoFileService.list
                 (new LambdaQueryWrapper<SysUserJzgInfoFile>().eq(SysUserJzgInfoFile::getUserJzgInfoId,id));
         sysUserJzgInfo.setFileList(sysUserJzgInfoFile);

+ 32 - 9
tenant/organization/src/main/java/com/jzg/organization/state/UserState.java

@@ -7,17 +7,40 @@ public class UserState {
 
 
     public enum UserStateEnum {
-        NOT_CERT, // 未认证
-        REAL_AUTH_ING, // 实名认证中
-        REAL_AUTH_FAILED, // 实名认证失败
-        PADDING_EMPLOYEE, // 待入职
-        COMPANY_REVIEW_ING, // 入司审核中
-        COMPANY_REVIEW_FAILED, // 入司审核失败
-        ALREADY_EMPLOYEE, // 已入职
-        RESIGN_ING, // 离职待审核
-        RESIGN, // 离职
+        NOT_CERT(0), // 未认证
+        REAL_AUTH_ING(1), // 实名认证中
+        REAL_AUTH_FAILED(2), // 实名认证失败
+        PADDING_EMPLOYEE(3), // 待入职
+        COMPANY_REVIEW_ING(4), // 入司审核中
+        COMPANY_REVIEW_FAILED(5), // 入司审核失败
+        ALREADY_EMPLOYEE(6), // 已入职
+        RESIGN_ING(7), // 离职待审核
+        RESIGN(8); // 离职
+
+        private final int value;
+
+        // 构造函数
+        UserStateEnum(int value) {
+            this.value = value;
+        }
+
+        // 获取整数值
+        public int getValue() {
+            return this.value;
+        }
+
+        // 通过整数值获取对应的枚举类型
+        public static UserStateEnum fromValue(int value) {
+            for (UserStateEnum state : UserStateEnum.values()) {
+                if (state.getValue() == value) {
+                    return state;
+                }
+            }
+            return null;
+        }
     }
 
+
     public enum UserStateEvent{
         REAL_AUTH_CERT, // 认证
         REAL_AUTH_SUCCESS, // 实名认证成功事件

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

@@ -2,12 +2,16 @@ package com.jzg.organization.state.config;
 
 import com.jzg.organization.state.UserState;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.messaging.Message;
 import org.springframework.statemachine.config.EnableStateMachine;
 import org.springframework.statemachine.config.StateMachineConfigurerAdapter;
 import org.springframework.statemachine.config.builders.StateMachineStateConfigurer;
 import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer;
+import org.springframework.statemachine.listener.StateMachineListenerAdapter;
+import org.springframework.statemachine.state.State;
 
 import java.util.EnumSet;
+import java.util.Map;
 
 @Configuration
 @EnableStateMachine
@@ -17,9 +21,19 @@ public class UserStateConfig extends StateMachineConfigurerAdapter<UserState.Use
     public void configure(StateMachineStateConfigurer<UserState.UserStateEnum, UserState.UserStateEvent> states) throws Exception {
         states.withStates()
                 .initial(UserState.UserStateEnum.NOT_CERT) // 初始状态
-                .states(EnumSet.allOf(UserState.UserStateEnum.class)); // 所有状态
+                .states(EnumSet.allOf(UserState.UserStateEnum.class)); // 注册所有状态
     }
 
+    public static final Map<UserState.UserStateEvent, UserState.UserStateEnum> EVENT_SOURCE_MAP = Map.of(
+            UserState.UserStateEvent.REAL_AUTH_CERT, UserState.UserStateEnum.NOT_CERT,
+            UserState.UserStateEvent.REAL_AUTH_FAILED, UserState.UserStateEnum.REAL_AUTH_ING,
+            UserState.UserStateEvent.REAL_AUTH_SUCCESS, UserState.UserStateEnum.REAL_AUTH_ING,
+            UserState.UserStateEvent.COMPANY_REVIEW, UserState.UserStateEnum.PADDING_EMPLOYEE,
+            UserState.UserStateEvent.COMPANY_REVIEW_FAILED, UserState.UserStateEnum.COMPANY_REVIEW_ING,
+            UserState.UserStateEvent.COMPANY_REVIEW_SUCCESS, UserState.UserStateEnum.COMPANY_REVIEW_ING,
+            UserState.UserStateEvent.RESIGN_ING, UserState.UserStateEnum.ALREADY_EMPLOYEE
+    );
+
     @Override
     public void configure(StateMachineTransitionConfigurer<UserState.UserStateEnum, UserState.UserStateEvent> transitions) throws Exception {
         transitions

+ 96 - 0
tenant/organization/src/main/java/com/jzg/organization/state/listener/UserStateListener.java

@@ -0,0 +1,96 @@
+package com.jzg.organization.state.listener;
+
+
+import com.jzg.commons.core.base.StateResult;
+import com.jzg.commons.entity.po.SysUserJzgInfo;
+import com.jzg.commons.exception.SystemException;
+import com.jzg.organization.state.UserState;
+import jakarta.annotation.Resource;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.messaging.Message;
+import org.springframework.messaging.support.MessageBuilder;
+import org.springframework.statemachine.StateMachine;
+import org.springframework.statemachine.StateMachineEventResult;
+import org.springframework.statemachine.config.StateMachineFactory;
+import org.springframework.statemachine.state.State;
+import org.springframework.stereotype.Component;
+import reactor.core.publisher.Flux;
+import reactor.core.publisher.Mono;
+
+import java.util.concurrent.atomic.AtomicBoolean;
+
+@Component
+public class UserStateListener {
+
+    @Resource
+    private StateMachine<UserState.UserStateEnum, UserState.UserStateEvent> userStateMachine;
+
+
+    //传递订单信息给状态机
+    private synchronized boolean sendEvent(Mono<Message<UserState.UserStateEvent>> message) {
+        AtomicBoolean result = new AtomicBoolean(false);
+        try {
+            Mono<Void> startMono = userStateMachine.startReactively();
+            startMono.block();
+
+            Flux<StateMachineEventResult<UserState.UserStateEnum, UserState.UserStateEvent>> stateMachineEventResultFlux = userStateMachine.sendEvent(message);
+            StateMachineEventResult<UserState.UserStateEnum, UserState.UserStateEvent> eventResult = stateMachineEventResultFlux.blockFirst();
+
+            if (eventResult != null && eventResult.getResultType() == StateMachineEventResult.ResultType.ACCEPTED) {
+                result.set(true);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return result.get();
+    }
+
+    /**
+     * 离职
+     * @param sysUser
+     * @return
+     */
+    public StateResult Resign(SysUserJzgInfo sysUser){
+        StateResult stateResult = new StateResult();
+        Message message = MessageBuilder.withPayload(UserState.UserStateEvent.RESIGN_ING).setHeader("entity",sysUser).build();
+//        if(!sendEvent(message))
+//        {
+//            throw new SystemException("离职失败");
+//        }
+        stateResult.setCurrentState(userStateMachine.getState().getId().getValue());
+        stateResult.setResult(true);
+        return stateResult;
+    }
+
+    /**
+     * 实名认证
+     * @param sysUser
+     * @return
+     */
+    public StateResult AuthCert(SysUserJzgInfo sysUser){
+        StateResult stateResult = new StateResult();
+        Message message = MessageBuilder.withPayload(UserState.UserStateEvent.REAL_AUTH_CERT).setHeader("entity",sysUser).build();
+//        if(!sendEvent(message))
+//        {
+//            throw new SystemException("实名认证失败");
+//        }
+        stateResult.setCurrentState(userStateMachine.getState().getId().getValue());
+        stateResult.setResult(true);
+        return stateResult;
+    }
+
+    public StateResult AuthCertFailed(SysUserJzgInfo sysUser){
+        StateResult stateResult = new StateResult();
+        Mono<Message<UserState.UserStateEvent>> message = Mono.just(
+                MessageBuilder.withPayload(UserState.UserStateEvent.REAL_AUTH_FAILED)
+                        .setHeader("entity", UserState.UserStateEnum.fromValue(sysUser.getStatus())).build());
+
+        if(!sendEvent(message)){
+            throw new SystemException("实名认证审核失败");
+        }
+        stateResult.setCurrentState(userStateMachine.getState().getId().getValue());
+        stateResult.setResult(true);
+        return stateResult;
+    }
+}

+ 13 - 0
tenant/organization/src/main/resources/mapper/SysUserRoleMapper.xml

@@ -0,0 +1,13 @@
+<?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.organization.mapper.SysUserRoleMapper">
+
+    <select id="getUserRole" resultType="com.jzg.commons.entity.po.SysRole">
+        SELECT
+            sr.*
+        FROM
+            sys_user_role sur
+                LEFT JOIN sys_role sr ON sur.role_id = sr.id
+        WHERE user_id = #{userId}
+    </select>
+</mapper>