From 19321e1348baefa2a9f5211c42f8b797c0fcccd1 Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期一, 27 十月 2025 18:11:56 +0800
Subject: [PATCH] 登录验证

---
 server/system_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java                  |   45 ++++++-
 server/system_service/src/main/java/com/doumee/core/utils/Constants.java                               |    2 
 server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java                            |   34 +++++
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/common/PublicCloudController.java           |    1 
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java |    5 
 server/system_service/src/main/java/com/doumee/dao/system/model/SystemUser.java                        |    5 
 server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/WebPublicController.java                |    2 
 server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java                         |    5 
 server/system_service/src/main/java/com/doumee/api/cloud/SystemUserCloudController.java                |   10 +
 server/system_service/src/main/java/com/doumee/biz/system/SystemUserBiz.java                           |    3 
 server/system_service/src/main/java/com/doumee/core/utils/PasswordGenerator.java                       |   85 ++++++++++++++
 server/visits/dmvisit_admin/src/main/java/com/doumee/api/common/PublicController.java                  |    1 
 server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java         |   73 +++++++----
 server/visits/admin_timer/src/main/java/com/doumee/api/SystemUserJobController.java                    |   37 ++++++
 server/system_service/src/main/resources/mappers/SystemUserMapper.xml                                  |    2 
 server/system_service/src/main/java/com/doumee/service/system/impl/SystemUserServiceImpl.java          |   19 +++
 server/system_service/src/main/java/com/doumee/service/system/SystemUserService.java                   |    3 
 17 files changed, 290 insertions(+), 42 deletions(-)

diff --git a/server/system_service/src/main/java/com/doumee/api/cloud/SystemUserCloudController.java b/server/system_service/src/main/java/com/doumee/api/cloud/SystemUserCloudController.java
index 1e7c84e..69a315c 100644
--- a/server/system_service/src/main/java/com/doumee/api/cloud/SystemUserCloudController.java
+++ b/server/system_service/src/main/java/com/doumee/api/cloud/SystemUserCloudController.java
@@ -96,6 +96,16 @@
     }
 
     @Trace(withRequestParameters = false)
+    @ApiOperation("淇敼鏄惁绂佺敤鐧诲綍")
+    @PostMapping("/updUserProhibitStatus")
+    @CloudRequiredPermission("system:user:update")
+    public ApiResponse updUserProhibitStatus(@RequestHeader(Constants.HEADER_USER_TOKEN) String token, @RequestBody SystemUser systemUser) {
+        systemUserBiz.updUserProhibitStatus(systemUser,this.getLoginUser(token));
+        return ApiResponse.success(null);
+    }
+
+
+    @Trace(withRequestParameters = false)
     @ApiOperation("淇敼")
     @PostMapping("/updateById")
     @CloudRequiredPermission("system:user:update")
diff --git a/server/system_service/src/main/java/com/doumee/biz/system/SystemUserBiz.java b/server/system_service/src/main/java/com/doumee/biz/system/SystemUserBiz.java
index 1dc800c..4d72525 100644
--- a/server/system_service/src/main/java/com/doumee/biz/system/SystemUserBiz.java
+++ b/server/system_service/src/main/java/com/doumee/biz/system/SystemUserBiz.java
@@ -4,6 +4,8 @@
 import com.doumee.dao.system.dto.CreateUserRoleDTO;
 import com.doumee.dao.system.dto.ResetSystemUserPwdDTO;
 import com.doumee.dao.system.dto.UpdatePwdDto;
+import com.doumee.dao.system.model.SystemUser;
+import com.doumee.service.business.third.model.LoginUserInfo;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
@@ -57,6 +59,7 @@
      */
     void updateById(CreateSystemUserDTO systemUser);
 
