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

fix an issue.(batch query)

parent b3bf7eb3
package cn.quantgroup.xyqb.controller.api.v2; 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.controller.req.v2.BehaviorReq;
import cn.quantgroup.xyqb.model.BehaviorCodeBean; import cn.quantgroup.xyqb.model.BehaviorCodeBean;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
...@@ -27,4 +28,15 @@ public class BehaviorApiV2Controller { ...@@ -27,4 +28,15 @@ public class BehaviorApiV2Controller {
public JsonResult<BehaviorCodeBean> getCode(@Valid @RequestBody BehaviorReq behaviorReq){ public JsonResult<BehaviorCodeBean> getCode(@Valid @RequestBody BehaviorReq behaviorReq){
return JsonResult.buildSuccessResultGeneric(behaviorContext.generate(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; 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.controller.req.v2.BehaviorReq;
import cn.quantgroup.xyqb.model.BehaviorCodeBean; import cn.quantgroup.xyqb.model.BehaviorCodeBean;
import cn.quantgroup.xyqb.model.JsonResult; import cn.quantgroup.xyqb.model.JsonResult;
...@@ -27,4 +28,15 @@ public class BehaviorV2Controller { ...@@ -27,4 +28,15 @@ public class BehaviorV2Controller {
public JsonResult<BehaviorCodeBean> getCode(@Valid @RequestBody BehaviorReq behaviorReq){ public JsonResult<BehaviorCodeBean> getCode(@Valid @RequestBody BehaviorReq behaviorReq){
return JsonResult.buildSuccessResultGeneric(behaviorContext.generate(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 { ...@@ -31,7 +31,7 @@ public enum BizExceptionEnum {
// 验证码相关 20 开头 // 验证码相关 20 开头
FAIL_GENERATE_IMAGE("2001","生成图片失败"), FAIL_GENERATE_IMAGE("2001","生成图片失败"),
FAIL_VERIFY_CODE("2002","图形验证码错误"), FAIL_VERIFY_CODE("2002","图形验证码验证错误"),
UN_EXIT_VERIFY_TYPE("2003","不存在的验证码方式"), UN_EXIT_VERIFY_TYPE("2003","不存在的验证码方式"),
UN_EXIT_VERIFY_CODE("2004","验证模式下验证码参数不能为空"), UN_EXIT_VERIFY_CODE("2004","验证模式下验证码参数不能为空"),
EX_GET_VERIFY_CODE("2005","获取验证码失败"), EX_GET_VERIFY_CODE("2005","获取验证码失败"),
......
...@@ -24,6 +24,7 @@ public class TokenInterceptor implements HandlerInterceptor { ...@@ -24,6 +24,7 @@ public class TokenInterceptor implements HandlerInterceptor {
public TokenInterceptor(ISessionService sessionService) { public TokenInterceptor(ISessionService sessionService) {
this.sessionService = sessionService; this.sessionService = sessionService;
excludes.add("/v2/oauth/login"); excludes.add("/v2/oauth/login");
excludes.add("/v2/behavior/refresh");
excludes.add("/v2/sms/code"); excludes.add("/v2/sms/code");
excludes.add("/v2/sms/verify"); excludes.add("/v2/sms/verify");
} }
......
package cn.quantgroup.xyqb.service.v2; 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.BehaviorReq;
import cn.quantgroup.xyqb.controller.req.v2.ValidateBehavior; import cn.quantgroup.xyqb.controller.req.v2.ValidateBehavior;
import cn.quantgroup.xyqb.exception.BizException; import cn.quantgroup.xyqb.exception.BizException;
...@@ -27,6 +28,15 @@ public class BehaviorContext { ...@@ -27,6 +28,15 @@ public class BehaviorContext {
} }
return behaviorStrategy.generate(behaviorReq); 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){ public boolean validate(ValidateBehavior validateBehavior){
BehaviorStrategy behaviorStrategy = behaviorStrategyMap.get(validateBehavior.getType()); BehaviorStrategy behaviorStrategy = behaviorStrategyMap.get(validateBehavior.getType());
......
package cn.quantgroup.xyqb.service.v2; 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.BehaviorReq;
import cn.quantgroup.xyqb.controller.req.v2.ValidateBehavior; import cn.quantgroup.xyqb.controller.req.v2.ValidateBehavior;
import cn.quantgroup.xyqb.model.BehaviorCodeBean; import cn.quantgroup.xyqb.model.BehaviorCodeBean;
...@@ -9,4 +10,6 @@ public interface BehaviorStrategy { ...@@ -9,4 +10,6 @@ public interface BehaviorStrategy {
boolean validate(ValidateBehavior validateBehavior); boolean validate(ValidateBehavior validateBehavior);
BehaviorCodeBean generate(BehaviorReq behaviorReq); BehaviorCodeBean generate(BehaviorReq behaviorReq);
BehaviorCodeBean refresh(BehaviorRefreshReq behaviorRefreshReq);
} }
package cn.quantgroup.xyqb.service.v2; package cn.quantgroup.xyqb.service.v2;
import cn.quantgroup.xyqb.Constants; 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.BehaviorReq;
import cn.quantgroup.xyqb.controller.req.v2.ValidateBehavior; import cn.quantgroup.xyqb.controller.req.v2.ValidateBehavior;
import cn.quantgroup.xyqb.entity.GeetestLogEntity; import cn.quantgroup.xyqb.entity.GeetestLogEntity;
...@@ -106,4 +107,9 @@ public class GeetestBehaviorStrategy implements BehaviorStrategy { ...@@ -106,4 +107,9 @@ public class GeetestBehaviorStrategy implements BehaviorStrategy {
} }
return behaviorCodeBean; return behaviorCodeBean;
} }
@Override
public BehaviorCodeBean refresh(BehaviorRefreshReq behaviorRefreshReq) {
throw new UnsupportedOperationException();
}
} }
package cn.quantgroup.xyqb.service.v2; package cn.quantgroup.xyqb.service.v2;
import cn.quantgroup.xyqb.Constants; 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.BehaviorReq;
import cn.quantgroup.xyqb.controller.req.v2.ValidateBehavior; import cn.quantgroup.xyqb.controller.req.v2.ValidateBehavior;
import cn.quantgroup.xyqb.exception.BizException; import cn.quantgroup.xyqb.exception.BizException;
...@@ -9,13 +11,19 @@ import cn.quantgroup.xyqb.model.BehaviorCodeBean; ...@@ -9,13 +11,19 @@ import cn.quantgroup.xyqb.model.BehaviorCodeBean;
import cn.quantgroup.xyqb.service.captcha.IQuantgroupCaptchaService; import cn.quantgroup.xyqb.service.captcha.IQuantgroupCaptchaService;
import cn.quantgroup.xyqb.thirdparty.jcaptcha.AbstractManageableImageCaptchaService; import cn.quantgroup.xyqb.thirdparty.jcaptcha.AbstractManageableImageCaptchaService;
import lombok.extern.slf4j.Slf4j; 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.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service; 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.Locale;
import java.util.Map; import java.util.Map;
import java.util.concurrent.TimeUnit;
/** /**
* 公司自有验证码模式 * 公司自有验证码模式
...@@ -41,10 +49,10 @@ public class QuantGroupBehaviorStrategy implements BehaviorStrategy { ...@@ -41,10 +49,10 @@ public class QuantGroupBehaviorStrategy implements BehaviorStrategy {
@Override @Override
public boolean validate(ValidateBehavior validateBehavior) { public boolean validate(ValidateBehavior validateBehavior) {
boolean result = quantgroupCaptchaService.validQuantgroupCaptcha(validateBehavior.getData().get(Constants.X_BEHAVIOR_ID),validateBehavior.getData().get(Constants.X_BEHAVIOR_IMAGEVALUE)); boolean result = quantgroupCaptchaService.validQuantgroupCaptcha(validateBehavior.getData().get(Constants.X_BEHAVIOR_ID), validateBehavior.getData().get(Constants.X_BEHAVIOR_IMAGEVALUE));
if(result){ if (result) {
return true; return true;
}else{ } else {
throw new BizException(BizExceptionEnum.FAIL_VERIFY_CODE); throw new BizException(BizExceptionEnum.FAIL_VERIFY_CODE);
} }
} }
...@@ -61,4 +69,22 @@ public class QuantGroupBehaviorStrategy implements BehaviorStrategy { ...@@ -61,4 +69,22 @@ public class QuantGroupBehaviorStrategy implements BehaviorStrategy {
behaviorCodeBean.setId(challenge.get("imageId")); behaviorCodeBean.setId(challenge.get("imageId"));
return behaviorCodeBean; 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