Parcourir la source

Merge branch 'fix_ai_bug' into pre

zoujiajian il y a 13 heures
Parent
commit
2fd02b4e47

+ 2 - 1
netflix-common/src/main/java/com/cyksj/common/util/SmsUtil.java

@@ -238,12 +238,13 @@ public class SmsUtil {
             DescribeCaptchaResultResponse resp = client.DescribeCaptchaResult(req);
             //1 OK 验证通过
             Long captchaCode = resp.getCaptchaCode();
-            if (captchaCode != 1) {
+            if (!Long.valueOf(1L).equals(captchaCode)) {
                 log.error("腾讯云图形验证错误:{}", resp.getCaptchaMsg());
                 throw BusinessRuntimeException.getInstance("图形验证失败");
             }
         } catch (TencentCloudSDKException e) {
             log.error("腾讯云图形认证异常:{}", StringUtil.getErrorText(e));
+            throw BusinessRuntimeException.getInstance("图形验证服务暂不可用,请重试");
         }
     }
 }

+ 2 - 0
netflix-service/src/main/java/com/cyksj/service/user/BadIntentionOpService.java

@@ -3,6 +3,8 @@ package com.cyksj.service.user;
 import javax.servlet.http.HttpServletRequest;
 
 public interface BadIntentionOpService {
+    void checkCaptcha(String ticket, String randStr, HttpServletRequest request);
+
     void checkHandleBadUserOp(String phone, String verifyCode, String ticket, String randStr, HttpServletRequest request);
 
     void isBadOpLoginPhone(HttpServletRequest request, String phone);

+ 9 - 8
netflix-service/src/main/java/com/cyksj/service/user/impl/BadIntentionOpServiceImpl.java

@@ -1,6 +1,5 @@
 package com.cyksj.service.user.impl;
 
-import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.extra.servlet.ServletUtil;
 import cn.hutool.http.HttpUtil;
 import cn.hutool.json.JSONObject;
@@ -56,13 +55,7 @@ public class BadIntentionOpServiceImpl implements BadIntentionOpService {
 //                }
 //            }
 //        }
-        if (ObjectUtil.hasEmpty(ticket, randStr)) {
-            throw BusinessRuntimeException.getInstance("请先完成图形认证");
-        } else {
-            //腾讯云图形验证
-            String ip = ServletUtil.getClientIP(request);
-            SmsUtil.checkTencentCaptcha(ticket, ip, randStr);
-        }
+        checkCaptcha(ticket, randStr, request);
         String dayKey = RedisService.key.PHONE_CODE_USER_NUM_KEY_DAY.getName() + phone;
         if (redisService.hasKey(RedisService.key.PHONE_CODE_BALCK_KEY.getName() + phone)) {
             throw BusinessRuntimeException.getInstance("异常手机号");
@@ -84,6 +77,14 @@ public class BadIntentionOpServiceImpl implements BadIntentionOpService {
 
     }
 
+    @Override
+    public void checkCaptcha(String ticket, String randStr, HttpServletRequest request) {
+        if (cn.hutool.core.util.StrUtil.isBlank(ticket) || cn.hutool.core.util.StrUtil.isBlank(randStr)) {
+            throw BusinessRuntimeException.getInstance("请先完成图形认证");
+        }
+        SmsUtil.checkTencentCaptcha(ticket, ServletUtil.getClientIP(request), randStr);
+    }
+
     @Override
     public void isBadOpLoginPhone(HttpServletRequest request, String phone) {
         String ip = ServletUtil.getClientIP(request);

+ 3 - 1
netflix-web/src/main/java/com/cyksj/web/controller/user/AuthorizationController.java

@@ -495,7 +495,7 @@ public class AuthorizationController {
      */
     @GetMapping("/get/email/code")
     @NoSubmit
-    public Result<String> getEmailCode(String email, Integer digit, Integer cmt) {
+    public Result<String> getEmailCode(String email, Integer digit, Integer cmt, String ticket, String randStr) {
         if (email == null || email.length() > 254 || !email.equals(email.trim()) || !Validator.isEmail(email)) {
             throw BusinessRuntimeException.getInstance("请输入正确邮箱");
         }
@@ -522,6 +522,8 @@ public class AuthorizationController {
         if (exists != null) {
             throw BusinessRuntimeException.getInstance("验证码未失效");
         }
+        // 与手机发码复用同一套腾讯云图形验证,校验失败不得发送邮件。
+        badIntentionOpService.checkCaptcha(ticket, randStr, request);
         String code = mailService.sendLoginCodeEmailToPeople(6, email);
         if (code == null) {
             throw BusinessRuntimeException.getInstance("获取邮箱验证码错误");