+    void updUserProhibitStatus(SystemUser user, LoginUserInfo loginUserInfo);
     /**
      * 鍒涘缓鐢ㄦ埛瑙掕壊
      * @author Eva.Caesar Liu
diff --git a/server/system_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java b/server/system_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java
index 24784ff..c3298bb 100644
--- a/server/system_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java
+++ b/server/system_service/src/main/java/com/doumee/biz/system/impl/SystemUserBizImpl.java
@@ -9,10 +9,8 @@
 import com.doumee.core.annotation.excel.ExcelImporter;
 import com.doumee.core.exception.BusinessException;
 import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.utils.*;
 import com.doumee.service.business.third.model.LoginUserInfo;
-import com.doumee.core.utils.Constants;
-import com.doumee.core.utils.PwdCheckUtil;
-import com.doumee.core.utils.Utils;
 import com.doumee.dao.system.dto.*;
 import com.doumee.dao.system.dto.UpdatePwdDto;
 import com.doumee.dao.system.model.*;
@@ -31,6 +29,7 @@
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
@@ -92,11 +91,17 @@
     public void updatePwd(UpdatePwdDto dto) {
         //鐧诲綍瀵嗙爜澶嶆潅搴︽牎楠岋細6-20涓瓧绗︼紝鑷冲皯鍖呭惈瀛楁瘝銆佹暟瀛楀強鐗规畩瀛楃2绉�
         if(StringUtils.isBlank(dto.getNewPwd())
-                ||dto.getNewPwd().length()>20
-                ||dto.getNewPwd().length()<6
-                ||!PwdCheckUtil.checkPassword(dto.getNewPwd())){
-            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝瀵嗙爜澶嶆潅搴︿笉婊¤冻瑕佹眰锛�6-20涓瓧绗︼紝鑷冲皯鍖呭惈瀛楁瘝銆佹暟瀛楀強鐗规畩瀛楃2绉�");
+//                ||dto.getNewPwd().length()>20
+//                ||dto.getNewPwd().length()<8
+               // ||!PwdCheckUtil.checkPassword(dto.getNewPwd())
+         ){
+            //throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝瀵嗙爜澶嶆潅搴︿笉婊¤冻瑕佹眰锛�6-20涓瓧绗︼紝鑷冲皯鍖呭惈瀛楁瘝銆佹暟瀛楀強鐗规畩瀛楃2绉�");
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
         }
+
+        PasswordGenerator.getPasswordTypeCount(dto.getNewPwd());
+
+
         SystemUser user = systemUserService.findById(dto.getUserId());
         if (user.getDeleted()) {
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鐢ㄦ埛涓嶅瓨鍦ㄦ垨宸茶鍒犻櫎");
@@ -133,6 +138,7 @@
         if (systemUser == null || systemUser.getDeleted()) {
             throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "鐢ㄦ埛涓嶅瓨鍦ㄦ垨宸茶鍒犻櫎");
         }
+        PasswordGenerator.getPasswordTypeCount(dto.getPassword());
         // 淇敼瀵嗙爜
         SystemUser updateUserDto = new SystemUser();
         updateUserDto.setId(dto.getId());
@@ -173,11 +179,13 @@
                 throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "鎵嬫満鍙枫��"+systemUser.getMobile()+"銆戝凡瀛樺湪");
             }
         }
+        String password = PasswordGenerator.generatePassword();
         // 鐢熸垚瀵嗙爜鐩�
         String salt = RandomStringUtils.randomAlphabetic(6);
         // 鐢熸垚瀵嗙爜
-        systemUser.setPassword(Utils.Secure.encryptPassword(systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.INITIAL_PASSWORD).getCode(), salt));
+        systemUser.setPassword(Utils.Secure.encryptPassword(password, salt));
         systemUser.setSalt(salt);
+        systemUser.setFirstPassword(password);
         systemUser.setSource(Constants.ZERO);
         systemUser.setNeedChangePwd(Constants.ZERO);
 
@@ -282,6 +290,27 @@
         }*/
     }
 
