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

20191018 注册接口的幂等性处理

上级 3e0ec820
流水线 #16007 已失败 于阶段
in 0 second
...@@ -10,6 +10,7 @@ import com.pica.cloud.account.account.common.req.OCINRequest; ...@@ -10,6 +10,7 @@ import com.pica.cloud.account.account.common.req.OCINRequest;
import com.pica.cloud.account.account.server.service.RegisterService; import com.pica.cloud.account.account.server.service.RegisterService;
import com.pica.cloud.account.account.server.util.AccountUtils; import com.pica.cloud.account.account.server.util.AccountUtils;
import com.pica.cloud.account.account.server.util.CryptoUtil; import com.pica.cloud.account.account.server.util.CryptoUtil;
import com.pica.cloud.foundation.entity.PicaException;
import com.pica.cloud.foundation.entity.PicaResponse; import com.pica.cloud.foundation.entity.PicaResponse;
import com.pica.cloud.foundation.redis.ICacheClient; import com.pica.cloud.foundation.redis.ICacheClient;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -22,7 +23,7 @@ import org.springframework.web.bind.annotation.RequestBody; ...@@ -22,7 +23,7 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@Api(description="注册资源") @Api(description = "注册资源")
@RestController @RestController
@RequestMapping("/register") @RequestMapping("/register")
public class RegisterController extends AccountBaseController { public class RegisterController extends AccountBaseController {
...@@ -47,19 +48,28 @@ public class RegisterController extends AccountBaseController { ...@@ -47,19 +48,28 @@ public class RegisterController extends AccountBaseController {
String mobile = request.getMobile(); String mobile = request.getMobile();
//接口幂等性处理(redis中没有就进行注册逻辑,如果已经存在,就不处理) //接口幂等性处理(redis中没有就进行注册逻辑,如果已经存在,就不处理)
String exist = redisClient.get(REPEAT_REGISTER_PREFIX + mobile); String exist = redisClient.get(REPEAT_REGISTER_PREFIX + mobile);
if (StringUtils.isBlank(exist)){ if (StringUtils.isBlank(exist)) {
redisClient.set(REPEAT_REGISTER_PREFIX + mobile,mobile); accountUtils.checkMobilePhoneAndAuthCode(mobile, AccountTypeEnum.SYSCODE_TYPE_REGISTER.getCode() + "", request.getAuthCode());
accountUtils.checkMobilePhoneAndAuthCode(mobile,AccountTypeEnum.SYSCODE_TYPE_REGISTER.getCode()+"", request.getAuthCode());
accountUtils.checkPassword(request.getPassword()); accountUtils.checkPassword(request.getPassword());
request.setFlag(AccountTypeEnum.SYSCODE_TYPE_REGISTER.getCode()); redisClient.set(REPEAT_REGISTER_PREFIX + mobile, mobile, 30);
request.setProductType(super.getProductType()); LoginResult result = null;
request.setSourceType(super.getSourceType()); try {
request.setLoginIp(super.getIpAddr()); request.setFlag(AccountTypeEnum.SYSCODE_TYPE_REGISTER.getCode());
LoginResult result = registerService.register(request); request.setProductType(super.getProductType());
request.setSourceType(super.getSourceType());
request.setLoginIp(super.getIpAddr());
result = registerService.register(request);
} catch (Exception e) {
//向上抛出异常,让异常处理框架捕获到
throw new AccountException(AccountExceptionEnum.PICA_REGISTER_FAIL);
} finally {
//如果在注册过程中抛出异常,就删除redis中的注册标记
redisClient.del(REPEAT_REGISTER_PREFIX + mobile);
}
redisClient.del(REPEAT_REGISTER_PREFIX + mobile); redisClient.del(REPEAT_REGISTER_PREFIX + mobile);
return PicaResponse.toResponse(result); return PicaResponse.toResponse(result);
}else{ } else {
return PicaResponse.toResponse(null,AccountExceptionEnum.PICA_ALREADY_REGISTER.getCode(),AccountExceptionEnum.PICA_ALREADY_REGISTER.getMessage()); return PicaResponse.toResponse(null, AccountExceptionEnum.PICA_ALREADY_REGISTER.getCode(), "正在注册中,请勿重复提交");
} }
} }
......
...@@ -24,7 +24,8 @@ public enum AccountExceptionEnum { ...@@ -24,7 +24,8 @@ public enum AccountExceptionEnum {
PICA_MOBILE_SAME("216516", "新手机号与旧手机号不能相同"), PICA_MOBILE_SAME("216516", "新手机号与旧手机号不能相同"),
PICA_PARAMS_ERROR("216517", "传递参数有误"), PICA_PARAMS_ERROR("216517", "传递参数有误"),
PICA_SYSCODE_RETRY("216518", "请X秒后重试"), PICA_SYSCODE_RETRY("216518", "请X秒后重试"),
PICA_NOT_EXIST("216519", "该用户不存在"); PICA_NOT_EXIST("216519", "该用户不存在"),
PICA_REGISTER_FAIL("216520", "注册失败");
private String code; private String code;
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册