From e33cc6968e5c7c57013413b077421b77714ed69b Mon Sep 17 00:00:00 2001
From: liyj <1003249715@qq.com>
Date: Tue, 20 Aug 2024 14:48:17 +0800
Subject: [PATCH] 1、修改代码生成器 2、优化网关解析token信息 3、web端登录授权操作 4、web端修改密码操作

---
 dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/dto/CtCipherDTO.java                       |   26 +
 dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtAccountService.java              |  174 +++++++++++
 dyh-service/dyh-base/src/main/java/cn/huge/module/cust/constant/UserBaseConsts.java                 |   14 
 dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/controller/web/CtAccountWebController.java |  182 ++---------
 dyh-service/dyh-cust/src/main/java/cn/huge/module/ctrole/service/CtRoledataService.java             |    2 
 dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/dto/CtUserAddrDTO.java                     |   66 ++++
 dyh-service/dyh-cust/src/main/java/cn/huge/module/ctrole/service/CtRolefunService.java              |    2 
 dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/domain/po/CtUser.java                      |    2 
 dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtDeptService.java                 |    2 
 dyh-service/dyh-base/src/main/java/cn/huge/base/common/utils/DateUtils.java                         |    2 
 dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/dto/UserLoginDTO.java                      |   66 ++++
 dyh-service/dyh-utils/src/main/java/cn/huge/module/common/utils/JudicNoUtils.java                   |    2 
 dyh-service/dyh-cust/src/main/java/cn/huge/module/pauser/service/PaAccountService.java              |    2 
 dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/dto/CtAccountLoginDTO.java                 |   36 ++
 dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUseroleService.java              |   21 +
 dyh-service/dyh-cust/src/main/java/cn/huge/module/redis/constant/RedisKeyConsts.java                |   42 ++
 dyh-service/dyh-utils/src/main/java/cn/huge/module/common/utils/CaseNoUtils.java                    |    2 
 dyh-gateway/src/main/java/cn/huge/gateway/filter/AuthFilter.java                                    |   50 +-
 dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/controller/web/CtUserWebController.java    |   83 ----
 dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUserService.java                 |   88 +++++
 dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUsepostService.java              |    2 
 dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtPostService.java                 |    2 
 dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUnitService.java                 |    2 
 dyh-service/dyh-base/src/main/resources/template/service.ftl                                        |    2 
 dyh-service/dyh-cust/src/main/java/cn/huge/module/pauser/service/PaUserService.java                 |    2 
 dyh-service/dyh-cust/src/main/java/cn/huge/module/ctrole/service/CRoleService.java                  |    2 
 26 files changed, 594 insertions(+), 282 deletions(-)

diff --git a/dyh-gateway/src/main/java/cn/huge/gateway/filter/AuthFilter.java b/dyh-gateway/src/main/java/cn/huge/gateway/filter/AuthFilter.java
index c1481a9..d93e0cd 100644
--- a/dyh-gateway/src/main/java/cn/huge/gateway/filter/AuthFilter.java
+++ b/dyh-gateway/src/main/java/cn/huge/gateway/filter/AuthFilter.java
@@ -1,5 +1,6 @@
 package cn.huge.gateway.filter;
 
+import cn.huge.gateway.utils.ReturnBO;
 import cn.huge.gateway.utils.SpringContextUtil;
 import com.auth0.jwt.JWT;
 import com.auth0.jwt.JWTVerifier;