+
+
+    @Override
+    public void updUserProhibitStatus(SystemUser user,LoginUserInfo loginUserInfo) {
+       if(Objects.isNull(user)
+           || Objects.isNull(user.getId())
+           || Objects.isNull(user.getProhibitStatus())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+       }
+       SystemUser updUser = new SystemUser();
+       updUser.setId(user.getId());
+       updUser.setProhibitStatus(user.getProhibitStatus());
+       updUser.setProhibitRemark(Constants.equalsInteger(user.getProhibitStatus(),Constants.ZERO)?
+               "浜�"+ DateUtil.getCurrDateTime()+"銆�"+loginUserInfo.getRealname()+"銆戞搷浣滄墜鍔ㄨВ闄ょ姝㈢櫥褰曪紒":
+               "浜�"+ DateUtil.getCurrDateTime()+"銆�"+loginUserInfo.getRealname()+"銆戞搷浣滄墜鍔ㄥ紑鍚姝㈢櫥褰曪紒");
+       systemUserService.updateById(updUser);
+    }
+
+
+
+
     @Override
     @Transactional(rollbackFor = {Exception.class,BusinessException.class})
     public void createUserRole(CreateUserRoleDTO dto) {
diff --git a/server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java b/server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
index 910d2f9..ec844c8 100644
--- a/server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
+++ b/server/system_service/src/main/java/com/doumee/config/jwt/JwtTokenUtil.java
@@ -1,8 +1,10 @@
 package com.doumee.config.jwt;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.dao.system.model.SystemDictData;
 import com.doumee.service.business.third.model.LoginUserInfo;
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.HttpsUtil;
@@ -24,9 +26,7 @@
 
 import javax.annotation.Resource;
 import java.io.IOException;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 
 @Component
@@ -214,6 +214,34 @@
                 .signWith(SignatureAlgorithm.HS512, jwtProperties.getSecret())
                 .compact();
         redisTemplate.opsForValue().set(Constants.REDIS_TOKEN_KEY+token,JSONObject.toJSONString(userInfo),jwtProperties.getExpiration(), TimeUnit.MILLISECONDS);
+
+        String userTokenJsonStr = (String) redisTemplate.opsForValue().get(Constants.REDIS_USER_KEY+userInfo.getId());
+        if(StringUtils.isEmpty(userTokenJsonStr)){
+            redisTemplate.opsForValue().set(Constants.REDIS_USER_KEY+userInfo.getId(),Constants.REDIS_TOKEN_KEY+token);
+        }else{
+            List<String> list  = Arrays.asList(userTokenJsonStr.split(","));
+            SystemDictData jointAccount = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.OPEN_JOINT_ACCOUNT);
+            //鍏抽棴鍏辩敤璐︽埛 闇�瑕佹竻绌哄叾浠杢oken淇℃伅
+            if(Objects.nonNull(jointAccount)&&Constants.equalsInteger(Integer.valueOf(jointAccount.getCode()),Constants.ONE)){
+                for (String s:list) {
+                    redisTemplate.delete(s);
+                }
+                redisTemplate.delete(Constants.REDIS_USER_KEY+userInfo.getId());
+                redisTemplate.opsForValue().set(Constants.REDIS_USER_KEY+userInfo.getId(),Constants.REDIS_TOKEN_KEY+token);
+            }else{
+                Boolean isHave = false;
+                for (String s:list) {
+                    if(s.equals(Constants.REDIS_TOKEN_KEY+token)){
+                        isHave = true;
+                        break;
+                    }
+                }
+                if(!isHave){
+                    redisTemplate.opsForValue().set(Constants.REDIS_USER_KEY+userInfo.getId(),userTokenJsonStr + "," + Constants.REDIS_TOKEN_KEY+token);
+                }
+            }
+        }
+
         return token;
     }
 
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
index 70b7b71..5f238ae 100644
--- a/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
+++ b/server/system_service/src/main/java/com/doumee/core/utils/Constants.java
@@ -20,6 +20,7 @@
 
 public class Constants {
     public static final String HEADER_USER_TOKEN = "dm_user_token";
+    public static final String REDIS_USER_KEY = "user_token_list_";
     public static final String REDIS_TOKEN_KEY = "token_";
     public static final String REDIS_HK_TOKEN_KEY = "hk_token_";
     public static final String HK_TOKEN_VALIDITY = "HK_TOKEN_VALIDITY";
@@ -550,6 +551,7 @@
     public static final String PROHIBIT_TIME = "PROHIBIT_TIME";
     public static final String ERR_TIMES = "ERR_TIMES";
     public static final String PROHIBIT_LOGIN_OPEN = "PROHIBIT_LOGIN_OPEN";
+    public static final String OPEN_JOINT_ACCOUNT = "OPEN_JOINT_ACCOUNT";
 
 
 
diff --git a/server/system_service/src/main/java/com/doumee/core/utils/PasswordGenerator.java b/server/system_service/src/main/java/com/doumee/core/utils/PasswordGenerator.java
new file mode 100644
index 0000000..484a040
--- /dev/null
+++ b/server/system_service/src/main/java/com/doumee/core/utils/PasswordGenerator.java
@@ -0,0 +1,85 @@
+package com.doumee.core.utils;
+
+import com.doumee.core.constants.ResponseStatus;
+import com.doumee.core.exception.BusinessException;
+
+import java.security.SecureRandom;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * Created by IntelliJ IDEA.
+ *
+ * @Author : Rk
+ * @create 2025/10/27 16:23
+ */
+public class PasswordGenerator {
+
+    private static final String LOWER = "abcdefghijklmnopqrstuvwxyz";
+    private static final String UPPER = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+    private static final String DIGITS = "0123456789";
+    private static final String SYMBOLS = "!@#$%^&*()_+-=[]{};':|,.<>/?";
+    private static final String PASSWORD_CHARS = LOWER + UPPER + DIGITS + SYMBOLS;
+    private static final int PASSWORD_LENGTH = 8; // 浣犲彲浠ユ牴鎹渶瑕佽皟鏁村瘑鐮侀暱搴�
+
+    public static void getPasswordTypeCount(String password){
+        Set<Integer> typeCount = new HashSet<>(4);
+        for (int i = 0; i < password.length(); i++) {
+            String key = password.substring(0,i);
+            if(LOWER.indexOf(key)>=Constants.ZERO){
+                typeCount.add(Constants.ZERO);
+            }else if(UPPER.indexOf(key)>=Constants.ZERO){
+                typeCount.add(Constants.ONE);
+            }else if(DIGITS.indexOf(key)>=Constants.ZERO){
+                typeCount.add(Constants.TWO);
+            }else if(SYMBOLS.indexOf(key)>=Constants.ZERO){
+                typeCount.add(Constants.THREE);
+            }else{
+                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璇蜂娇鐢ㄥ悎娉曠殑瀵嗙爜鍐呭");
+            }
+        }
+        if(typeCount.size()<Constants.THREE||password.length()<8){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵嗙爜鑷冲皯鍖呮嫭鏁板瓧銆佸ぇ鍐欏瓧姣嶃�佸皬鍐欏瓧姣嶃�佺壒娈婂瓧绗︿腑鐨勪笁绉嶅瓧绗︼紝涓旇嚦灏�8浣嶆暟");
+        }
+    }
+
+
+
+    public static String generatePassword() {
+        SecureRandom random = new SecureRandom();
+        StringBuilder password = new StringBuilder(PASSWORD_LENGTH);
+        Set<Character> usedChars = new HashSet<>();
+
+//        while (password.length() < PASSWORD_LENGTH) {
+//            int index = random.nextInt(PASSWORD_CHARS.length());
+//            char randomChar = PASSWORD_CHARS.charAt(index);
+//            // 纭繚姣忕绫诲瀷鐨勫瓧绗﹁嚦灏戝嚭鐜颁竴娆�
+//            if (usedChars.add(randomChar)) {
+//                password.append(randomChar);
+//            }
+//        }
+        // 濡傛灉闇�瑕佺‘淇濇瘡绉嶇被鍨嬮兘鑷冲皯鍑虹幇涓�娆★紝鍙互娉ㄩ噴鎺変笂闈㈢殑寰幆锛屼娇鐢ㄤ笅闈㈢殑浠g爜锛�
+        for (int i = 0; i < PASSWORD_LENGTH; i++) {
+            int type = random.nextInt(4); // 0=lower, 1=upper, 2=digit, 3=symbol
+            String charSet;
+            switch (type) {
+                case 0: charSet = LOWER; break;
+                case 1: charSet = UPPER; break;
+                case 2: charSet = DIGITS; break;
+                default: charSet = SYMBOLS; break;
+            }
+            int index = random.nextInt(charSet.length());
+            password.append(charSet.charAt(index));
+        }
+        // Shuffle the string to avoid predictable patterns (optional)
+        password.toString().chars()
+                .mapToObj(c -> (char) c)
+                .collect(StringBuilder::new, StringBuilder::append, StringBuilder::append)
+                .toString(); // This line is a no-op, but it's here to show the method call for completeness.
+        return password.toString();
+    }
+
+    public static void main(String[] args) {
+        System.out.println("Generated Password: " + generatePassword());
+    }
+}
diff --git a/server/system_service/src/main/java/com/doumee/dao/system/model/SystemUser.java b/server/system_service/src/main/java/com/doumee/dao/system/model/SystemUser.java
index e04a886..51f0423 100644
--- a/server/system_service/src/main/java/com/doumee/dao/system/model/SystemUser.java
+++ b/server/system_service/src/main/java/com/doumee/dao/system/model/SystemUser.java
@@ -120,6 +120,11 @@
     @ApiModelProperty(value = "瀵嗙爜閿欒娆℃暟", example = "1")
     private Integer errTimes;
 
+    @ApiModelProperty(value = "鍒濆鍖栧瘑鐮�", example = "1")
+    private String firstPassword;
+
+    @ApiModelProperty(value = "绂佹鎿嶄綔鏈�鍚庢棩蹇�", example = "1")
+    private String prohibitRemark;
 
     @ApiModelProperty(value = "0 鍚敤 1 绂佺敤")
     private Integer status;
diff --git a/server/system_service/src/main/java/com/doumee/service/system/SystemUserService.java b/server/system_service/src/main/java/com/doumee/service/system/SystemUserService.java
index 033e7f4..09b9df1 100644
--- a/server/system_service/src/main/java/com/doumee/service/system/SystemUserService.java
+++ b/server/system_service/src/main/java/com/doumee/service/system/SystemUserService.java
@@ -1,5 +1,6 @@
 package com.doumee.service.system;
 
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.doumee.service.business.third.model.PageData;
 import com.doumee.service.business.third.model.PageWrap;
 import com.doumee.dao.system.dto.QuerySystemUserDTO;
@@ -96,5 +97,7 @@
      */
     long count(SystemUser systemUser);
 
+    void jobForOpenProhibitStatus();
+
 
 }
