Ver Fonte

Merge branch 'master' of https://172.16.32.165/lighter/web-server

# Conflicts:
#	src/main/java/thyyxxk/webserver/service/LoginService.java
xiaochan há 1 ano atrás
pai
commit
b6a0de721b

+ 3 - 0
src/main/java/thyyxxk/webserver/dao/his/LoginDao.java

@@ -94,6 +94,9 @@ public interface LoginDao {
     @Select("select top 1 input_err_frequency from dj_user_base where code_rs = '${codeRs}'")
     Integer selectInputErrFrequency(String codeRs);
 
+    @Select("select frequency from t_questionnaire_frequency where code='login_over_limit_waiting' ")
+    Integer selectLockTime();
+
     @Update("update dj_user_base set  input_err_frequency = ${times} , next_input_times = #{date} where code_rs = '${codeRs}' ")
     void addInputErrFrequency(String codeRs, Integer times, Date date);
 

+ 33 - 31
src/main/java/thyyxxk/webserver/service/LoginService.java

@@ -1,5 +1,6 @@
 package thyyxxk.webserver.service;
 
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.crypto.SecureUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.dynamic.datasource.annotation.DS;
@@ -16,6 +17,7 @@ import thyyxxk.webserver.service.externalhttp.CorpWxSrvc;
 import thyyxxk.webserver.service.redislike.RedisLikeService;
 import thyyxxk.webserver.utils.*;
 
+import javax.annotation.PostConstruct;
 import java.util.*;
 
 /**
@@ -43,7 +45,6 @@ public class LoginService {
 
     public ResultVo<UserInfo> login(UserInfo userInfo) {
         Date now = new Date();
-
         UserInfo tempUserInfo = dao.findUserByCodeRsFromDjUserBase(userInfo.getCodeRs());
         if (null == tempUserInfo) {
             tempUserInfo = dao.findUserByCodeRsFromEmployeeMi(userInfo.getCodeRs());
@@ -53,41 +54,42 @@ public class LoginService {
             dao.insertNewUserToDjUserBase(tempUserInfo);
         }
         // 如果当前时间在 限制时间之前就是锁定
-//        if (tempUserInfo.getNextInputTimes() != null && now.toInstant().isBefore(tempUserInfo.getNextInputTimes().toInstant())) {
-//            return ResultVoUtil.fail(ExceptionEnum.LOCK_OUT_THE_USER, StrUtil.format("用户已被锁定请:【{}】后重试。", DateUtil.formatDatetime(tempUserInfo.getNextInputTimes())), tempUserInfo);
-//        }
+        if (tempUserInfo.getNextInputTimes() != null && now.toInstant().isBefore(tempUserInfo.getNextInputTimes().toInstant())) {
+            return ResultVoUtil.fail(ExceptionEnum.LOCK_OUT_THE_USER, StrUtil.format("用户已被锁定请:【{}】后重试。", DateUtil.formatDatetime(tempUserInfo.getNextInputTimes())), tempUserInfo);
+        }
+
         String pwd = SecureUtil.md5(userInfo.getPassword());
         if (!Objects.equals("fromTriageScreen", userInfo.getSid()) && !pwd.equals(tempUserInfo.getPassword())) {
-//            Integer times = dao.selectInputErrFrequency(tempUserInfo.getCodeRs());
-//            times = times == null ? 1 : times + 1;
-//            userInfo.setNextInputTimes(null);
-//            userInfo.setInputErrFrequency(times);
+            Integer times = dao.selectInputErrFrequency(tempUserInfo.getCodeRs());
+            times = times == null ? 1 : times + 1;
+            userInfo.setNextInputTimes(null);
+            userInfo.setInputErrFrequency(times);
             // 输入次数大于三次锁定
-//            if (times > 3) {
-//                // 如果当前时间在限制时间之前就用限制时间
-//                if (now.toInstant().isBefore(tempUserInfo.getNextInputTimes().toInstant())) {
-//                    now = tempUserInfo.getNextInputTimes();
-//                } else {
-//                    // 如果不在就加 10 分钟
-//                    now = DateUtil.offsetMinute(now, 10);
-//                }
-//                userInfo.setNextInputTimes(now);
-//                dao.addInputErrFrequency(tempUserInfo.getCodeRs(), times, now);
-//            }
-//            dao.addInputErrFrequency(tempUserInfo.getCodeRs(), times, now);
-//            if (userInfo.getNextInputTimes() != null) {
-//                return ResultVoUtil.fail(ExceptionEnum.LOCK_OUT_THE_USER,
-//                        StrUtil.format("用户已被锁定请:【{}】后重试。",
-//                                DateUtil.formatDatetime(userInfo.getNextInputTimes())),
-//                        userInfo);
-//            } else {
-            return ResultVoUtil.fail(ExceptionEnum.INVALID_PASSWORD, userInfo);
-//            }
+            if (times > 3) {
+                // 如果当前时间在限制时间之前就用限制时间
+                if (now.toInstant().isBefore(tempUserInfo.getNextInputTimes().toInstant())) {
+                    now = tempUserInfo.getNextInputTimes();
+                } else {
+                    // 如果不在就加一定的时间
+                    now = DateUtil.offsetMinute(now, dao.selectLockTime());
+                }
+                userInfo.setNextInputTimes(now);
+                dao.addInputErrFrequency(tempUserInfo.getCodeRs(), times, now);
+            }
+            dao.addInputErrFrequency(tempUserInfo.getCodeRs(), times, now);
+            if (userInfo.getNextInputTimes() != null) {
+                return ResultVoUtil.fail(ExceptionEnum.LOCK_OUT_THE_USER,
+                        StrUtil.format("用户已被锁定请:【{}】后重试。",
+                                DateUtil.formatDatetime(userInfo.getNextInputTimes())),
+                        userInfo);
+            } else {
+                return ResultVoUtil.fail(ExceptionEnum.INVALID_PASSWORD, userInfo);
+            }
         }
 
-//        if (tempUserInfo.getInputErrFrequency() > 0) {
-//            dao.addInputErrFrequency(tempUserInfo.getCodeRs(), 0, null);
-//        }
+        if (tempUserInfo.getInputErrFrequency() > 0) {
+            dao.addInputErrFrequency(tempUserInfo.getCodeRs(), 0, null);
+        }
         String token = TokenUtil.getInstance().createToken(tempUserInfo.getCode());
         try {
             JSONObject json = srvc.getUserinfo(tokenService.getWeComAddressBookToken(), tempUserInfo.getCodeRs());