|
@@ -1,12 +1,16 @@
|
|
|
package com.cyksj.service.user.impl;
|
|
package com.cyksj.service.user.impl;
|
|
|
|
|
|
|
|
import cn.hutool.extra.servlet.ServletUtil;
|
|
import cn.hutool.extra.servlet.ServletUtil;
|
|
|
|
|
+import cn.hutool.http.HttpUtil;
|
|
|
|
|
+import cn.hutool.json.JSONObject;
|
|
|
import com.cyksj.common.exception.BusinessRuntimeException;
|
|
import com.cyksj.common.exception.BusinessRuntimeException;
|
|
|
import com.cyksj.common.util.StringUtil;
|
|
import com.cyksj.common.util.StringUtil;
|
|
|
import com.cyksj.redis.RedisService;
|
|
import com.cyksj.redis.RedisService;
|
|
|
import com.cyksj.service.user.BadIntentionOpService;
|
|
import com.cyksj.service.user.BadIntentionOpService;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
@@ -15,6 +19,10 @@ import javax.servlet.http.HttpServletRequest;
|
|
|
@RequiredArgsConstructor
|
|
@RequiredArgsConstructor
|
|
|
@Slf4j
|
|
@Slf4j
|
|
|
public class BadIntentionOpServiceImpl implements BadIntentionOpService {
|
|
public class BadIntentionOpServiceImpl implements BadIntentionOpService {
|
|
|
|
|
+
|
|
|
|
|
+ @Value("${smsVerify.apiKey}")
|
|
|
|
|
+ String apiKey;
|
|
|
|
|
+
|
|
|
private final RedisService redisService;
|
|
private final RedisService redisService;
|
|
|
|
|
|
|
|
private static final int PHONE_CODE_GET_NUM_DAY_LIMIT = 30;
|
|
private static final int PHONE_CODE_GET_NUM_DAY_LIMIT = 30;
|
|
@@ -22,8 +30,10 @@ public class BadIntentionOpServiceImpl implements BadIntentionOpService {
|
|
|
|
|
|
|
|
private static final int PHONE_LOGIN_CODE_RETRY = 10;
|
|
private static final int PHONE_LOGIN_CODE_RETRY = 10;
|
|
|
|
|
|
|
|
|
|
+ private static final String VERIFY_URL = "https://captcha.luosimao.com/api/site_verify";
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
- public void checkHandleBadUserOp(String phone) {
|
|
|
|
|
|
|
+ public void checkHandleBadUserOp(String phone, String verifyCode) {
|
|
|
if ("13662979985".equals(phone)) {
|
|
if ("13662979985".equals(phone)) {
|
|
|
throw BusinessRuntimeException.getInstance("异常手机号");
|
|
throw BusinessRuntimeException.getInstance("异常手机号");
|
|
|
}
|
|
}
|
|
@@ -42,9 +52,23 @@ public class BadIntentionOpServiceImpl implements BadIntentionOpService {
|
|
|
log.error("手机号:{}频繁获取短信验证码", phone);
|
|
log.error("手机号:{}频繁获取短信验证码", phone);
|
|
|
throw BusinessRuntimeException.getInstance("请勿频繁获取短信验证码");
|
|
throw BusinessRuntimeException.getInstance("请勿频繁获取短信验证码");
|
|
|
}
|
|
}
|
|
|
|
|
+ if (StringUtils.isBlank(verifyCode)) {
|
|
|
|
|
+ throw BusinessRuntimeException.getInstance("人机校验不通过");
|
|
|
|
|
+ }else {
|
|
|
|
|
+ JSONObject parmas = new JSONObject();
|
|
|
|
|
+ parmas.putOpt("api_key", apiKey);
|
|
|
|
|
+ parmas.putOpt("response", verifyCode);
|
|
|
|
|
+ String post = HttpUtil.post(VERIFY_URL, parmas.toString());
|
|
|
|
|
+ JSONObject res = new JSONObject(post);
|
|
|
|
|
+ if (!res.getStr("res").equals("success")) {
|
|
|
|
|
+ log.error("手机号:{}验证码校验不通过 res:{}", phone, res);
|
|
|
|
|
+ throw BusinessRuntimeException.getInstance("人机校验不通过");
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
redisService.set(dayKey, 1, RedisService.key.PHONE_CODE_USER_NUM_KEY_DAY.getTimeout());
|
|
redisService.set(dayKey, 1, RedisService.key.PHONE_CODE_USER_NUM_KEY_DAY.getTimeout());
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|