diff --git a/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java b/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
index b47b93f..a3f727e 100644
--- a/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
+++ b/server/system_service/src/main/java/com/doumee/service/system/impl/SystemLoginServiceImpl.java
@@ -264,13 +264,14 @@
         if(!Constants.equalsInteger(user.getSource(),Constants.ZERO)){
             throw new BusinessException(ResponseStatus.NO_ALLOW_LOGIN);
         }
-        if(StringUtils.isNotBlank( pwd)){
-            String pppp = Utils.Secure.encryptPassword(new String(pwd), user.getSalt());
-            // 姣旇緝瀵嗙爜
-            if( !StringUtils.equals(pppp, user.getPassword())){
-                throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
-            }
-        }
+        this.checkPassword(user,pwd);
+//        if(StringUtils.isNotBlank( pwd)){
+//            String pppp = Utils.Secure.encryptPassword(new String(pwd), user.getSalt());
+//            // 姣旇緝瀵嗙爜
+//            if( !StringUtils.equals(pppp, user.getPassword())){
+//                throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
+//            }
+//        }
         if(StringUtils.isNotBlank(openid)){
             dealOpenIdBiz(user,openid);
         }
@@ -294,45 +295,59 @@
 
 
     public void checkPassword(SystemUser user,String pwd){
+        //楠岃瘉鏄惁宸茬姝㈢櫥褰�
+        this.prohibitLogin(user);
         String pppp = Utils.Secure.encryptPassword(new String(pwd), user.getSalt());
         // 姣旇緝瀵嗙爜
         if( !StringUtils.equals(pppp, user.getPassword())){
             //鏄惁寮�鍚瘑鐮侀敊璇姝㈢櫥褰曪細0=鍚︼紱1=鏄紱
             SystemDictData prohibitLoginData = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROHIBIT_LOGIN_OPEN);
+            //瀵嗙爜閿欒绂佹鐧诲綍闄愬埗鏃堕棿锛堝垎閽燂級
+            SystemDictData prohibitTimeData = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROHIBIT_TIME);
+            updErrTimes(user,prohibitLoginData,prohibitTimeData);
             if(Objects.nonNull(prohibitLoginData)&&"1".equals(prohibitLoginData.getCode())){
                 SystemDictData prohibitErrTimesData = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ERR_TIMES);
                 if(Objects.nonNull(prohibitErrTimesData)){
+                    if(Integer.valueOf(prohibitErrTimesData.getCode())
+                            -(Constants.formatIntegerNum(user.getErrTimes())+1) == Constants.ZERO){
+                        throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT.getCode(),"璐﹀彿瀵嗙爜閿欒锛岃处鎴峰凡閿佸畾锛岃"+prohibitTimeData.getCode()+"鍒嗛挓鍚庨噸璇曪紒");
+                    }
 
