提交 4ac45eb6 编写于 作者:  Peijun.zhao's avatar Peijun.zhao

Merge branch 'hotfix-1104' into 'release'

Hotfix 1104



See merge request !59
流水线 #32012 已失败 于阶段
in 0 second
...@@ -334,6 +334,18 @@ public class LoginController extends AccountBaseController { ...@@ -334,6 +334,18 @@ public class LoginController extends AccountBaseController {
return PicaResponse.toResponse(loginService.loginByAppleStep(request)); return PicaResponse.toResponse(loginService.loginByAppleStep(request));
} }
@ApiOperation(value = "苹果登录-跳过绑定-静默注册")
@PostMapping("/login/apple/skip/register")
public PicaResponse appleSkipRegister(@RequestBody EncryptEntity entity) throws Exception{
BaseRequest request = CryptoUtil.decrypt(entity, BaseRequest.class);
request.setProductType(super.getProductType());
request.setSourceType(super.getSourceType());
request.setLoginIp(super.getIpAddr());
request.setUserTokenTourist(super.getUserTokenTourist());
logger.info("appleSkipRegister:{}",JSONObject.toJSONString(request));
return PicaResponse.toResponse(loginService.appleSkipRegister(request));
}
@ApiOperation(value = "app端手机号码一键登录") @ApiOperation(value = "app端手机号码一键登录")
@PostMapping("/login/one-click") @PostMapping("/login/one-click")
......
...@@ -44,6 +44,33 @@ public class ModifyMobileController extends AccountBaseController { ...@@ -44,6 +44,33 @@ public class ModifyMobileController extends AccountBaseController {
@ApiOperation("修改手机号") @ApiOperation("修改手机号")
@PostMapping("/mobile/modify") @PostMapping("/mobile/modify")
@EnabledLoginValidate @EnabledLoginValidate
public PicaResponse modifyMobile(@RequestBody EncryptEntity entity) throws Exception {
// Long doctorId = super.getDoctorIdByToken();
// Doctor doctorInfo = doctorService.getDoctorInfo(doctorId.intValue());
//旧的手机号
// String mobilePhone = doctorInfo.getMobilePhone();
// Integer acctId = modifyMobileService.getAcctIdByMobile(mobilePhone);
BaseRequest request = CryptoUtil.decrypt(entity, BaseRequest.class);
//新的手机号
String newMobile = request.getMobile();
accountUtils.checkMobilePhoneAndAuthCode(newMobile, AccountTypeEnum.SYSCODE_TYPE_MODIFY_MOBILE.getCode() + "", request.getAuthCode());
//判断当前手机号是否已经注册过
AccountInfoEntity accountInfoEntity = accountService.getAccountByMobilePhone(newMobile);
if (accountInfoEntity == null) {
Long doctorId = super.getDoctorIdByToken();
Doctor doctorInfo = doctorService.getDoctorInfo(doctorId.intValue());
modifyMobileService.recodeMobileModify(doctorInfo.getAcctId(),doctorInfo.getMobilePhone(),newMobile);
modifyMobileService.modify(doctorInfo.getAcctId(), newMobile);
return PicaResponse.toResponse();
} else {
return PicaResponse.toResponse(null,AccountExceptionEnum.PICA_ALREADY_REGISTER.getCode(),AccountExceptionEnum.PICA_ALREADY_REGISTER.getMessage());
}
}
/*@ApiOperation("修改手机号")
@PostMapping("/mobile/modify2")
@EnabledLoginValidate
public PicaResponse modifyMobile(@RequestBody EncryptEntity entity) throws Exception { public PicaResponse modifyMobile(@RequestBody EncryptEntity entity) throws Exception {
Long doctorId = super.getDoctorIdByToken(); Long doctorId = super.getDoctorIdByToken();
Doctor doctorInfo = doctorService.getDoctorInfo(doctorId.intValue()); Doctor doctorInfo = doctorService.getDoctorInfo(doctorId.intValue());
...@@ -63,5 +90,5 @@ public class ModifyMobileController extends AccountBaseController { ...@@ -63,5 +90,5 @@ public class ModifyMobileController extends AccountBaseController {
} 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(),AccountExceptionEnum.PICA_ALREADY_REGISTER.getMessage());
} }
} }*/
} }
...@@ -27,6 +27,8 @@ public class LoginResult { ...@@ -27,6 +27,8 @@ public class LoginResult {
private String mobile; private String mobile;
@ApiModelProperty("用户id,已经加密处理") @ApiModelProperty("用户id,已经加密处理")
private String doctorId; private String doctorId;
@ApiModelProperty("accountinfo表主键id")
private Integer acctId;
public String getToken() { public String getToken() {
...@@ -85,4 +87,11 @@ public class LoginResult { ...@@ -85,4 +87,11 @@ public class LoginResult {
this.doctorId = doctorId; this.doctorId = doctorId;
} }
public Integer getAcctId() {
return acctId;
}
public void setAcctId(Integer acctId) {
this.acctId = acctId;
}
} }
...@@ -95,5 +95,7 @@ public interface LoginService { ...@@ -95,5 +95,7 @@ public interface LoginService {
*/ */
LoginResult loginByAppleStep(BaseRequest request); LoginResult loginByAppleStep(BaseRequest request);
LoginResult appleSkipRegister(BaseRequest request);
int insertLoginAesLog(LogLoginAes aes); int insertLoginAesLog(LogLoginAes aes);
} }
...@@ -5,6 +5,8 @@ import com.alibaba.fastjson.JSON; ...@@ -5,6 +5,8 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.auth0.jwk.Jwk; import com.auth0.jwk.Jwk;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.google.gson.JsonObject;
import com.pica.cloud.account.account.server.constants.Constants; import com.pica.cloud.account.account.server.constants.Constants;
import com.pica.cloud.account.account.server.entity.*; import com.pica.cloud.account.account.server.entity.*;
import com.pica.cloud.account.account.server.enums.AccountExceptionEnum; import com.pica.cloud.account.account.server.enums.AccountExceptionEnum;
...@@ -806,6 +808,11 @@ public class LoginServiceImpl implements LoginService { ...@@ -806,6 +808,11 @@ public class LoginServiceImpl implements LoginService {
PICAPDoctor doctor = doctorInfoMapper.queryDoctor(userId); PICAPDoctor doctor = doctorInfoMapper.queryDoctor(userId);
result.setEntireFlag(doctor.getEntire_flag()); result.setEntireFlag(doctor.getEntire_flag());
result.setMobile(AESUtil.decryptV0(doctor.getMobile_phone())); result.setMobile(AESUtil.decryptV0(doctor.getMobile_phone()));
//added by joy begin
if(StringUtil.isEmpty(result.getMobile())){
result.setEntireFlag(2); // 传2给native时,跳过完善信息(apple登录用户,手机号为空的,跳过这个页面)
}
//added by joy end
} }
//记录登录日志 //记录登录日志
LogLoginEntity entity = AccountLogEntityUtils.getLogLoginEntity( LogLoginEntity entity = AccountLogEntityUtils.getLogLoginEntity(
...@@ -994,6 +1001,29 @@ public class LoginServiceImpl implements LoginService { ...@@ -994,6 +1001,29 @@ public class LoginServiceImpl implements LoginService {
return result; return result;
} }
/**
* 苹果登录新用户1105后,无绑定手机-》注册
* @param request
* @return
*/
@Override
public LoginResult appleSkipRegister(BaseRequest request) {
LoginResult result = new LoginResult();
if(StringUtil.isNotNull(request.getMobile())){
logger.error("appleSkipRegister,苹果登录新用户 传入手机号有值,错误参数");
return result;
}
//存在安全隐患,产品晓庆已确认,后期再完善 app端拼图,
result = registerService.register(request);
logger.info("appleSkipRegister-register:{}", JSONObject.toJSONString(result));
processAccountUnionApple(result.getAcctId(), request.getAppleUserId());
logger.info("appleSkipRegister-insert-account_apple_info-end");
return result;
}
/** /**
* @Description account_apple_info insert * @Description account_apple_info insert
* @Author Chongwen.jiang * @Author Chongwen.jiang
......
...@@ -17,6 +17,7 @@ import com.pica.cloud.foundation.completeness.client.utils.IntactUtils; ...@@ -17,6 +17,7 @@ import com.pica.cloud.foundation.completeness.client.utils.IntactUtils;
import com.pica.cloud.foundation.encryption.common.constants.EncryptConstants; import com.pica.cloud.foundation.encryption.common.constants.EncryptConstants;
import com.pica.cloud.foundation.encryption.util.EncryptUtils; import com.pica.cloud.foundation.encryption.util.EncryptUtils;
import com.pica.cloud.foundation.redis.ICacheClient; import com.pica.cloud.foundation.redis.ICacheClient;
import com.pica.cloud.foundation.utils.utils.StringUtil;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
...@@ -80,6 +81,9 @@ public class RegisterServiceImpl implements RegisterService { ...@@ -80,6 +81,9 @@ public class RegisterServiceImpl implements RegisterService {
String batchNo = IntactUtils.getUUID(); String batchNo = IntactUtils.getUUID();
intactUtil.sendIntact(batchNo,"register",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_1,"baseRequest:"+ JSON.toJSONString(baseRequest)+",queryMobileEntity:"+JSON.toJSONString(queryMobileEntity)); intactUtil.sendIntact(batchNo,"register",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_1,"baseRequest:"+ JSON.toJSONString(baseRequest)+",queryMobileEntity:"+JSON.toJSONString(queryMobileEntity));
String mobile = baseRequest.getMobile(); String mobile = baseRequest.getMobile();
if(StringUtil.isEmpty(mobile)){
mobile = "";
}
//对注册接口做幂等性处理:注册成功,删除缓存,注册失败提示用户 //对注册接口做幂等性处理:注册成功,删除缓存,注册失败提示用户
String nxKey = Constants.REPEAT_REGISTER_PREFIX + mobile; String nxKey = Constants.REPEAT_REGISTER_PREFIX + mobile;
Long resultNx = redisClient.setnx(nxKey, mobile); Long resultNx = redisClient.setnx(nxKey, mobile);
...@@ -88,6 +92,12 @@ public class RegisterServiceImpl implements RegisterService { ...@@ -88,6 +92,12 @@ public class RegisterServiceImpl implements RegisterService {
//try { //try {
String mobileEncrypt = AESUtil.encryptV0(mobile); String mobileEncrypt = AESUtil.encryptV0(mobile);
AccountInfoEntity accountInfoEntity = accountInfoDetailMapper.selectByMobile(mobileEncrypt); AccountInfoEntity accountInfoEntity = accountInfoDetailMapper.selectByMobile(mobileEncrypt);
//added by joy begin 适配苹果登录 手机号为空传入,过审核
if(StringUtil.isEmpty(mobile)){
mobileEncrypt = "";
accountInfoEntity = null;
}
//added by joy end
if (accountInfoEntity == null) { if (accountInfoEntity == null) {
redisClient.expire(nxKey, 30); redisClient.expire(nxKey, 30);
Date currentTime = new Date(); Date currentTime = new Date();
...@@ -143,6 +153,7 @@ public class RegisterServiceImpl implements RegisterService { ...@@ -143,6 +153,7 @@ public class RegisterServiceImpl implements RegisterService {
result.setEntireFlag(1); result.setEntireFlag(1);
result.setDoctorId(EncryptUtils.encryptContent(userId + "", EncryptConstants.ENCRYPT_TYPE_ID)); result.setDoctorId(EncryptUtils.encryptContent(userId + "", EncryptConstants.ENCRYPT_TYPE_ID));
result.setMobile(mobile); result.setMobile(mobile);
result.setAcctId(acctId);
LogLoginEntity entity = AccountLogEntityUtils.getLogLoginEntity(acctId, productType, baseRequest.getSourceType(), LogLoginEntity entity = AccountLogEntityUtils.getLogLoginEntity(acctId, productType, baseRequest.getSourceType(),
AccountTypeEnum.LOGIN_REGISTER.getCode(), baseRequest.getLoginIp(), AccountTypeEnum.LOGIN_STATUS_SUCCESS.getCode(), AccountTypeEnum.LOGIN_REGISTER.getCode(), baseRequest.getLoginIp(), AccountTypeEnum.LOGIN_STATUS_SUCCESS.getCode(),
AccountTypeEnum.LOG_TYPE_LOGIN.getCode(),newToken,1,baseRequest.getUserTokenTourist()); AccountTypeEnum.LOG_TYPE_LOGIN.getCode(),newToken,1,baseRequest.getUserTokenTourist());
......
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册