Forráskód Böngészése

Merge branch 'dev_czh' into dev

# Conflicts:
#	sckw-common/sckw-common-core/pom.xml
#	sckw-common/sckw-common-core/src/main/java/com/sckw/core/aspect/DaoAspect.java
small 2 éve
szülő
commit
8a02f5225d
68 módosított fájl, 1364 hozzáadás és 336 törlés
  1. 8 8
      sckw-auth/src/main/java/com/sckw/auth/controller/AuthController.java
  2. 6 1
      sckw-auth/src/main/java/com/sckw/auth/model/vo/req/ForgetPasswordReqVo.java
  3. 10 0
      sckw-auth/src/main/java/com/sckw/auth/model/vo/req/LoginReqVo.java
  4. 8 0
      sckw-auth/src/main/java/com/sckw/auth/model/vo/req/RegisterReqVo.java
  5. 6 0
      sckw-auth/src/main/java/com/sckw/auth/model/vo/res/LoginResVo.java
  6. 2 1
      sckw-auth/src/main/java/com/sckw/auth/service/IAuthService.java
  7. 39 24
      sckw-auth/src/main/java/com/sckw/auth/service/impl/AuthServiceImpl.java
  8. 129 0
      sckw-auth/src/main/resources/bootstrap-local.yml
  9. 11 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/exception/GlobalSystemExceptionHandler.java
  10. 5 4
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/filter/LoginFilter.java
  11. 3 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/constant/Global.java
  12. 2 2
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/PasswordUtils.java
  13. 11 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/config/CustomConfig.java
  14. 0 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/config/GlobalTransactionalConfig.java
  15. 2 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/constant/HttpStatus.java
  16. 1 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/context/LoginUserHolder.java
  17. 3 3
      sckw-common/sckw-common-redis/src/main/java/com/sckw/redis/configure/RedissonConfiguration.java
  18. 14 4
      sckw-common/sckw-common-redis/src/main/java/com/sckw/redis/utils/RedissonUtils.java
  19. 1 1
      sckw-common/sckw-common-seata/src/main/java/com/sckw/seata/config/GlobalTransactionalConfig.java
  20. 3 2
      sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/RemoteUserService.java
  21. 44 1
      sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/req/UserLoginReqDto.java
  22. 45 2
      sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/res/KwsEnterpriseResDto.java
  23. 57 2
      sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/res/KwsUserResDto.java
  24. 29 0
      sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/res/RegisterResDto.java
  25. 7 5
      sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsDeptController.java
  26. 9 10
      sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsEnterpriseController.java
  27. 5 3
      sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsMenuController.java
  28. 3 2
      sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsRoleController.java
  29. 3 2
      sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsUserController.java
  30. 16 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsDeptDao.java
  31. 26 17
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsEntCertificateDao.java
  32. 8 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsEnterpriseDao.java
  33. 16 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsMenuDao.java
  34. 18 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsMenuRightsDao.java
  35. 9 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsRoleDao.java
  36. 9 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsUserDao.java
  37. 7 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsUserDeptDao.java
  38. 9 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsUserLoginDao.java
  39. 20 1
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsUserRoleDao.java
  40. 5 11
      sckw-modules/sckw-system/src/main/java/com/sckw/system/dubbo/RemoteUserServiceImpl.java
  41. 8 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/KwsDept.java
  42. 4 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/KwsEntCheckTrack.java
  43. 1 1
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/KwsEnterprise.java
  44. 5 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/KwsMenu.java
  45. 5 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/pojo/FindMenuTreePojo.java
  46. 134 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/AddEntSettleReqVo.java
  47. 12 13
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/EntRegisterReqVo.java
  48. 11 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/ForgetPasswordReqVo.java
  49. 5 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/RoleBindMeunReqVo.java
  50. 11 0
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/UpdatePasswordReqVo.java
  51. 9 1
      sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/UserAddReqVo.java
  52. 26 18
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsDeptService.java
  53. 89 34
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsEnterpriseService.java
  54. 55 20
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsMenuService.java
  55. 140 34
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsRoleService.java
  56. 45 58
      sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsUserService.java
  57. 10 10
      sckw-modules/sckw-system/src/main/resources/mapper/KwsAuthorityDao.xml
  58. 20 0
      sckw-modules/sckw-system/src/main/resources/mapper/KwsDeptDao.xml
  59. 13 13
      sckw-modules/sckw-system/src/main/resources/mapper/KwsEntCertificateDao.xml
  60. 3 0
      sckw-modules/sckw-system/src/main/resources/mapper/KwsEntCheckTrackDao.xml
  61. 4 0
      sckw-modules/sckw-system/src/main/resources/mapper/KwsEnterpriseDao.xml
  62. 14 0
      sckw-modules/sckw-system/src/main/resources/mapper/KwsMenuDao.xml
  63. 20 0
      sckw-modules/sckw-system/src/main/resources/mapper/KwsMenuRightsDao.xml
  64. 12 0
      sckw-modules/sckw-system/src/main/resources/mapper/KwsRoleDao.xml
  65. 10 0
      sckw-modules/sckw-system/src/main/resources/mapper/KwsUserDao.xml
  66. 8 0
      sckw-modules/sckw-system/src/main/resources/mapper/KwsUserDeptDao.xml
  67. 67 23
      sckw-modules/sckw-system/src/main/resources/mapper/KwsUserLoginDao.xml
  68. 14 2
      sckw-modules/sckw-system/src/main/resources/mapper/KwsUserRoleDao.xml

+ 8 - 8
sckw-auth/src/main/java/com/sckw/auth/controller/AuthController.java

@@ -1,12 +1,12 @@
 package com.sckw.auth.controller;
 
-import com.sckw.auth.model.vo.req.EntAuthenticationReqVo;
 import com.sckw.auth.model.vo.req.ForgetPasswordReqVo;
 import com.sckw.auth.model.vo.req.LoginReqVo;
 import com.sckw.auth.model.vo.req.RegisterReqVo;
 import com.sckw.auth.service.IAuthService;
 import com.sckw.core.exception.SystemException;
 import com.sckw.core.web.response.HttpResult;