+                    throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT.getCode(),"璐﹀彿瀵嗙爜閿欒锛屽墿浣欏皾璇曟鏁�"+(Integer.valueOf(prohibitErrTimesData.getCode())
+                            -(Constants.formatIntegerNum(user.getErrTimes())+1))+"娆★紝瓒呭嚭閿欒娆℃暟灏嗛攣瀹氳处鍙�");
                 }
                 throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
             }else{
                 throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
             }
+        }else{
+            systemUserMapper.update(null,new UpdateWrapper<SystemUser>().lambda()
+                    .set(SystemUser::getProhibitStatus,Constants.ZERO)
+                    .set(SystemUser::getErrTimes,Constants.ZERO)
+                    .setSql(" PROHIBIT_TIME = null ")
+                    .eq(SystemUser::getId,user.getId())
+            );
         }
-
     }
 
-    public void updErrTimes(SystemUser systemUser){
+    public void updErrTimes(SystemUser systemUser,SystemDictData prohibitLoginData,SystemDictData prohibitTimeData){
         //鏈�澶ч敊璇鏁� 杩涜鐧诲綍闄愬埗
         SystemDictData prohibitErrTimesData = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ERR_TIMES);
-        //鏄惁寮�鍚瘑鐮侀敊璇姝㈢櫥褰曪細0=鍚︼紱1=鏄紱
-        SystemDictData prohibitLoginData = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROHIBIT_LOGIN_OPEN);
-        //瀵嗙爜閿欒绂佹鐧诲綍闄愬埗鏃堕棿锛堝垎閽燂級
-        SystemDictData prohibitTimeData = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.PROHIBIT_TIME);
         if(Objects.isNull(prohibitTimeData)||Objects.isNull(prohibitLoginData)||Objects.isNull(prohibitTimeData)){
             return;
         }
         systemUserMapper.update(null,new UpdateWrapper<SystemUser>().lambda()
-                .setSql( " PROHIBIT_STATUS = CASE WHEN "+prohibitLoginData+" = 1 and ( IFNULL(ERR_TIMES,0) + 1  ) > "+prohibitErrTimesData.getCode()+" then 1 else 0 end ")
-                .setSql(" PROHIBIT_TIME = CASE WHEN  PROHIBIT_STATUS = 1  then DATE_ADD(NOW(), INTERVAL "+prohibitTimeData.getCode()+" MINUTE) else null end , ")
+                .setSql( " PROHIBIT_STATUS = CASE WHEN "+prohibitLoginData.getCode()+" = 1 and ( IFNULL(ERR_TIMES,0) + 1  ) >= "+prohibitErrTimesData.getCode()+" then 1 else 0 end  ")
+                .setSql(" PROHIBIT_TIME = CASE WHEN  PROHIBIT_STATUS = 1  then DATE_ADD(NOW(), INTERVAL "+prohibitTimeData.getCode()+" MINUTE) else null end  ")
                 .setSql(" ERR_TIMES = (ifnull(ERR_TIMES,0) + 1) ")
+                .setSql(" PROHIBIT_REMARK = '浜�"+DateUtil.getCurrDateTime()+"鐧诲綍瀵嗙爜閿欒娆℃暟杩囧锛岀姝㈢櫥褰曪紒' ")
                 .eq(SystemUser::getId,systemUser.getId())
         );
     }
 
     public void prohibitLogin(SystemUser systemUser){
-        if(Constants.equalsInteger(systemUser.getProhibitStatus(),Constants.ZERO)){
-            Long betweenMin = DateUtil.getBetweenMin(systemUser.getProhibitTime(),new Date());
+        if(Constants.equalsInteger(systemUser.getProhibitStatus(),Constants.ONE)){
+            Long betweenMin = DateUtil.getBetweenMin(new Date(),systemUser.getProhibitTime());
             if(betweenMin <= 0L){
                 betweenMin = 0L;
             }
@@ -355,11 +370,14 @@
         if(!Constants.equalsInteger(user.getSource(),Constants.ZERO)){
             throw new BusinessException(ResponseStatus.NO_ALLOW_LOGIN);
         }
-        String pwd = Utils.Secure.encryptPassword(new String(dto.getPassword()), user.getSalt());
-        // 姣旇緝瀵嗙爜
-        if( !StringUtils.equals(pwd, user.getPassword())){
-            throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
-        }
+
+//        String pwd = Utils.Secure.encryptPassword(new String(dto.getPassword()), user.getSalt());
+//        // 姣旇緝瀵嗙爜
+//        if( !StringUtils.equals(pwd, user.getPassword())){
+//            throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
+//        }
+
+        this.checkPassword(user,dto.getPassword());
         dealOpenIdBiz(user,dto.getOpenid());
         Company company = new Company();
         if(Objects.nonNull(user.getCompanyId())){
@@ -537,11 +555,12 @@
             throw new BusinessException(ResponseStatus.NO_ALLOW_LOGIN.getCode(),"瀵逛笉璧凤紝璇ヨ处鍙蜂笉鑳界櫥褰曞徃鏈虹鍝︼紒");
         }
         if(StringUtils.isNotBlank(password)){
-            String pwd = Utils.Secure.encryptPassword(new String(password), user.getSalt());
-            // 姣旇緝瀵嗙爜
-            if( !StringUtils.equals(pwd, user.getPassword())){
-                throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
-            }
+//            String pwd = Utils.Secure.encryptPassword(new String(password), user.getSalt());
+//            // 姣旇緝瀵嗙爜
+//            if( !StringUtils.equals(pwd, user.getPassword())){
+//                throw new BusinessException(ResponseStatus.ACCOUNT_INCORRECT);
+//            }
+            this.checkPassword(user,password);
         }
         dealOpenIdBiz(user,openid);
         Company company = new Company();
diff --git a/server/system_service/src/main/java/com/doumee/service/system/impl/SystemUserServiceImpl.java b/server/system_service/src/main/java/com/doumee/service/system/impl/SystemUserServiceImpl.java
index 0a045a9..9cbb5f6 100644
--- a/server/system_service/src/main/java/com/doumee/service/system/impl/SystemUserServiceImpl.java
+++ b/server/system_service/src/main/java/com/doumee/service/system/impl/SystemUserServiceImpl.java
@@ -2,9 +2,11 @@
 
 import com.baomidou.mybatisplus.core.conditions.Wrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.doumee.biz.system.SystemDictDataBiz;
+import com.doumee.core.utils.DateUtil;
 import com.doumee.dao.business.model.Member;
 import com.doumee.service.business.third.model.PageData;
 import com.doumee.service.business.third.model.PageWrap;
@@ -93,6 +95,8 @@
     public void updateById(SystemUser systemUser) {
         systemUserMapper.updateById(systemUser);
     }
+
+
 
     @Override
     @Transactional
@@ -291,7 +295,6 @@
                 }
             }
         }
