Commit b0013bb1 authored by 王亮's avatar 王亮

temp commit(geetest)

parent 186ccd2e
......@@ -19,7 +19,7 @@ public class BehaviorReq {
* 0:h5,1:web,2:app
* @see ClientType
*/
private String clientType;
private Integer clientType;
/**
* 0:账密,1:短验;
......
......@@ -9,7 +9,7 @@ import lombok.Data;
@Data
public class BehaviorCodeBean {
/**
* 0:极验,1: 量化派图形验证码
* 1:极验,2: 量化派图形验证码
* 当客户端给的是极验,但是由于极验不可用的时候,会返回降级量化派图形验证码
*/
private Integer type;
......@@ -24,7 +24,23 @@ public class BehaviorCodeBean {
}
@Data
@Builder
public static class GeetestCode{
/**
* 流水号,一次完整验证流程的唯一标识
*/
private String challenge;
/**
* 向极验申请的账号id
*/
private String gt;
private String reChallenge;
/**
* 新版验证码标识,固定不变
*/
private boolean newCaptcha;
private boolean offline;
}
}
......@@ -33,7 +33,7 @@ public enum ClientType {
}
}
public static ClientType valueByName(Integer code) {
public static ClientType valueByCode(Integer code) {
switch (code) {
case 0:
return H5;
......
......@@ -3,13 +3,24 @@ package cn.quantgroup.xyqb.service.v2;
import cn.quantgroup.xyqb.controller.req.v2.BehaviorReq;
import cn.quantgroup.xyqb.controller.req.v2.ValidateBehavior;
import cn.quantgroup.xyqb.model.BehaviorCodeBean;
import cn.quantgroup.xyqb.model.ClientType;
import cn.quantgroup.xyqb.service.captcha.IGeetestCaptchaService;
import cn.quantgroup.xyqb.util.PasswordUtil;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Map;
import java.util.UUID;
/**
* 极验模式
*/
@Service
public class GeetestBehaviorStrategy implements BehaviorStrategy{
public class GeetestBehaviorStrategy implements BehaviorStrategy {
@Resource
private IGeetestCaptchaService geetestCaptchaService;
@Override
public Integer getType() {
return 1;
......@@ -23,8 +34,21 @@ public class GeetestBehaviorStrategy implements BehaviorStrategy{
@Override
public BehaviorCodeBean generate(BehaviorReq behaviorReq) {
BehaviorCodeBean behaviorCodeBean = new BehaviorCodeBean();
String key = StringUtils.isNotBlank(behaviorReq.getPhone()) ? behaviorReq.getPhone().trim() : UUID.randomUUID().toString();
// key指纹
Map<String, String> imgMap = geetestCaptchaService.fetchGeetestCaptcha(PasswordUtil.MD5(key), behaviorReq.getIp(), ClientType.valueByCode(behaviorReq.getClientType()));
if (imgMap.containsKey("success") && "1".equals(imgMap.get("success"))) {
behaviorCodeBean.setType(1);
behaviorCodeBean.setGeetestCode(BehaviorCodeBean.GeetestCode.builder().gt(imgMap.get("gt"))
.challenge(imgMap.get("challenge"))
.reChallenge(imgMap.get("reChallenge")).
build());
return null;
} else {
behaviorCodeBean.setType(2);
}
return behaviorCodeBean;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment