Browse Source

Merge branch 'double_verify_p2'

zoujiajian 3 years ago
parent
commit
b743cf375c

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/model/views/RenewalView.java

@@ -81,6 +81,9 @@ public class RenewalView {
     @DbField("a.api_key")
     private String apiKey;
 
+    @DbField("if(a.api_secret='',false,true)")
+    private Boolean isVerify;
+
     @DbField("gr.verify_code")
     private String verifyCode;
 

+ 36 - 21
netflix-web/src/main/java/com/cyksj/web/controller/group/GroupRelationController.java

@@ -2,6 +2,7 @@ package com.cyksj.web.controller.group;
 
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.thread.ThreadUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.extra.servlet.ServletUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -11,10 +12,7 @@ import com.cyksj.common.util.GoogleGenerator;
 import com.cyksj.common.util.StringUtil;
 import com.cyksj.dto.Result;
 import com.cyksj.enums.GatewayResponse;
-import com.cyksj.mapper.AccountDoubleVerifyRecordMapper;
-import com.cyksj.mapper.ChatGptPwdViewRecordMapper;
-import com.cyksj.mapper.DoubleVerifyClickRecordMapper;
-import com.cyksj.mapper.GroupsRelationMapper;
+import com.cyksj.mapper.*;
 import com.cyksj.model.entity.*;
 import com.cyksj.model.manage.views.GroupsRelationView;
 import com.cyksj.model.request.OrderPayRequest;
@@ -34,6 +32,7 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletRequest;
 import java.util.List;
+import java.util.concurrent.TimeUnit;
 
 /**
  * @author chan
@@ -65,6 +64,8 @@ public class GroupRelationController {
 
     private final RedisService redisService;
 
+    private final SysConfigMapper sysConfigMapper;
+
     private final GlobalThreadPoolTaskExecutor THREAD_POOL;
 
     @RequestMapping("/get/renewal")
@@ -167,10 +168,10 @@ public class GroupRelationController {
      * 获取AI类 ChatGPT产品谷歌验证码
      */
     @GetMapping("/get/authCode")
-    public Result<String> getAuthCode(Long relationId) throws InterruptedException {
+    public Result<String> getAuthCode(Long relationId) {
         long userId = StpUserUtil.getLoginIdAsLong();
         //每个人 每月只能获取两次
-        if (relationId==null) throw BusinessRuntimeException.getInstance("车票不存在");
+        if (relationId == null) throw BusinessRuntimeException.getInstance("车票不存在");
         GroupsRelationView groupsRelationView = beanSearcher.searchFirst(GroupsRelationView.class, MapUtils.builder()
                 .field(GroupsRelationView::getId, relationId)
                 .field(GroupsRelationView::getUserId, userId).build());
@@ -181,22 +182,36 @@ public class GroupRelationController {
                 .eq(DoubleVerifyClickRecord::getUserId, userId)
                 .eq(DoubleVerifyClickRecord::getAccountId, groupsRelationView.getAccountId())
                 .between(DoubleVerifyClickRecord::getCreatedTime, DateUtil.beginOfMonth(now), DateUtil.endOfMonth(now)));
-        if (count >= 2) throw BusinessRuntimeException.getInstance("获取次数上限");
+        SysConfig double_verify_num = sysConfigMapper.selectOne(Wrappers.lambdaQuery(SysConfig.class).eq(SysConfig::getSysKey, "Constant.ACCOUNT_DOUBLE_VERIFY_KEY"));
+        int num = 2;
+        if (double_verify_num != null) {
+            num = Integer.parseInt(double_verify_num.getSysValue());
+        }
+        if (count >= num) throw BusinessRuntimeException.getInstance("获取双重验证码次数上限");
         int second = now.second();
-        if (second < 30 && 30 - second <= 10) {
-            Thread.sleep(30 - second + 1);
-        } else if (second > 30 && 60 - second <= 10) {
-            Thread.sleep(60 - second + 1);
+        if (second < 30 && 30 - second < 18) {
+            ThreadUtil.sleep(30 - second + 1, TimeUnit.SECONDS);
+        } else if (second > 30 && 60 - second < 18) {
+            ThreadUtil.sleep(60 - second + 1, TimeUnit.SECONDS);
+        }
+        StringBuilder sb = new StringBuilder();
+        try {
+            long code = GoogleGenerator.getCode(groupsRelationView.getApiSecret(), now.getTime());
+            sb.append(code);
+            while (sb.length() < 6) {
+                sb.insert(0, 0);
+            }
+            DoubleVerifyClickRecord doubleVerifyClickRecord = new DoubleVerifyClickRecord();
+            doubleVerifyClickRecord.setRelationId(relationId);
+            doubleVerifyClickRecord.setUserId(userId);
+
+            doubleVerifyClickRecord.setAccountId(groupsRelationView.getAccountId());
+            doubleVerifyClickRecord.setAccount(groupsRelationView.getTripsAccount());
+            doubleVerifyClickRecord.setSkuId(groupsRelationView.getSkuId());
+            doubleVerifyRecordMapper.insert(doubleVerifyClickRecord);
+        } catch (Exception e) {
+            throw BusinessRuntimeException.getInstance("获取双重验证码错误,请联系客服");
         }
-        DoubleVerifyClickRecord doubleVerifyClickRecord = new DoubleVerifyClickRecord();
-        doubleVerifyClickRecord.setRelationId(relationId);
-        doubleVerifyClickRecord.setUserId(userId);
-
-        doubleVerifyClickRecord.setAccountId(groupsRelationView.getAccountId());
-        doubleVerifyClickRecord.setAccount(groupsRelationView.getTripsAccount());
-        doubleVerifyClickRecord.setSkuId(groupsRelationView.getSkuId());
-        doubleVerifyRecordMapper.insert(doubleVerifyClickRecord);
-        long code = GoogleGenerator.getCode(groupsRelationView.getApiSecret(), now.getTime());
-        return GatewayResponse.SUCCESS.newBuilder().toResult(Long.toString(code));
+        return GatewayResponse.SUCCESS.newBuilder().toResult(sb.toString());
     }
 }