-
         return result;
     }
 
@@ -315,4 +318,18 @@
     }
 
 
+
+    @Override
+    public void jobForOpenProhibitStatus() {
+        systemUserMapper.update(null,new UpdateWrapper<SystemUser>().lambda()
+                .set(SystemUser::getProhibitStatus,Constants.ZERO)
+                .set(SystemUser::getErrTimes,Constants.ZERO)
+                .setSql(" PROHIBIT_REMARK = '浜�"+ DateUtil.getCurrDateTime()+"鑷姩瑙i櫎绂佹鐧诲綍锛�' ")
+                .eq(SystemUser::getProhibitStatus,Constants.ONE)
+                .apply("  now() > PROHIBIT_TIME " )
+        );
+    }
+
+
+
 }
diff --git a/server/system_service/src/main/resources/mappers/SystemUserMapper.xml b/server/system_service/src/main/resources/mappers/SystemUserMapper.xml
index a1f3048..a0727d6 100644
--- a/server/system_service/src/main/resources/mappers/SystemUserMapper.xml
+++ b/server/system_service/src/main/resources/mappers/SystemUserMapper.xml
@@ -27,7 +27,7 @@
       sd.ID AS DEPARTMENT_ID, sd.`NAME` AS DEPARTMENT_NAME,usr.wechat_name,usr.status,usr.OPENID,usr.type,
       create_user.ID CREATE_USER_ID, create_user.`USERNAME` CREATE_USER_NAME, create_user.`REALNAME` CREATE_REAL_NAME,
       update_user.ID UPDETE_USER_ID, update_user.`USERNAME` UPDATE_USER_NAME, create_user.`REALNAME` UPDATE_REAL_NAME,
