提交 cb1674e0 编写于 作者: rushui.chen's avatar rushui.chen

20191012 完善图片验证码的逻辑

上级 6d8a3814
流水线 #15727 已失败 于阶段
in 1 second
package com.pica.cloud.account.account.server.controller;
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.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;
import com.pica.cloud.account.account.server.service.CaptchaService;
import com.pica.cloud.account.account.server.util.CryptoUtil;
import com.pica.cloud.foundation.encryption.common.constants.EncryptConstants;
import com.pica.cloud.foundation.encryption.util.EncryptUtils;
import com.pica.cloud.foundation.entity.PicaException;
......@@ -25,12 +28,14 @@ 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;
import java.util.Map;
import java.util.UUID;
/**
* 账号相关controller
*
* @author andong
* @create 2019/5/20
*/
......@@ -50,14 +55,18 @@ public class AccountController extends AccountBaseController {
private ICacheClient redisClient;
@GetMapping("/test")
public String test() {return "test";}
public String test() {
return "test";
}
@ApiOperation("H5端和PC端获取短信验证码")
@PostMapping("/authCode")
public PicaResponse<String> getAuthCode(@ApiParam(value = "手机号", required = true) @RequestParam("mobilePhone") String mobilePhone,
@ApiParam(value = "验证码类型 0默认 1注册 2微信登录绑定手机 3修改手机 4重置密码 5忘记密码") @RequestParam(value = "flag", defaultValue = "0") String flag,
@ApiParam(value = "图形验证码token", required = true) @RequestParam("captchaToken") String captchaToken,
@ApiParam(value = "图形验证码答案", required = true) @RequestParam("captchaAnswer") String captchaAnswer) {
public PicaResponse<String> getAuthCode(@RequestBody EncryptEntity entity) throws Exception {
BaseRequest request = CryptoUtil.decrypt(entity, BaseRequest.class);
String mobilePhone = request.getMobile();
String flag = request.getFlag()+"";
String captchaToken = request.getCaptchaToken();
String captchaAnswer = request.getCaptchaAnswer();
//校验图形验证码
if (!captchaService.acknowledge(captchaToken, captchaAnswer)) {
return PicaResponse.toResponse(null, PicaResultCode.PARAM_IS_INVALID.code(), "图形验证码错误");
......@@ -93,7 +102,7 @@ public class AccountController extends AccountBaseController {
return PicaResponse.toResponse(newToken);
}
// @ApiOperation("密码或验证码登录")
// @ApiOperation("密码或验证码登录")
// @PostMapping("/login")
public PicaResponse<String> login(@RequestBody AccountReq req) {
this.checkMobilePhone(req.getMobilePhone());
......@@ -128,7 +137,7 @@ public class AccountController extends AccountBaseController {
return PicaResponse.toResponse(newToken);
}
// @ApiOperation("注册")
// @ApiOperation("注册")
// @PostMapping("/register")
public PicaResponse<String> register(@RequestBody AccountReq req) {
this.checkMobilePhone(req.getMobilePhone());
......@@ -214,7 +223,7 @@ public class AccountController extends AccountBaseController {
redisClient.del(oldToken);
}
//生成新token
int expiredSeconds = 30*24*60*60; //H5 token有效期30天
int expiredSeconds = 30 * 24 * 60 * 60; //H5 token有效期30天
newToken = UUID.randomUUID().toString().replace("-", "").toUpperCase();
String tokenKey = "token-" + newToken;
redisClient.set(tokenKey, tokenValue, expiredSeconds);
......@@ -226,11 +235,14 @@ public class AccountController extends AccountBaseController {
picaUser.setToken(newToken);
picaUser.setId(account.getId().intValue());
picaUser.setMobile(account.getMobilePhone());
picaUser.setName(EncryptUtils.decryptContent(account.getMobilePhone(), EncryptConstants.ENCRYPT_TYPE_MOBILE, EncryptConstants.ENCRYPT_DECRYPT_KEY).replaceAll("(\\d{3})\\d{4}(\\w{4})","$1****$2"));
picaUser.setName(EncryptUtils.decryptContent(account.getMobilePhone(), EncryptConstants.ENCRYPT_TYPE_MOBILE, EncryptConstants.ENCRYPT_DECRYPT_KEY).replaceAll("(\\d{3})\\d{4}(\\w{4})", "$1****$2"));
picaUser.setCreated_time(account.getCreatTime());
Map<String, String> data = Object2Map.objectToMapString("yyyy-MM-dd HH:mm:ss", picaUser, new String[0]);
data.put("sysCode", "h5");
data.forEach((key, value) -> {value = value == null ? "" : value; redisClient.hset(tokenValue, key, value);});
data.forEach((key, value) -> {
value = value == null ? "" : value;
redisClient.hset(tokenValue, key, value);
});
}
} catch (Exception ex) {
logger.error("生成H5 token异常:{}" + ex.getMessage(), ex);
......
......@@ -30,7 +30,26 @@ public class BaseRequest {
private String weChatCode;
@ApiModelProperty("微信登录类型")
private Integer weChatLoginType;
@ApiModelProperty("图片验证码token")
private String captchaToken;
@ApiModelProperty("图片验证码答案")
private String captchaAnswer;
public String getCaptchaToken() {
return captchaToken;
}
public void setCaptchaToken(String captchaToken) {
this.captchaToken = captchaToken;
}
public String getCaptchaAnswer() {
return captchaAnswer;
}
public void setCaptchaAnswer(String captchaAnswer) {
this.captchaAnswer = captchaAnswer;
}
public Integer getAccId() {
return accId;
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册