+import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -20,7 +20,7 @@ import org.springframework.web.bind.annotation.*;
 public class AuthController {
 
     @Autowired
-    private IAuthService indexService;
+    private IAuthService authService;
 
     /**
      * @param reqVo 登录入参
@@ -30,8 +30,8 @@ public class AuthController {
      * @date: 2023/6/16
      */
     @PostMapping("/login")
-    public HttpResult login(@RequestBody LoginReqVo reqVo) throws SystemException {
-        return HttpResult.ok(indexService.login(reqVo));
+    public HttpResult login(@Valid @RequestBody LoginReqVo reqVo) throws SystemException {
+        return HttpResult.ok(authService.login(reqVo));
     }
 
     /**
@@ -42,8 +42,8 @@ public class AuthController {
      * @date: 2023/6/16
      */
     @PostMapping("/register")
-    public HttpResult register(@RequestBody RegisterReqVo reqDto) throws SystemException {
-        indexService.register(reqDto);
+    public HttpResult register(@Valid @RequestBody RegisterReqVo reqDto) throws SystemException {
+        authService.register(reqDto);
         return HttpResult.ok();
     }
 
@@ -55,8 +55,8 @@ public class AuthController {
      * @date: 2023/6/19
      */
     @PostMapping("/forgetPassword")
-    public HttpResult forgetPassword(@RequestBody ForgetPasswordReqVo reqDto) throws SystemException {
-        indexService.forgetPassword(reqDto);
+    public HttpResult forgetPassword(@Valid @RequestBody ForgetPasswordReqVo reqDto) throws SystemException {
+        authService.forgetPassword(reqDto);
         return HttpResult.ok();
     }
 

+ 6 - 1
sckw-auth/src/main/java/com/sckw/auth/model/vo/req/ForgetPasswordReqVo.java

@@ -1,7 +1,8 @@
 package com.sckw.auth.model.vo.req;
 
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
-import org.apache.logging.log4j.core.config.plugins.validation.constraints.NotBlank;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -20,21 +21,25 @@ public class ForgetPasswordReqVo implements Serializable {
     /**
      * 账号
      */
+    @NotBlank(message = "账号不能为空")
     private String account;
 
     /**
      * 密码
      */
+    @NotBlank(message = "密码不能为空")
     private String password;
 
     /**
      * 验证码
      */
+    @NotBlank(message = "验证码不能为空")
     private String captcha;
 
     /**
      * 系统类型(1运营端、2企业开户)
      */
+    @NotNull(message = "系统类型不能为空")
     private int systemType;
 
 }

+ 10 - 0
sckw-auth/src/main/java/com/sckw/auth/model/vo/req/LoginReqVo.java

@@ -1,5 +1,7 @@
 package com.sckw.auth.model.vo.req;
 
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
 import java.io.Serial;
@@ -19,11 +21,19 @@ public class LoginReqVo implements Serializable {
     /**
      * 账号
      */
+    @NotBlank(message = "账号不能为空")
     private String account;
 
+    /**
+     * 设备类型
+     */
+    @NotBlank(message = "设备类型不能为空")
+    private String clientType;
+
     /**
      * 系统类型
      */
+    @NotNull(message = "系统类型不能为空")
     private Integer systemType;
 
     /**

+ 8 - 0
sckw-auth/src/main/java/com/sckw/auth/model/vo/req/RegisterReqVo.java

@@ -1,5 +1,7 @@
 package com.sckw.auth.model.vo.req;
 
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
 import java.io.Serial;
@@ -19,31 +21,37 @@ public class RegisterReqVo implements Serializable {
     /**
      * 企业名称
      */
+    @NotBlank(message = "企业名称不能为空")
     private String entName;
 
     /**
      * 企业代表人
      */
+    @NotBlank(message = "企业代表人不能为空")
     private String name;
 
     /**
      * 手机号
      */
+    @NotBlank(message = "联系电话不能为空")
     private String telephone;
 
     /**
      * 系统类型(1运营端、2企业开户)
      */
+    @NotNull(message = "系统类型不能为空")
     private Integer systemType;
 
     /**
      * 验证码
      */
+    @NotBlank(message = "验证码不能为空")
     private String captcha;
 
     /**
      * 用户类型  0 普通用户  1管理员
      */
+    @NotNull(message = "用户类型不能为空")
     private Integer isMain;
 
     /**

+ 6 - 0
sckw-auth/src/main/java/com/sckw/auth/model/vo/res/LoginResVo.java

@@ -1,6 +1,7 @@
 package com.sckw.auth.model.vo.res;
 
 import com.sckw.system.api.model.dto.res.KwsRoleResDto;
+import jakarta.validation.constraints.NotBlank;
 import lombok.Data;
 
 import java.io.Serial;
@@ -73,6 +74,11 @@ public class LoginResVo implements Serializable {
      */
     private EntInfoResVo entInfo;
 
+    /**
+     * 设备类型
+     */
+    private String clientType;
+
     /**
      * 角色信息
      */

+ 2 - 1
sckw-auth/src/main/java/com/sckw/auth/service/IAuthService.java

@@ -5,6 +5,7 @@ import com.sckw.auth.model.vo.req.ForgetPasswordReqVo;
 import com.sckw.auth.model.vo.req.LoginReqVo;
 import com.sckw.auth.model.vo.req.RegisterReqVo;
 import com.sckw.auth.model.vo.res.LoginResVo;
+import com.sckw.core.exception.SystemException;
 
 /**
  *
@@ -16,7 +17,7 @@ public interface IAuthService {
      * @param reqVo
      * @return
      */
-    LoginResVo login(LoginReqVo reqVo);
+    LoginResVo login(LoginReqVo reqVo) throws SystemException;
 
     /**
      * @param reqVo 注册入参

+ 39 - 24
sckw-auth/src/main/java/com/sckw/auth/service/impl/AuthServiceImpl.java

@@ -1,7 +1,6 @@
 package com.sckw.auth.service.impl;
 
 import com.alibaba.fastjson.JSON;
-import com.sckw.auth.model.vo.req.EntAuthenticationReqVo;
 import com.sckw.auth.model.vo.req.ForgetPasswordReqVo;
 import com.sckw.auth.model.vo.req.LoginReqVo;
 import com.sckw.auth.model.vo.req.RegisterReqVo;
@@ -9,9 +8,8 @@ import com.sckw.auth.model.vo.res.DeptInfoResVo;
 import com.sckw.auth.model.vo.res.EntInfoResVo;
 import com.sckw.auth.model.vo.res.LoginResVo;
 import com.sckw.auth.util.AsyncFactory;
-import com.sckw.core.model.enums.SystemTypeEnum;
+import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.context.LoginUserHolder;
-import com.sckw.system.api.model.dto.req.EntAuthenticationReqDto;
 import com.sckw.system.api.model.dto.req.ForgetPasswordReqDto;
 import com.sckw.system.api.model.dto.req.UserLoginReqDto;
 import com.sckw.system.api.model.dto.res.KwsRoleResDto;
@@ -29,11 +27,9 @@ import com.sckw.system.api.RemoteUserService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Objects;
+import java.util.*;
 
 /**
  * @desc: 用户权限实现类
@@ -49,12 +45,9 @@ public class AuthServiceImpl implements IAuthService {
 
 
     @Override
-    public LoginResVo login(LoginReqVo reqDto) {
+    public LoginResVo login(LoginReqVo reqDto) throws SystemException {
         /*1、根据账号密码或者手机号校验码登录, 手机号后面处理*/
-        List<KwsUserResDto> kwsUsers = remoteUserService.checkUserBase(reqDto.getAccount(), reqDto.getSystemType());
-        KwsUserResDto kwsUser = kwsUsers.get(0);
-        //密码校验
-        remoteUserService.checkPassword(reqDto.getPassword(), kwsUser.getPassword());
+        KwsUserResDto kwsUser = checkLogin(reqDto);
         LoginResVo loginResVo = new LoginResVo();
         BeanUtils.copyProperties(kwsUser, loginResVo);
 
@@ -64,6 +57,7 @@ public class AuthServiceImpl implements IAuthService {
         EntInfoResVo entInfoResVo = new EntInfoResVo();
         loginResVo.setEntInfo(entInfoResVo);
         loginResVo.setRoleInfo(kwsRoleResDtos);
+        loginResVo.setClientType(reqDto.getClientType());
         if (CollectionUtils.isEmpty(kwsRoleResDtos)) {
             //角色信息为空,没有认证
             afterProcessor(loginResVo);
@@ -79,10 +73,7 @@ public class AuthServiceImpl implements IAuthService {
             afterProcessor(loginResVo);
             return loginResVo;
         }
-
-        List<DeptInfoResVo> deptInfo = new ArrayList<>(4);
-        BeanUtils.copyProperties(kwsDepts, deptInfo);
-        entInfoResVo.setDeptInfo(deptInfo);
+        entInfoResVo.setDeptInfo(BeanUtils.copyToList(kwsDepts, DeptInfoResVo.class));
 
         /*3、查企业*/
         //目前一个人只能归属于一个企业,所以这里取第一个就行
@@ -100,6 +91,23 @@ public class AuthServiceImpl implements IAuthService {
         return loginResVo;
     }
 
+    private KwsUserResDto checkLogin(LoginReqVo reqDto) throws SystemException {
+        List<KwsUserResDto> kwsUsers = remoteUserService.checkUserBase(reqDto.getAccount(), reqDto.getSystemType());
+        KwsUserResDto kwsUser = kwsUsers.get(0);
+        //密码校验、验证码
+        if (StringUtils.isNotBlank(reqDto.getPassword())) {
+            remoteUserService.checkPassword(reqDto.getPassword(), kwsUser.getPassword());
+        } else {
+            String key = Global.USER_LOGIN_CAPTCHA + reqDto.getSystemType() + Global.COLON + kwsUser.getAccount();
+            String captcha = RedissonUtils.getString(key);
+            if (StringUtils.isBlank(captcha) || StringUtils.isBlank(reqDto.getCaptcha()) || !reqDto.getCaptcha().equals(captcha)){
+                throw new SystemException(HttpStatus.PARAMETERS_MISSING_CODE, HttpStatus.CAPCHA_ERROR);
+            }
+            RedissonUtils.delete(key);
+        }
+        return kwsUser;
+    }
+
     /**
      * @param  loginResVo 登录的返参
      * @desc: 生成token,存redis
@@ -111,11 +119,11 @@ public class AuthServiceImpl implements IAuthService {
             String id = String.valueOf(loginResVo.getId());
             String token = EncryUtil.encry(Global.PRI_KEY, id);
             loginResVo.setToken(token);
-            RedissonUtils.add(Global.REDIS_USER_PREFIX + LoginUserHolder.getClientType() + Global.COLON + id, JSON.toJSONString(loginResVo));
+            RedissonUtils.add(Global.REDIS_USER_PREFIX + id + Global.COLON + loginResVo.getClientType(), JSON.toJSONString(loginResVo));
 
             //异步存redis
             AsyncFactory.execute(new SaveMenuInfo(loginResVo.getId()));
-            AsyncFactory.execute(new SaveLoginInfo(loginResVo, LoginUserHolder.getClientType()));
+            AsyncFactory.execute(new SaveLoginInfo(loginResVo, String.valueOf(loginResVo.getSystemType()), remoteUserService));
 
         } catch (Exception e) {
             throw new SystemException(HttpStatus.GLOBAL_EXCEPTION_CODE, HttpStatus.GLOBAL_EXCEPTION_MESSAGE);
@@ -123,9 +131,11 @@ public class AuthServiceImpl implements IAuthService {
     }
 
     @Override
+    @Transactional(rollbackFor = {})
     public void register(RegisterReqVo reqVo) {
         /*1、校验验证码*/
-        String sms = RedissonUtils.get("xxx").toString();
+        String key = Global.USER_LOGIN_CAPTCHA + reqVo.getTelephone() + Global.COLON + reqVo.getSystemType();
+        String sms = RedissonUtils.getString(key);
         if (!reqVo.getCaptcha().equals(sms)) {
             throw new SystemException(HttpStatus.CODE_10301, HttpStatus.CAPTCHA_ERROR);
         }
@@ -133,6 +143,7 @@ public class AuthServiceImpl implements IAuthService {
         RegisterReqDto registerReqDto = new RegisterReqDto();
         BeanUtils.copyProperties(reqVo, registerReqDto);
         remoteUserService.register(registerReqDto);
+        RedissonUtils.delete(key);
     }
 
 
@@ -158,13 +169,17 @@ public class AuthServiceImpl implements IAuthService {
             //存权限菜单
             List<UserAccessMenuInfoResDto> userAccessMenuInfo = remoteUserService.queryUserAccessMenu(id);
             if (CollectionUtils.isEmpty(userAccessMenuInfo)) {
+                RedissonUtils.delete(Global.REDIS_SYS_MENU_PREFIX + id);
                 log.error("未查询到用户{}的菜单权限", id);
                 return;
             }
 
             List<String> menus = new ArrayList<>();
             for (UserAccessMenuInfoResDto userAccessMenuInfoResDto : userAccessMenuInfo) {
-                menus.addAll(Arrays.asList(userAccessMenuInfoResDto.getLinks().split(",")));
+                String links = userAccessMenuInfoResDto.getLinks();
+                if (StringUtils.isNotBlank(links)) {
+                    menus.addAll(Arrays.asList(userAccessMenuInfoResDto.getLinks().split(",")));
+                }
             }
             RedissonUtils.putSet(Global.REDIS_SYS_MENU_PREFIX + id, menus);
         }
@@ -176,12 +191,12 @@ public class AuthServiceImpl implements IAuthService {
 
         private final String clientType;
 
-        @DubboReference(version = "2.0.0", group = "design", check = false)
-        private RemoteUserService remoteUserService;
+        private final RemoteUserService remoteUserService;
 
-        public SaveLoginInfo(LoginResVo loginResVo, String clientType) {
+        public SaveLoginInfo(LoginResVo loginResVo, String clientType, RemoteUserService remoteUserService) {
             this.loginResVo = loginResVo;
             this.clientType = clientType;
+            this.remoteUserService = remoteUserService;
         }
 
         @Override
@@ -189,7 +204,7 @@ public class AuthServiceImpl implements IAuthService {
             long userId = loginResVo.getId();
             UserLoginReqDto currentDayLogin = remoteUserService.currentDayLogin(userId);
             UserLoginReqDto userLoginReqDto = new UserLoginReqDto();
-            userLoginReqDto.setPid(Objects.isNull(currentDayLogin) ? "" : String.valueOf(currentDayLogin.getUserId()));
+            userLoginReqDto.setPid(Objects.isNull(currentDayLogin) ? "" : String.valueOf(currentDayLogin.getId()));
             userLoginReqDto.setIp("");
             userLoginReqDto.setUserAgent("");
             userLoginReqDto.setUserId(loginResVo.getId());

+ 129 - 0
sckw-auth/src/main/resources/bootstrap-local.yml

@@ -0,0 +1,129 @@
+spring:
+  cloud:
+    nacos:
+      discovery:
+        # 服务注册地址
+        server-addr: 127.0.0.1:8848
+        # 命名空间
+        namespace: sckw-service-platform-dev
+        # 共享配置
+        group: sckw-service-platform
+      config:
+        # 配置中心地址
+        server-addr: 127.0.0.1:8848
+        # 配置文件格式
+        file-extension: yaml
+        # 命名空间
+        namespace: sckw-service-platform-dev
+        # 共享配置
+        group: sckw-service-platform
+#
+#    sentinel:
+#      transport:
+#        client-ip: ${spring.cloud.client.ip-address} # 获取本机IP地址
+#        port: 8719  #默认8719端口,如果被占用会向上扫描。
+#        #控制台地址
+#        dashboard: 127.0.0.1:19527
+#      log:
+#        #日志路径
+#        dir: logs/sentinel
+#        # 默认将调用链路收敛,导致链路流控效果无效
+#        web-context-unify: false
+#        #持久化nacos配置中
+#      datasource:
+#        #sentinel-rule: # 唯一名称可自定义
+#        #限流
+#        flow:
+#          nacos:
+#            # 设置Nacos的连接地址、命名空间和Group ID
+#            namespace: sckw-service-platform-dev
+#            server-addr: ${spring.cloud.nacos.discovery.server-addr}
+#            # username: ${spring.cloud.nacos.discovery.username}
+#            # password: ${spring.cloud.nacos.discovery.password}
+#            # 设置Nacos中配置文件的命名规则
+#            #            data-id:  ${spring.application.name}-sentinel-flow-rules
+#            data-id: sckw-auth-sentinel-flow-rules
+#            group-id: SENTINEL_GROUP
+#            data-type: json
+#            # 必填的重要字段,指定当前规则类型是"限流"
+#            rule-type: flow
+#        #熔断
+#        degrade:
+#          nacos:
+#            namespace: sckw-service-platform-dev
+#            server-addr: ${spring.cloud.nacos.discovery.server-addr}
+#            #data-id: ${spring.application.name}-sentinel-degrade-rules
+#            data-id: sckw-auth-sentinel-degrade-rules
+#            group-id: SENTINEL_GROUP
+#            #熔断
+#            rule-type: degrade
+#      #取消慢加载
+#      eager: true
+#  data:
+#    redis:
+#      #redis机器ip
+#      host: 127.0.0.1
+#      #redis端口
+#      port: 6379
+#      #redis密码
+#      password:
+#      #数据库
+#      database: 1
+#      #redis超时时间(毫秒),如果不设置,取默认值2000
+#      timeout: 10000
+#      #最大空闲数
+#      maxIdle: 300
+#        #连接池的最大数据库连接数。设为0表示无限制,如果是jedis 2.4以后用redis.maxTotal
+#        #maxActive=600
+#        #控制一个pool可分配多少个jedis实例,用来替换上面的redis.maxActive,如果是jedis 2.4以后用该属性
+#      maxTotal: 1000
+#        #最大建立连接等待时间。如果超过此时间将接到异常。设为-1表示无限制。
+#      maxWaitMillis: 1000
+#        #连接的最小空闲时间 默认1800000毫秒(30分钟)
+#      minEvictableIdleTimeMillis: 300000
+#        #每次释放连接的最大数目,默认3
+#      numTestsPerEvictionRun: 1024
+#        #逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1
+#      timeBetweenEvictionRunsMillis: 30000
+#        #是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个
+#      testOnBorrow: true
+#        #在空闲时检查有效性, 默认false
+#      testWhileIdle: true
+#        #连接池最大连接数(如果配置<=0,则没有限制)
+#      jedis:
+#        pool:
+#          max-active: -1
+#  datasource:
+#    dynamic:
+#      primary: master #设置默认的数据源或者数据源组,默认值即为master
+#      strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
+#      datasource:
+#        master:
+#          url: jdbc:mysql://10.10.10.230:3306/sckw_system?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
+#          username: sckw_dev
+#          password: Yy123...
+#          driver-class-name: com.mysql.jdbc.Driver # 3.2.0开始支持SPI可省略此配置
+#        slave_1:
+#          url: jdbc:mysql://10.10.10.230:3306/sckw_system?allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=GMT%2B8
+#          username: sckw_dev
+#          password: Yy123...
+#          driver-class-name: com.mysql.jdbc.Driver
+#
+#dubbo:
+#  application:
+#    name: auth-dubbo-server
+#    # 该配置在producer-server中是没有的,但是在consumer这里要配置一下
+#    # 如果不配置这个QOS的端口,它会延用dubbo自动生成的端口,在启动的时候,QOS注册就会提示该端口已经被使用的错误
+#    # 虽然启动时有打印端口已经被使用的错误,但是依旧可以正常启动服务,并且dubbo也可以正常调用,但是为了解决启动报错还是加上这个端口
+#    # 这个也是apache官方给出的解决方案,这个端口不能给-1,它不会自动找到一个可用的端口,给-1会报错,端口1-65535自己选择一个
+#    qos-port: 3334
+#  protocol:
+#    name: dubbo
+#    # port为-1表示自动找一个可用的端口
+#    port: -1
+#  registry:
+#    address: nacos://${spring.cloud.nacos.discovery.server-addr}
+#    group: ${spring.cloud.nacos.config.group}
+#    protocol: nacos
+#
+#links: /auth/login,/kwsUser/resetPassword,/kwsUser/updatePassword,/kwsUser/forgetPassword

+ 11 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/exception/GlobalSystemExceptionHandler.java

@@ -1,11 +1,15 @@
 package com.sckw.core.exception;
 
+import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.web.bind.MethodArgumentNotValidException;
 import org.springframework.web.bind.annotation.ExceptionHandler;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestControllerAdvice;
 
+import java.util.Objects;
+
 @Slf4j
 @RestControllerAdvice
 public class GlobalSystemExceptionHandler {
@@ -15,5 +19,12 @@ public class GlobalSystemExceptionHandler {
     public HttpResult handlerRuntimeException(SystemException e) {
         return HttpResult.error(e.getCode(), e.getMessage());
     }
+
+    @ExceptionHandler(value = MethodArgumentNotValidException.class)
+    @ResponseBody
+    public HttpResult handlerRuntimeException(MethodArgumentNotValidException e) {
+        return HttpResult.error(HttpStatus.PARAMETERS_MISSING_CODE , Objects.requireNonNull(e.getBindingResult().getFieldError()).getDefaultMessage());
+    }
+
 }
 

+ 5 - 4
sckw-common/sckw-common-core/src/main/java/com/sckw/core/filter/LoginFilter.java

@@ -1,7 +1,7 @@
 package com.sckw.core.filter;
 
 import com.alibaba.fastjson.JSONObject;
-import com.sckw.core.config.CustomConfig;
+import com.sckw.core.web.config.CustomConfig;
 import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.utils.EncryUtil;
@@ -72,25 +72,26 @@ public class LoginFilter implements Filter {
         }
 
         //从redis获取用户信息
-        Object object = RedissonUtils.get(Global.REDIS_USER_PREFIX + LoginUserHolder.getClientType() + Global.COLON + key);
+        String clientType = request.getHeader(RequestConstant.CLIENT_TYPE);
+        Object object = RedissonUtils.get(Global.REDIS_USER_PREFIX + key + Global.COLON + clientType);
         if (Objects.isNull(object)) {
             throw new SystemException(HttpStatus.PARAMETERS_MISSING_CODE, HttpStatus.TOKEN_INVAILD);
         }
 
         /*3、将redis里的用户信息存入内存中,避免业务操作多次从redis获取值*/
-        String clientType = request.getHeader(RequestConstant.CLIENT_TYPE);
         LoginUserInfo loginUserInfo = JSONObject.parseObject(object.toString(), LoginUserInfo.class);
-        loginUserInfo.setClientType(clientType);
         LoginUserHolder.set(loginUserInfo);
         //管理员不限制权限
         if (loginUserInfo.getIsMain() == Global.YES){
             filterChain.doFilter(servletRequest, servletResponse);
+            LoginUserHolder.remove();
             return;
         }
 
         //按钮有权限才放行
         checkMenu(key, requestUri);
         filterChain.doFilter(servletRequest, servletResponse);
+        LoginUserHolder.remove();
     }
 
     private void checkMenu(String key, String url) {

+ 3 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/constant/Global.java

@@ -76,6 +76,9 @@ public class Global {
     /**ok*/
     public static final String OK = "OK";
 
+    /**用户登录验证码*/
+    public static final String USER_LOGIN_CAPTCHA = "userLoginCaptcha:";
+
     /**redis用户信息前缀*/
     public static final String REDIS_USER_PREFIX = "userInfo:";
 

+ 2 - 2
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/PasswordUtils.java

@@ -108,8 +108,8 @@ public class PasswordUtils {
     }
 
     public static void main(String[] args) {
-        String password = PasswordUtils.entryptPassword(PasswordUtils.md5("184"));
-        String md5 = PasswordUtils.md5("184");
+        String password = PasswordUtils.entryptPassword(PasswordUtils.md5("123"));
+        String md5 = PasswordUtils.md5("18482106067");
         System.out.println(password);
         System.out.println(md5);
         System.out.println(validatePassword(md5, password));

+ 11 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/config/CustomConfig.java → sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/config/CustomConfig.java

@@ -1,4 +1,4 @@
-package com.sckw.core.config;
+package com.sckw.core.web.config;
 
 import lombok.Data;
 import org.springframework.beans.factory.annotation.Value;
@@ -13,6 +13,16 @@ import org.springframework.stereotype.Component;
 @Component
 public class CustomConfig {
 
+    /**
+     * 直接放行的请求链接
+     */
     @Value("${links}")
     private String links;
+
+    /**
+     * 是否允许一个账号绑定多个角色
+     */
+    @Value("${isBindManyRole}")
+    private Integer isBindManyRole;
+
 }

+ 0 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/config/GlobalTransactionalConfig.java


+ 2 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/constant/HttpStatus.java

@@ -34,6 +34,7 @@ public class HttpStatus {
     public static final String TOKEN_MISSING = "token不能为空!";
     public static final String TOKEN_INVAILD = "无效token";
     public static final String TOKEN_ERROR = "非法token!";
+    public static final String CAPCHA_ERROR = "验证码无效!";
 
 
     /**其他自定义状态码*/
@@ -111,7 +112,6 @@ public class HttpStatus {
     /**未查询到相关信息*/
     public static final int QUERY_FAIL_CODE = 60602;
     public static final String ACCOUNT_NOT_EXISTS = "用户信息不存在或已失效";
-
     public static final String ENT_NOT_EXISTS = "企业信息不存在或已失效";
     public static final String ENTCERTIFICATES_NOT_EXISTS = "未查询到企业资质信息";
     public static final String ROLE_NOT_EXISTS = "未查询到关联的角色";
@@ -125,4 +125,5 @@ public class HttpStatus {
     public static final String MSG_003 = "新增成功";
     public static final String MSG_004 = "审批完成";
     public static final String MSG_005 = "更新成功";
+    public static final String MSG_006 = "当前系统不允许绑定多个岗位!";
 }

+ 1 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/web/context/LoginUserHolder.java

@@ -44,7 +44,7 @@ public class LoginUserHolder {
      * @Date 2020/04/13 0021
      */
     public static Long getUserId(){
-        return LONGIN_USER_HOLDER.get() == null ? null : LONGIN_USER_HOLDER.get().getId();
+        return LONGIN_USER_HOLDER.get() == null ? 1L : LONGIN_USER_HOLDER.get().getId();
     }
 
     /**

+ 3 - 3
sckw-common/sckw-common-redis/src/main/java/com/sckw/redis/configure/RedissonConfiguration.java

@@ -21,8 +21,8 @@ public class RedissonConfiguration {
     @Value("${spring.data.redis.port}")
     private String port;
 
-//    @Value("${spring.data.redis.password}")
-//    private String password;
+    @Value("${spring.data.redis.password}")
+    private String password;
 
     @Value("${spring.data.redis.database}")
     private String database;
@@ -36,7 +36,7 @@ public class RedissonConfiguration {
         config.setCodec(new JsonJacksonCodec());
         config.useSingleServer()
                 .setAddress(address())
-//                .setPassword(password)
+                .setPassword(password)
                 .setDatabase(Integer.parseInt(database))
                 .setConnectTimeout(Integer.parseInt(timeout));
         return Redisson.create(config);

+ 14 - 4
sckw-common/sckw-common-redis/src/main/java/com/sckw/redis/utils/RedissonUtils.java

@@ -7,10 +7,7 @@ import org.redisson.client.codec.StringCodec;
 import org.redisson.config.Config;
 
 import java.time.Duration;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 
 @Slf4j
@@ -65,6 +62,19 @@ public class RedissonUtils {
         bucket.delete();
     }
 
+    /**
+     * 批量删除
+     * @param key 用*模糊匹配
+     */
+    public static void deleteBactch(String key) {
+        Iterator<String> iterator = redissonUtils.redissonClient.getKeys().getKeysByPattern(key).iterator();
+        while(iterator.hasNext()) {
+            String word = iterator.next();
+            RBucket<Object> bucket = redissonUtils.redissonClient.getBucket(word);
+            bucket.delete();
+        }
+    }
+
     /**
      * 判断缓存是否存在
      *

+ 1 - 1
sckw-common/sckw-common-seata/src/main/java/com/sckw/seata/config/GlobalTransactionalConfig.java

@@ -12,7 +12,7 @@ import org.springframework.stereotype.Component;
  * @description 全局分布式事务{seata}bean
  * @date 2023/6/15 0015
  */
-@Component
+//@Component
 public class GlobalTransactionalConfig {
     @Bean
     public AspectTransactionalInterceptor aspectTransactionalInterceptor () {

+ 3 - 2
sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/RemoteUserService.java

@@ -49,14 +49,14 @@ public interface RemoteUserService {
      * @param password 入参传的密码
      * @param currentPwd 当前用户的密码
      */
-    void checkPassword(String password, String currentPwd);
+    void checkPassword(String password, String currentPwd) throws SystemException;
 
     /**
      * 检验用户信息
      * @param account
      * @return
      */
-    List<KwsUserResDto> checkUserBase(String account, int systemType);
+    List<KwsUserResDto> checkUserBase(String account, int systemType) throws SystemException;
 
     /**
      * 根基id查企业
@@ -100,6 +100,7 @@ public interface RemoteUserService {
      */
     void saveUserLogin(UserLoginReqDto userLoginReqDto);
 
+
     /**
      * @param userId 用户id
      * @return 登录

+ 44 - 1
sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/req/UserLoginReqDto.java

@@ -1,5 +1,6 @@
 package com.sckw.system.api.model.dto.req;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.sckw.system.api.model.dto.BaseModelResDto;
 import lombok.Data;
 
@@ -13,7 +14,7 @@ import java.util.Date;
  * @date 2023/6/19
  */
 @Data
-public class UserLoginReqDto extends BaseModelResDto implements Serializable {
+public class UserLoginReqDto implements Serializable {
 
     @Serial
     private static final long serialVersionUID = 5716439258112124800L;
@@ -72,4 +73,46 @@ public class UserLoginReqDto extends BaseModelResDto implements Serializable {
      * 来源(app、pc)
      */
     private String source;
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 状态:0正常/1锁定
+     */
+    private Integer status;
+
+    /**
+     * 创建人
+     */
+    private Long createBy;
+
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新人
+     */
+    private Long updateBy;
+
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /**
+     * 删除标识(0正常/-1删除)
+     */
+    private Integer delFlag;
 }

+ 45 - 2
sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/res/KwsEnterpriseResDto.java

@@ -1,13 +1,56 @@
 package com.sckw.system.api.model.dto.res;
 
-import com.sckw.system.api.model.dto.BaseModelResDto;
 import lombok.Data;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.util.Date;
 
 @Data
-public class KwsEnterpriseResDto extends BaseModelResDto implements Serializable {
+public class KwsEnterpriseResDto implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 584335442672847826L;
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 状态:0正常/1锁定
+     */
+    private Integer status;
+
+    /**
+     * 创建人
+     */
+    private Long createBy;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 更新人
+     */
+    private Long updateBy;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+    /**
+     * 删除标识(0正常/-1删除)
+     */
+    private Integer delFlag;
 
     /**
      * 企业编号

+ 57 - 2
sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/res/KwsUserResDto.java

@@ -1,12 +1,16 @@
 package com.sckw.system.api.model.dto.res;
 
-import com.sckw.system.api.model.dto.BaseModelResDto;
 import lombok.Data;
 
+import java.io.Serial;
 import java.io.Serializable;
+import java.util.Date;
 
 @Data
-public class KwsUserResDto extends BaseModelResDto implements Serializable {
+public class KwsUserResDto implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 612080679888497523L;
 
     /**
      * 系统类型(1运营端、2企业开户)
@@ -52,5 +56,56 @@ public class KwsUserResDto extends BaseModelResDto implements Serializable {
      * 是否是企业管理(0是 1否)
      */
     private Integer isMain;
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 状态:0正常/1锁定
+     */
+    private Integer status;
+
+    /**
+     * 创建人
+     */
+    private Long createBy;
+
+    /**
+     * 创建人姓名
+     */
+//	private String createByName;
+
+    /**
+     * 创建时间
+     */
+    //@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    /**
+     * 更新人
+     */
+    private Long updateBy;
+
+    /**
+     * 跟新人姓名
+     */
+//	private String updateByName;
+
+    /**
+     * 更新时间
+     */
+    //@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateTime;
+
+    /**
+     * 删除标识(0正常/-1删除)
+     */
+    private Integer delFlag;
 
 }

+ 29 - 0
sckw-modules-api/sckw-system-api/src/main/java/com/sckw/system/api/model/dto/res/RegisterResDto.java

@@ -0,0 +1,29 @@
+package com.sckw.system.api.model.dto.res;
+
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+/**
+ * @author czh
+ * @desc 注册返参
+ * @date 2023/6/26
+ */
+@Data
+public class RegisterResDto implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 6339492007803393200L;
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+    /**
+     * 企业id
+     */
+    private Long entId;
+
+}

+ 7 - 5
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsDeptController.java

@@ -3,9 +3,9 @@ package com.sckw.system.controller;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.system.model.KwsDept;
 import com.sckw.system.service.KwsDeptService;
+import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-import java.util.HashMap;
 
 /**
  * 组织机构
@@ -52,7 +52,7 @@ public class KwsDeptController {
      * @date 2023/5/30
      **/
     @PostMapping("/add")
-    public HttpResult add(@RequestBody KwsDept params) throws Exception {
+    public HttpResult add(@Valid @RequestBody KwsDept params) throws Exception {
         kwsDeptService.add(params);
         return HttpResult.ok();
     }
@@ -72,12 +72,14 @@ public class KwsDeptController {
     /**
      * @param ids {ids:主键ID(多个以逗号隔开)}
      * @return
-     * @description 更新
+     * @description 删除
      * @author zk
      * @date 2023/5/30
      **/
-    @DeleteMapping("/dels")
+    @PostMapping("/dels")
     public HttpResult del(@RequestParam String ids) throws Exception {
-        return kwsDeptService.deleteByKey(ids);
+        kwsDeptService.deleteByKey(ids);
+        return HttpResult.ok();
     }
+
 }

+ 9 - 10
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsEnterpriseController.java

@@ -5,11 +5,9 @@ import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.system.model.KwsEntCheckTrack;
 import com.sckw.system.model.KwsEnterprise;
-import com.sckw.system.model.vo.req.EntFindPageReqVo;
-import com.sckw.system.model.vo.req.EntRegisterReqVo;
-import com.sckw.system.model.vo.req.FreezeReqVo;
-import com.sckw.system.model.vo.req.KwsEnterpriseReqVo;
+import com.sckw.system.model.vo.req.*;
 import com.sckw.system.service.KwsEnterpriseService;
+import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import java.util.Map;
@@ -69,7 +67,7 @@ public class KwsEnterpriseController {
      * @date 2023/06/02
      **/
     @PostMapping("/register")
-    public HttpResult register(@RequestBody EntRegisterReqVo reqVo) {
+    public HttpResult register(@Valid @RequestBody EntRegisterReqVo reqVo) {
         kwsEntService.register(reqVo);
         return HttpResult.ok(HttpStatus.MSG_003);
     }
@@ -82,7 +80,7 @@ public class KwsEnterpriseController {
      * @date: 2023/6/19
      */
     @PostMapping("/addEntSettle")
-    public HttpResult addEntSettle(@RequestBody EntRegisterReqVo reqVo) throws SystemException {
+    public HttpResult addEntSettle(@Valid @RequestBody AddEntSettleReqVo reqVo) throws SystemException {
         kwsEntService.addEntSettle(reqVo);
         return HttpResult.ok();
     }
@@ -95,6 +93,7 @@ public class KwsEnterpriseController {
      * @date 2023/06/02
      **/
     @PostMapping("/add")
+    @Deprecated
     public HttpResult add(@RequestBody KwsEnterprise params) throws Exception {
         kwsEntService.add(params);
         return HttpResult.ok();
@@ -119,10 +118,10 @@ public class KwsEnterpriseController {
      * @author zk
      * @date 2023/06/02
      **/
-    @DeleteMapping("/dels")
+    @PostMapping("/dels")
     public HttpResult del(@RequestParam String ids) throws Exception {
         kwsEntService.deleteByKey(ids);
-        return  HttpResult.ok();
+        return HttpResult.ok();
     }
 
     /**
@@ -133,7 +132,7 @@ public class KwsEnterpriseController {
      * @date 2023/06/02
      **/
     @PostMapping(value = "/approval")
-    public HttpResult approval(@RequestBody KwsEntCheckTrack params) {
+    public HttpResult approval(@Valid @RequestBody KwsEntCheckTrack params) {
         kwsEntService.approval(params);
         return HttpResult.ok(HttpStatus.MSG_004);
     }
@@ -147,7 +146,7 @@ public class KwsEnterpriseController {
      **/
     @GetMapping("/entCheck")
     public HttpResult entCheck(@RequestParam Long entId) throws Exception {
-        return HttpResult.ok();
+        return HttpResult.ok(kwsEntService.entCheck(entId));
     }
 
     /**

+ 5 - 3
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsMenuController.java

@@ -5,6 +5,7 @@ import com.sckw.system.model.KwsMenu;
 import com.sckw.system.model.vo.req.FindMenuTreeReqVo;
 import com.sckw.system.model.vo.req.RoleBindMeunReqVo;
 import com.sckw.system.service.KwsMenuService;
+import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -55,7 +56,7 @@ public class KwsMenuController {
      * @date 2023/5/30
      **/
     @PostMapping("/add")
-    public HttpResult add(@RequestBody KwsMenu params) throws Exception {
+    public HttpResult add(@Valid @RequestBody KwsMenu params) throws Exception {
         kwsMenuService.add(params);
         return HttpResult.ok();
     }
@@ -83,7 +84,8 @@ public class KwsMenuController {
      **/
     @DeleteMapping("/dels")
     public HttpResult del(@RequestParam String ids) throws Exception {
-        return kwsMenuService.deleteByKey(ids);
+        kwsMenuService.deleteByKey(ids);
+        return HttpResult.ok();
     }
 
     /**
@@ -94,7 +96,7 @@ public class KwsMenuController {
      * @date: 2023/6/13
      */
     @PostMapping("/roleBindMeun")
-    public HttpResult roleBindMeun(@RequestBody RoleBindMeunReqVo reqVo) {
+    public HttpResult roleBindMeun(@Valid @RequestBody RoleBindMeunReqVo reqVo) {
         kwsMenuService.roleBindMeun(reqVo);
         return HttpResult.ok();
     }

+ 3 - 2
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsRoleController.java

@@ -87,9 +87,10 @@ public class KwsRoleController {
      * @author zk
      * @date 2023/5/30
      **/
-    @DeleteMapping("/dels")
+    @PostMapping("/dels")
     public HttpResult del(@RequestParam String ids) throws Exception {
-        return kwsRoleService.deleteByKey(ids);
+        kwsRoleService.deleteByKey(ids);
+        return HttpResult.ok();
     }
 
     /**

+ 3 - 2
sckw-modules/sckw-system/src/main/java/com/sckw/system/controller/KwsUserController.java

@@ -12,6 +12,7 @@ import com.sckw.system.model.vo.req.ForgetPasswordReqVo;
 import com.sckw.system.model.vo.req.UpdatePasswordReqVo;
 import com.sckw.system.model.vo.req.UserAddReqVo;
 import com.sckw.system.service.KwsUserService;
+import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import java.util.HashMap;
@@ -74,7 +75,7 @@ public class KwsUserController {
      * @date: 2023/6/14
      */
     @PostMapping("/add")
-    public HttpResult add(@RequestBody UserAddReqVo reqVo) {
+    public HttpResult add(@Valid @RequestBody UserAddReqVo reqVo) {
         kwsUserService.add(reqVo);
         return HttpResult.ok();
     }
@@ -145,7 +146,7 @@ public class KwsUserController {
      * @author zk
      * @date 2023/5/30
      **/
-    @DeleteMapping("/dels")
+    @PostMapping("/dels")
     public HttpResult del(@RequestParam String ids) throws Exception {
         kwsUserService.deleteByKey(ids);
         return HttpResult.ok();

+ 16 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsDeptDao.java

@@ -34,6 +34,22 @@ public interface KwsDeptDao {
      */
     KwsDept selectByKey(Long id);
 
+    /**
+     * @param list id集合
+     * @return KwsDept
+     * @desc: 详批量情查询
+     * @author: czh
+     */
+    List<KwsDept> selectByKeys(List<Long> list);
+
+    /**
+     * @param list ent_id集合
+     * @return KwsDept
+     * @desc: 详批量情查询
+     * @author: czh
+     */
+    List<KwsDept> selectByEntIdList(List<Long> list);
+
     /**
      * 查询
      * @param params

+ 26 - 17
sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsEntCertificateDao.java

@@ -12,38 +12,47 @@ import java.util.List;
 @Mapper
 public interface KwsEntCertificateDao {
     /**
-     * 新增
-     * @param record
-     * @return
+     * @param record 实体类
+     * @return int
+     * @desc: 新增
+     * @author: czh
+     * @date: 2023/6/25
      */
     int insert(KwsEntCertificate record);
 
     /**
-     * 更新
-     * @param record
-     * @return
+     * @param record 实体类
+     * @return int
+     * @desc: 修改
+     * @author: czh
+     * @date: 2023/6/25
      */
     int update(KwsEntCertificate record);
 
     /**
-     * 详情查询
-     * @param id
-     * @return
+     * @param id 主键id
+     * @return KwsEntCertificate
+     * @desc: 详情查询
+     * @author: czh
+     * @date: 2023/6/25
      */
     KwsEntCertificate selectByKey(Long id);
 
     /**
-     * 查询
-     * @param entId
-     * @return
-     * @throws Exception
+     * @param list 实体类
+     * @return int
+     * @desc: 批量插入
+     * @author: czh
+     * @date: 2023/6/25
      */
-    List<KwsEntCertificate> findList(Long entId);
+    int saveBatch(List<KwsEntCertificate> list);
 
     /**
-     * 批量插入
+     * @param id 企业id
+     * @return KwsEntCertificate
+     * @desc: 根据企业id查证书
+     * @author: czh
+     * @date: 2023/6/25
      */
-    int saveBatch(List<KwsEntCertificate> list);
-
     List<KwsEntCertificate> selectByEntId(Long id);
 }

+ 8 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsEnterpriseDao.java

@@ -68,4 +68,12 @@ public interface KwsEnterpriseDao {
      */
     KwsEnterprise findByUserId(long id);
 
+    /**
+     * @param kwsEnterprise 实体
+     * @return int
+     * @desc: 审批
+     * @author: czh
+     * @date: 2023/6/26
+     */
+    int approval(KwsEnterprise kwsEnterprise);
 }

+ 16 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsMenuDao.java

@@ -16,6 +16,14 @@ import java.util.Map;
 @Mapper
 public interface KwsMenuDao {
 
+    /**
+     * @desc: 全量查
+     * @author: czh
+     * @date: 2023/6/26
+     * @return
+     */
+    List<KwsMenu> selectAll();
+
     /**
      * 新增
      * @param record
@@ -37,6 +45,14 @@ public interface KwsMenuDao {
      */
     KwsMenu selectByKey(Long id);
 
+    /**
+     * @param list id集合
+     * @return KwsMenu
+     * @desc:  批量详情查询
+     * @author: czh
+     */
+    List<KwsMenu> selectByKeys(List<Long> list);
+
     /**
      * 查询
      * @param params

+ 18 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsMenuRightsDao.java

@@ -35,6 +35,24 @@ public interface KwsMenuRightsDao {
      */
     KwsMenuRights selectByKey(Long id);
 
+    /**
+     * @param list 角色ID集合
+     * @return KwsMenuRights
+     * @desc: 根据角色id批量查
+     * @author: czh
+     * @date: 2023/6/25
+     */
+    List<KwsMenuRights> selectByRoleIds(List<Long> list);
+
+    /**
+     * @param list 菜单ID集合
+     * @return KwsMenuRights
+     * @desc: 根据菜单id批量查
+     * @author: czh
+     * @date: 2023/6/25
+     */
+    List<KwsMenuRights> selectByMenuIds(List<Long> list);
+
     /**
      * @param  list
      * @return int

+ 9 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsRoleDao.java

@@ -62,4 +62,13 @@ public interface KwsRoleDao {
      */
     List<KwsRole> selectBatchByKeys(@Param(value = "list") List<Long> id);
 
+    /**
+     * @param list 机构id集合
+     * @return KwsRole
+     * @desc: 根据机构id批量查
+     * @author: czh
+     * @date: 2023/6/14
+     */
+    List<KwsRole> selectBatchByDeptIds(List<Long> list);
+
 }

+ 9 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsUserDao.java

@@ -64,4 +64,13 @@ public interface KwsUserDao {
      */
     List<KwsDept> queryDeptByIds(List<Long> list);
 
+    /**
+     * @param entId 企业id
+     * @return KwsUser
+     * @desc: 根据企业id查用户
+     * @author: czh
+     * @date: 2023/6/26
+     */
+    List<KwsUser> selectByEntId(Long entId);
+
 }

+ 7 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsUserDeptDao.java

@@ -35,6 +35,13 @@ public interface KwsUserDeptDao {
      */
     KwsUserDept selectByKey(Long id);
 
+    /**
+     * 根据用户ID查关联关系
+     * @param userId
+     * @return KwsUserDept
+     */
+    List<KwsUserDept> findAllByUserId(Long userId);
+
     /**
      * 批量插入
      * @param kwsUserDeptList

+ 9 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsUserLoginDao.java

@@ -15,6 +15,15 @@ import java.util.List;
 @Mapper
 public interface KwsUserLoginDao {
 
+    /**
+     * @param kwsUserLogin 实体类
+     * @return int
+     * @desc: 插入
+     * @author: czh
+     * @date: 2023/6/21
+     */
+    int insert(KwsUserLogin kwsUserLogin);
+
     /**
      * 批量新增
      * @param list

+ 20 - 1
sckw-modules/sckw-system/src/main/java/com/sckw/system/dao/KwsUserRoleDao.java

@@ -12,7 +12,7 @@ import java.util.List;
  * @date 2023-05-31
  */
 @Mapper
-public interface KwsUserRoleDao {
+public interface  KwsUserRoleDao {
     /**
      * 新增
      * @param record
@@ -49,4 +49,23 @@ public interface KwsUserRoleDao {
      * @date: 2023/6/13
      */
     List<KwsUserRole> findAllByUserId(Long userId);
+
+    /**
+     * @param roleId 角色id
+     * @return List
+     * @desc: 根据角色ID查用户角色信息
+     * @author: czh
+     * @date: 2023/6/13
+     */
+    List<KwsUserRole> findAllByRoleId(Long roleId);
+
+    /**
+     * @param list 角色id集合
+     * @return List
+     * @desc: 根据角色ID查用户角色信息
+     * @author: czh
+     * @date: 2023/6/13
+     */
+    List<KwsUserRole> findAllByRoleIds(List<Long> list);
+
 }

+ 5 - 11
sckw-modules/sckw-system/src/main/java/com/sckw/system/dubbo/RemoteUserServiceImpl.java

@@ -4,7 +4,6 @@ import com.sckw.core.exception.SystemException;
 import com.sckw.core.utils.BeanUtils;
 import com.sckw.core.utils.CollectionUtils;
 import com.sckw.system.api.RemoteUserService;
-import com.sckw.system.api.model.dto.req.EntAuthenticationReqDto;
 import com.sckw.system.api.model.dto.req.ForgetPasswordReqDto;
 import com.sckw.system.api.model.dto.req.RegisterReqDto;
 import com.sckw.system.api.model.dto.req.UserLoginReqDto;
@@ -12,7 +11,6 @@ import com.sckw.system.api.model.dto.res.*;
 import com.sckw.system.dao.KwsUserLoginDao;
 import com.sckw.system.model.*;
 import com.sckw.system.model.pojo.FindMenuTreePojo;
-import com.sckw.system.model.vo.req.EntRegisterReqVo;
 import com.sckw.system.model.vo.req.ForgetPasswordReqVo;
 import com.sckw.system.model.vo.res.KwsMenuResVo;
 import com.sckw.system.service.KwsEnterpriseService;
@@ -77,9 +75,7 @@ public class RemoteUserServiceImpl implements RemoteUserService {
             return Collections.emptyList();
         }
 
-        List<KwsDeptResDto> list = new ArrayList<>(4);
-        BeanUtils.copyProperties(kwsDepts, list, false);
-        return list;
+        return BeanUtils.copyToList(kwsDepts, KwsDeptResDto.class);
     }
 
     @Override
@@ -107,7 +103,7 @@ public class RemoteUserServiceImpl implements RemoteUserService {
     public List<UserAccessMenuInfoResDto> queryUserAccessMenu(long id) {
         FindMenuTreePojo findMenuTreePojo = new FindMenuTreePojo();
         List<KwsUserRole> kwsUserRoles = kwsRoleService.findAllByUserId(id);
-        if (Objects.isNull(kwsUserRoles)) {
+        if (CollectionUtils.isEmpty(kwsUserRoles)) {
             return Collections.emptyList();
         }
         findMenuTreePojo.setRoleIds(kwsUserRoles.stream().map(KwsUserRole::getRoleId).toList());
@@ -131,7 +127,7 @@ public class RemoteUserServiceImpl implements RemoteUserService {
     public void saveUserLogin(UserLoginReqDto userLoginReqDto) {
         KwsUserLogin kwsUserLogin = new KwsUserLogin();
         BeanUtils.copyProperties(userLoginReqDto, kwsUserLogin);
-        kwsUserLoginDao.saveBatch(Collections.singletonList(kwsUserLogin));
+        kwsUserLoginDao.insert(kwsUserLogin);
     }
 
     @Override
@@ -156,13 +152,11 @@ public class RemoteUserServiceImpl implements RemoteUserService {
     }
 
     @Override
-    public List<KwsUserResDto> checkUserBase(String account, int systemType) {
+    public List<KwsUserResDto> checkUserBase(String account, int systemType) throws SystemException {
         KwsUser kwsUser = kwsUserService.checkUserBase(account, systemType);
         KwsUserResDto kwsUserService = new KwsUserResDto();
         BeanUtils.copyProperties(kwsUser, kwsUserService);
-        List<KwsUserResDto> list = new ArrayList<>();
-        list.add(kwsUserService);
-        return list;
+        return Collections.singletonList(kwsUserService);
     }
 
 }

+ 8 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/KwsDept.java

@@ -1,6 +1,8 @@
 package com.sckw.system.model;
 
 import com.sckw.core.model.base.BaseModel;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
 /**
@@ -14,26 +16,31 @@ public class KwsDept extends BaseModel {
     /**
      * 机构类型(1系统管理机构、2平台企业机构)
      */
+    @NotNull(message = "机构类型不能为空")
     private Integer systemType;
 
     /**
      * 企业id
      */
+    @NotNull(message = "企业不能为空")
     private Long entId;
 
     /**
      * 机构名称
      */
+    @NotBlank(message = "机构名称不能为空")
     private String name;
 
     /**
      * 是否是公司(0 机构部门/1 公司)
      */
+    @NotNull(message = "是否是公司类型不能为空")
     private Integer company;
 
     /**
      * 上级机构ID,一级机构为0
      */
+    @NotNull(message = "上级机构不能为空")
     private Long parentId;
 
     /**
@@ -44,6 +51,7 @@ public class KwsDept extends BaseModel {
     /**
      * 机构层级(1更目录、...递增)
      */
+    @NotNull(message = "机构层级不能为空")
     private Integer level;
 
     /**

+ 4 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/KwsEntCheckTrack.java

@@ -1,6 +1,8 @@
 package com.sckw.system.model;
 
 import com.sckw.core.model.base.BaseModel;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -17,6 +19,7 @@ public class KwsEntCheckTrack extends BaseModel {
     /**
      * 企业id
      */
+    @NotNull(message = "企业不能为空")
     private Long entId;
 
     /**
@@ -27,6 +30,7 @@ public class KwsEntCheckTrack extends BaseModel {
     /**
      * 状态:1通过、2未通过
      */
+    @NotNull(message = "审批状态不能为空")
     private Integer status;
 
 }

+ 1 - 1
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/KwsEnterprise.java

@@ -90,7 +90,7 @@ public class KwsEnterprise extends BaseModel {
     /**
      * 企业地址-----区域表id---实际用途?
      */
-    private Integer cityName;
+    private String cityName;
 
     /**
      * 企业详细地址

+ 5 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/KwsMenu.java

@@ -1,6 +1,8 @@
 package com.sckw.system.model;
 
 import com.sckw.core.model.base.BaseModel;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
 /**
@@ -14,6 +16,7 @@ public class KwsMenu extends BaseModel {
     /**
      * 终端类型(1运营端、2企业PC端、3企业APP、4司机端)
      */
+    @NotNull(message = "终端类型不能为空")
     private Integer clientType;
 
     /**
@@ -24,6 +27,7 @@ public class KwsMenu extends BaseModel {
     /**
      * 名称
      */
+    @NotBlank(message = "菜单名不能为空")
     private String name;
 
     /**
@@ -39,6 +43,7 @@ public class KwsMenu extends BaseModel {
     /**
      * 类型:0目录/1菜单/2按钮
      */
+    @NotNull(message = "菜单类型不能为空")
     private Integer type;
 
     /**

+ 5 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/pojo/FindMenuTreePojo.java

@@ -22,6 +22,11 @@ public class FindMenuTreePojo {
      */
     private String name;
 
+    /**
+     * 企业id
+     */
+    private Long entId;
+
     /**
      * 角色id
      */

+ 134 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/AddEntSettleReqVo.java

@@ -0,0 +1,134 @@
+package com.sckw.system.model.vo.req;
+
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * @desc: 企业新增入驻入参
+ * @author: czh
+ * @date: 2023/6/15
+ */
+@Data
+public class AddEntSettleReqVo implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 2800416148876795046L;
+
+    /**
+     * 母公司id(当注册的公司是一家子公司时,entPid必传)
+     */
+    private Long entPid;
+
+    /**
+     * 企业名称
+     */
+    @NotNull(message = "企业名字不能为空")
+    private String firmName;
+
+    /**
+     * 企业编号
+     */
+    @NotBlank(message = "企业编号不能为空")
+    private String code;
+
+    /**
+     * 企业联系人
+     */
+    @NotBlank(message = "企业联系人不能为空")
+    private String contacts;
+
+    /**
+     * 联系电话
+     */
+    @NotBlank(message = "企业联系电话不能为空")
+    private String telephone;
+
+    /**
+     * 法人姓名
+     */
+    private String legalName;
+
+    /**
+     * 法人电话
+     */
+    private String legalTelephone;
+
+    /**
+     * 企业头像
+     */
+    private String head;
+
+    /**
+     * 企业类型 多个类型用","隔开
+     */
+    @NotBlank(message = "企业类型不能为空")
+    private String entTypes;
+
+    /**
+     * 企业级别
+     */
+    private String entLevel;
+
+    /**
+     * 所属一级企业
+     */
+    private String belongFirstEnt;
+
+    /**
+     * 组织机构代码
+     */
+    private String orgCode;
+
+    /**
+     * 企业地址
+     */
+    @NotNull(message = "企业地址编码不能为空")
+    private Integer cityCode;
+
+    /**
+     * 企业地址名
+     */
+    @NotBlank(message = "企业地址名不能为空")
+    private String cityName;
+
+    /**
+     * 详细地址
+     */
+    private String detailAddress;
+
+    /**
+     * 注册来源 (app、pc)
+     */
+    private String regSource;
+
+    /**
+     * 纬度
+     */
+    private String lat;
+
+    /**
+     * 经度
+     */
+    private String lng;
+
+    /**
+     * 专属客户经理(用户ID)
+     */
+    private long manager;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 执照集合
+     */
+    private List<BusinessLicense> businessLicense;
+
+}

+ 12 - 13
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/EntRegisterReqVo.java

@@ -1,5 +1,7 @@
 package com.sckw.system.model.vo.req;
 
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
 import java.io.Serial;
@@ -15,7 +17,7 @@ import java.util.List;
 public class EntRegisterReqVo implements Serializable {
 
     @Serial
-    private static final long serialVersionUID = 2800416148876795046L;
+    private static final long serialVersionUID = -6222024827249219404L;
 
     /**
      * 企业id
@@ -30,23 +32,13 @@ public class EntRegisterReqVo implements Serializable {
     /**
      * 企业名称
      */
-    private String firmName;
 
     /**
      * 企业编号
      */
+    @NotBlank(message = "企业编号不能为空")
     private String code;
 
-    /**
-     * 企业联系人
-     */
-    private String contacts;
-
-    /**
-     * 联系电话
-     */
-    private String telephone;
-
     /**
      * 法人姓名
      */
@@ -65,6 +57,7 @@ public class EntRegisterReqVo implements Serializable {
     /**
      * 企业类型 多个类型用","隔开
      */
+    @NotBlank(message = "企业类型不能为空")
     private String entTypes;
 
     /**
@@ -85,7 +78,13 @@ public class EntRegisterReqVo implements Serializable {
     /**
      * 企业地址
      */
-    private String cityCode;
+    @NotNull(message = "企业地址编码不能为空")
+    private Integer cityCode;
+
+    /**
+     * 企业地址名
+     */
+    private String cityName;
 
     /**
      * 详细地址

+ 11 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/ForgetPasswordReqVo.java

@@ -1,13 +1,23 @@
 package com.sckw.system.model.vo.req;
 
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 import org.apache.logging.log4j.core.config.plugins.validation.constraints.NotBlank;
 
+import java.io.Serial;
 import java.io.Serializable;
 
+/**
+ * @desc: 忘记密码入参
+ * @author: czh
+ * @date: 2023/6/21
+ */
 @Data
 public class ForgetPasswordReqVo implements Serializable {
 
+    @Serial
+    private static final long serialVersionUID = 688115923636184189L;
+
     /**
      * 账号
      */
@@ -29,6 +39,7 @@ public class ForgetPasswordReqVo implements Serializable {
     /**
      * 系统类型(1运营端、2企业开户)
      */
+    @NotNull(message = "系统类型不能为空")
     private int systemType;
 
 }

+ 5 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/RoleBindMeunReqVo.java

@@ -1,5 +1,7 @@
 package com.sckw.system.model.vo.req;
 
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
 import java.io.Serial;
@@ -19,16 +21,19 @@ public class RoleBindMeunReqVo implements Serializable {
     /**
      * 角色ID
      */
+    @NotNull(message = "角色不能为空")
     private long roleId;
 
     /**
      * 企业id
      */
+    @NotNull(message = "企业不能为空")
     private long entId;
 
     /**
      * 菜单ID,多个用","隔开
      */
+    @NotBlank(message = "菜单不能为空")
     private String menuIds;
 
     /**

+ 11 - 0
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/UpdatePasswordReqVo.java

@@ -1,13 +1,23 @@
 package com.sckw.system.model.vo.req;
 
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 import org.apache.logging.log4j.core.config.plugins.validation.constraints.NotBlank;
 
+import java.io.Serial;
 import java.io.Serializable;
 
+/**
+ * @desc: 修改密码入参
+ * @author: czh
+ * @date: 2023/6/21
+ */
 @Data
 public class UpdatePasswordReqVo implements Serializable {
 
+    @Serial
+    private static final long serialVersionUID = 4911945623876338313L;
+
     /**
      * 账号
      */
@@ -29,6 +39,7 @@ public class UpdatePasswordReqVo implements Serializable {
     /**
      * 系统类型(1运营端、2企业开户)
      */
+    @NotNull(message = "系统类型不能为空")
     private int systemType;
 
 }

+ 9 - 1
sckw-modules/sckw-system/src/main/java/com/sckw/system/model/vo/req/UserAddReqVo.java

@@ -1,5 +1,7 @@
 package com.sckw.system.model.vo.req;
 
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
 import java.io.Serial;
@@ -19,11 +21,13 @@ public class UserAddReqVo implements Serializable {
     /**
      * 系统类型(1运营端、2企业开户)
      */
+    @NotNull(message = "系统类型不能为空")
     private Integer systemType;
 
     /**
      * 账号
      */
+    @NotBlank(message = "系统类型不能为空")
     private String account;
 
     /**
@@ -32,13 +36,15 @@ public class UserAddReqVo implements Serializable {
     private String password;
 
     /**
-     * 用户
+     * 
      */
+    @NotBlank(message = "姓名不能为空")
     private String name;
 
     /**
      * 手机号
      */
+    @NotBlank(message = "手机号不能为空")
     private String telephone;
 
     /**
@@ -59,11 +65,13 @@ public class UserAddReqVo implements Serializable {
     /**
      * 是否是企业管理(1是 0否)
      */
+    @NotNull(message = "用户身份不能为空")
     private Integer isMain;
 
     /**
      * 分配的角色id,多个用","隔开
      */
+    @NotBlank(message = "岗位不能为空")
     private String roleIds;
 
 }

+ 26 - 18
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsDeptService.java

@@ -1,13 +1,14 @@
 package com.sckw.system.service;
 
 import cn.hutool.core.collection.CollectionUtil;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.constant.Global;
+import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.IdWorker;
 import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
+import com.sckw.redis.utils.RedissonUtils;
 import com.sckw.system.dao.KwsDeptDao;
 import com.sckw.system.dao.KwsUserDeptDao;
 import com.sckw.system.model.KwsDept;
@@ -17,8 +18,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
-import java.util.Map;
 
 /**
  * 组织机构service接口
@@ -31,6 +32,9 @@ public class KwsDeptService {
     @Autowired
     KwsDeptDao kwsDeptDao;
 
+    @Autowired
+    KwsRoleService kwsRoleService;
+
     @Autowired
     KwsUserDeptDao kwsUserDeptDao;
 
@@ -40,13 +44,15 @@ public class KwsDeptService {
      * @return
      */
     public void add(KwsDept params) {
-        params.setId(new IdWorker(1).nextId());
         if (StringUtils.isNotBlank(params.getParentId())) {
             KwsDept kwsDept = kwsDeptDao.selectByKey(params.getParentId());
             if (kwsDept != null) {
                 params.setParentIds(kwsDept.getParentIds() + Global.COMMA + params.getId());
                 params.setLevel(kwsDept.getLevel() != null ? kwsDept.getLevel() + 1 : 1);
             }
+        } else {
+            params.setParentId(Long.parseLong(Global.PID));
+            params.setParentIds(Global.PID);
         }
 
         if (kwsDeptDao.insert(params) <= 0) {
@@ -57,26 +63,27 @@ public class KwsDeptService {
     /**
      * 删除记录-根据主键
      * @param ids
-     * @return
-     * @throws Exception
      */
-    public HttpResult deleteByKey(String ids) throws Exception {
-        /**1.数据校验**/
-        if (StringUtils.isBlank(ids)) {
-            return HttpResult.error("请选择您要删除的机构信息!");
+    public void deleteByKey(String ids) throws Exception {
+        /*1.删除机构*/
+        List<Long> list = Arrays.stream(ids.split(",")).map(Long::parseLong).toList();
+        deleteDept(kwsDeptDao.selectByKeys(list));
+    }
+
+    public void deleteDept(List<KwsDept> kwsDepts) throws Exception {
+        if (CollectionUtils.isEmpty(kwsDepts)) {
+            return;
         }
 
-        int resultCode = 0;
-        String[] idArray = ids.split(",");
-        for (int i = 0; i < idArray.length; i++) {
-            String id = idArray[i];
-            KwsDept kwsDept = kwsDeptDao.selectByKey(Long.parseLong(id));
-            if (null != kwsDept) {
-                kwsDept.setDelFlag(Global.YES);
-                resultCode = kwsDeptDao.update(kwsDept);
+        for (KwsDept kwsDept : kwsDepts) {
+            kwsDept.setDelFlag(Global.YES);
+            if (kwsDeptDao.update(kwsDept) <= 0) {
+                throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
             }
         }
-        return resultCode > 0 ? HttpResult.ok("删除成功!") : HttpResult.error("删除失败!");
+
+        /*2、删除岗位角色*/
+        kwsRoleService.deleteByDeptIds(kwsDepts.stream().map(KwsDept::getId).toList());
     }
 
     /**
@@ -179,4 +186,5 @@ public class KwsDeptService {
             throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
         }
     }
+
 }

+ 89 - 34
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsEnterpriseService.java

@@ -19,12 +19,15 @@ import com.sckw.core.utils.IdWorker;
 import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
-import com.sckw.core.web.response.HttpResult;
 import com.sckw.system.api.model.dto.req.RegisterReqDto;
+import com.sckw.system.api.model.dto.res.RegisterResDto;
 import com.sckw.system.dao.*;
 import com.sckw.system.model.*;
+import com.sckw.system.model.pojo.FindMenuTreePojo;
 import com.sckw.system.model.vo.req.*;
 import com.sckw.system.model.vo.res.CertificateResVo;
+import com.sckw.system.model.vo.res.IdResVo;
+import com.sckw.system.model.vo.res.KwsMenuResVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -53,16 +56,28 @@ public class KwsEnterpriseService {
     @Autowired
     private KwsEntDeptDao kwsEntDeptDao;
 
+    @Autowired
+    private KwsDeptDao kwsDeptDao;
+
     @Autowired
     private KwsUserService kwsUserService;
 
+    @Autowired
+    private KwsDeptService kwsDeptService;
+
+    @Autowired
+    private KwsMenuService kwsMenuService;
+
+    @Autowired
+    private KwsRoleService kwsRoleService;
+
     /**
      * @param params 入库
      * @desc: 单表入库
      * @author: czh
      * @date: 2023/6/19
      */
-    public void add(KwsEnterprise params) {
+    public void add(KwsEnterprise params) throws SystemException {
         if (kwsEnterpriseDao.insert(params) <= 0) {
             throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
         }
@@ -76,11 +91,8 @@ public class KwsEnterpriseService {
      * @date: 2023/6/19
      */
     public void deleteByKey(String ids) throws Exception {
-        String[] idArr = ids.split(",");
-        List<Long> list = new ArrayList<>();
-        for (String id : idArr) {
-            list.add(Long.valueOf(id));
-        }
+        /*1、删除企业*/
+        List<Long> list = Arrays.stream(ids.split(",")).map(Long::parseLong).toList();
         List<KwsEnterprise> kwsEnterprises = kwsEnterpriseDao.selectByKeys(list);
         if (CollectionUtils.isEmpty(kwsEnterprises)) {
             throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.ENT_NOT_EXISTS);
@@ -92,6 +104,9 @@ public class KwsEnterpriseService {
                 throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
             }
         }
+
+        /*2、删除机构*/
+        kwsDeptService.deleteDept(kwsDeptDao.selectByEntIdList(list));
     }
 
     /**
@@ -101,7 +116,7 @@ public class KwsEnterpriseService {
      * @date: 2023/6/19
      */
     @Transactional(rollbackFor = Exception.class)
-    public void update(KwsEnterpriseReqVo reqVo) throws Exception {
+    public void update(KwsEnterpriseReqVo reqVo) throws SystemException {
         /*1、更新企业信息表*/
         long entId = reqVo.getId();
         KwsEnterprise kwsEnterprise = checkKwsEnterpriseById(entId);
@@ -120,7 +135,7 @@ public class KwsEnterpriseService {
 
         //若入参传来的type在表里面本来就有则不管,没有就新增
         typeReqList.forEach(item -> {
-            if (CollectionUtils.isEmpty(kwsEntTypes) || kwsEntTypes.stream().filter(x -> x.getType() == Integer.parseInt(item)).findAny().isPresent()) {
+            if (CollectionUtils.isEmpty(kwsEntTypes) || kwsEntTypes.stream().anyMatch(x -> x.getType() == Integer.parseInt(item))) {
                 return;
             }
 
@@ -182,7 +197,7 @@ public class KwsEnterpriseService {
 
     }
 
-    public KwsEntCertificate checkEntCertificate(long id) {
+    public KwsEntCertificate checkEntCertificate(long id) throws SystemException {
         KwsEntCertificate kwsEntCertificate = kwsEntCertificateDao.selectByKey(id);
         if (Objects.isNull(kwsEntCertificate) || kwsEntCertificate.getDelFlag() == Global.YES) {
             throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.ENTCERTIFICATES_NOT_EXISTS);
@@ -227,20 +242,12 @@ public class KwsEnterpriseService {
         return kwsEnterpriseDao.findList(reqVo);
     }
 
-    /**
-     * @param params 参数校验
-     * @desc: 参数校验
-     * @author: czh
-     * @date: 2023/6/19
-     */
-    public void paramsCheck(KwsEnterprise params) {
-    }
 
     /**
      * 新增企业(注册)
      */
     @Transactional(rollbackFor = Exception.class)
-    public void register(EntRegisterReqVo reqVo) {
+    public void register(EntRegisterReqVo reqVo) throws SystemException {
         /*1、存企业信息表*/
         KwsEnterprise kwsEnterprise = kwsEnterpriseDao.selectByKey(reqVo.getEntId());
         if (Objects.isNull(kwsEnterprise)) {
@@ -250,15 +257,25 @@ public class KwsEnterpriseService {
         Long entId = kwsEnterprise.getId();
         Date date = new Date();
         Long userId = LoginUserHolder.getUserId();
-        BeanUtils.copyProperties(reqVo, kwsEnterprise);
+        kwsEnterprise.setCode(reqVo.getCode());
+        kwsEnterprise.setLegalName(reqVo.getLegalName());
+        kwsEnterprise.setLegalTelephone(reqVo.getLegalTelephone());
+        kwsEnterprise.setHead(reqVo.getHead());
+        kwsEnterprise.setRegSource(LoginUserHolder.getClientType());
+        kwsEnterprise.setCityCode(reqVo.getCityCode());
+        kwsEnterprise.setCityName(reqVo.getCityName());
+        kwsEnterprise.setDetailAddress(reqVo.getDetailAddress());
+        kwsEnterprise.setLat(reqVo.getLat());
+        kwsEnterprise.setLng(reqVo.getLng());
 
         //一些待确认的字段
         kwsEnterprise.setIntegral(0);
         kwsEnterprise.setBalance(0L);
         kwsEnterprise.setExperience(0);
         kwsEnterprise.setMemberLevel(0);
+        kwsEnterprise.setOrgCode("");
         kwsEnterprise.setRegTime(date);
-        kwsEnterprise.setApproval(ApprovalEnum.NO.getCode());
+        kwsEnterprise.setApproval(ApprovalEnum.PROCESS.getCode());
         if (kwsEnterpriseDao.update(kwsEnterprise) <= 0) {
             throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
         }
@@ -284,20 +301,20 @@ public class KwsEnterpriseService {
 
         /*3、存企业证书*/
         List<KwsEntCertificate> kwsEntCertificates = new ArrayList<>();
-        reqVo.getBusinessLicense().forEach(item -> {
+        for (BusinessLicense businessLicense : reqVo.getBusinessLicense()) {
             KwsEntCertificate kwsEntCertificate = new KwsEntCertificate();
             //todo 上传证书正反面,将url放到两个入参里
             kwsEntCertificate.setEntId(entId);
-            kwsEntCertificate.setId(new IdWorker(1).nextId());
             kwsEntCertificate.setStatus(Global.NO);
             kwsEntCertificate.setCreateBy(userId);
             kwsEntCertificate.setCreateTime(date);
             kwsEntCertificate.setUpdateBy(userId);
             kwsEntCertificate.setUpdateTime(date);
             kwsEntCertificate.setDelFlag(Global.NO);
-            BeanUtils.copyProperties(item, kwsEntCertificate);
+            BeanUtils.copyProperties(businessLicense, kwsEntCertificate);
+            kwsEntCertificate.setId(new IdWorker(1).nextId());
             kwsEntCertificates.add(kwsEntCertificate);
-        });
+        }
         if (kwsEntCertificateDao.saveBatch(kwsEntCertificates) != kwsEntCertificates.size()) {
             throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
         }
@@ -319,11 +336,12 @@ public class KwsEnterpriseService {
      * 企业审批
      */
     @Transactional(rollbackFor = Exception.class)
-    public void approval(KwsEntCheckTrack kwsEntCheckTrack) {
+    public void approval(KwsEntCheckTrack kwsEntCheckTrack) throws SystemException {
         /*更新企业信息主表审批状态*/
-        KwsEnterprise kwsEnterprise = checkKwsEnterpriseById(kwsEntCheckTrack.getEntId());
+        Long entId = kwsEntCheckTrack.getEntId();
+        KwsEnterprise kwsEnterprise = checkKwsEnterpriseById(entId);
         kwsEnterprise.setApproval(kwsEntCheckTrack.getStatus());
-        if (kwsEnterpriseDao.update(kwsEnterprise) <= 0) {
+        if (kwsEnterpriseDao.approval(kwsEnterprise) <= 0) {
             throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
         }
 
@@ -331,9 +349,39 @@ public class KwsEnterpriseService {
         if (kwsEntCheckTrackDao.insert(kwsEntCheckTrack) <= 0) {
             throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
         }
+
+        /*审批通过,构建管理员角色及权限*/
+        /*1、新增管理员机构*/
+        KwsDept kwsDept = new KwsDept();
+        long deptId = new IdWorker(1L).nextId();
+        kwsDept.setEntId(entId);
+        kwsDept.setName(Global.MANAGE_NAME);
+        kwsDept.setSystemType(SystemTypeEnum.COMPANY.getCode());
+        kwsDept.setCompany(Global.NO);
+        kwsDept.setId(deptId);
+        kwsDeptService.add(kwsDept);
+
+        /*2、新增管理员角色*/
+        AddRoleReqVo addRoleReqVo = new AddRoleReqVo();
+        List<KwsMenu> list = kwsMenuService.selectAll();
+        if (CollectionUtils.isEmpty(list)) {
+            throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
+        }
+        addRoleReqVo.setName(Global.MANAGE_NAME);
+        addRoleReqVo.setCurrentDeptId(deptId);
+        addRoleReqVo.setMenuIds(String.join(",", list.stream().map(KwsMenu::getId).map(String::valueOf).toList()));
+        addRoleReqVo.setVisiblePersonal(false);
+        IdResVo idResVo = kwsRoleService.add(addRoleReqVo);
+
+        /*3、绑定角色等*/
+        KwsUser userByAccount = kwsUserService.getUserByAccount(kwsEnterprise.getTelephone(), SystemTypeEnum.COMPANY.getCode());
+        if (Objects.isNull(userByAccount)) {
+            throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
+        }
+        kwsUserService.fillUserRole(String.valueOf(idResVo.getId()),userByAccount.getId());
     }
 
-    private KwsEnterprise checkKwsEnterpriseById(long id) {
+    private KwsEnterprise checkKwsEnterpriseById(long id) throws SystemException {
         KwsEnterprise kwsEnterprise = queryKwsEnterpriseById(id);
         if (Objects.isNull(kwsEnterprise) || kwsEnterprise.getDelFlag() == Global.YES) {
             throw new SystemException(HttpStatus.QUERY_FAIL_CODE, HttpStatus.ENT_NOT_EXISTS);
@@ -348,7 +396,7 @@ public class KwsEnterpriseService {
     /**
      * 企业冻结/解冻
      */
-    public void freeze(FreezeReqVo reqVo) {
+    public void freeze(FreezeReqVo reqVo) throws SystemException {
         KwsEnterprise kwsEnterprise = checkKwsEnterpriseById(reqVo.getId());
         kwsEnterprise.setStatus(reqVo.getStatus());
         if (kwsEnterpriseDao.update(kwsEnterprise) <= 0) {
@@ -359,7 +407,7 @@ public class KwsEnterpriseService {
     /**
      * 企业证件信息
      */
-    public List<CertificateResVo> certificate(Long id) {
+    public List<CertificateResVo> certificate(Long id) throws SystemException {
         /*查企业资质*/
         List<KwsEntCertificate> kwsEntCertificates = kwsEntCertificateDao.selectByEntId(id);
         if (CollectionUtils.isEmpty(kwsEntCertificates)) {
@@ -394,7 +442,7 @@ public class KwsEnterpriseService {
      * @author: czh
      * @date: 2023/6/19
      */
-    public void addEntSettle(EntRegisterReqVo reqVo) {
+    public void addEntSettle(AddEntSettleReqVo reqVo) throws SystemException {
         /*1、存用户信息*/
         RegisterReqDto registerReqDto = new RegisterReqDto();
         registerReqDto.setEntName(reqVo.getFirmName());
@@ -402,9 +450,16 @@ public class KwsEnterpriseService {
         registerReqDto.setTelephone(reqVo.getTelephone());
         registerReqDto.setIsMain(Global.YES);
         registerReqDto.setSystemType(SystemTypeEnum.COMPANY.getCode());
-        kwsUserService.register(registerReqDto);
+        RegisterResDto register = kwsUserService.register(registerReqDto);
 
         /*2、认证*/
-        register(reqVo);
+        EntRegisterReqVo entRegisterReqVo = new EntRegisterReqVo();
+        BeanUtils.copyProperties(reqVo, entRegisterReqVo);
+        entRegisterReqVo.setEntId(register.getEntId());
+        register(entRegisterReqVo);
+    }
+
+    public List<KwsEntCheckTrack> entCheck(Long entId) {
+        return kwsEntCheckTrackDao.findList(entId);
     }
 }

+ 55 - 20
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsMenuService.java

@@ -8,10 +8,11 @@ import com.sckw.core.model.constant.Global;
 import com.sckw.core.utils.BeanUtils;
 import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.IdWorker;
-import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
+import com.sckw.core.web.model.LoginUserInfo;
 import com.sckw.core.web.response.HttpResult;
+import com.sckw.redis.utils.RedissonUtils;
 import com.sckw.system.dao.*;
 import com.sckw.system.model.*;
 import com.sckw.system.model.pojo.FindMenuTreePojo;
@@ -67,34 +68,64 @@ public class KwsMenuService {
     }
 
     /**
-     * 删除记录-根据主键
-     *
-     * @param ids
-     * @return
-     * @throws Exception
+     * @param ids 主键di
+     * @desc: 根据主键删除菜单
+     * @author: czh
+     * @date: 2023/6/25
      */
-    public HttpResult deleteByKey(String ids) throws Exception {
-        /**1.数据校验**/
-        if (StringUtils.isBlank(ids)) {
-            return HttpResult.error("请选择您要删除的菜单信息!");
+    public void deleteByKey(String ids) throws Exception {
+        List<Long> list = Arrays.stream(ids.split(",")).map(Long::parseLong).toList();
+        /*1、删除菜单*/
+        List<KwsMenu> kwsMenus = kwsMenuDao.selectByKeys(list);
+        if (CollectionUtils.isEmpty(kwsMenus)) {
+            return;
+        }
+
+        for (KwsMenu kwsMenu : kwsMenus) {
+            kwsMenu.setDelFlag(Global.YES);
+            if (kwsMenuDao.update(kwsMenu) <= 0) {
+                throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.DELETE_FAIL);
+            }
         }
 
-        int resultCode = 0;
-        String[] idArray = ids.split(",");
-        for (int i = 0; i < idArray.length; i++) {
-            String id = idArray[i];
-            KwsMenu kwsMenu = kwsMenuDao.selectByKey(Long.parseLong(id));
-            if (null != kwsMenu) {
-                kwsMenu.setDelFlag(Global.YES);
-                resultCode = kwsMenuDao.update(kwsMenu);
-                /**2.对企业/角色已分配该菜单进行清理**/
+        /*2、删除菜单权限*/
+        deleteMenuRightsByMenuIds(kwsMenus.stream().map(KwsMenu::getId).toList());
+    }
+
+    /**
+     * @param menuIdList 菜单id集合
+     * @desc: 删除菜单权限
+     * @author: czh
+     * @date: 2023/6/25
+     */
+    public void deleteMenuRightsByMenuIds(List<Long> menuIdList) throws Exception {
+        deleteMenuRights(kwsMenuRightsDao.selectByMenuIds(menuIdList));
+    }
+
+    /**
+     * @param roleIdList 角色id集合
+     * @desc: 删除菜单权限
+     * @author: czh
+     * @date: 2023/6/25
+     */
+    public void deleteMenuRightsByRoleIds(List<Long> roleIdList) throws Exception {
+        deleteMenuRights(kwsMenuRightsDao.selectByRoleIds(roleIdList));
+    }
 
+    private void deleteMenuRights(List<KwsMenuRights> kwsMenuRightsList) {
+        if (CollectionUtils.isEmpty(kwsMenuRightsList)) {
+            return;
+        }
 
+        for (KwsMenuRights kwsMenuRights : kwsMenuRightsList) {
+            kwsMenuRights.setDelFlag(Global.YES);
+            if (kwsMenuRightsDao.update(kwsMenuRights) <= 0) {
+                throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.DELETE_FAIL);
             }
         }
-        return resultCode > 0 ? HttpResult.ok("删除成功!") : HttpResult.error("删除失败!");
     }
 
+
     /**
      * 更新记录
      *
@@ -232,4 +263,8 @@ public class KwsMenuService {
             throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
         }
     }
+
+    public List<KwsMenu> selectAll(){
+        return kwsMenuDao.selectAll();
+    }
 }

+ 140 - 34
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsRoleService.java

@@ -6,18 +6,20 @@ import com.sckw.core.model.constant.Global;
 import com.sckw.core.utils.CollectionUtils;
 import com.sckw.core.utils.IdWorker;
 import com.sckw.core.utils.StringUtils;
+import com.sckw.core.web.config.CustomConfig;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
-import com.sckw.system.dao.KwsAuthorityDao;
-import com.sckw.system.dao.KwsRoleDao;
-import com.sckw.system.dao.KwsUserRoleDao;
+import com.sckw.redis.utils.RedissonUtils;
+import com.sckw.system.dao.*;
 import com.sckw.system.model.*;
+import com.sckw.system.model.pojo.FindMenuTreePojo;
 import com.sckw.system.model.vo.req.AddRoleReqVo;
 import com.sckw.system.model.vo.req.RoleBindMeunReqVo;
 import com.sckw.system.model.vo.req.UserBindRoleReqVo;
 import com.sckw.system.model.vo.res.IdResVo;
 import com.sckw.system.model.vo.res.KwsDeptResVo;
+import com.sckw.system.model.vo.res.KwsMenuResVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -42,10 +44,19 @@ public class KwsRoleService {
     KwsAuthorityDao kwsAuthorityDao;
 
     @Autowired
-    KwsDeptService kwsDeptService;
+    KwsUserDeptDao kwsUserDeptDao;
 
     @Autowired
-    KwsMenuService kwsMenuServicel;
+    KwsDeptDao kwsDeptDao;
+
+    @Autowired
+    KwsMenuService kwsMenuService;
+
+    @Autowired
+    KwsMenuRightsDao kwsMenuRightsDao;
+
+    @Autowired
+    CustomConfig customConfig;
 
     /**
      * @param  params KwsRole
@@ -84,7 +95,7 @@ public class KwsRoleService {
         /*2、绑定菜单功能*/
         KwsDept kwsDept = new KwsDept();
         kwsDept.setId(reqVo.getCurrentDeptId());
-        List<KwsDeptResVo> list = kwsDeptService.findList(kwsDept);
+        List<KwsDeptResVo> list = kwsDeptDao.findList(kwsDept);
         if (CollectionUtils.isEmpty(list)) {
             throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
         }
@@ -92,18 +103,23 @@ public class KwsRoleService {
         roleBindMeunReqVo.setRoleId(roleId);
         roleBindMeunReqVo.setEntId(list.get(0).getEntId());
         roleBindMeunReqVo.setMenuIds(reqVo.getMenuIds());
-        kwsMenuServicel.roleBindMeun(roleBindMeunReqVo);
+        kwsMenuService.roleBindMeun(roleBindMeunReqVo);
 
         /*3、设置数据权限*/
         if (reqVo.getVisiblePersonal()) {
             //只能看见自己的数据则不管
             return idResVo;
         }
-        String[] deptIds = reqVo.getDeptIds().split(",");
+
+        String deptIds = reqVo.getDeptIds();
+        if (StringUtils.isBlank(deptIds)) {
+            return idResVo;
+        }
+        String[] deptIdArr = deptIds.split(",");
         List<KwsAuthority> kwsAuthorities = new ArrayList<>();
         Long userId = LoginUserHolder.getUserId();
         Date date = new Date();
-        for (String deptId : deptIds) {
+        for (String deptId : deptIdArr) {
             KwsAuthority kwsAuthority = new KwsAuthority();
             kwsAuthority.setRoleId(roleId);
             kwsAuthority.setDeptId(Long.parseLong(deptId));
@@ -123,27 +139,65 @@ public class KwsRoleService {
         return idResVo;
     }
 
+    /**
+     * @param deptIdList 机构id集合
+     * @desc: 根据机构删除角色信息
+     * @author: czh
+     * @date: 2023/6/25
+     */
+    public void deleteByDeptIds(List<Long> deptIdList) throws Exception {
+        List<KwsRole> kwsRoles = kwsRoleDao.selectBatchByDeptIds(deptIdList);
+        if (CollectionUtils.isEmpty(kwsRoles)) {
+            return;
+        }
+        deleteRole(kwsRoles);
+    }
+
     /**
      * 删除记录-根据主键
      * @param ids 主键
-     * @return HttpResult
      */
-    public HttpResult deleteByKey(String ids) throws Exception {
-        /*1.数据校验*/
-        if (StringUtils.isBlank(ids)) {
-            return HttpResult.error("请选择您要删除的角色信息!");
-        }
-
-        int resultCode = 0;
-        String[] idArray = ids.split(",");
-        for (String id : idArray) {
-            KwsRole kwsRole = kwsRoleDao.selectByKey(Long.parseLong(id));
-            if (null != kwsRole) {
-                kwsRole.setDelFlag(Global.YES);
-                resultCode = kwsRoleDao.update(kwsRole);
+    public void deleteByKey(String ids) throws Exception {
+        List<Long> idList = Arrays.stream(ids.split(",")).map(Long::parseLong).toList();
+        List<KwsRole> kwsRoles = kwsRoleDao.selectBatchByKeys(idList);
+        if (CollectionUtils.isEmpty(kwsRoles)) {
+            throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
+        }
+
+        deleteRole(kwsRoles);
+    }
+
+    private void deleteRole(List<KwsRole> kwsRoles) throws Exception {
+        /*2、删角色*/
+        for (KwsRole kwsRole : kwsRoles) {
+            kwsRole.setDelFlag(Global.YES);
+            if (kwsRoleDao.update(kwsRole) <= 0) {
+                throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.DELETE_FAIL);
             }
         }
-        return resultCode > 0 ? HttpResult.ok("删除成功!") : HttpResult.error("删除失败!");
+
+        /*3、删用户角色关系*/
+        List<Long> idList = kwsRoles.stream().map(KwsRole::getId).toList();
+        List<KwsUserRole> kwsUserRoleList = kwsUserRoleDao.findAllByRoleIds(idList);
+        if (CollectionUtils.isEmpty(kwsUserRoleList)) {
+            return;
+        }
+
+        for (KwsUserRole kwsUserRole : kwsUserRoleList) {
+            kwsUserRole.setDelFlag(Global.YES);
+            if (kwsUserRoleDao.update(kwsUserRole) <= 0) {
+                throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.DELETE_FAIL);
+            }
+        }
+
+        /*4、删除角色菜单关系*/
+        kwsMenuService.deleteMenuRightsByRoleIds(idList);
+
+        //让涉及到的用户重新登录获取菜单权限
+        for (KwsUserRole kwsUserRole : kwsUserRoleList) {
+            Long userId = kwsUserRole.getUserId();
+            RedissonUtils.deleteBactch(Global.REDIS_USER_PREFIX + userId + "*");
+        }
     }
 
     /**
@@ -193,22 +247,31 @@ public class KwsRoleService {
      */
     @Transactional(rollbackFor = Exception.class)
     public void userBindRole(UserBindRoleReqVo reqVo) {
-        /*1、存用户角色信息*/
+       //特殊校验,之前说用户和角色是一对多,后来产品改成一对一
         String[] roleIdArr = reqVo.getRoleIds().split(",");
+        if (customConfig.getIsBindManyRole() == Global.NO && roleIdArr.length > 1) {
+            throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.MSG_006);
+        }
+
+        /*1、若有数据则先置为删除状态*/
+        extracted(reqVo);
+
+        /*2、存用户角色信息*/
         List<KwsUserRole> kwsUserRolelist = new ArrayList<>();
         Date date = new Date();
-        Long userId = LoginUserHolder.getUserId();
+        Long currentUserId = LoginUserHolder.getUserId();
+        long userId = reqVo.getUserId();
         List<Long> roleIdList = new ArrayList<>();
         for (String roleId : roleIdArr) {
             KwsUserRole kwsUserRole = new KwsUserRole();
-            kwsUserRole.setUserId(reqVo.getUserId());
+            kwsUserRole.setUserId(userId);
             kwsUserRole.setRoleId(Long.parseLong(roleId));
             kwsUserRole.setRemark(reqVo.getRemark());
             kwsUserRole.setId(new IdWorker(1).nextId());
             kwsUserRole.setCreateTime(date);
-            kwsUserRole.setCreateBy(userId);
+            kwsUserRole.setCreateBy(currentUserId);
             kwsUserRole.setUpdateTime(date);
-            kwsUserRole.setUpdateBy(userId);
+            kwsUserRole.setUpdateBy(currentUserId);
             kwsUserRole.setStatus(Global.NO);
             kwsUserRole.setDelFlag(Global.NO);
             kwsUserRolelist.add(kwsUserRole);
@@ -218,24 +281,67 @@ public class KwsRoleService {
             throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
         }
 
-        /*2、存用户机构信息*/
+        /*3、存用户机构信息*/
         List<KwsRole> kwsRoles = kwsRoleDao.selectBatchByKeys(roleIdList);
         List<KwsUserDept> kwsUserDeptList = new ArrayList<>();
         kwsRoles.forEach(item -> {
             KwsUserDept kwsUserDept = new KwsUserDept();
-            kwsUserDept.setUserId(reqVo.getUserId());
+            kwsUserDept.setUserId(userId);
             kwsUserDept.setDeptId(item.getDeptId());
             kwsUserDept.setId(new IdWorker(1).nextId());
             kwsUserDept.setRemark("");
             kwsUserDept.setStatus(Global.NO);
-            kwsUserDept.setCreateBy(userId);
+            kwsUserDept.setCreateBy(currentUserId);
             kwsUserDept.setCreateTime(date);
-            kwsUserDept.setUpdateBy(userId);
+            kwsUserDept.setUpdateBy(currentUserId);
             kwsUserDept.setUpdateTime(date);
             kwsUserDept.setDelFlag(Global.NO);
             kwsUserDeptList.add(kwsUserDept);
         });
-        kwsDeptService.addUserDept(kwsUserDeptList);
+        if (kwsUserDeptDao.saveBatch(kwsUserDeptList) < kwsUserDeptList.size()) {
+            throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
+        }
+
+        /*4、后置处理,修改redis中的信息*/
+        FindMenuTreePojo findMenuTreePojo = new FindMenuTreePojo();
+        findMenuTreePojo.setRoleIds(roleIdList);
+        List<KwsMenuResVo> kwsMenuResVos = kwsMenuService.findList(findMenuTreePojo);
+        if (CollectionUtils.isEmpty(kwsMenuResVos)) {
+            return;
+        }
+
+        List<String> menus = new ArrayList<>();
+        for (KwsMenuResVo kwsMenuResVo : kwsMenuResVos) {
+            String links = kwsMenuResVo.getLinks();
+            if (StringUtils.isNotBlank(links)) {
+                menus.addAll(Arrays.asList(kwsMenuResVo.getLinks().split(",")));
+            }
+        }
+        RedissonUtils.putSet(Global.REDIS_SYS_MENU_PREFIX + userId, menus);
+        RedissonUtils.deleteBactch(Global.REDIS_USER_PREFIX + userId + "*");
+
+    }
+
+    private void extracted(UserBindRoleReqVo reqVo) {
+        List<KwsUserRole> currentUserRoleList = kwsUserRoleDao.findAllByUserId(reqVo.getUserId());
+        if (!CollectionUtils.isEmpty(currentUserRoleList)) {
+            for (KwsUserRole kwsUserRole : currentUserRoleList) {
+                kwsUserRole.setDelFlag(Global.YES);
+                if(kwsUserRoleDao.update(kwsUserRole) <= 0){
+                    throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
+                }
+            }
+        }
+
+        List<KwsUserDept> currentUserDeptList = kwsUserDeptDao.findAllByUserId(reqVo.getUserId());
+        if (!CollectionUtils.isEmpty(currentUserDeptList)) {
+            for (KwsUserDept kwsUserDept : currentUserDeptList) {
+                kwsUserDept.setDelFlag(Global.YES);
+                if (kwsUserDeptDao.update(kwsUserDept) <= 0) {
+                    throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
+                }
+            }
+        }
     }
 
 

+ 45 - 58
sckw-modules/sckw-system/src/main/java/com/sckw/system/service/KwsUserService.java

@@ -1,4 +1,5 @@
 package com.sckw.system.service;
+
 import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.enums.ApprovalEnum;
@@ -7,7 +8,9 @@ import com.sckw.core.utils.*;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.redis.utils.RedissonUtils;
 import com.sckw.system.api.model.dto.req.RegisterReqDto;
+import com.sckw.system.api.model.dto.res.RegisterResDto;
 import com.sckw.system.dao.KwsEntCheckTrackDao;
+import com.sckw.system.dao.KwsEnterpriseDao;
 import com.sckw.system.dao.KwsUserDao;
 import com.sckw.system.dao.KwsUserDeptDao;
 import com.sckw.system.model.KwsDept;
@@ -27,6 +30,7 @@ import java.util.*;
 
 /**
  * 用户service接口
+ *
  * @author zk
  * @date 2023-05-31
  */
@@ -50,7 +54,7 @@ public class KwsUserService {
     KwsDeptService kwsDeptService;
 
     @Autowired
-    KwsEnterpriseService kwsEnterpriseService;
+    KwsEnterpriseDao kwsEnterpriseDao;
 
     @Autowired
     KwsMenuService kwsMenuService;
@@ -61,7 +65,7 @@ public class KwsUserService {
         BeanUtils.copyProperties(reqVo, kwsUser);
 
         /*1、数据校验*/
-        paramsCheck(kwsUser);
+        checkAccountValid(kwsUser.getAccount(), kwsUser.getSystemType());
 
         /*2、填充密码*/
         fillPassword(kwsUser);
@@ -70,7 +74,7 @@ public class KwsUserService {
         long userId = new IdWorker(1).nextId();
         kwsUser.setId(userId);
         if (kwsUserDao.insert(kwsUser) <= 0) {
-           throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
+            throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
         }
 
         /*4、填充用户角色、用户机构关系*/
@@ -78,10 +82,13 @@ public class KwsUserService {
 
     }
 
-    public void register(RegisterReqDto reqDto) throws SystemException {
+    @Transactional(rollbackFor = {})
+    public RegisterResDto register(RegisterReqDto reqDto) throws SystemException {
         /*存用户表、企业表,暂时不处理角色关系,需要认证*/
         KwsUser kwsUser = new KwsUser();
+        RegisterResDto registerResDto = new RegisterResDto();
         long userId = new IdWorker(1).nextId();
+        registerResDto.setUserId(userId);
         kwsUser.setSystemType(reqDto.getSystemType());
         kwsUser.setAccount(reqDto.getTelephone());
         kwsUser.setPassword(reqDto.getPassword());
@@ -96,44 +103,28 @@ public class KwsUserService {
             throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
         }
 
+
         /*存企业机构等*/
-        //目前注册接口只有管理员进来
-        if(reqDto.getIsMain() == Global.YES) {
+        //目前注册接口只有企业管理员进来
+        if (reqDto.getIsMain() == Global.YES && reqDto.getSystemType() != SystemTypeEnum.MANAGE.getCode()) {
             KwsEnterprise kwsEnterprise = new KwsEnterprise();
             long entId = new IdWorker(1L).nextId();
             kwsEnterprise.setId(entId);
+            kwsEnterprise.setCode("");
             kwsEnterprise.setFirmName(reqDto.getEntName());
             kwsEnterprise.setApproval(ApprovalEnum.NO.getCode());
-            kwsEnterpriseService.add(kwsEnterprise);
-
-            /*4、新增管理员机构*/
-            KwsDept kwsDept = new KwsDept();
-            long deptId = new IdWorker(1L).nextId();
-            kwsDept.setEntId(entId);
-            kwsDept.setName(SystemTypeEnum.MANAGE.getName());
-            kwsDept.setSystemType(SystemTypeEnum.MANAGE.getCode());
-            kwsDept.setCompany(Global.NO);
-            kwsDeptService.add(kwsDept);
-
-            /*5、新增管理员角色*/
-            AddRoleReqVo addRoleReqVo = new AddRoleReqVo();
-            List<KwsMenuResVo> list = kwsMenuService.findList(new FindMenuTreePojo());
-            if (CollectionUtils.isEmpty(list)) {
+            kwsEnterprise.setContacts(reqDto.getName());
+            kwsEnterprise.setTelephone(reqDto.getTelephone());
+            registerResDto.setEntId(entId);
+            if (kwsEnterpriseDao.insert(kwsEnterprise) <= 0) {
                 throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.INSERT_FAIL);
             }
-            addRoleReqVo.setName(Global.MANAGE_NAME);
-            addRoleReqVo.setCurrentDeptId(deptId);
-            addRoleReqVo.setMenuIds(String.join(",", list.stream().map(KwsMenuResVo::getId).map(String::valueOf).toList()));
-            addRoleReqVo.setVisiblePersonal(false);
-            IdResVo idResVo = kwsRoleService.add(addRoleReqVo);
-
-            /*6、绑定角色等*/
-            fillUserRole(String.valueOf(idResVo.getId()), userId);
         }
+        return registerResDto;
     }
 
 
-    private void fillUserRole(String roleIds, long userId) {
+    public void fillUserRole(String roleIds, long userId) {
         UserBindRoleReqVo userBindRoleReqVo = new UserBindRoleReqVo();
         userBindRoleReqVo.setUserId(userId);
         userBindRoleReqVo.setRoleIds(roleIds);
@@ -177,6 +168,7 @@ public class KwsUserService {
 
     /**
      * 更新记录
+     *
      * @param params KwsUser
      */
     public void update(KwsUser params) throws Exception {
@@ -215,35 +207,17 @@ public class KwsUserService {
     /**
      * 分页查询
      */
-    public List<KwsUser> findPage(Map<String, Object> params) throws Exception{
+    public List<KwsUser> findPage(Map<String, Object> params) throws Exception {
         return kwsUserDao.findPage(params);
     }
 
     /**
      * 查询
      */
-    public List<KwsUser> findList(KwsUser params) throws Exception{
+    public List<KwsUser> findList(KwsUser params) throws Exception {
         return kwsUserDao.findList(params);
     }
 
-    /**
-     * 参数校验
-     */
-    public void paramsCheck(KwsUser kwsUser) {
-        //用户账号必填校验
-        if (StringUtils.isBlank(kwsUser.getAccount())) {
-            throw new SystemException(HttpStatus.PARAMETERS_MISSING_CODE, HttpStatus.ACCOUNT_MISSING);
-        }
-
-        //用户账号唯一性校验
-        List<KwsUser> users = kwsUserDao.findList(kwsUser);
-        if (CollectionUtils.isNotEmpty(users)) {
-            throw new SystemException(HttpStatus.PARAMETERS_MISSING_CODE, HttpStatus.ACCOUNT_EXISTS);
-        }
-
-    }
-
-
     /**
      * 根据用户名查用户信息
      */
@@ -279,7 +253,7 @@ public class KwsUserService {
 
     private void updatePwd(String newPassword, KwsUser kwsUser) throws SystemException {
         kwsUser.setPassword(PasswordUtils.entryptPassword(newPassword));
-        if(kwsUserDao.update(kwsUser) <= 0) {
+        if (kwsUserDao.update(kwsUser) <= 0) {
             throw new SystemException(HttpStatus.CRUD_FAIL_CODE, HttpStatus.UPDATE_FAIL);
         }
     }
@@ -329,16 +303,17 @@ public class KwsUserService {
 
     /**
      * 校验密码
-     * @param password 入参传的密码
+     *
+     * @param password   入参传的密码
      * @param currentPwd 当前用户的密码
      */
-    public void checkPassword(String password, String currentPwd) throws SystemException{
+    public void checkPassword(String password, String currentPwd) throws SystemException {
         if (!PasswordUtils.validatePassword(password, currentPwd)) {
             throw new SystemException(HttpStatus.CODE_10301, HttpStatus.PASSWD_ERROR);
         }
     }
 
-    public List<KwsUserDept> queryUserDeptByUserId (Long userId) {
+    public List<KwsUserDept> queryUserDeptByUserId(Long userId) {
         return kwsUserDao.queryUserDeptByUserId(userId);
     }
 
@@ -347,14 +322,26 @@ public class KwsUserService {
     }
 
     /**
-     * @param reqVo 校验账号有效性入参
-     * @desc: 校验账号有效性,存在抛异常用户账号已存在
+     * @param account 账号 systemType系统类型
+     * @desc: 校验账号有效性, 存在抛异常用户账号已存在
      * @author: czh
      * @date: 2023/6/16
      */
-    public void checkAccountValid(CheckAccountValidReqVo reqVo) {
-        if (!Objects.isNull(getUserByAccount(reqVo.getAccount(), reqVo.getSystemType()))) {
+    public void checkAccountValid(String account, Integer systemType) {
+        if (!Objects.isNull(getUserByAccount(account, systemType))) {
             throw new SystemException(HttpStatus.PARAMETERS_MISSING_CODE, HttpStatus.ACCOUNT_EXISTS);
         }
     }
+
+    /**
+     * @param entId 企业id
+     * @return KwsUser
+     * @desc: 根据企业id查用户
+     * @author: czh
+     * @date: 2023/6/26
+     */
+    public List<KwsUser> selectByEntId(Long entId) {
+        return kwsUserDao.selectByEntId(entId);
+    }
+
 }

+ 10 - 10
sckw-modules/sckw-system/src/main/resources/mapper/KwsAuthorityDao.xml

@@ -117,16 +117,16 @@
         values
     <foreach collection="list" item="item" separator=",">
       <trim prefix="(" suffix=")" suffixOverrides=",">
-        #{item.id,jdbcType=BIGINT},
-        #{item.roleId,jdbcType=BIGINT},
-        #{item.deptId,jdbcType=VARCHAR},
-        #{item.remark,jdbcType=VARCHAR},
-        #{item.status,jdbcType=INTEGER},
-        #{item.createBy,jdbcType=BIGINT},
-        #{item.createTime,jdbcType=TIMESTAMP},
-        #{item.updateBy,jdbcType=BIGINT},
-        #{item.updateTime,jdbcType=TIMESTAMP},
-        #{item.delFlag,jdbcType=INTEGER}
+          #{item.id,jdbcType=BIGINT},
+          #{item.roleId,jdbcType=BIGINT},
+          #{item.deptId,jdbcType=VARCHAR},
+          #{item.remark,jdbcType=VARCHAR},
+          #{item.status,jdbcType=INTEGER},
+          #{item.createBy,jdbcType=BIGINT},
+          #{item.createTime,jdbcType=TIMESTAMP},
+          #{item.updateBy,jdbcType=BIGINT},
+          #{item.updateTime,jdbcType=TIMESTAMP},
+          #{item.delFlag,jdbcType=INTEGER}
       </trim>
     </foreach>
   </insert>

+ 20 - 0
sckw-modules/sckw-system/src/main/resources/mapper/KwsDeptDao.xml

@@ -208,4 +208,24 @@
     </if>
     ORDER BY level, sort
   </select>
+  <select id="selectByKeys" resultType="com.sckw.system.model.KwsDept">
+    select
+    <include refid="Base_Column_List" />
+    from kws_dept
+    where del_flag = 0
+      and id in
+    <foreach collection="list" item="item" open="(" close=")" separator=",">
+      #{item}
+    </foreach>
+  </select>
+  <select id="selectByEntIdList" resultType="com.sckw.system.model.KwsDept">
+    select
+    <include refid="Base_Column_List" />
+    from kws_dept
+    where del_flag = 0
+    and ent_id in
+    <foreach collection="list" item="item" open="(" close=")" separator=",">
+      #{item}
+    </foreach>
+  </select>
 </mapper>

+ 13 - 13
sckw-modules/sckw-system/src/main/resources/mapper/KwsEntCertificateDao.xml

@@ -121,19 +121,19 @@
     <insert id="saveBatch">
       insert into kws_ent_certificate
       <trim prefix="(" suffix=")" suffixOverrides=",">
-          id,
-          ent_id,
-          type,
-          code,
-          certificate_mian,
-          certificate_revolt,
-          remark,
-          status,
-          create_by,
-          create_time,
-          update_by,
-          update_time,
-          del_flag
+            id,
+            ent_id,
+            type,
+            code,
+            certificate_mian,
+            certificate_revolt,
+            remark,
+            status,
+            create_by,
+            create_time,
+            update_by,
+            update_time,
+            del_flag,
       </trim>
       values
         <foreach collection="list" item="item" separator=",">

+ 3 - 0
sckw-modules/sckw-system/src/main/resources/mapper/KwsEntCheckTrackDao.xml

@@ -109,5 +109,8 @@
     </set>
     where id = #{id,jdbcType=BIGINT}
   </update>
+    <select id="findList" resultType="com.sckw.system.model.KwsEntCheckTrack">
+      select * from kws_ent_check_track where ent_id = #{entId} order by create_time
+    </select>
 
 </mapper>

+ 4 - 0
sckw-modules/sckw-system/src/main/resources/mapper/KwsEnterpriseDao.xml

@@ -95,6 +95,7 @@
         <foreach collection="list" item="item" open="(" close=")" separator=",">
           #{item}
         </foreach>
+      and del_flag = 0
 
   </select>
 
@@ -370,5 +371,8 @@
     </set>
     where id = #{id,jdbcType=BIGINT}
   </update>
+  <update id="approval">
+    update kws_enterprise set approval = #{approval} where id = #{id,jdbcType=BIGINT} and approval = 3 and del_flag = 0
+  </update>
 
 </mapper>

+ 14 - 0
sckw-modules/sckw-system/src/main/resources/mapper/KwsMenuDao.xml

@@ -287,4 +287,18 @@
     </if>
     ORDER BY sm.level, sm.sort
   </select>
+
+  <select id="selectByKeys" resultType="com.sckw.system.model.KwsMenu">
+    select
+    <include refid="Base_Column_List" />
+    from kws_menu sm
+    where del_flag = 0
+      and id in
+    <foreach collection="list" item="item" open="(" close=")" separator=",">
+      #{item}
+    </foreach>
+  </select>
+  <select id="selectAll" resultType="com.sckw.system.model.KwsMenu">
+    select * from kws_menu where del_flag = 0
+  </select>
 </mapper>

+ 20 - 0
sckw-modules/sckw-system/src/main/resources/mapper/KwsMenuRightsDao.xml

@@ -26,6 +26,26 @@
     from kws_menu_rights
     where id = #{id,jdbcType=BIGINT}
   </select>
+    <select id="selectByRoleIds" resultType="com.sckw.system.model.KwsMenuRights">
+      select
+      <include refid="Base_Column_List" />
+      from kws_menu_rights
+      where del_flag = 0
+        and role_id in
+      <foreach collection="list" separator="," open="(" close=")" item="item">
+        #{item}
+      </foreach>
+    </select>
+  <select id="selectByMenuIds" resultType="com.sckw.system.model.KwsMenuRights">
+    select
+    <include refid="Base_Column_List" />
+    from kws_menu_rights
+    where del_flag = 0
+    and menu_id in
+    <foreach collection="list" separator="," open="(" close=")" item="item">
+      #{item}
+    </foreach>
+  </select>
 
   <insert id="insert" parameterType="com.sckw.system.model.KwsMenuRights">
     insert into kws_menu_rights

+ 12 - 0
sckw-modules/sckw-system/src/main/resources/mapper/KwsRoleDao.xml

@@ -157,5 +157,17 @@
         <foreach collection="list" item="item" open="(" close=")" separator=",">
           #{item}
         </foreach>
+    and a.del_flag = 0
   </select>
+
+    <select id="selectBatchByDeptIds" resultType="com.sckw.system.model.KwsRole">
+      select a.*
+        from kws_role a
+       where a.dept_id in
+      <foreach collection="list" item="item" open="(" close=")" separator=",">
+        #{item}
+      </foreach>
+      and a.del_flag = 0
+    </select>
+
 </mapper>

+ 10 - 0
sckw-modules/sckw-system/src/main/resources/mapper/KwsUserDao.xml

@@ -272,5 +272,15 @@
         #{item}
      </foreach>
   </select>
+  <select id="selectByEntId" resultType="com.sckw.system.model.KwsUser">
+    select distinct c.*
+      from kws_dept a
+      left join kws_user_dept b on a.id = b.dept_id
+      left join kws_user c on b.user_id = c.id
+     where a.ent_id = #{entId}
+       and a.del_flag = 0
+       and b.del_flag = 0
+       and c.del_flag = 0
+  </select>
 
 </mapper>

+ 8 - 0
sckw-modules/sckw-system/src/main/resources/mapper/KwsUserDeptDao.xml

@@ -26,6 +26,14 @@
     where id = #{id,jdbcType=BIGINT}
   </select>
 
+  <select id="findAllByUserId" resultType="com.sckw.system.model.KwsUserDept">
+    select
+    <include refid="Base_Column_List" />
+     from kws_user_dept
+    where user_id = #{userId,jdbcType=BIGINT}
+      and del_flag = 0
+  </select>
+
   <insert id="insert" parameterType="com.sckw.system.model.KwsUserDept">
     insert into kws_user_dept
     <trim prefix="(" suffix=")" suffixOverrides=",">

+ 67 - 23
sckw-modules/sckw-system/src/main/resources/mapper/KwsUserLoginDao.xml

@@ -4,23 +4,23 @@
     <insert id="saveBatch" parameterType="com.sckw.system.model.KwsUserLogin">
       insert into kws_user_login
       <trim prefix="(" suffix=")" suffixOverrides=",">
-        id,
-        pid,
-        ip,
-        user_agent,
-        user_id,
-        token,
-        valid_time,
-        first,
-        lock,
-        type,
-        out_time,
-        source,
-        create_by,
-        create_time,
-        update_by,
-        update_time,
-        del_flag
+        `id`,
+        `pid`,
+        `ip`,
+        `user_agent`,
+        `user_id`,
+        `token`,
+        `valid_time`,
+        `first`,
+        `lock`,
+        `type`,
+        `out_time`,
+        `source`,
+        `create_by`,
+        `create_time`,
+        `update_by`,
+        `update_time`,
+        `del_flag`
       </trim>
       values
       <foreach collection="list" item="item" separator=",">
@@ -29,7 +29,7 @@
           #{item.pid, jdbcType=VARCHAR},
           #{item.ip, jdbcType=VARCHAR},
           #{item.userAgent, jdbcType=VARCHAR},
-          #{item.user_id, jdbcType=BIGINT},
+          #{item.userId, jdbcType=BIGINT},
           #{item.token, jdbcType=VARCHAR},
           #{item.validTime, jdbcType=VARCHAR},
           #{item.first, jdbcType=INTEGER},
@@ -46,6 +46,50 @@
       </foreach>
   </insert>
 
+  <insert id="insert">
+    insert into kws_user_login
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      `id`,
+      `pid`,
+      `ip`,
+      `user_agent`,
+      `user_id`,
+      `token`,
+      `valid_time`,
+      `first`,
+      `lock`,
+      `type`,
+      `out_time`,
+      `source`,
+      `create_by`,
+      `create_time`,
+      `update_by`,
+      `update_time`,
+      `del_flag`
+    </trim>
+        values
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      #{id, jdbcType=BIGINT},
+      #{pid, jdbcType=VARCHAR},
+      #{ip, jdbcType=VARCHAR},
+      #{userAgent, jdbcType=VARCHAR},
+      #{userId, jdbcType=BIGINT},
+      #{token, jdbcType=VARCHAR},
+      #{validTime, jdbcType=VARCHAR},
+      #{first, jdbcType=INTEGER},
+      #{lock, jdbcType=INTEGER},
+      #{type, jdbcType=INTEGER},
+      #{outTime, jdbcType=TIMESTAMP},
+      #{source, jdbcType=VARCHAR},
+      #{createBy, jdbcType=BIGINT},
+      #{createTime, jdbcType=TIMESTAMP},
+      #{updateBy, jdbcType=BIGINT},
+      #{updateTime, jdbcType=TIMESTAMP},
+      #{delFlag, jdbcType=INTEGER}
+    </trim>
+
+  </insert>
+
 
   <select id="findAllByUserId" resultType="com.sckw.system.model.KwsUserLogin">
     select *
@@ -61,11 +105,11 @@
   </select>
 
   <select id="currentDayLogin" resultType="com.sckw.system.model.KwsUserLogin">
-    select *
-      from kws_user_login
-     where user_id = #{userId}
-       and create_time >= current_date()
-     order by create_time
+    select a.*
+      from kws_user_login a
+     where a.user_id = #{userId}
+       and a.create_time >= current_date()
+     order by a.create_time
      limit 1
   </select>
 </mapper>

+ 14 - 2
sckw-modules/sckw-system/src/main/resources/mapper/KwsUserRoleDao.xml

@@ -27,7 +27,20 @@
   </select>
 
   <select id="findAllByUserId" resultType="com.sckw.system.model.KwsUserRole">
-    select * from kws_user_role where user_id = #{userId}
+    select * from kws_user_role where user_id = #{userId} and del_flag = 0 and status = 0
+  </select>
+  <select id="findAllByRoleId" resultType="com.sckw.system.model.KwsUserRole">
+    select * from kws_user_role where role_id = #{roleId} and del_flag = 0 and status = 0
+  </select>
+  <select id="findAllByRoleIds" resultType="com.sckw.system.model.KwsUserRole">
+    select *
+      from kws_user_role
+     where del_flag = 0
+       and status = 0
+       and role_id in
+        <foreach collection="list" separator="," open="(" close=")" item="item">
+          #{item}
+        </foreach>
   </select>
 
   <insert id="insert" parameterType="com.sckw.system.model.KwsUserRole">
@@ -162,5 +175,4 @@
     </set>
     where id = #{id,jdbcType=BIGINT}
   </update>
-
 </mapper>