@@ -87,6 +88,7 @@
             if (status) {
                 return chain.filter(exchange);
             } else {
+                ReturnBO returnBO = new ReturnBO();
                 //从请求头中取出token
                 String token = exchange.getRequest().getHeaders().getFirst("Authorization");
                 //未携带token或token在黑名单内
@@ -94,34 +96,26 @@
                     ServerHttpResponse originalResponse = exchange.getResponse();
                     originalResponse.setStatusCode(HttpStatus.OK);
                     originalResponse.getHeaders().add("Content-Type", "application/json;charset=UTF-8");
-                    byte[] response = "{\"code\": \"401\",\"msg\": \"用户未登录,请进行登录!\"}"
-                            .getBytes(StandardCharsets.UTF_8);
+                    returnBO.setCode(401);
+                    returnBO.setMsg("您尚未登录,请登录后重试!");
+                    byte[] response = returnBO.toString().getBytes(StandardCharsets.UTF_8);
                     DataBuffer buffer = originalResponse.bufferFactory().wrap(response);
                     return originalResponse.writeWith(Flux.just(buffer));
                 } else {
                     //取出token包含的身份
-                    Map<String, Object> result = verifyJWT(token);
-                    int code = (int) result.get("code");
-                    if (code != 0) {
+                    returnBO = verifyJWT(token);
+                    if (returnBO.getCode() != 0) {
                         ServerHttpResponse originalResponse = exchange.getResponse();
                         originalResponse.setStatusCode(HttpStatus.OK);
                         originalResponse.getHeaders().add("Content-Type", "application/json;charset=UTF-8");
-                        String responseResult = "{\"code\": \"" + code + "\", \"msg\": \"" + result.get("msg") + "\"}";
-                        byte[] response = responseResult.getBytes(StandardCharsets.UTF_8);
+                        byte[] response = returnBO.toString().getBytes(StandardCharsets.UTF_8);
                         DataBuffer buffer = originalResponse.bufferFactory().wrap(response);
                         return originalResponse.writeWith(Flux.just(buffer));
                     } else {
                         //将现在的request,添加当前身份
-                        String userId = (String) result.get("userId");
+                        String userId = (String) returnBO.getData();
                         ServerHttpRequest mutableReq = null;
-                        String custId = (String) result.get("custId");
-                        if (StringUtils.isNotEmpty(custId)) {
-                            URI uri = exchange.getRequest().getURI();
-                            URI newUri = assembleUri(uri, custId);
-                            exchange.getRequest().mutate().uri(newUri).header("Authorization-userId", userId).header("Authorization-custId", custId).build();
-                        } else {
-                            exchange.getRequest().mutate().header("Authorization-userId", userId).build();
-                        }
+                        exchange.getRequest().mutate().header("Authorization-userId", userId).build();
                         ServerWebExchange mutableExchange = exchange.mutate().request(mutableReq).build();
                         return chain.filter(mutableExchange);
                     }
@@ -135,8 +129,8 @@
      * @param token 授权信息
      * @return Map
      */
-    private Map<String, Object> verifyJWT(String token){
-        Map<String, Object> result = new HashMap<>();
+    private ReturnBO verifyJWT(String token){
+        ReturnBO returnBO = new ReturnBO();
         try {
             Algorithm algorithm = Algorithm.HMAC256(secretKey);
             JWTVerifier verifier = JWT.require(algorithm)
@@ -145,25 +139,23 @@
             DecodedJWT jwt = verifier.verify(token);
             String userId = jwt.getClaim("userId").asString();
             if (userId.isEmpty()){
-                result.put("code", 401);
-                result.put("msg", "登录用户已失效,请重新登录");
+                returnBO.setCode(401);
+                returnBO.setMsg("您尚未登录,请登录后重试!");
             }else{
-                result.put("code", 0);
-                result.put("userId", userId);
-                String custId = jwt.getClaim("custId").asString();
-                result.put("custId", custId);
+                returnBO.setCode(0);
+                returnBO.setData(userId);
             }
         } catch (JWTVerificationException e){
             log.error("AuthFilter方法[verifyJWT]调用异常:"+e, e);
             if (e.getMessage().indexOf("The Token has expired") != -1){
-                result.put("code", 401);
-                result.put("msg", "登录用户已失效,请重新登录!");
+                returnBO.setCode(401);
+                returnBO.setMsg("您尚未登录,请登录后重试!");
             }else{
-                result.put("code", 401);
-                result.put("msg", "登录用户已失效,请重新登录");
+                returnBO.setCode(401);
+                returnBO.setMsg("您尚未登录,请登录后重试!");
             }
         }
-        return result;
+        return returnBO;
     }
 
     /**
diff --git a/dyh-service/dyh-base/src/main/java/cn/huge/base/common/utils/DateUtils.java b/dyh-service/dyh-base/src/main/java/cn/huge/base/common/utils/DateUtils.java
index 6bd3cb5..f9fa79c 100644
--- a/dyh-service/dyh-base/src/main/java/cn/huge/base/common/utils/DateUtils.java
+++ b/dyh-service/dyh-base/src/main/java/cn/huge/base/common/utils/DateUtils.java
@@ -174,7 +174,7 @@
 	 * 获取当前时间
 	 * @return Date
 	 */
-	public static Date getMowDate(){
+	public static Date getNowDate(){
 		return new Date();
 	}
 
diff --git a/dyh-service/dyh-base/src/main/java/cn/huge/module/cust/constant/UserBaseConsts.java b/dyh-service/dyh-base/src/main/java/cn/huge/module/cust/constant/UserBaseConsts.java
index 99ba2a8..dd3b7ee 100644
--- a/dyh-service/dyh-base/src/main/java/cn/huge/module/cust/constant/UserBaseConsts.java
+++ b/dyh-service/dyh-base/src/main/java/cn/huge/module/cust/constant/UserBaseConsts.java
@@ -16,6 +16,13 @@
     public static final String MR_CIPHER = "byzfw2023!";
 
     /**
+     * 用户状态,1:在职/有效(默认),2:停用,3:离职
+     */
+    public static final String USER_STATUS_1 = "1";
+    public static final String USER_STATUS_2 = "2";
+    public static final String USER_STATUS_3 = "3";
+
+    /**
      * 部门类型,1:正常部门,2:特殊部门(调委会等)
      */
     public static final String DEPT_TYPE_1 = "1";
@@ -33,13 +40,6 @@
      */
     public static final String IS_ROLE_1 = "1";
     public static final String NO_ROLE_2 = "2";
-
-    /**
-     * 用户状态,1:在职/有效(默认),2:停用,99:离职
-     */
-    public static final String USER_STATUS_1 = "1";
-    public static final String USER_STATUS_2 = "2";
-    public static final String USER_STATUS_99 = "99";
 
     /**
      * 帐号类型,22_00027-1:pc帐号(默认),22_00027-2:微信小程序,22_00027-3:政数局统一平台
diff --git a/dyh-service/dyh-base/src/main/resources/template/service.ftl b/dyh-service/dyh-base/src/main/resources/template/service.ftl
index 00c1cb0..7dcc9b3 100644
--- a/dyh-service/dyh-base/src/main/resources/template/service.ftl
+++ b/dyh-service/dyh-base/src/main/resources/template/service.ftl
@@ -116,7 +116,7 @@
     */
     public void save${className}(${className} ${lowerName}){
         try{
-            Date nowDate = DateUtils.getMowDate();
+            Date nowDate = DateUtils.getNowDate();
             // 判断是否新增
             if (IdUtils.checkNewId(${lowerName}.getId())){
                 ${lowerName}.setId(utilsClient.getNewTimeId());
diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctrole/service/CRoleService.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctrole/service/CRoleService.java
index 1b803dc..96bf19a 100644
--- a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctrole/service/CRoleService.java
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctrole/service/CRoleService.java
@@ -116,7 +116,7 @@
     */
     public void saveCRole(CRole cRole){
         try{
-            Date nowDate = DateUtils.getMowDate();
+            Date nowDate = DateUtils.getNowDate();
             // 判断是否新增
             if (IdUtils.checkNewId(cRole.getId())){
                 cRole.setId(utilsClient.getNewTimeId());
diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctrole/service/CtRoledataService.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctrole/service/CtRoledataService.java
index 745c030..c4b48bd 100644
--- a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctrole/service/CtRoledataService.java
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctrole/service/CtRoledataService.java
@@ -116,7 +116,7 @@
     */
     public void saveCtRoledata(CtRoledata ctRoledata){
         try{
-            Date nowDate = DateUtils.getMowDate();
+            Date nowDate = DateUtils.getNowDate();
             // 判断是否新增
             if (IdUtils.checkNewId(ctRoledata.getId())){
                 ctRoledata.setId(utilsClient.getNewTimeId());
diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctrole/service/CtRolefunService.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctrole/service/CtRolefunService.java
index 1445e02..ab91fd3 100644
--- a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctrole/service/CtRolefunService.java
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctrole/service/CtRolefunService.java
@@ -116,7 +116,7 @@
     */
     public void saveCtRolefun(CtRolefun ctRolefun){
         try{
-            Date nowDate = DateUtils.getMowDate();
+            Date nowDate = DateUtils.getNowDate();
             // 判断是否新增
             if (IdUtils.checkNewId(ctRolefun.getId())){
                 ctRolefun.setId(utilsClient.getNewTimeId());
diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/controller/web/CtAccountWebController.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/controller/web/CtAccountWebController.java
index 4afac91..372283b 100644
--- a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/controller/web/CtAccountWebController.java
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/controller/web/CtAccountWebController.java
@@ -1,9 +1,15 @@
 package cn.huge.module.ctuser.controller;
 
+import cn.huge.base.common.bo.ReturnBO;
 import cn.huge.base.common.utils.ReturnFailUtils;
 import cn.huge.base.common.utils.ReturnSucUtils;
+import cn.huge.base.config.CurrentUser;
+import cn.huge.module.constant.BaseConsts;
 import cn.huge.module.ctuser.domain.po.CtAccount;
+import cn.huge.module.ctuser.dto.CtAccountLoginDTO;
+import cn.huge.module.ctuser.dto.CtCipherDTO;
 import cn.huge.module.ctuser.service.CtAccountService;
+import cn.huge.module.utils.JwtUtils;
 import com.google.common.collect.Maps;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -38,160 +44,52 @@
     private CtAccountService service;
 
     /**
-    * 获取请求URL参数
-    * @return Map<String, Object>
-    */
-    private Map<String, Object> getParameter(){
-        Map<String, Object> terms = Maps.newHashMap();
-        // 账号编号
-        String id = request.getParameter("id");
-        if (StringUtils.isNotBlank(id)){
-            terms.put("id", id);
+     * web端-工作人员-用户登录
+     * @url {ctx}/api/web/ctAccount/login
+     * @param ctAccountLoginDTO 登录对象
+     * @return Object
+     */
+    @PostMapping(value = "login")
+    public Object login(@RequestBody CtAccountLoginDTO ctAccountLoginDTO) {
+        try {
+            ReturnBO returnBO = service.webLogin(ctAccountLoginDTO);
+            return returnBO;
+        } catch (Exception e) {
+            return ReturnFailUtils.getRepInfo(e.getMessage());
         }
-        // 用户编号
-        String userId = request.getParameter("userId");
-        if (StringUtils.isNotBlank(userId)){
-            terms.put("userId", userId);
-        }
-        // 帐号类型,1:平台web端,2:平台小程序
-        String accType = request.getParameter("accType");
-        if (StringUtils.isNotBlank(accType)){
-            terms.put("accType", accType);
-        }
-        // 身份唯一标识(存储唯一标识,比如账号、邮箱、手机号、第三方获取的唯一标识等)
-        String acc = request.getParameter("acc");
-        if (StringUtils.isNotBlank(acc)){
-            terms.put("acc", acc);
-        }
-        // 授权凭证(比如密码 第三方登录的token等)
-        String cipher = request.getParameter("cipher");
-        if (StringUtils.isNotBlank(cipher)){
-            terms.put("cipher", cipher);
-        }
-        // 授权凭证明文
-        String cipherOpen = request.getParameter("cipherOpen");
-        if (StringUtils.isNotBlank(cipherOpen)){
-            terms.put("cipherOpen", cipherOpen);
-        }
-        // 密码最新更新时间
-        String cipherTime = request.getParameter("cipherTime");
-        if (StringUtils.isNotBlank(cipherTime)){
-            terms.put("cipherTime", cipherTime);
-        }
-        // 最新登录时间
-        String loginTime = request.getParameter("loginTime");
-        if (StringUtils.isNotBlank(loginTime)){
-            terms.put("loginTime", loginTime);
-        }
-        // 限制登录时间(密码错误次数超过限制,默认30分钟)
-        String limitTime = request.getParameter("limitTime");
-        if (StringUtils.isNotBlank(limitTime)){
-            terms.put("limitTime", limitTime);
-        }
-        // 删除状态,0:已删除,1:未删除
-        String deleteStatus = request.getParameter("deleteStatus");
-        if (StringUtils.isNotBlank(deleteStatus)){
-            terms.put("deleteStatus", deleteStatus);
-        }
-        // 顾客编号
-        String custId = request.getParameter("custId");
-        if (StringUtils.isNotBlank(custId)){
-            terms.put("custId", custId);
-        }
-        // 创建时间区间
-        String createStart = request.getParameter("createStart");
-        String createEnd = request.getParameter("createEnd");
-        if(StringUtils.isNotBlank(createStart) && StringUtils.isNotBlank(createEnd)) {
-            terms.put("createStart", createStart);
-            terms.put("createEnd", createEnd);
-        }
-        // 更新时间区间
-        String updateStart = request.getParameter("updateStart");
-        String updateEnd = request.getParameter("updateEnd");
-        if(StringUtils.isNotBlank(updateStart) && StringUtils.isNotBlank(updateEnd)) {
-            terms.put("updateStart", updateStart);
-            terms.put("updateEnd", updateEnd);
-        }
-        return terms;
     }
 
     /**
-    * 条件查询多个
-    * @url {ctx}/api/web/ctAccount/listQuery
-    * @return Object
-    */
-    @GetMapping("/listQuery")
-    public Object listQuery() {
+     * web端-工作人员-用户选择/切换角色
+     * @url {ctx}/api/web/ctAccount/switchRole
+     * @return Object
+     */
+    @GetMapping(value = "switchRole")
+    public Object switchRole(@RequestParam(value = "roleCode") String roleCode, @CurrentUser String userId) {
         try {
-            Map<String, Object> terms = getParameter();
-            return ReturnSucUtils.getRepInfo(service.listTerms(terms));
+            StringBuffer result = new StringBuffer();
+            if (userId.indexOf(BaseConsts.AND) != -1){
+                String[] userIds = userId.split(BaseConsts.AND);
+                result.append(userIds[0]).append(BaseConsts.AND).append(roleCode);
+            }else {
+                result.append(userId).append(BaseConsts.AND).append(roleCode);
+            }
+            return ReturnSucUtils.getRepInfo(JwtUtils.buildJWT(result.toString()));
         } catch (Exception e) {
             return ReturnFailUtils.getRepInfo();
         }
     }
 
     /**
-    * 条件分页查询
-    * @url {ctx}/api/web/ctAccount/pageQuery
-    * @param page 页码
-    * @param size 每页数量
-    * @return Object
-    */
-    @GetMapping("/pageQuery")
-    public Object pageQuery(@RequestParam(value = "page") int page, @RequestParam(value = "size") int size) {
+     * web端-工作人员-修改密码
+     * @url {ctx}/api/v1/ctAccount/changeCipher
+     * @param ctCipherDTO 修改密码对象
+     * @return Object
+     */
+    @PostMapping(value = "changeCipher")
+    public Object changeCipher(@CurrentUser String userId, @RequestBody CtCipherDTO ctCipherDTO) {
         try {
-            Map<String, Object> terms = getParameter();
-            Sort sort = Sort.by(Sort.Direction.DESC, "create_time");
-            PageRequest pageRequest = PageRequest.of(page-1, size, sort);
-            Page<CtAccount> ctAccountPage = service.pageQuery(pageRequest, terms);
-            return ReturnSucUtils.getRepInfo( "处理成功", ctAccountPage);
-        } catch (Exception e) {
-            return ReturnFailUtils.getRepInfo();
-        }
-    }
-
-    /**
-    * 根据编号查询单个
-    * @url {ctx}/api/web/ctAccount/getById
-    * @param id 主键编号
-    * @return Object
-    */
-    @GetMapping("/getById")
-    public Object getById(@RequestParam(value = "id") String id) {
-        try {
-            return ReturnSucUtils.getRepInfo(service.getById(id));
-        } catch (Exception e) {
-            return ReturnFailUtils.getRepInfo();
-        }
-    }
-
-    /**
-    * 根据主键单个
-    * @url {ctx}/api/web/ctAccount/deleteById
-    * @param id 主键编号
-    * @return Object
-    */
-    @GetMapping("/deleteById")
-    public Object deleteById(@RequestParam(value = "id") String id) {
-        try {
-            service.removeById(id);
-            return ReturnSucUtils.getRepInfo();
-        } catch (Exception e) {
-            return ReturnFailUtils.getRepInfo();
-        }
-    }
-
-    /**
-    * 新增或更新对象
-    * @url {ctx}/api/web/ctAccount/saveCtAccount
-    * @param ctAccount 实体对象
-    * @return Object
-    */
-    @PostMapping("/saveCtAccount")
-    public Object saveCtAccount(@RequestBody CtAccount ctAccount) {
-        try {
-            service.saveCtAccount(ctAccount);
-            return ReturnSucUtils.getRepInfo();
+            return service.webChangeCipher(userId, ctCipherDTO);
         } catch (Exception e) {
             return ReturnFailUtils.getRepInfo();
         }
diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/controller/web/CtUserWebController.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/controller/web/CtUserWebController.java
index eceda98..dbfbcb0 100644
--- a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/controller/web/CtUserWebController.java
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/controller/web/CtUserWebController.java
@@ -2,6 +2,7 @@
 
 import cn.huge.base.common.utils.ReturnFailUtils;
 import cn.huge.base.common.utils.ReturnSucUtils;
+import cn.huge.base.config.CurrentUser;
 import cn.huge.module.ctuser.domain.po.CtUser;
 import cn.huge.module.ctuser.service.CtUserService;
 import com.google.common.collect.Maps;
@@ -241,81 +242,17 @@
     }
 
     /**
-    * 条件查询多个
-    * @url {ctx}/api/web/ctUser/listQuery
-    * @return Object
-    */
-    @GetMapping("/listQuery")
-    public Object listQuery() {
-        try {
-            Map<String, Object> terms = getParameter();
-            return ReturnSucUtils.getRepInfo(service.listTerms(terms));
-        } catch (Exception e) {
-            return ReturnFailUtils.getRepInfo();
-        }
-    }
-
-    /**
-    * 条件分页查询
-    * @url {ctx}/api/web/ctUser/pageQuery
-    * @param page 页码
-    * @param size 每页数量
-    * @return Object
-    */
-    @GetMapping("/pageQuery")
-    public Object pageQuery(@RequestParam(value = "page") int page, @RequestParam(value = "size") int size) {
-        try {
-            Map<String, Object> terms = getParameter();
-            Sort sort = Sort.by(Sort.Direction.DESC, "create_time");
-            PageRequest pageRequest = PageRequest.of(page-1, size, sort);
-            Page<CtUser> ctUserPage = service.pageQuery(pageRequest, terms);
-            return ReturnSucUtils.getRepInfo( "处理成功", ctUserPage);
-        } catch (Exception e) {
-            return ReturnFailUtils.getRepInfo();
-        }
-    }
-
-    /**
-    * 根据编号查询单个
-    * @url {ctx}/api/web/ctUser/getById
-    * @param id 主键编号
-    * @return Object
-    */
-    @GetMapping("/getById")
-    public Object getById(@RequestParam(value = "id") String id) {
-        try {
-            return ReturnSucUtils.getRepInfo(service.getById(id));
-        } catch (Exception e) {
-            return ReturnFailUtils.getRepInfo();
-        }
-    }
-
-    /**
-    * 根据主键单个
-    * @url {ctx}/api/web/ctUser/deleteById
-    * @param id 主键编号
-    * @return Object
-    */
-    @GetMapping("/deleteById")
-    public Object deleteById(@RequestParam(value = "id") String id) {
-        try {
-            service.removeById(id);
-            return ReturnSucUtils.getRepInfo();
-        } catch (Exception e) {
-            return ReturnFailUtils.getRepInfo();
-        }
-    }
-
-    /**
-    * 新增或更新对象
-    * @url {ctx}/api/web/ctUser/saveCtUser
-    * @param ctUser 实体对象
-    * @return Object
-    */
+     * web端-人员信息管理-新增/新用户信息
+     * @url {ctx}/api/v1/ctUser/saveCtUser
+     * @param userId
+     * @return Object
+     * @throws Exception
+     */
     @PostMapping("/saveCtUser")
-    public Object saveCtUser(@RequestBody CtUser ctUser) {
+    public Object saveCtUser(@RequestBody CtUser ctUser, @CurrentUser String userId) {
         try {
-            service.saveCtUser(ctUser);
+            // 保存更新用户信息
+            service.webSaveCtUser(ctUser, userId);
             return ReturnSucUtils.getRepInfo();
         } catch (Exception e) {
             return ReturnFailUtils.getRepInfo();
diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/domain/po/CtUser.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/domain/po/CtUser.java
index dde2324..18335e7 100644
--- a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/domain/po/CtUser.java
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/domain/po/CtUser.java
@@ -183,7 +183,7 @@
     private Integer realStatus;
 
     /**
-    * 用户状态,1:有效(默认),2:停用,99:离职
+    * 用户状态,1:有效(默认),2:停用,3:离职
     */
     @TableField(value = "status")
     private Integer status;
diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/dto/CtAccountLoginDTO.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/dto/CtAccountLoginDTO.java
new file mode 100644
index 0000000..3608f04
--- /dev/null
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/dto/CtAccountLoginDTO.java
@@ -0,0 +1,36 @@
+package cn.huge.module.ctuser.dto;
+
+import lombok.Data;
+
+/**
+ * @title: 客户用户账号登录数据传输类
+ * @description: 客户用户账号登录数据传输类
+ * @company:hugeinfo
+ * @author: chenx
+ * @time: 2022-02-22 15:24:51
+ * @version 1.0.0
+ */
+@Data
+public class CtAccountLoginDTO {
+
+    /**
+    * 身份唯一标识(存储唯一标识,比如账号、邮箱、手机号、第三方获取的唯一标识等)
+    */
+    private String acc;
+
+    /**
+    * 授权凭证(比如密码 第三方登录的token等)
+    */
+    private String cipher;
+
+    /**
+    * 顾客编号
+    */
+    private String custId;
+
+    /**
+    * 验证码
+    */
+    private String loginCode;
+
+}
diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/dto/CtCipherDTO.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/dto/CtCipherDTO.java
new file mode 100644
index 0000000..bfc6801
--- /dev/null
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/dto/CtCipherDTO.java
@@ -0,0 +1,26 @@
+package cn.huge.module.ctuser.dto;
+
+import lombok.Data;
+
+/**
+ * @title: 客户用户修改密码数据传输类
+ * @description: 客户用户修改密码数据传输类
+ * @company:hugeinfo
+ * @author: chenx
+ * @time: 2022-02-22 15:24:51
+ * @version 1.0.0
+ */
+@Data
+public class CtCipherDTO {
+
+    /**
+    * 旧密码
+    */
+    private String oldCipher;
+
+    /**
+    * 新密码
+    */
+    private String newCipher;
+
+}
diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/dto/CtUserAddrDTO.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/dto/CtUserAddrDTO.java
new file mode 100644
index 0000000..5a2df7d
--- /dev/null
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/dto/CtUserAddrDTO.java
@@ -0,0 +1,66 @@
+package cn.huge.module.ctuser.dto;
+
+import lombok.Data;
+
+/**
+ * @title: 登录用户地址数据传输类
+ * @description: 登录用户地址数据传输类
+ * @company:hugeinfo
+ * @author: chenx
+ * @time: 2022-02-22 15:24:51
+ * @version 1.0.0
+ */
+@Data
+public class CtUserAddrDTO {
+
+    /**
+     * 现居地省
+     */
+    private String prov;
+
+    /**
+     * 现居地省名称
+     */
+    private String provName;
+
+    /**
+     * 现居地市
+     */
+    private String city;
+
+    /**
+     * 现居地市名称
+     */
+    private String cityName;
+
+    /**
+     * 现居地区
+     */
+    private String area;
+
+    /**
+     * 现居地区名称
+     */
+    private String areaName;
+
+    /**
+     * 现居地街道
+     */
+    private String road;
+
+    /**
+     * 现居地街道名称
+     */
+    private String roadName;
+
+    /**
+     * 现居地社区
+     */
+    private String village;
+
+    /**
+     * 现居地社区名称
+     */
+    private String villageName;
+
+}
diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/dto/UserLoginDTO.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/dto/UserLoginDTO.java
new file mode 100644
index 0000000..37a2a8e
--- /dev/null
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/dto/UserLoginDTO.java
@@ -0,0 +1,66 @@
+package cn.huge.module.ctuser.dto;
+
+import cn.huge.module.ctuser.domain.po.CtUserole;
+import cn.huge.module.user.domain.po.CtUser;
+import cn.huge.module.user.domain.po.CtUserole;
+import lombok.Data;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @title: 登录后返回前端用户实体类
+ * @description: 登录后返回前端用户实体类
+ * @company: hugeinfo
+ * @author: liyj
+ * @time: 2022-02-22 15:24:51
+ * @version: 1.0.0
+ */
+@Data
+public class UserLoginDTO {
+
+    /**
+     * JWT token
+     */
+    private String token;
+
+    /**
+     * 用户编号
+     */
+    private String userId;
+
+    /**
+     * 用户名称
+     */
+    private String trueName;
+
+    /**
+     * 用户单位
+     */
+    private String unit;
+
+    /**
+     * 用户部门
+     */
+    private String dept;
+
+    /**
+     * 客户编号
+     */
+    private String custId;
+
+    /**
+     * 上一次登录时间
+     */
+    private Date lastLoginTime;
+
+    /**
+     * 人员角色信息
+     */
+    private List<CtUserole> ctUseroleList;
+
+    /**
+     * 人员地址信息
+     */
+    private CtUserAddrDTO ctUserAddrDTO;
+}
diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtAccountService.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtAccountService.java
index 33acd57..86a6a72 100644
--- a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtAccountService.java
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtAccountService.java
@@ -1,12 +1,23 @@
 package cn.huge.module.ctuser.service;
 
+import cn.huge.base.common.bo.ReturnBO;
 import cn.huge.base.common.exception.ServiceException;
-import cn.huge.base.common.utils.DateUtils;
-import cn.huge.base.common.utils.IdUtils;
+import cn.huge.base.common.utils.*;
 import cn.huge.module.client.api.impl.UtilsClientImpl;
 import cn.huge.module.ctuser.dao.mapper.CtAccountMapper;
 import cn.huge.module.ctuser.domain.po.CtAccount;
+import cn.huge.module.ctuser.domain.po.CtUser;
+import cn.huge.module.ctuser.domain.po.CtUserole;
+import cn.huge.module.ctuser.dto.CtAccountLoginDTO;
+import cn.huge.module.ctuser.dto.CtCipherDTO;
+import cn.huge.module.ctuser.dto.CtUserAddrDTO;
+import cn.huge.module.ctuser.dto.UserLoginDTO;
+import cn.huge.module.cust.constant.UserBaseConsts;
+import cn.huge.module.utils.JwtUtils;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import lombok.extern.slf4j.Slf4j;
@@ -15,8 +26,10 @@
 import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.DigestUtils;
 
 import javax.annotation.PostConstruct;
+import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
@@ -39,6 +52,10 @@
 
     @Autowired
     private UtilsClientImpl utilsClient;
+    @Autowired
+    private CtUserService ctUserService;
+    @Autowired
+    private CtUseroleService ctUseroleService;
 
     /**
     * 更新对象
@@ -116,7 +133,7 @@
     */
     public void saveCtAccount(CtAccount ctAccount){
         try{
-            Date nowDate = DateUtils.getMowDate();
+            Date nowDate = DateUtils.getNowDate();
             // 判断是否新增
             if (IdUtils.checkNewId(ctAccount.getId())){
                 ctAccount.setId(utilsClient.getNewTimeId());
@@ -130,4 +147,155 @@
         }
     }
 
+    /**
+     * 根据账号和类型查询
+     * @param acc 账号
+     * @param accType 账号类型
+     * @return
+     */
+    public CtAccount getByAccAndType(String acc, String accType){
+        QueryWrapper<CtAccount> accountWrapper = new QueryWrapper<>();
+        accountWrapper.eq("acc", acc)
+                .eq("acc_type", accType);
+        CtAccount ctAccount = this.getOne(accountWrapper);
+        return ctAccount;
+    }
+
+    /**
+     * 判断密码是否正确
+     * @param cipher 密码
+     * @param ctAccount 账号信息
+     * @return Boolean
+     */
+    public Boolean checkCredential(String cipher, CtAccount ctAccount){
+        String credentialMd5 = DigestUtils.md5DigestAsHex(cipher.getBytes());
+        if (StringUtils.equals(credentialMd5, ctAccount.getCipher())) {
+            return true;
+        }else {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
+            String createTime = sdf.format(ctAccount.getCreateTime());
+            String credentialTime = sdf.format(ctAccount.getCreateTime());
+            //是否修改过密码,未修改过可以用默认密码登录
+            if (createTime.equals(credentialTime)) {
+                if (cipher.equals(UserBaseConsts.MR_CIPHER)) {
+                    return true;
+                }else{
+                    return false;
+                }
+            }else{
+                return false;
+            }
+        }
+    }
+
+    /**
+     * web端-工作人员用户登录
+     * @param ctAccountLoginDTO 登录账号信息
+     * @return UserLoginDTO
+     */
+    public ReturnBO webLogin(CtAccountLoginDTO ctAccountLoginDTO) {
+        try{
+            // 判断账号密码是否为空
+            if (StringUtils.isBlank(ctAccountLoginDTO.getAcc()) || StringUtils.isBlank(ctAccountLoginDTO.getCipher())) {
+                return ReturnSucUtils.getRepInfo("账号或密码不能为空", null);
+            }
+            // 判断账号是否存在
+            CtAccount ctAccount = this.getByAccAndType(ctAccountLoginDTO.getAcc(), UserBaseConsts.ACC_TYPE_1);
+            if (ObjectUtils.isNotEmpty(ctAccount)){
+                // 判断账号是否被锁定
+                if (ObjectUtils.isNotEmpty(ctAccount.getLimitTime())) {
+                    Date nowDate = new Date();
+                    if (nowDate.before(ctAccount.getLimitTime())) {
+                        SimpleDateFormat sdf = new SimpleDateFormat("HH点mm分");
+                        return ReturnFailUtils.getRepInfo("账号已锁定,请于" + sdf.format(ctAccount.getLimitTime()) + "后重试,或者请联系管理员解锁!");
+                    }
+                }
+                // 判断密码是否正确
+                if (checkCredential(ctAccountLoginDTO.getCipher(), ctAccount)) {
+                    //返回结果
+                    UserLoginDTO userLoginDTO = new UserLoginDTO();
+                    CtUser ctUser = ctUserService.getByIdFromRedis(ctAccount.getUserId());
+                    if (ObjectUtils.isEmpty(ctUser)){
+                        return ReturnFailUtils.getRepInfo("账号或密码错误,请确认后重试!");
+                    }
+                    if (UserBaseConsts.USER_STATUS_2.equals(ctUser.getStatus()) || UserBaseConsts.USER_STATUS_3.equals(ctUser.getStatus())){
+                        return ReturnFailUtils.getRepInfo("账号或密码错误,请确认后重试!");
+                    }
+                    // 封装用户信息
+                    userLoginDTO.setToken(JwtUtils.buildJWT(ctUser.getId()));
+                    userLoginDTO.setUserId(ctUser.getId());
+                    userLoginDTO.setTrueName(ctUser.getTrueName());
+                    userLoginDTO.setUnit(ctUser.getUnitName());
+                    userLoginDTO.setDept(ctUser.getDeptName());
+                    userLoginDTO.setCustId(ctUser.getCustId());
+                    // 登录用户角色
+                    List<CtUserole> ctUseroleList = ctUseroleService.listByUserId(ctUser.getId());
+                    userLoginDTO.setCtUseroleList(ctUseroleList);
+                    // 登录用户地址信息
+                    CtUserAddrDTO ctUserAddrDTO = new CtUserAddrDTO();
+                    ctUserAddrDTO.setProv(ctUser.getProv());
+                    ctUserAddrDTO.setProvName(ctUser.getProvName());
+                    ctUserAddrDTO.setCity(ctUser.getCity());
+                    ctUserAddrDTO.setCityName(ctUser.getCityName());
+                    ctUserAddrDTO.setArea(ctUser.getArea());
+                    ctUserAddrDTO.setAreaName(ctUser.getAreaName());
+                    ctUserAddrDTO.setRoad(ctUser.getRoad());
+                    ctUserAddrDTO.setRoadName(ctUser.getRoadName());
+                    ctUserAddrDTO.setVillage(ctUser.getVillage());
+                    ctUserAddrDTO.setVillageName(ctUser.getVillageName());
+                    userLoginDTO.setCtUserAddrDTO(ctUserAddrDTO);
+                    // 最后登录时间
+                    Date loginTime = ctAccount.getLoginTime();
+                    if (ObjectUtils.isEmpty(ctAccount.getLoginTime())){
+                        loginTime = DateUtils.getNowDate();
+                    }
+                    userLoginDTO.setLastLoginTime(loginTime);
+                    // 更新最新登录时间
+                    UpdateWrapper<CtAccount> accountUpdateWrapper = new UpdateWrapper<>();
+                    accountUpdateWrapper.set("login_time", loginTime).eq("id", ctAccount.getId());
+                    this.update(accountUpdateWrapper);
+                    return ReturnSucUtils.getRepInfo(userLoginDTO);
+                } else {
+                    return ReturnFailUtils.getRepInfo("账号或密码错误,请确认后重试!");
+                }
+            }else{
+                return ReturnFailUtils.getRepInfo("账号或密码错误,请确认后重试!");
+            }
+        }catch (Exception e){
+            log.error("service方法[AccountService.webLogin]调用失败,异常信息:"+e, e);
+            throw new ServiceException("CtAccountService.webLogin", e);
+        }
+    }
+
+    /**
+     * web端-工作人员-修改密码
+     * @param userId 用户编号
+     * @param ctCipherDTO 修改密码信息
+     * @return
+     */
+    public ReturnBO webChangeCipher(String userId, CtCipherDTO ctCipherDTO){
+        try{
+            CtAccount ctAccount = this.getByAccAndType(userId, UserBaseConsts.ACC_TYPE_1);
+            if (ObjectUtils.isEmpty(ctAccount)){
+                return ReturnFailUtils.getRepInfo("输入账号或密码不正确,请确认后重试!");
+            }
+            String oldCredentialMd5 = DigestUtils.md5DigestAsHex(ctCipherDTO.getOldCipher().getBytes());
+            if (!StringUtils.equals(oldCredentialMd5, ctAccount.getCipher())) {
+                return ReturnFailUtils.getRepInfo("输入账号或密码不正确,请确认后重试!");
+            }
+            String newCredentialMd5 = DigestUtils.md5DigestAsHex(ctCipherDTO.getNewCipher().getBytes());
+            if (StringUtils.equals(newCredentialMd5, ctAccount.getCipher())) {
+                return ReturnFailUtils.getRepInfo("新密码不能和旧密码相同!");
+            }
+            UpdateWrapper<CtAccount> accountUpdateWrapper = new UpdateWrapper<>();
+            accountUpdateWrapper.set("cipher", newCredentialMd5).set("cipher_open", ctCipherDTO.getNewCipher())
+                    .set("update_time", DateUtils.getNowDate()).eq("id", ctAccount.getId());
+            this.update(accountUpdateWrapper);
+            return ReturnSucUtils.getRepInfo();
+        }catch (Exception e){
+            log.error("service方法[AccountService.webChangeCipher]调用失败,异常信息:"+e, e);
+            throw new ServiceException("CtAccountService.webChangeCipher", e);
+        }
+    }
+
 }
diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtDeptService.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtDeptService.java
index 4ebcf35..a563ef1 100644
--- a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtDeptService.java
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtDeptService.java
@@ -116,7 +116,7 @@
     */
     public void saveCtDept(CtDept ctDept){
         try{
-            Date nowDate = DateUtils.getMowDate();
+            Date nowDate = DateUtils.getNowDate();
             // 判断是否新增
             if (IdUtils.checkNewId(ctDept.getId())){
                 ctDept.setId(utilsClient.getNewTimeId());
diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtPostService.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtPostService.java
index 6724868..54c5e72 100644
--- a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtPostService.java
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtPostService.java
@@ -116,7 +116,7 @@
     */
     public void saveCtPost(CtPost ctPost){
         try{
-            Date nowDate = DateUtils.getMowDate();
+            Date nowDate = DateUtils.getNowDate();
             // 判断是否新增
             if (IdUtils.checkNewId(ctPost.getId())){
                 ctPost.setId(utilsClient.getNewTimeId());
diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUnitService.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUnitService.java
index 16e00d5..e4e4193 100644
--- a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUnitService.java
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUnitService.java
@@ -116,7 +116,7 @@
     */
     public void saveCtUnit(CtUnit ctUnit){
         try{
-            Date nowDate = DateUtils.getMowDate();
+            Date nowDate = DateUtils.getNowDate();
             // 判断是否新增
             if (IdUtils.checkNewId(ctUnit.getId())){
                 ctUnit.setId(utilsClient.getNewTimeId());
diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUsepostService.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUsepostService.java
index f43c4da..0df3122 100644
--- a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUsepostService.java
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUsepostService.java
@@ -116,7 +116,7 @@
     */
     public void saveCtUsepost(CtUsepost ctUsepost){
         try{
-            Date nowDate = DateUtils.getMowDate();
+            Date nowDate = DateUtils.getNowDate();
             // 判断是否新增
             if (IdUtils.checkNewId(ctUsepost.getId())){
                 ctUsepost.setId(utilsClient.getNewTimeId());
diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUserService.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUserService.java
index ad899a4..89b9369 100644
--- a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUserService.java
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUserService.java
@@ -1,13 +1,22 @@
 package cn.huge.module.ctuser.service;
 
+import cn.huge.base.common.exception.MethodException;
 import cn.huge.base.common.exception.ServiceException;
 import cn.huge.base.common.utils.DateUtils;
 import cn.huge.base.common.utils.IdUtils;
+import cn.huge.base.common.utils.ObjectUtils;
 import cn.huge.module.client.api.impl.UtilsClientImpl;
+import cn.huge.module.constant.BaseConsts;
 import cn.huge.module.ctuser.dao.mapper.CtUserMapper;
 import cn.huge.module.ctuser.domain.po.CtUser;
+import cn.huge.module.cust.constant.UserBaseConsts;
+import cn.huge.module.redis.constant.RedisKeyConsts;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -15,6 +24,7 @@
 import org.springframework.data.domain.PageImpl;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.DigestUtils;
 
 import javax.annotation.PostConstruct;
 import java.util.Date;
@@ -33,6 +43,9 @@
 @Service
 @Transactional(rollbackFor = Exception.class)
 public class CtUserService extends ServiceImpl<CtUserMapper, CtUser>{
+
+    @Autowired
+    private RedisTemplate<String, Object> redisTemplate;
 
     @Autowired
     private CtUserMapper mapper;
@@ -111,23 +124,74 @@
     }
 
     /**
-    * 新增或更新对象
-    * @param ctUser 实体对象
-    */
-    public void saveCtUser(CtUser ctUser){
+     * 新增对象
+     * @param ctUser 实体对象
+     */
+    public void saveToRedis(CtUser ctUser){
         try{
-            Date nowDate = DateUtils.getMowDate();
-            // 判断是否新增
-            if (IdUtils.checkNewId(ctUser.getId())){
-                ctUser.setId(utilsClient.getNewTimeId());
-                ctUser.setCreateTime(nowDate);
-            }
-            ctUser.setUpdateTime(nowDate);
-            this.saveOrUpdate(ctUser);
+            mapper.insert(ctUser);
+            // 清楚redis缓存
+            String key = RedisKeyConsts.CTUSER + ctUser.getId();
+            redisTemplate.delete(key);
+            // 重新set
+            redisTemplate.opsForValue().set(key, ctUser);
         }catch (Exception e){
             log.error("[CtUserService.saveCtUser]调用失败,异常信息:"+e, e);
             throw new ServiceException("CtUserService.saveCtUser", e);
         }
     }
 
+    /**
+     * 更新对象
+     * @param ctUser 实体对象
+     */
+    public void updateToRedis(CtUser ctUser){
+        try{
+            mapper.updateById(ctUser);
+            // 清楚redis缓存
+            String key = RedisKeyConsts.CTUSER + ctUser.getId();
+            redisTemplate.delete(key);
+            // 重新set
+            redisTemplate.opsForValue().set(key, ctUser);
+        }catch (Exception e){
+            log.error("[CtUserService.saveCtUser]调用失败,异常信息:"+e, e);
+            throw new ServiceException("CtUserService.saveCtUser", e);
+        }
+    }
+
+    /**
+     * 根据id查询
+     * @param id 编号
+     * @return
+     */
+    public CtUser getByIdFromRedis(String id){
+        String key = RedisKeyConsts.CTUSER + id;
+        // 从redis获取
+        CtUser ctUser = (CtUser) redisTemplate.opsForValue().get(key);
+        if (ObjectUtils.isEmpty(ctUser)){
+            ctUser = mapper.selectById(id);
+            if (ObjectUtils.isNotEmpty(ctUser)){
+                redisTemplate.opsForValue().set(key, ctUser);
+            }
+        }
+        return ctUser;
+    }
+
+    /**
+     * web端-人员信息管理-新增/新用户信息
+     * @param ctUser
+     * @param userId
+     */
+    public void webSaveCtUser(CtUser ctUser, String userId) {
+        try {
+            // 获取当前登录用户
+            CtUser loginUser = this.getByIdFromRedis(userId);
+            Date nowDate = DateUtils.getNowDate();
+
+        } catch (Exception e) {
+            log.error("service方法[CtUserService.webSaveCtUser]调用异常:" + e, e);
+            throw new MethodException(e.getMessage());
+        }
+    }
+
 }
diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUseroleService.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUseroleService.java
index a801d7e..db88b89 100644
--- a/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUseroleService.java
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/ctuser/service/CtUseroleService.java
@@ -6,8 +6,10 @@
 import cn.huge.module.client.api.impl.UtilsClientImpl;
 import cn.huge.module.ctuser.dao.mapper.CtUseroleMapper;
 import cn.huge.module.ctuser.domain.po.CtUserole;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -33,6 +35,9 @@
 @Service
 @Transactional(rollbackFor = Exception.class)
 public class CtUseroleService extends ServiceImpl<CtUseroleMapper, CtUserole>{
+
+    @Autowired
+    private RedisTemplate<String, Object> redisTemplate;
 
     @Autowired
     private CtUseroleMapper mapper;
@@ -116,7 +121,7 @@
     */
     public void saveCtUserole(CtUserole ctUserole){
         try{
-            Date nowDate = DateUtils.getMowDate();
+            Date nowDate = DateUtils.getNowDate();
             // 判断是否新增
             if (IdUtils.checkNewId(ctUserole.getId())){
                 ctUserole.setId(utilsClient.getNewTimeId());
@@ -130,4 +135,16 @@
         }
     }
 
-}
+    /**
+     * 根据userId查询
+     * @param userId 用户编号
+     * @return
+     */
+    public List<CtUserole> listByUserId(String userId){
+        QueryWrapper<CtUserole> ctUseroleQueryWrapper = new QueryWrapper<>();
+        ctUseroleQueryWrapper.eq("user_id", userId);
+        List<CtUserole> ctUseroleList = mapper.selectList(ctUseroleQueryWrapper);
+        return ctUseroleList;
+    }
+
+}
\ No newline at end of file
diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/pauser/service/PaAccountService.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/pauser/service/PaAccountService.java
index 0713b9b..20a6a8a 100644
--- a/dyh-service/dyh-cust/src/main/java/cn/huge/module/pauser/service/PaAccountService.java
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/pauser/service/PaAccountService.java
@@ -116,7 +116,7 @@
     */
     public void savePaAccount(PaAccount paAccount){
         try{
-            Date nowDate = DateUtils.getMowDate();
+            Date nowDate = DateUtils.getNowDate();
             // 判断是否新增
             if (IdUtils.checkNewId(paAccount.getId())){
                 paAccount.setId(utilsClient.getNewTimeId());
diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/pauser/service/PaUserService.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/pauser/service/PaUserService.java
index 303f7b4..fc692a4 100644
--- a/dyh-service/dyh-cust/src/main/java/cn/huge/module/pauser/service/PaUserService.java
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/pauser/service/PaUserService.java
@@ -116,7 +116,7 @@
     */
     public void savePaUser(PaUser paUser){
         try{
-            Date nowDate = DateUtils.getMowDate();
+            Date nowDate = DateUtils.getNowDate();
             // 判断是否新增
             if (IdUtils.checkNewId(paUser.getId())){
                 paUser.setId(utilsClient.getNewTimeId());
diff --git a/dyh-service/dyh-cust/src/main/java/cn/huge/module/redis/constant/RedisKeyConsts.java b/dyh-service/dyh-cust/src/main/java/cn/huge/module/redis/constant/RedisKeyConsts.java
new file mode 100644
index 0000000..95f6ea7
--- /dev/null
+++ b/dyh-service/dyh-cust/src/main/java/cn/huge/module/redis/constant/RedisKeyConsts.java
@@ -0,0 +1,42 @@
+package cn.huge.module.redis.constant;
+
+/**
+ * @title: redis缓存key标识
+ * @description: redis缓存key标识
+ * @company: hugeinfo
+ * @author: liyj
+ * @time: 2021-11-05 16:51:48
+ * @version: 1.0.0
+ */
+public class RedisKeyConsts {
+
+    /**
+     * ctUser标识
+     */
+    public static final String CTUSER = "ctuser";
+
+
+    
+}
+/**
+ * -------------------_ooOoo_-------------------
+ * ------------------o8888888o------------------
+ * ------------------88" . "88------------------
+ * ------------------(| -_- |)------------------
+ * ------------------O\  =  /O------------------
+ * ---------------____/`---'\____---------------
+ * -------------.'  \\|     |//  `.-------------
+ * ------------/  \\|||  :  |||//  \------------
+ * -----------/  _||||| -:- |||||-  \-----------
+ * -----------|   | \\\  -  /// |   |-----------
+ * -----------| \_|  ''\---/''  |   |-----------
+ * -----------\  .-\__  `-`  ___/-. /-----------
+ * ---------___`. .'  /--.--\  `. . __----------
+ * ------."" '<  `.___\_<|>_/___.'  >'"".-------
+ * -----| | :  `- \`.;`\ _ /`;.`/ - ` : | |-----
+ * -----\  \ `-.   \_ __\ /__ _/   .-` /  /-----
+ * ======`-.____`-.___\_____/___.-`____.-'======
+ * -------------------`=---='
+ * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ * ---------佛祖保佑---hugeinfo---永无BUG----------
+ */
diff --git a/dyh-service/dyh-utils/src/main/java/cn/huge/module/common/utils/CaseNoUtils.java b/dyh-service/dyh-utils/src/main/java/cn/huge/module/common/utils/CaseNoUtils.java
index e5f048e..fa542c2 100644
--- a/dyh-service/dyh-utils/src/main/java/cn/huge/module/common/utils/CaseNoUtils.java
+++ b/dyh-service/dyh-utils/src/main/java/cn/huge/module/common/utils/CaseNoUtils.java
@@ -28,7 +28,7 @@
      */
     public synchronized static String getCaseNo(){
         CASE_NO_SIGN += 1;
-        int year = DateUtils.getYear(DateUtils.getMowDate());
+        int year = DateUtils.getYear(DateUtils.getNowDate());
         String cloudMediateId = "(" + year + ")粤云调" + (CASE_NO_SIGN) + "号";
         System.out.println(cloudMediateId);
         return cloudMediateId;
diff --git a/dyh-service/dyh-utils/src/main/java/cn/huge/module/common/utils/JudicNoUtils.java b/dyh-service/dyh-utils/src/main/java/cn/huge/module/common/utils/JudicNoUtils.java
index d48f7f4..5577ae4 100644
--- a/dyh-service/dyh-utils/src/main/java/cn/huge/module/common/utils/JudicNoUtils.java
+++ b/dyh-service/dyh-utils/src/main/java/cn/huge/module/common/utils/JudicNoUtils.java
@@ -28,7 +28,7 @@
      */
     public synchronized static String getJudicNo(){
         JUDIC_NO_SIGN += 1;
-        int year = DateUtils.getYear(DateUtils.getMowDate());
+        int year = DateUtils.getYear(DateUtils.getNowDate());
         String cloudMediateId = "(" + year + ")司法确认" + (JUDIC_NO_SIGN) + "号";
         System.out.println(cloudMediateId);
         return cloudMediateId;

--
Gitblit v1.8.0