提交 8b210c15 编写于 作者: Chongwen.jiang's avatar Chongwen.jiang

1、风控调用业务修改到service层

2、验证码缓存key前缀常量提取
上级 0f4f8b92
流水线 #22420 已失败 于阶段
in 0 second
......@@ -58,4 +58,7 @@ public class Constants {
/** h5端发送短信验证码接口开关缓存key */
public static final String AUTHCODE_H5_SWITCH_KEY = "AUTH-CODE-H5-SWITCH";
/** 验证码缓存key前缀 */
public static final String AUTH_CODE_PREFIX = "authCode-";
}
package com.pica.cloud.account.account.server.controller;
import com.pica.cloud.account.account.server.constants.Constants;
import com.pica.cloud.account.account.server.entity.Account;
import com.pica.cloud.account.account.server.entity.EncryptEntity;
import com.pica.cloud.account.account.server.entity.LoginResult;
import com.pica.cloud.account.account.server.enums.AccountTypeEnum;
import com.pica.cloud.account.account.server.mapper.AccountMapper;
import com.pica.cloud.account.account.server.req.AccountReq;
import com.pica.cloud.account.account.server.req.BaseRequest;
import com.pica.cloud.account.account.server.service.AccountService;
......@@ -29,7 +29,6 @@ import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
......@@ -46,9 +45,8 @@ import java.util.UUID;
@RestController
@RequestMapping("/account")
public class AccountController extends AccountBaseController {
private final String AUTH_CODE_PREFIX = "authCode-";
private Logger logger = LoggerFactory.getLogger(AccountController.class);
@Autowired
private AccountService accountService;
@Autowired
......@@ -225,8 +223,8 @@ public class AccountController extends AccountBaseController {
//获取验证码redis key
private String getAuthCodeKey(String mobilePhone, String flag) {
logger.info(AUTH_CODE_PREFIX + flag + "-" + EncryptUtils.encryptContent(mobilePhone, EncryptConstants.ENCRYPT_TYPE_MOBILE));
return AUTH_CODE_PREFIX + flag + "-" + EncryptUtils.encryptContent(mobilePhone, EncryptConstants.ENCRYPT_TYPE_MOBILE);
logger.info(Constants.AUTH_CODE_PREFIX + flag + "-" + EncryptUtils.encryptContent(mobilePhone, EncryptConstants.ENCRYPT_TYPE_MOBILE));
return Constants.AUTH_CODE_PREFIX + flag + "-" + EncryptUtils.encryptContent(mobilePhone, EncryptConstants.ENCRYPT_TYPE_MOBILE);
}
//校验验证码
......
// Copyright 2016-2101 Pica.
package com.pica.cloud.account.account.server.service;
import com.pica.cloud.account.account.server.req.BaseRequest;
import javax.servlet.http.HttpServletRequest;
/**
* @ClassName AuthCodeService
* @Description 验证码业务
* @Author Chongwen.jiang
* @Date 2020/3/5 17:01
* @ModifyDate 2020/3/5 17:01
* @Version 1.0
*/
public interface AuthCodeService {
void rcValidate(HttpServletRequest request, BaseRequest baseRequest, String deviceInfoStr);
void recordRcData(HttpServletRequest req, BaseRequest baseRequest, String deviceIp);
}
// Copyright 2016-2101 Pica.
package com.pica.cloud.account.account.server.service.impl;
import com.alibaba.fastjson.JSON;
import com.pica.cloud.account.account.server.constants.Constants;
import com.pica.cloud.account.account.server.enums.AccountExceptionEnum;
import com.pica.cloud.account.account.server.enums.RcRepTypeEnum;
import com.pica.cloud.account.account.server.req.BaseRequest;
import com.pica.cloud.account.account.server.service.AuthCodeService;
import com.pica.cloud.account.account.server.util.AESUtil;
import com.pica.cloud.account.account.server.util.IPUtil;
import com.pica.cloud.account.account.server.util.PICAPDeviceInfo;
import com.pica.cloud.foundation.entity.PicaResponse;
import com.pica.cloud.foundation.entity.PicaResultCode;
import com.pica.cloud.foundation.entity.PicaWarnException;
import com.pica.cloud.foundation.redis.ICacheClient;
import com.pica.cloud.riskcontrol.riskcontrol.client.CheckCodeClient;
import com.pica.cloud.riskcontrol.riskcontrol.common.req.CheckcodeRiskReq;
import com.pica.cloud.riskcontrol.riskcontrol.common.resp.CheckcodeRiskResp;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.Objects;
/**
* @ClassName AuthCodeServiceImpl
* @Description
* @Author Chongwen.jiang
* @Date 2020/3/5 17:01
* @ModifyDate 2020/3/5 17:01
* @Version 1.0
*/
@Service
public class AuthCodeServiceImpl implements AuthCodeService {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private CheckCodeClient rcClient;
@Autowired
private ICacheClient cacheClient;
@Autowired
@Qualifier("accountThreadPool")
private ThreadPoolTaskExecutor threadPoolTaskExecutor;
/**
* @Description 调用风控接口
* @Author Chongwen.jiang
* @Date 2020/2/21 17:12
* @ModifyDate 2020/2/21 17:12
* @Params [mobile]
* @Return com.pica.cloud.account.account.server.resp.UnifiedVerificationResp
*/
@Override
public void rcValidate(HttpServletRequest request, BaseRequest baseRequest, String deviceInfoStr) {
// 调用风控接口
PicaResponse picaResponse = null;
try {
PICAPDeviceInfo deviceInfo = JSON.parseObject(deviceInfoStr, PICAPDeviceInfo.class);
String publicIp = IPUtil.getIpAdrress(request);
String deviceToken = baseRequest.getDevice_token();
logger.info("rcValidate-publicIp:{}, deviceToken:{}, deviceInfoStr:{}",
publicIp, deviceToken, deviceInfoStr);
CheckcodeRiskReq rcReq = new CheckcodeRiskReq();
rcReq.setMobile(baseRequest.getMobile());
rcReq.setIp(publicIp);
rcReq.setDeviceIp(deviceInfo.getDevice_ip());
rcReq.setDeviceId(deviceToken);
logger.info("rc-checkcodeRisk-req:{}", JSON.toJSONString(rcReq));
picaResponse = rcClient.checkcodeRisk(rcReq);
logger.info("rc-checkcodeRisk-resp:{}", JSON.toJSONString(picaResponse));
} catch (Exception e) {
logger.error("rc-checkcodeRisk-invoke-exception", e);
}
if (picaResponse != null &&
PicaResultCode.SUCCESS.code().equals(picaResponse.getCode())) {
Object data = picaResponse.getData();
if (Objects.nonNull(data)) {
CheckcodeRiskResp respData = JSON.parseObject(
JSON.toJSONString(data), CheckcodeRiskResp.class);
if (StringUtils.isNotEmpty(respData.getProcessCode())) {
String processCode = respData.getProcessCode();
if (StringUtils.isNotEmpty(processCode)) {
// 请求返回正常
if (processCode.equals(RcRepTypeEnum.RC_SEND_FAIL.getCode())) {
throw new PicaWarnException(AccountExceptionEnum.PICA_RC_SEND_FAIL.getCode(),
AccountExceptionEnum.PICA_RC_SEND_FAIL.getMessage());
} else if (processCode.equals(RcRepTypeEnum.RC_TRIGGER.getCode())) {
throw new PicaWarnException(AccountExceptionEnum.PICA_RC_TRIGGER.getCode(),
AccountExceptionEnum.PICA_RC_TRIGGER.getMessage());
} else if (processCode.equals(RcRepTypeEnum.RC_BLACKLIST.getCode())) {
throw new PicaWarnException(AccountExceptionEnum.PICA_RC_BLACKLIST.getCode(),
AccountExceptionEnum.PICA_RC_BLACKLIST.getMessage());
} else if (processCode.equals(RcRepTypeEnum.RC_DAY_LIMIT.getCode())) {
throw new PicaWarnException(AccountExceptionEnum.PICA_RC_DAY_LIMIT.getCode(),
AccountExceptionEnum.PICA_RC_DAY_LIMIT.getMessage());
} else if (processCode.equals(RcRepTypeEnum.RC_60_SECOND_LIMIT.getCode())) {
// 获取剩余秒数
String authCodeKey = Constants.AUTH_CODE_PREFIX + baseRequest.getFlag() + "-" + AESUtil.encryptV0(baseRequest.getMobile()) + "-secure";
Long time = cacheClient.get(authCodeKey, Long.class);
int remainTime = 59 - (int) (System.currentTimeMillis() - time) / 1000;
if (remainTime > 0) {
throw new PicaWarnException(AccountExceptionEnum.PICA_RC_60_SECOND_LIMIT.getCode(),
AccountExceptionEnum.PICA_RC_60_SECOND_LIMIT.getMessage().replace("{remainTime}", String.valueOf(remainTime)));
}
} else {
// processCode=1(允许发送短信验证码)
}
}
}
}
}
}
/**
* @Description 记录风控数据
* @Author Chongwen.jiang
* @Date 2020/2/27 16:53
* @ModifyDate 2020/2/27 16:53
* @Params [req, request]
* @Return void
*/
@Override
public void recordRcData(HttpServletRequest request, BaseRequest baseRequest, String deviceIp) {
logger.info("recordRcData-start");
CheckcodeRiskReq rec = new CheckcodeRiskReq();
rec.setMobile(baseRequest.getMobile());
rec.setIp(IPUtil.getIpAdrress(request));
rec.setDeviceIp(deviceIp);
rec.setDeviceId(baseRequest.getDevice_token());
logger.info("recordRcData-request-{}", JSON.toJSONString(rec));
try {
threadPoolTaskExecutor.execute(() -> {
logger.info("recordRcData-execute-{}", JSON.toJSONString(rec));
PicaResponse resp = rcClient.logSend(rec);
logger.info("recordRcData-resp-{}", JSON.toJSONString(resp));
});
} catch (Exception e) {
logger.error("recordRcData invoke error", e.getMessage());
}
}
}
package com.pica.cloud.account.account.server.util;
import com.pica.cloud.account.account.server.controller.AccountController;
import com.pica.cloud.account.account.server.constants.Constants;
import com.pica.cloud.account.account.server.enums.AccountExceptionEnum;
import com.pica.cloud.account.account.server.mapper.AccountPatientInfoMapper;
import com.pica.cloud.account.account.server.mapper.DoctorMapper;
import com.pica.cloud.foundation.entity.PicaException;
import com.pica.cloud.foundation.entity.PicaResultCode;
......@@ -19,21 +18,14 @@ import org.springframework.stereotype.Component;
*/
@Component
public class AccountUtils {
private Logger logger = LoggerFactory.getLogger(AccountUtils.class);
@Autowired
private ICacheClient cacheClient;
private Logger logger = LoggerFactory.getLogger(AccountController.class);
@Autowired
private AccountPatientInfoMapper accountPatientInfoMapper;
@Autowired
private DoctorMapper doctorInfoMapper;
private static final String AUTH_CODE_PREFIX = "authCode-";
private static final String AUTH_CODE_COUNT_PREFIX = "authCode-count-";
//手机非空和格式校验
public static void checkMobilePhone(String mobilePhone) {
if (StringUtils.isBlank(mobilePhone) || !ValidateUtils.isMobile(mobilePhone)) {
......@@ -59,7 +51,7 @@ public class AccountUtils {
//获取验证码redis key
public static String getAuthCodeKey(String mobilePhone, String flag) {
return AUTH_CODE_PREFIX + flag + "-" + AESUtil.encryptV0(mobilePhone);
return Constants.AUTH_CODE_PREFIX + flag + "-" + AESUtil.encryptV0(mobilePhone);
}
//手机号和验证码校验
......
package com.pica.cloud.account.account.server.util;
import com.pica.cloud.account.account.server.constants.Constants;
/**
* Created on 2020/1/9 16:18
* author:crs
......@@ -7,8 +9,6 @@ package com.pica.cloud.account.account.server.util;
*/
public class RegisterCodeKeyUtils {
private static final String AUTH_CODE_PREFIX = "authCode-";
/**
* 获取注册验证码的key
*
......@@ -17,7 +17,7 @@ public class RegisterCodeKeyUtils {
* @return
*/
public static String getRegisterKey(String mobilePhone, String authCode) {
return AUTH_CODE_PREFIX + AESUtil.encryptV0(mobilePhone) +"-"+ authCode;
return Constants.AUTH_CODE_PREFIX + AESUtil.encryptV0(mobilePhone) +"-"+ authCode;
}
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册