-      sd.company_name_path as companyName
+      sd.company_name_path as companyName, usr.PROHIBIT_STATUS,usr.PROHIBIT_TIME,usr.ERR_TIMES,usr.FIRST_PASSWORD,usr.PROHIBIT_REMARK,usr.NEED_CHANGE_PWD
     FROM `SYSTEM_USER` usr
     LEFT JOIN `SYSTEM_USER` create_user ON create_user.ID = usr.CREATE_USER
     LEFT JOIN `SYSTEM_USER` update_user ON update_user.ID = usr.UPDATE_USER
diff --git a/server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java b/server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java
index 9ca13c0..3464add 100644
--- a/server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java
+++ b/server/system_timer/src/main/java/com/doumee/jobs/fegin/VisitServiceFegin.java
@@ -110,4 +110,9 @@
     @ApiOperation("銆愬ぉ姘斾俊鎭�戝畾鏃跺悓姝ュぉ姘旈璀�")
     @PostMapping("/timer/weather/syncWeatherInfo")
     ApiResponse syncWeatherInfo();
+
+    @ApiOperation("銆愮敤鎴蜂俊鎭�戣嚜鍔ㄩ噴鏀惧凡绂佺敤鐧诲綍鐢ㄦ埛")
+    @PostMapping("/timer/systemUserJob/jobForOpenProhibitStatus")
+    ApiResponse jobForOpenProhibitStatus();
+
 }
