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

201911017 注册接口幂等性校验

上级 1dd0b78f
流水线 #15943 已失败 于阶段
in 0 second
......@@ -2,16 +2,21 @@ package com.pica.cloud.account.account.server.controller;
import com.pica.cloud.account.account.server.entity.EncryptEntity;
import com.pica.cloud.account.account.server.entity.LoginResult;
import com.pica.cloud.account.account.server.enums.AccountExceptionEnum;
import com.pica.cloud.account.account.server.enums.AccountTypeEnum;
import com.pica.cloud.account.account.server.exception.AccountException;
import com.pica.cloud.account.account.server.req.BaseRequest;
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.util.AccountUtils;
import com.pica.cloud.account.account.server.util.CryptoUtil;
import com.pica.cloud.foundation.entity.PicaResponse;
import com.pica.cloud.foundation.redis.ICacheClient;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
......@@ -22,31 +27,47 @@ import org.springframework.web.bind.annotation.RestController;
@RequestMapping("/register")
public class RegisterController extends AccountBaseController {
private final String REPEAT_REGISTER_PREFIX = "repeat-register—";
@Autowired
private RegisterService registerService;
@Autowired
private AccountUtils accountUtils;
@Autowired
@Qualifier("cacheMigrateClient")
private ICacheClient redisClient;
@ApiOperation("PC端,移动端注册接口")
@PostMapping(value = "")
public PicaResponse<LoginResult> register(@RequestBody EncryptEntity entity) throws Exception {
BaseRequest request = CryptoUtil.decrypt(entity, BaseRequest.class);
accountUtils.checkMobilePhoneAndAuthCode(request.getMobile(),AccountTypeEnum.SYSCODE_TYPE_REGISTER.getCode()+"", request.getAuthCode());
accountUtils.checkPassword(request.getPassword());
request.setFlag(AccountTypeEnum.SYSCODE_TYPE_REGISTER.getCode());
request.setProductType(super.getProductType());
request.setSourceType(super.getSourceType());
request.setLoginIp(super.getIpAddr());
LoginResult result = registerService.register(request);
return PicaResponse.toResponse(result);
String mobile = request.getMobile();
//接口幂等性处理(redis中没有就进行注册逻辑,如果已经存在,就不处理)
String exist = redisClient.get(REPEAT_REGISTER_PREFIX + mobile);
if (StringUtils.isBlank(exist)){
redisClient.set(REPEAT_REGISTER_PREFIX + mobile,mobile);
accountUtils.checkMobilePhoneAndAuthCode(mobile,AccountTypeEnum.SYSCODE_TYPE_REGISTER.getCode()+"", request.getAuthCode());
accountUtils.checkPassword(request.getPassword());
request.setFlag(AccountTypeEnum.SYSCODE_TYPE_REGISTER.getCode());
request.setProductType(super.getProductType());
request.setSourceType(super.getSourceType());
request.setLoginIp(super.getIpAddr());
LoginResult result = registerService.register(request);
redisClient.del(REPEAT_REGISTER_PREFIX + mobile);
return PicaResponse.toResponse(result);
}else{
return PicaResponse.toResponse(null,AccountExceptionEnum.PICA_ALREADY_REGISTER.getCode(),AccountExceptionEnum.PICA_ALREADY_REGISTER.getMessage());
}
}
//"sourceType":6 表示长海项目
@ApiOperation("OCIN项目")
@PostMapping(value = "/ocin")
public PicaResponse register(@RequestBody OCINRequest ocinRequest) throws Exception {
registerService.ocinRegister(ocinRequest);
return PicaResponse.toResponse();
public PicaResponse register(@RequestBody OCINRequest ocinRequest) {
PicaResponse picaResponse = registerService.ocinRegister(ocinRequest);
return picaResponse;
}
}
......@@ -72,4 +72,11 @@ public interface DoctorMapper {
int unbindWeChat(@Param("acctId") int acctId);
PICAPDoctor queryDoctor(long doctorId);
/**
* 通过手机号获取用户id
* @param mobile
* @return
*/
Long selectDoctorIdByMobile(String mobile);
}
\ No newline at end of file
......@@ -3,6 +3,7 @@ package com.pica.cloud.account.account.server.service;
import com.pica.cloud.account.account.server.entity.LoginResult;
import com.pica.cloud.account.account.server.req.BaseRequest;
import com.pica.cloud.account.account.common.req.OCINRequest;
import com.pica.cloud.foundation.entity.PicaResponse;
public interface RegisterService {
......@@ -21,7 +22,7 @@ public interface RegisterService {
*
* @param request
*/
void ocinRegister(OCINRequest request);
PicaResponse ocinRegister(OCINRequest request);
}
......@@ -18,6 +18,7 @@ import com.pica.cloud.account.account.server.util.ExecutorServiceUtils;
import com.pica.cloud.account.account.server.util.TokenUtils;
import com.pica.cloud.base.doctor.doctor.client.DoctorServiceClient;
import com.pica.cloud.base.doctor.doctor.common.req.PrefectInfoReq;
import com.pica.cloud.foundation.entity.PicaResponse;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
......@@ -33,7 +34,7 @@ import java.util.concurrent.ExecutorService;
@Service
public class RegisterServiceImpl implements RegisterService {
private Logger logger= LoggerFactory.getLogger(this.getClass());
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private AccountInfoDetailMapper accountInfoDetailMapper;
......@@ -65,6 +66,9 @@ public class RegisterServiceImpl implements RegisterService {
@Autowired
private DoctorServiceClient doctorServiceClient;
@Autowired
private DoctorMapper doctorMapper;
/**
* 1)注册功能:默认未完善信息;
* 2)注册成功后发送mq消息,让别的服务初始化数据;
......@@ -78,7 +82,6 @@ public class RegisterServiceImpl implements RegisterService {
String mobile = baseRequest.getMobile();
String mobileEncrypt = AESUtil.encryptV0(mobile);
AccountInfoEntity accountInfoEntity = accountInfoDetailMapper.selectByMobile(mobileEncrypt);
if (accountInfoEntity == null) {
Date currentTime = new Date();
int productType = baseRequest.getProductType();
......@@ -159,13 +162,14 @@ public class RegisterServiceImpl implements RegisterService {
/**
* 长海项目医生自动注册,并完善信息
*
* @param request
*/
@Override
public void ocinRegister(OCINRequest request) {
public PicaResponse ocinRegister(OCINRequest request) {
String mobile = request.getMobile();
AccountInfoEntity accountInfoEntity = accountInfoDetailMapper.selectByMobile(mobile);
if (accountInfoEntity==null){
if (accountInfoEntity == null) {
Date currentTime = new Date();
int productType = request.getProductType();
int sourceType = request.getSourceType();
......@@ -203,10 +207,11 @@ public class RegisterServiceImpl implements RegisterService {
prefectInfoReq.setHospitalId(request.getHospitalId().longValue());
prefectInfoReq.setName(request.getName());
doctorServiceClient.prefectInfo(prefectInfoReq);
}else{
throw new AccountException(AccountExceptionEnum.PICA_ALREADY_REGISTER);
return PicaResponse.toResponse();
} else {
Long id = doctorMapper.selectDoctorIdByMobile(mobile);
return PicaResponse.toResponse(id, AccountExceptionEnum.PICA_ALREADY_REGISTER.getCode(), AccountExceptionEnum.PICA_ALREADY_REGISTER.getCode());
}
}
/**
......
......@@ -82,6 +82,14 @@
and delete_flag = 1
</select>
<!--通过手机号查询用户id-->
<select id="selectDoctorIdByMobile" parameterType="java.lang.String" resultType="java.lang.Long">
SELECT id
FROM p_doctor
where mobile_phone = #{mobile}
and delete_flag = 1
</select>
<!--通过手机号码查询医生信息-->
<select id="getDoctorInfoByMobile" parameterType="java.lang.String" resultMap="BaseResultMap">
SELECT <include refid="Base_Column_List"/>
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册