Commit 4e6f3b8c authored by 王亮's avatar 王亮

fix an issue.(batch query)

parent b3bf7eb3
package cn.quantgroup.xyqb.controller.api.v2;
import cn.quantgroup.xyqb.controller.req.v2.BehaviorRefreshReq;
import cn.quantgroup.xyqb.controller.req.v2.BehaviorReq;
import cn.quantgroup.xyqb.model.BehaviorCodeBean;
import cn.quantgroup.xyqb.model.JsonResult;
......@@ -27,4 +28,15 @@ public class BehaviorApiV2Controller {
public JsonResult<BehaviorCodeBean> getCode(@Valid @RequestBody BehaviorReq behaviorReq){
return JsonResult.buildSuccessResultGeneric(behaviorContext.generate(behaviorReq));
}
/**
* 统一刷新行为验证码
* @return JsonResult<SMSCodeBean>
* @see <a href="http://yapi.quantgroups.com/project/17/interface/api/65824">统一获取行为验证码</a>
*/
@PostMapping("/refresh")
public JsonResult<BehaviorCodeBean> refreshCode(@Valid @RequestBody BehaviorRefreshReq behaviorRefreshReq){
return JsonResult.buildSuccessResultGeneric(behaviorContext.refresh(behaviorRefreshReq));
}
}
package cn.quantgroup.xyqb.controller.req.v2;
import lombok.Data;
@Data
public class BehaviorRefreshReq {
private String id;
private Integer type;
}
package cn.quantgroup.xyqb.controller.v2;
import cn.quantgroup.xyqb.controller.req.v2.BehaviorRefreshReq;
import cn.quantgroup.xyqb.controller.req.v2.BehaviorReq;
import cn.quantgroup.xyqb.model.BehaviorCodeBean;
import cn.quantgroup.xyqb.model.JsonResult;
......@@ -27,4 +28,15 @@ public class BehaviorV2Controller {
public JsonResult<BehaviorCodeBean> getCode(@Valid @RequestBody BehaviorReq behaviorReq){
return JsonResult.buildSuccessResultGeneric(behaviorContext.generate(behaviorReq));
}
/**
* 统一刷新行为验证码
* @return JsonResult<SMSCodeBean>
* @see <a href="http://yapi.quantgroups.com/project/17/interface/api/65824">统一获取行为验证码</a>
*/
@PostMapping("/refresh")
public JsonResult<BehaviorCodeBean> refreshCode(@Valid @RequestBody BehaviorRefreshReq behaviorReq){
return JsonResult.buildSuccessResultGeneric(behaviorContext.refresh(behaviorReq));
}
}
......@@ -31,7 +31,7 @@ public enum BizExceptionEnum {
// 验证码相关 20 开头
FAIL_GENERATE_IMAGE("2001","生成图片失败"),
FAIL_VERIFY_CODE("2002","图形验证码错误"),
FAIL_VERIFY_CODE("2002","图形验证码验证错误"),
UN_EXIT_VERIFY_TYPE("2003","不存在的验证码方式"),
UN_EXIT_VERIFY_CODE("2004","验证模式下验证码参数不能为空"),
EX_GET_VERIFY_CODE("2005","获取验证码失败"),
......
......@@ -24,6 +24,7 @@ public class TokenInterceptor implements HandlerInterceptor {
public TokenInterceptor(ISessionService sessionService) {
this.sessionService = sessionService;
excludes.add("/v2/oauth/login");
excludes.add("/v2/behavior/refresh");
excludes.add("/v2/sms/code");
excludes.add("/v2/sms/verify");
}
......
package cn.quantgroup.xyqb.service.v2;
import cn.quantgroup.xyqb.controller.req.v2.BehaviorRefreshReq;
import cn.quantgroup.xyqb.controller.req.v2.BehaviorReq;
import cn.quantgroup.xyqb.controller.req.v2.ValidateBehavior;
import cn.quantgroup.xyqb.exception.BizException;
......@@ -27,6 +28,15 @@ public class BehaviorContext {
}
return behaviorStrategy.generate(behaviorReq);
}
public BehaviorCodeBean refresh(BehaviorRefreshReq behaviorRefreshReq){
BehaviorStrategy behaviorStrategy = behaviorStrategyMap.get(behaviorRefreshReq.getType());
if(behaviorStrategy == null){
throw new BizException(BizExceptionEnum.UN_EXIT_VERIFY_TYPE);
}
return behaviorStrategy.refresh(behaviorRefreshReq);
}
public boolean validate(ValidateBehavior validateBehavior){
BehaviorStrategy behaviorStrategy = behaviorStrategyMap.get(validateBehavior.getType());
......
package cn.quantgroup.xyqb.service.v2;
import cn.quantgroup.xyqb.controller.req.v2.BehaviorRefreshReq;
import cn.quantgroup.xyqb.controller.req.v2.BehaviorReq;
import cn.quantgroup.xyqb.controller.req.v2.ValidateBehavior;
import cn.quantgroup.xyqb.model.BehaviorCodeBean;
......@@ -9,4 +10,6 @@ public interface BehaviorStrategy {
boolean validate(ValidateBehavior validateBehavior);
BehaviorCodeBean generate(BehaviorReq behaviorReq);
BehaviorCodeBean refresh(BehaviorRefreshReq behaviorRefreshReq);
}
package cn.quantgroup.xyqb.service.v2;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.controller.req.v2.BehaviorRefreshReq;
import cn.quantgroup.xyqb.controller.req.v2.BehaviorReq;
import cn.quantgroup.xyqb.controller.req.v2.ValidateBehavior;
import cn.quantgroup.xyqb.entity.GeetestLogEntity;
......@@ -106,4 +107,9 @@ public class GeetestBehaviorStrategy implements BehaviorStrategy {
}
return behaviorCodeBean;
}
@Override
public BehaviorCodeBean refresh(BehaviorRefreshReq behaviorRefreshReq) {
throw new UnsupportedOperationException();
}
}
package cn.quantgroup.xyqb.service.v2;
import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.constant.UserConstant;
import cn.quantgroup.xyqb.controller.req.v2.BehaviorRefreshReq;
import cn.quantgroup.xyqb.controller.req.v2.BehaviorReq;
import cn.quantgroup.xyqb.controller.req.v2.ValidateBehavior;
import cn.quantgroup.xyqb.exception.BizException;
......@@ -9,13 +11,19 @@ import cn.quantgroup.xyqb.model.BehaviorCodeBean;
import cn.quantgroup.xyqb.service.captcha.IQuantgroupCaptchaService;
import cn.quantgroup.xyqb.thirdparty.jcaptcha.AbstractManageableImageCaptchaService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Locale;
import java.util.Map;
import java.util.concurrent.TimeUnit;
/**
* 公司自有验证码模式
......@@ -41,11 +49,11 @@ public class QuantGroupBehaviorStrategy implements BehaviorStrategy {
@Override
public boolean validate(ValidateBehavior validateBehavior) {
boolean result = quantgroupCaptchaService.validQuantgroupCaptcha(validateBehavior.getData().get(Constants.X_BEHAVIOR_ID),validateBehavior.getData().get(Constants.X_BEHAVIOR_IMAGEVALUE));
if(result){
boolean result = quantgroupCaptchaService.validQuantgroupCaptcha(validateBehavior.getData().get(Constants.X_BEHAVIOR_ID), validateBehavior.getData().get(Constants.X_BEHAVIOR_IMAGEVALUE));
if (result) {
return true;
}else{
throw new BizException(BizExceptionEnum.FAIL_VERIFY_CODE);
} else {
throw new BizException(BizExceptionEnum.FAIL_VERIFY_CODE);
}
}
......@@ -61,4 +69,22 @@ public class QuantGroupBehaviorStrategy implements BehaviorStrategy {
behaviorCodeBean.setId(challenge.get("imageId"));
return behaviorCodeBean;
}
@Override
public BehaviorCodeBean refresh(BehaviorRefreshReq behaviorRefreshReq) {
BufferedImage challenge = imageCaptchaService.getImageChallengeForID(Constants.IMAGE_CAPTCHA_KEY + behaviorRefreshReq.getId(), Locale.CHINA);
ByteArrayOutputStream jpegOutputStream = new ByteArrayOutputStream();
try {
ImageIO.write(challenge, UserConstant.IMAGE_FORMAT_PNG, jpegOutputStream);
} catch (IOException e) {
throw new BizException(BizExceptionEnum.FAIL_GENERATE_IMAGE);
}
String imageBase64 = Base64.encodeBase64String(jpegOutputStream.toByteArray());
BehaviorCodeBean behaviorCodeBean = new BehaviorCodeBean();
behaviorCodeBean.setId(behaviorRefreshReq.getId());
behaviorCodeBean.setType(2);
behaviorCodeBean.setQtCode(BehaviorCodeBean.QtCode.builder().imageData(String.format(UserConstant.IMG_BASE64_PATTREN, imageBase64)).build());
redisTemplate.opsForValue().set(Constants.IMAGE_CAPTCHA_REDIS_CACHE_KEY.concat(behaviorRefreshReq.getId()), "1", Constants.IMAGE_CAPTCHA_REDIS_CACHE_TIME_OUT, TimeUnit.MINUTES);
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