diff --git a/server/visits/admin_timer/src/main/java/com/doumee/api/SystemUserJobController.java b/server/visits/admin_timer/src/main/java/com/doumee/api/SystemUserJobController.java
new file mode 100644
index 0000000..c7cf70a
--- /dev/null
+++ b/server/visits/admin_timer/src/main/java/com/doumee/api/SystemUserJobController.java
@@ -0,0 +1,37 @@
+package com.doumee.api;
+
+import com.doumee.core.annotation.pr.PreventRepeat;
+import com.doumee.service.business.PlatformJobService;
+import com.doumee.service.business.third.model.ApiResponse;
+import com.doumee.service.system.SystemUserService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @author 姹熻箘韫�
+ * @date 2023/11/30 15:33
+ */
+@Slf4j
+@Api(tags = "鏈堝彴浣滀笟瀹氭椂")
+@RestController
+@RequestMapping("/timer/systemUserJob")
+public class SystemUserJobController extends BaseController {
+
+    @Autowired
+    private SystemUserService systemUserService;
+
+
+    @ApiOperation("鑷姩閲婃斁宸茬鐢ㄧ櫥褰曠敤鎴�")
+    @PostMapping("/jobForOpenProhibitStatus")
+    public ApiResponse jobForOpenProhibitStatus() {
+        log.error("========鑷姩閲婃斁宸茬鐢ㄧ櫥褰曠敤鎴�============寮�濮�"+System.currentTimeMillis()+"");
+        systemUserService.jobForOpenProhibitStatus();
+        log.error("========鑷姩閲婃斁宸茬鐢ㄧ櫥褰曠敤鎴�============寮�濮�"+System.currentTimeMillis()+"");
+        return ApiResponse.success("鑷姩閲婃斁宸茬鐢ㄧ櫥褰曠敤鎴�");
+    }
+}
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/common/PublicController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/common/PublicController.java
index 07a3be3..88b577d 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/api/common/PublicController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/api/common/PublicController.java
@@ -131,6 +131,7 @@
                     String fileName = folder+fName;
                     boolean r = ftp.uploadInputstream(is,fileName);
                     if(r){
+                        isFace = null;
                          if(Objects.nonNull(isFace) && Constants.equalsInteger(isFace,Constants.ZERO)){
                              //楠岃瘉浜鸿劯璇勫垎
                             //浜鸿劯璇勫垎
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/common/PublicCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/common/PublicCloudController.java
index 831575c..7d368c6 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/common/PublicCloudController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/common/PublicCloudController.java
@@ -232,6 +232,7 @@
                     String fileName = folder+"/"+fName;
                     boolean r = ftp.uploadInputstream(is,fileName);
                     if(r){
+                        isFace = null;
                          if(Objects.nonNull(isFace) && Constants.equalsInteger(isFace,Constants.ZERO)){
                             //楠岃瘉浜鸿劯璇勫垎
                             //浜鸿劯璇勫垎
diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/WebPublicController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/WebPublicController.java
index b18bf11..c092cee 100644
--- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/WebPublicController.java
+++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/web/WebPublicController.java
@@ -132,6 +132,7 @@
 //                    boolean r = ftp.uploadInputstream(compressImg(is),fileName);
                     boolean r = ftp.uploadInputstream(is,fileName);
                     if(r){
+                        isFace = null;
                          if(Objects.nonNull(isFace) && Constants.equalsInteger(isFace,Constants.ZERO)){
                             //楠岃瘉浜鸿劯璇勫垎
                             //浜鸿劯璇勫垎
@@ -266,6 +267,7 @@
                     String key = folder + tempFileName;// 鏂囦欢鍚�
                     ALiYunUtil obs = new ALiYunUtil(endpoint,access_id, access_key);
                     if (obs.uploadOnlineObject(file.getInputStream(),bucketName, key,null)) {
+                        isFace = null;
                         // 绉诲姩鎴愬姛,杩斿洖鏂囦欢鍚�
                          if(Objects.nonNull(isFace) && Constants.equalsInteger(isFace,Constants.ZERO)){
                             //楠岃瘉浜鸿劯璇勫垎
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java
index 22f4d87..9cb95fd 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java
@@ -481,12 +481,13 @@
                 //鏌ヨ杞﹁締鎵�鏈変汉鍛樹俊鎭�
                 List<Member> memberList = memberMapper.selectJoinList(Member.class,new MPJLambdaWrapper<Member>()
                         .selectAll(Member.class)
-                        .leftJoin(CarDriver.class,CarDriver::getMemberId,Member::getId)
+                        .leftJoin(Cars.class,Cars::getMemberId,Member::getId)
+                        .leftJoin(JkKeys.class,JkKeys::getCarId,Cars::getId)
                         .eq(Member::getIsdeleted,Constants.ZERO)
                         .eq(CarDriver::getIsdeleted,Constants.ZERO)
                         .eq(CarDriver::getStatus,Constants.ZERO)
                         .isNotNull(Member::getFaceImg)
-                        .in(CarDriver::getCarId,carIdList)
+                        .in(JkKeys::getId,carIdList)
                 );
                 if(CollectionUtils.isNotEmpty(memberList)){
                     Set<Member> memberSet = new HashSet<>(memberList);

--
Gitblit v1.9.3