提交 95b5f8fa 编写于 作者: yujiao's avatar yujiao

事务一致性提交

上级 3bd6069b
流水线 #25927 已失败 于阶段
in 0 second
...@@ -77,6 +77,28 @@ ...@@ -77,6 +77,28 @@
</exclusions> </exclusions>
</dependency> </dependency>
<dependency>
<groupId>com.pica.cloud.foundation</groupId>
<artifactId>pica-cloud-completeness-client</artifactId>
<version>1.0.0.0</version>
<exclusions>
<exclusion>
<groupId>com.pica.cloud.foundation</groupId>
<artifactId>pica-cloud-service-starter</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--<dependency>-->
<!--<groupId>io.springfox</groupId>-->
<!--<artifactId>springfox-swagger2</artifactId>-->
<!--<version>2.8.0</version>-->
<!--</dependency>-->
<!--<dependency>-->
<!--<groupId>io.springfox</groupId>-->
<!--<artifactId>springfox-swagger-ui</artifactId>-->
<!--<version>2.8.0</version>-->
<!--</dependency>-->
<!--<dependency> <!--<dependency>
<groupId>org.springframework.cloud</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rabbit</artifactId> <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
...@@ -112,14 +134,6 @@ ...@@ -112,14 +134,6 @@
</dependency> </dependency>
<!--zipkin dependencies begin--> <!--zipkin dependencies begin-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>
<dependency> <dependency>
<groupId>com.pica.cloud.account</groupId> <groupId>com.pica.cloud.account</groupId>
...@@ -195,6 +209,7 @@ ...@@ -195,6 +209,7 @@
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.pica.cloud.foundation</groupId> <groupId>com.pica.cloud.foundation</groupId>
<artifactId>pica-cloud-proof-client</artifactId> <artifactId>pica-cloud-proof-client</artifactId>
......
...@@ -8,7 +8,9 @@ import com.pica.cloud.account.account.server.constants.Constants; ...@@ -8,7 +8,9 @@ import com.pica.cloud.account.account.server.constants.Constants;
import com.pica.cloud.account.account.server.entity.AccountUser; import com.pica.cloud.account.account.server.entity.AccountUser;
import com.pica.cloud.account.account.server.enums.AccountExceptionEnum; import com.pica.cloud.account.account.server.enums.AccountExceptionEnum;
import com.pica.cloud.account.account.server.exception.AccountException; import com.pica.cloud.account.account.server.exception.AccountException;
import com.pica.cloud.account.account.server.util.IntactUtil;
import com.pica.cloud.account.account.server.util.PICAPSendMsgModel; import com.pica.cloud.account.account.server.util.PICAPSendMsgModel;
import com.pica.cloud.foundation.completeness.client.utils.IntactUtils;
import com.pica.cloud.foundation.entity.PicaException; 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.entity.PicaResultCode; import com.pica.cloud.foundation.entity.PicaResultCode;
...@@ -44,6 +46,9 @@ public abstract class AccountBaseController extends BaseController { ...@@ -44,6 +46,9 @@ public abstract class AccountBaseController extends BaseController {
@Autowired @Autowired
private PropertiesConfiguration configuration; private PropertiesConfiguration configuration;
@Autowired
private IntactUtil intactUtil;
//从token获取医生ID //从token获取医生ID
public long getDoctorIdByToken() { public long getDoctorIdByToken() {
try { try {
...@@ -111,6 +116,9 @@ public abstract class AccountBaseController extends BaseController { ...@@ -111,6 +116,9 @@ public abstract class AccountBaseController extends BaseController {
//发送手机短信 //发送手机短信
public void sendMobileMessage(String mobile, String content, long senderId) { public void sendMobileMessage(String mobile, String content, long senderId) {
//接入新旭事务一致性
String batchNo = IntactUtils.getUUID();
intactUtil.sendIntact(batchNo,"sendMobileMessage",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_1,"mobile:"+mobile+",content:"+content+",senderId:"+senderId);
String sysCodeStr = super.getSysCode(); String sysCodeStr = super.getSysCode();
int sysCode = 10; //默认移动端 int sysCode = 10; //默认移动端
if (StringUtils.isNotBlank(sysCodeStr)) { if (StringUtils.isNotBlank(sysCodeStr)) {
...@@ -146,6 +154,8 @@ public abstract class AccountBaseController extends BaseController { ...@@ -146,6 +154,8 @@ public abstract class AccountBaseController extends BaseController {
logger.info("sendMobileTo-mobile:{}, senderId-{}",mobile, senderId); logger.info("sendMobileTo-mobile:{}, senderId-{}",mobile, senderId);
long start = System.currentTimeMillis(); long start = System.currentTimeMillis();
String jsonObj = HttpClientUtil.httpExecute(messageUrl, postData); String jsonObj = HttpClientUtil.httpExecute(messageUrl, postData);
intactUtil.sendIntact(batchNo,"sendMobileMessage",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"jsonObj:"+jsonObj);
long end1 = System.currentTimeMillis(); long end1 = System.currentTimeMillis();
logger.info("sendMobileMessage-send message used {} million seconds", end1-start); logger.info("sendMobileMessage-send message used {} million seconds", end1-start);
logger.info("sendMobileTo-{}", jsonObj); logger.info("sendMobileTo-{}", jsonObj);
......
package com.pica.cloud.account.account.server.controller; package com.pica.cloud.account.account.server.controller;
import com.alibaba.fastjson.JSON;
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.Account; 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.entity.EncryptEntity;
...@@ -11,6 +12,8 @@ import com.pica.cloud.account.account.server.service.AccountService; ...@@ -11,6 +12,8 @@ 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.service.CaptchaService;
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.account.account.server.util.IntactUtil;
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.entity.PicaException; import com.pica.cloud.foundation.entity.PicaException;
...@@ -55,6 +58,8 @@ public class AccountController extends AccountBaseController { ...@@ -55,6 +58,8 @@ public class AccountController extends AccountBaseController {
private ICacheClient redisClient; private ICacheClient redisClient;
@Autowired @Autowired
private AccountUtils accountUtils; private AccountUtils accountUtils;
@Autowired
private IntactUtil intactUtil;
@GetMapping("/test") @GetMapping("/test")
public String test() { public String test() {
...@@ -105,18 +110,25 @@ public class AccountController extends AccountBaseController { ...@@ -105,18 +110,25 @@ public class AccountController extends AccountBaseController {
@ApiOperation("微信登录") @ApiOperation("微信登录")
@PostMapping("/login/wechat") @PostMapping("/login/wechat")
public PicaResponse<String> wechatLogin(@RequestBody AccountReq req) { public PicaResponse<String> wechatLogin(@RequestBody AccountReq req) {
//接入新旭事务一致性
String batchNo = IntactUtils.getUUID();
intactUtil.sendIntact(batchNo,"wechatLogin",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_1,"req:"+ JSON.toJSONString(req));
if (StringUtils.isBlank(req.getUnionid())) { if (StringUtils.isBlank(req.getUnionid())) {
intactUtil.sendIntact(batchNo,"wechatLogin",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"确认unionId");
return PicaResponse.toResponse(null, PicaResultCode.PARAM_IS_INVALID.code(), "缺少unionid"); return PicaResponse.toResponse(null, PicaResultCode.PARAM_IS_INVALID.code(), "缺少unionid");
} }
Account account = accountService.getByUnionid(req.getUnionid()); //获取账号信息 Account account = accountService.getByUnionid(req.getUnionid()); //获取账号信息
if (account == null) { if (account == null) {
intactUtil.sendIntact(batchNo,"wechatLogin",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"该unionid未绑定云鹊医账号");
return PicaResponse.toResponse(null, PicaResultCode.RESULE_DATA_NONE.code(), "该unionid未绑定云鹊医账号"); return PicaResponse.toResponse(null, PicaResultCode.RESULE_DATA_NONE.code(), "该unionid未绑定云鹊医账号");
} }
//已经绑定过云鹊医账号,登录成功,返回token //已经绑定过云鹊医账号,登录成功,返回token
String deviceType = super.getDeviceInfo("device_type"); //1:pc 2:android 3:ios String deviceType = super.getDeviceInfo("device_type"); //1:pc 2:android 3:ios
String newToken = this.generateToken(account, deviceType); String newToken = this.generateToken(account, deviceType);
intactUtil.sendIntact(batchNo,"wechatLogin",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"req:"+ JSON.toJSONString(req));
return PicaResponse.toResponse(newToken); return PicaResponse.toResponse(newToken);
} }
...@@ -124,16 +136,22 @@ public class AccountController extends AccountBaseController { ...@@ -124,16 +136,22 @@ public class AccountController extends AccountBaseController {
@PostMapping("/login") @PostMapping("/login")
public PicaResponse<String> login(@RequestBody AccountReq req) { public PicaResponse<String> login(@RequestBody AccountReq req) {
this.checkMobilePhone(req.getMobilePhone()); this.checkMobilePhone(req.getMobilePhone());
//接入新旭事务一致性
String batchNo = IntactUtils.getUUID();
intactUtil.sendIntact(batchNo,"login",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_1,"req:"+ JSON.toJSONString(req));
Account account = accountService.getByMobilePhone(req.getMobilePhone()); //获取账号信息 Account account = accountService.getByMobilePhone(req.getMobilePhone()); //获取账号信息
if (account == null) { if (account == null) {
intactUtil.sendIntact(batchNo,"login",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"未注册,请验证码登录");
return PicaResponse.toResponse(null, PicaResultCode.RESULE_DATA_NONE.code(), "未注册,请验证码登录"); return PicaResponse.toResponse(null, PicaResultCode.RESULE_DATA_NONE.code(), "未注册,请验证码登录");
} }
if (StringUtils.isBlank(req.getPassword())) { //验证码登录 if (StringUtils.isBlank(req.getPassword())) { //验证码登录
req.setFlag("0"); req.setFlag("0");
intactUtil.sendIntact(batchNo,"login",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"校验验证码前的返回,因为验证码可能校验不通过,就直接返回了");
this.checkAuthCode(req); //校验验证码 this.checkAuthCode(req); //校验验证码
} else { //密码登录 } else { //密码登录
if (!StringUtils.equals(req.getPassword(), account.getPassword())) { if (!StringUtils.equals(req.getPassword(), account.getPassword())) {
intactUtil.sendIntact(batchNo,"login",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"请输入正确的密码");
return PicaResponse.toResponse(null, PicaResultCode.PARAM_IS_INVALID.code(), "请输入正确的密码"); return PicaResponse.toResponse(null, PicaResultCode.PARAM_IS_INVALID.code(), "请输入正确的密码");
} }
} }
...@@ -152,6 +170,7 @@ public class AccountController extends AccountBaseController { ...@@ -152,6 +170,7 @@ public class AccountController extends AccountBaseController {
//登录成功,清除旧token,生成新token //登录成功,清除旧token,生成新token
String deviceType = super.getDeviceInfo("device_type"); //1:pc 2:android 3:ios String deviceType = super.getDeviceInfo("device_type"); //1:pc 2:android 3:ios
String newToken = this.generateToken(account, deviceType); String newToken = this.generateToken(account, deviceType);
intactUtil.sendIntact(batchNo,"login",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"req:"+ JSON.toJSONString(req));
return PicaResponse.toResponse(newToken); return PicaResponse.toResponse(newToken);
} }
...@@ -160,6 +179,9 @@ public class AccountController extends AccountBaseController { ...@@ -160,6 +179,9 @@ public class AccountController extends AccountBaseController {
public PicaResponse<LoginResult> register(@RequestBody AccountReq req) { public PicaResponse<LoginResult> register(@RequestBody AccountReq req) {
this.checkMobilePhone(req.getMobilePhone()); this.checkMobilePhone(req.getMobilePhone());
accountUtils.checkRegisterMobilePhoneAndAuthCode(req.getMobilePhone(),req.getFlag(),req.getAuthCode()); accountUtils.checkRegisterMobilePhoneAndAuthCode(req.getMobilePhone(),req.getFlag(),req.getAuthCode());
//接入新旭事务一致性
String batchNo = IntactUtils.getUUID();
intactUtil.sendIntact(batchNo,"register",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_1,"req:"+ JSON.toJSONString(req));
String deviceType = super.getDeviceInfo("device_type"); //1:pc 2:android 3:ios String deviceType = super.getDeviceInfo("device_type"); //1:pc 2:android 3:ios
Account account = new Account(); Account account = new Account();
account.setMobilePhone(EncryptUtils.encryptContent(req.getMobilePhone(), EncryptConstants.ENCRYPT_TYPE_MOBILE)); account.setMobilePhone(EncryptUtils.encryptContent(req.getMobilePhone(), EncryptConstants.ENCRYPT_TYPE_MOBILE));
...@@ -184,6 +206,7 @@ public class AccountController extends AccountBaseController { ...@@ -184,6 +206,7 @@ public class AccountController extends AccountBaseController {
LoginResult result = new LoginResult(); LoginResult result = new LoginResult();
result.setToken(newToken); result.setToken(newToken);
intactUtil.sendIntact(batchNo,"register",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"req:"+ JSON.toJSONString(req));
return PicaResponse.toResponse(result); return PicaResponse.toResponse(result);
} }
...@@ -193,6 +216,9 @@ public class AccountController extends AccountBaseController { ...@@ -193,6 +216,9 @@ public class AccountController extends AccountBaseController {
public PicaResponse loginRegister(@RequestBody EncryptEntity entity) throws Exception { public PicaResponse loginRegister(@RequestBody EncryptEntity entity) throws Exception {
BaseRequest request = CryptoUtil.decrypt(entity, BaseRequest.class); BaseRequest request = CryptoUtil.decrypt(entity, BaseRequest.class);
this.checkMobilePhone(request.getMobile()); this.checkMobilePhone(request.getMobile());
//接入新旭事务一致性
String batchNo = IntactUtils.getUUID();
intactUtil.sendIntact(batchNo,"loginRegister",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_1,"entity:"+ JSON.toJSONString(entity));
AccountReq req = new AccountReq(); AccountReq req = new AccountReq();
req.setMobilePhone(request.getMobile()); req.setMobilePhone(request.getMobile());
// 登录或注册,只能使用验证码 // 登录或注册,只能使用验证码
...@@ -209,12 +235,15 @@ public class AccountController extends AccountBaseController { ...@@ -209,12 +235,15 @@ public class AccountController extends AccountBaseController {
if (response.getData() != null) { if (response.getData() != null) {
LoginResult result = new LoginResult(); LoginResult result = new LoginResult();
result.setToken(response.getData().toString()); result.setToken(response.getData().toString());
intactUtil.sendIntact(batchNo,"loginRegister",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"登录成功,返回值:"+ JSON.toJSONString(response.getData()));
return PicaResponse.toResponse(result); return PicaResponse.toResponse(result);
} }
return response; return response;
} else { } else {
// 注册 // 注册
PicaResponse<LoginResult> result = this.register(req); PicaResponse<LoginResult> result = this.register(req);
intactUtil.sendIntact(batchNo,"loginRegister",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"注册成功,返回值:"+ JSON.toJSONString(result));
return result; return result;
} }
} }
...@@ -290,6 +319,9 @@ public class AccountController extends AccountBaseController { ...@@ -290,6 +319,9 @@ public class AccountController extends AccountBaseController {
//清除旧token,生成新token //清除旧token,生成新token
private String generateToken(Account account, String deviceType) { private String generateToken(Account account, String deviceType) {
//接入新旭事务一致性
String batchNo = IntactUtils.getUUID();
intactUtil.sendIntact(batchNo,"generateToken",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_1,"account:"+ JSON.toJSONString(account)+",deviceType:"+deviceType);
String newToken; String newToken;
switch (deviceType) { //设备信息 switch (deviceType) { //设备信息
case "1": //pc case "1": //pc
...@@ -304,9 +336,15 @@ public class AccountController extends AccountBaseController { ...@@ -304,9 +336,15 @@ public class AccountController extends AccountBaseController {
default: //H5 default: //H5
newToken = this.generateH5Token(account); newToken = this.generateH5Token(account);
} }
intactUtil.sendIntact(batchNo,"generateToken",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"newToken:"+newToken);
return newToken; return newToken;
} }
public static void main(String[] args) {
JSON.toJSONString(null);
System.out.println("成功");
}
/** /**
* 旧的注册接口,下个版本可以去掉 * 旧的注册接口,下个版本可以去掉
* @param req * @param req
......
package com.pica.cloud.account.account.server.controller; package com.pica.cloud.account.account.server.controller;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.pica.cloud.account.account.server.configuration.PropertiesConfiguration; import com.pica.cloud.account.account.server.configuration.PropertiesConfiguration;
import com.pica.cloud.account.account.server.constants.Constants; import com.pica.cloud.account.account.server.constants.Constants;
...@@ -13,6 +14,7 @@ import com.pica.cloud.account.account.server.exception.AccountException; ...@@ -13,6 +14,7 @@ import com.pica.cloud.account.account.server.exception.AccountException;
import com.pica.cloud.account.account.server.req.BaseRequest; import com.pica.cloud.account.account.server.req.BaseRequest;
import com.pica.cloud.account.account.server.service.*; import com.pica.cloud.account.account.server.service.*;
import com.pica.cloud.account.account.server.util.*; import com.pica.cloud.account.account.server.util.*;
import com.pica.cloud.foundation.completeness.client.utils.IntactUtils;
import com.pica.cloud.foundation.entity.PicaException; 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.entity.PicaResultCode; import com.pica.cloud.foundation.entity.PicaResultCode;
...@@ -56,6 +58,9 @@ public class AutoCodeController extends AccountBaseController { ...@@ -56,6 +58,9 @@ public class AutoCodeController extends AccountBaseController {
@Autowired @Autowired
private PropertiesConfiguration propertiesConfiguration; private PropertiesConfiguration propertiesConfiguration;
@Autowired
private IntactUtil intactUtil;
/*@GetMapping("/ip") /*@GetMapping("/ip")
public PicaResponse getIp(HttpServletRequest request) { public PicaResponse getIp(HttpServletRequest request) {
...@@ -129,20 +134,28 @@ public class AutoCodeController extends AccountBaseController { ...@@ -129,20 +134,28 @@ public class AutoCodeController extends AccountBaseController {
BaseRequest request = CryptoUtil.decrypt(entity, BaseRequest.class); BaseRequest request = CryptoUtil.decrypt(entity, BaseRequest.class);
request.setSourceType(super.getSourceType()); request.setSourceType(super.getSourceType());
AccountUtils.checkMobilePhone(request.getMobile()); AccountUtils.checkMobilePhone(request.getMobile());
//接入新旭事务一致性
String batchNo = IntactUtils.getUUID();
intactUtil.sendIntact(batchNo,"getAuthCode",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_1,"authCodeReq:"+ JSON.toJSONString(authCodeReq)+"req:"+ JSON.toJSONString(req));
if (request.getBizType() != null && request.getBizType().equals(1)) { if (request.getBizType() != null && request.getBizType().equals(1)) {
logger.info("app-rcValidate-start"); logger.info("app-rcValidate-start");
// 调用风控接口 // 调用风控接口
authCodeService.rcValidate(req, request, super.getDeviceInfo(), super.getSourceType()); authCodeService.rcValidate(req, request, super.getDeviceInfo(), super.getSourceType());
// 发送短信验证码 // 发送短信验证码
processSysCode(request.getMobile(), request.getFlag()); processSysCode(request.getMobile(), request.getFlag(),batchNo);
//接入新旭事务一致性
intactUtil.sendIntact(batchNo,"getAuthCode",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"authCodeReq:"+ JSON.toJSONString(authCodeReq)+"req:"+ JSON.toJSONString(req));
return PicaResponse.toResponse(); return PicaResponse.toResponse();
} else { } else {
// 老版本业务(发送短信验证码) // 老版本业务(发送短信验证码)
processSysCode(request.getMobile(), request.getFlag()); processSysCode(request.getMobile(), request.getFlag(),batchNo);
// 记录风控数据 // 记录风控数据
authCodeService.recordRcData(req, request, super.getDeviceInfo("device_ip")); authCodeService.recordRcData(req, request, super.getDeviceInfo("device_ip"));
intactUtil.sendIntact(batchNo,"getAuthCode",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"authCodeReq:"+ JSON.toJSONString(authCodeReq)+"req:"+ JSON.toJSONString(req));
return PicaResponse.toResponse(); return PicaResponse.toResponse();
} }
} }
...@@ -158,16 +171,22 @@ public class AutoCodeController extends AccountBaseController { ...@@ -158,16 +171,22 @@ public class AutoCodeController extends AccountBaseController {
} }
AccountUtils.checkMobilePhone(request.getMobile()); AccountUtils.checkMobilePhone(request.getMobile());
//接入新旭事务一致性
String batchNo = IntactUtils.getUUID();
intactUtil.sendIntact(batchNo,"getH5AuthCode",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_1,"entity:"+ JSON.toJSONString(entity)+"req:"+ JSON.toJSONString(req));
// 拼图验证 // 拼图验证
int recordData = authCodeService.validateJigsawCode(req, request); int recordData = authCodeService.validateJigsawCode(req, request);
// 发送短信验证码 // 发送短信验证码
processSysCode(request.getMobile(), request.getFlag()); processSysCode(request.getMobile(), request.getFlag(),batchNo);
if (recordData != -1) { if (recordData != -1) {
// 记录风控数据(记录是h5端) // 记录风控数据(记录是h5端)
authCodeService.recordRcData(req, request, super.getDeviceInfo("device_ip")); authCodeService.recordRcData(req, request, super.getDeviceInfo("device_ip"));
} }
intactUtil.sendIntact(batchNo,"getH5AuthCode",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"entity:"+ JSON.toJSONString(entity)+"req:"+ JSON.toJSONString(req));
return PicaResponse.toResponse(); return PicaResponse.toResponse();
} }
...@@ -197,6 +216,9 @@ public class AutoCodeController extends AccountBaseController { ...@@ -197,6 +216,9 @@ public class AutoCodeController extends AccountBaseController {
return PicaResponse.toResponse(null, PicaResultCode.PARAM_IS_INVALID.code(), "图形验证码错误"); return PicaResponse.toResponse(null, PicaResultCode.PARAM_IS_INVALID.code(), "图形验证码错误");
} }
this.checkMobilePhone(mobilePhone); this.checkMobilePhone(mobilePhone);
//接入新旭事务一致性
String batchNo = IntactUtils.getUUID();
intactUtil.sendIntact(batchNo,"getAuthCodeWithCaptcha",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_1,"entity:"+ JSON.toJSONString(entity)+"req:"+ JSON.toJSONString(req));
String authCode = CommonUtil.createValidateCode(); //随机生成验证码 String authCode = CommonUtil.createValidateCode(); //随机生成验证码
String message = "您的验证码是" + authCode + ",在10分钟内有效。如非本人操作,请忽略本短信!"; String message = "您的验证码是" + authCode + ",在10分钟内有效。如非本人操作,请忽略本短信!";
//判断账号是否已经存在 //判断账号是否已经存在
...@@ -213,6 +235,9 @@ public class AutoCodeController extends AccountBaseController { ...@@ -213,6 +235,9 @@ public class AutoCodeController extends AccountBaseController {
// 记录风控数据 // 记录风控数据
authCodeService.recordRcData(req, request, super.getDeviceInfo("device_ip")); authCodeService.recordRcData(req, request, super.getDeviceInfo("device_ip"));
intactUtil.sendIntact(batchNo,"getAuthCodeWithCaptcha",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"entity:"+ JSON.toJSONString(entity)+"req:"+ JSON.toJSONString(req));
return PicaResponse.toResponse(StringUtils.EMPTY); return PicaResponse.toResponse(StringUtils.EMPTY);
} }
...@@ -230,11 +255,17 @@ public class AutoCodeController extends AccountBaseController { ...@@ -230,11 +255,17 @@ public class AutoCodeController extends AccountBaseController {
BaseRequest request = CryptoUtil.decrypt(entity, BaseRequest.class); BaseRequest request = CryptoUtil.decrypt(entity, BaseRequest.class);
request.setFlag(AccountTypeEnum.SYSCODE_TYPE_WE_CHAT.getCode()); request.setFlag(AccountTypeEnum.SYSCODE_TYPE_WE_CHAT.getCode());
AccountUtils.checkMobilePhone(request.getMobile()); AccountUtils.checkMobilePhone(request.getMobile());
//接入新旭事务一致性
String batchNo = IntactUtils.getUUID();
intactUtil.sendIntact(batchNo,"getWChatSysCode",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_1,"entity:"+ JSON.toJSONString(entity));
AccountUnionEntity accountUnionEntity = accountUnionService.selectInfoByUnionId(request.getUnionId()); AccountUnionEntity accountUnionEntity = accountUnionService.selectInfoByUnionId(request.getUnionId());
if (accountUnionEntity != null) { if (accountUnionEntity != null) {
processSysCode(request.getMobile(), request.getFlag()); processSysCode(request.getMobile(), request.getFlag(),batchNo);
intactUtil.sendIntact(batchNo,"getWChatSysCode",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"entity:"+ JSON.toJSONString(entity));
return PicaResponse.toResponse(); return PicaResponse.toResponse();
} }
intactUtil.sendIntact(batchNo,"getWChatSysCode",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_1,"entity:"+ JSON.toJSONString(entity));
throw new AccountException(AccountExceptionEnum.PICA_UNBIND_MOBILE); throw new AccountException(AccountExceptionEnum.PICA_UNBIND_MOBILE);
} }
...@@ -248,7 +279,7 @@ public class AutoCodeController extends AccountBaseController { ...@@ -248,7 +279,7 @@ public class AutoCodeController extends AccountBaseController {
* @param mobilePhone * @param mobilePhone
* @param flag * @param flag
*/ */
private void processSysCode(String mobilePhone, Integer flag) { private void processSysCode(String mobilePhone, Integer flag,String batchNo) {
String authCodeKey = this.getAuthCodeKey(mobilePhone, flag.toString()); String authCodeKey = this.getAuthCodeKey(mobilePhone, flag.toString());
String authCodeKeySecure = authCodeKey + "-secure"; String authCodeKeySecure = authCodeKey + "-secure";
//如果存在,说明刚刚发送过验证码 //如果存在,说明刚刚发送过验证码
...@@ -259,6 +290,7 @@ public class AutoCodeController extends AccountBaseController { ...@@ -259,6 +290,7 @@ public class AutoCodeController extends AccountBaseController {
} else { } else {
int remainTime = 59 - (int) (System.currentTimeMillis() - time) / 1000; int remainTime = 59 - (int) (System.currentTimeMillis() - time) / 1000;
if (remainTime > 0) { if (remainTime > 0) {
intactUtil.sendIntact(batchNo,"processSysCode",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"请X秒后重试");
throw new AccountException(AccountExceptionEnum.PICA_SYSCODE_RETRY.getCode(), throw new AccountException(AccountExceptionEnum.PICA_SYSCODE_RETRY.getCode(),
AccountExceptionEnum.PICA_SYSCODE_RETRY.getMessage().replace("X", String.valueOf(remainTime))); AccountExceptionEnum.PICA_SYSCODE_RETRY.getMessage().replace("X", String.valueOf(remainTime)));
} else { } else {
...@@ -278,6 +310,9 @@ public class AutoCodeController extends AccountBaseController { ...@@ -278,6 +310,9 @@ public class AutoCodeController extends AccountBaseController {
* @param authCodeKeySecure * @param authCodeKeySecure
*/ */
private void processSendAuthCode(String mobilePhone, Integer flag, String authCodeKeySecure) { private void processSendAuthCode(String mobilePhone, Integer flag, String authCodeKeySecure) {
//接入新旭事务一致性
String batchNo = IntactUtils.getUUID();
intactUtil.sendIntact(batchNo,"processSendAuthCode",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_1,"mobilePhone:"+mobilePhone+",flag:"+flag+",authCodeKeySecure:"+authCodeKeySecure);
long start = System.currentTimeMillis(); long start = System.currentTimeMillis();
String authCode = CommonUtil.createValidateCode(); String authCode = CommonUtil.createValidateCode();
String message = "您的验证码是" + authCode + ",在10分钟内有效。如非本人操作,请忽略本短信!"; String message = "您的验证码是" + authCode + ",在10分钟内有效。如非本人操作,请忽略本短信!";
...@@ -296,6 +331,8 @@ public class AutoCodeController extends AccountBaseController { ...@@ -296,6 +331,8 @@ public class AutoCodeController extends AccountBaseController {
super.sendMobileMessage(mobilePhone, message, senderId); super.sendMobileMessage(mobilePhone, message, senderId);
long end2 = System.currentTimeMillis(); long end2 = System.currentTimeMillis();
logger.info("processSendAuthCode-2 used {} million seconds", end2-start); logger.info("processSendAuthCode-2 used {} million seconds", end2-start);
intactUtil.sendIntact(batchNo,"processSendAuthCode",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"mobilePhone:"+mobilePhone+",flag:"+flag+",authCodeKeySecure:"+authCodeKeySecure);
} }
//获取验证码redis key //获取验证码redis key
......
...@@ -2,7 +2,9 @@ package com.pica.cloud.account.account.server.mapper; ...@@ -2,7 +2,9 @@ package com.pica.cloud.account.account.server.mapper;
import com.pica.cloud.account.account.server.entity.AccountAppleInfo; import com.pica.cloud.account.account.server.entity.AccountAppleInfo;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;
@Component
public interface AccountAppleInfoMapper { public interface AccountAppleInfoMapper {
int insert(AccountAppleInfo record); int insert(AccountAppleInfo record);
......
...@@ -3,9 +3,10 @@ package com.pica.cloud.account.account.server.mapper; ...@@ -3,9 +3,10 @@ package com.pica.cloud.account.account.server.mapper;
import com.pica.cloud.account.account.server.entity.AccountInfoEntity; import com.pica.cloud.account.account.server.entity.AccountInfoEntity;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;
import java.util.HashMap; import java.util.HashMap;
@Component
public interface AccountInfoDetailMapper { public interface AccountInfoDetailMapper {
/** /**
* 通过电话号码查询账号信息 * 通过电话号码查询账号信息
......
...@@ -2,7 +2,9 @@ package com.pica.cloud.account.account.server.mapper; ...@@ -2,7 +2,9 @@ package com.pica.cloud.account.account.server.mapper;
import com.pica.cloud.account.account.server.entity.AccountPatientInfoEntity; import com.pica.cloud.account.account.server.entity.AccountPatientInfoEntity;
import org.springframework.stereotype.Component;
@Component
public interface AccountPatientInfoMapper { public interface AccountPatientInfoMapper {
......
...@@ -2,9 +2,10 @@ package com.pica.cloud.account.account.server.mapper; ...@@ -2,9 +2,10 @@ package com.pica.cloud.account.account.server.mapper;
import com.pica.cloud.account.account.server.entity.AccountUnionEntity; import com.pica.cloud.account.account.server.entity.AccountUnionEntity;
import org.springframework.stereotype.Component;
import java.util.Map; import java.util.Map;
@Component
public interface AccountUnionMapper { public interface AccountUnionMapper {
/** /**
......
package com.pica.cloud.account.account.server.mapper; package com.pica.cloud.account.account.server.mapper;
import com.pica.cloud.account.account.server.entity.AccountWeChatInfoEntity; import com.pica.cloud.account.account.server.entity.AccountWeChatInfoEntity;
import org.springframework.stereotype.Component;
@Component
public interface AccountWeChatInfoMapper { public interface AccountWeChatInfoMapper {
/** /**
......
...@@ -3,7 +3,9 @@ package com.pica.cloud.account.account.server.mapper; ...@@ -3,7 +3,9 @@ package com.pica.cloud.account.account.server.mapper;
import com.pica.cloud.account.account.server.entity.AgreementLogEntity; import com.pica.cloud.account.account.server.entity.AgreementLogEntity;
import com.pica.cloud.account.account.server.entity.PProtocolLog; import com.pica.cloud.account.account.server.entity.PProtocolLog;
import org.springframework.stereotype.Component;
@Component
public interface AgreementLogEntityMapper { public interface AgreementLogEntityMapper {
int deleteByPrimaryKey(Long id); int deleteByPrimaryKey(Long id);
......
...@@ -5,9 +5,10 @@ import com.pica.cloud.account.account.server.entity.Doctor; ...@@ -5,9 +5,10 @@ import com.pica.cloud.account.account.server.entity.Doctor;
import com.pica.cloud.account.account.server.entity.DoctorEntity; import com.pica.cloud.account.account.server.entity.DoctorEntity;
import com.pica.cloud.account.account.server.entity.PICAPDoctor; import com.pica.cloud.account.account.server.entity.PICAPDoctor;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;
import java.util.HashMap; import java.util.HashMap;
@Component
public interface DoctorMapper { public interface DoctorMapper {
/** /**
* 获取医生信息 * 获取医生信息
......
package com.pica.cloud.account.account.server.mapper; package com.pica.cloud.account.account.server.mapper;
import com.pica.cloud.account.account.server.entity.LogLoginAes; import com.pica.cloud.account.account.server.entity.LogLoginAes;
import org.springframework.stereotype.Component;
@Component
public interface LogLoginAesMapper { public interface LogLoginAesMapper {
int deleteByPrimaryKey(Integer id); int deleteByPrimaryKey(Integer id);
......
package com.pica.cloud.account.account.server.mapper; package com.pica.cloud.account.account.server.mapper;
import com.pica.cloud.account.account.server.entity.LogLoginOnekey; import com.pica.cloud.account.account.server.entity.LogLoginOnekey;
import org.springframework.stereotype.Component;
@Component
public interface LogLoginOnekeyMapper { public interface LogLoginOnekeyMapper {
int deleteByPrimaryKey(Integer id); int deleteByPrimaryKey(Integer id);
......
...@@ -2,7 +2,9 @@ package com.pica.cloud.account.account.server.mapper; ...@@ -2,7 +2,9 @@ package com.pica.cloud.account.account.server.mapper;
import com.pica.cloud.account.account.server.entity.PUserRole; import com.pica.cloud.account.account.server.entity.PUserRole;
import org.springframework.stereotype.Component;
@Component
public interface PUserRoleMapper { public interface PUserRoleMapper {
int deleteByPrimaryKey(Integer id); int deleteByPrimaryKey(Integer id);
......
package com.pica.cloud.account.account.server.model; package com.pica.cloud.account.account.server.model;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.pica.cloud.account.account.server.entity.LogLoginOnekey; import com.pica.cloud.account.account.server.entity.LogLoginOnekey;
import com.pica.cloud.account.account.server.entity.MobileDataEntity; import com.pica.cloud.account.account.server.entity.MobileDataEntity;
import com.pica.cloud.account.account.server.entity.QueryMobileEntity; import com.pica.cloud.account.account.server.entity.QueryMobileEntity;
import com.pica.cloud.account.account.server.mapper.LogLoginOnekeyMapper; import com.pica.cloud.account.account.server.mapper.LogLoginOnekeyMapper;
import com.pica.cloud.account.account.server.util.AESUtil; import com.pica.cloud.account.account.server.util.*;
import com.pica.cloud.account.account.server.util.HttpUtil; import com.pica.cloud.foundation.completeness.client.utils.IntactUtils;
import com.pica.cloud.account.account.server.util.MD5;
import com.pica.cloud.account.account.server.util.RSAUtil;
import com.pica.cloud.account.account.server.util.SignUtils;
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;
...@@ -30,6 +28,8 @@ import java.util.Map; ...@@ -30,6 +28,8 @@ import java.util.Map;
*/ */
@Component @Component
public class OneClickProcessor { public class OneClickProcessor {
@Autowired
private IntactUtil intactUtil;
private static final String DEFAULT_ENCRYPT_TYPE = "0"; private static final String DEFAULT_ENCRYPT_TYPE = "0";
private Logger logger = LoggerFactory.getLogger(this.getClass()); private Logger logger = LoggerFactory.getLogger(this.getClass());
...@@ -84,7 +84,12 @@ public class OneClickProcessor { ...@@ -84,7 +84,12 @@ public class OneClickProcessor {
params.put(APPID, appId); params.put(APPID, appId);
params.put(ENCRYPT_TYPE, encryptType);//可以不传,不传则解密直接使用AES解密 params.put(ENCRYPT_TYPE, encryptType);//可以不传,不传则解密直接使用AES解密
params.put(SIGN, SignUtils.getSign(params, appKey)); params.put(SIGN, SignUtils.getSign(params, appKey));
//接入新旭事务一致性
String batchNo = IntactUtils.getUUID();
intactUtil.sendIntact(batchNo,"tokenExchangeMobile.postForm(mobileQueryUrl, params, QueryMobileEntity.class)",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_1,"token:"+token+",appId:"+appId+",SIGN:"+SignUtils.getSign(params, appKey) );
queryMobileEntity = HttpUtil.postForm(mobileQueryUrl, params, QueryMobileEntity.class); queryMobileEntity = HttpUtil.postForm(mobileQueryUrl, params, QueryMobileEntity.class);
intactUtil.sendIntact(batchNo,"tokenExchangeMobile.postForm(mobileQueryUrl, params, QueryMobileEntity.class)",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"token:"+token+",appId:"+appId+",SIGN:"+SignUtils.getSign(params, appKey) );
if (null != queryMobileEntity) { if (null != queryMobileEntity) {
logger.info("一键登录token换取手机号结果:{}", queryMobileEntity); logger.info("一键登录token换取手机号结果:{}", queryMobileEntity);
String code = queryMobileEntity.getCode(); //返回码 200000为成功 String code = queryMobileEntity.getCode(); //返回码 200000为成功
......
...@@ -19,10 +19,8 @@ import com.pica.cloud.account.account.server.req.OneClickLoginReq; ...@@ -19,10 +19,8 @@ import com.pica.cloud.account.account.server.req.OneClickLoginReq;
import com.pica.cloud.account.account.server.service.DoctorService; import com.pica.cloud.account.account.server.service.DoctorService;
import com.pica.cloud.account.account.server.service.LoginService; import com.pica.cloud.account.account.server.service.LoginService;
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.AESUtil; import com.pica.cloud.account.account.server.util.*;
import com.pica.cloud.account.account.server.util.AccountUtils; import com.pica.cloud.foundation.completeness.client.utils.IntactUtils;
import com.pica.cloud.account.account.server.util.TokenUtils;
import com.pica.cloud.account.account.server.util.WeChatUtils;
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.entity.PicaException; import com.pica.cloud.foundation.entity.PicaException;
...@@ -94,6 +92,9 @@ public class LoginServiceImpl implements LoginService { ...@@ -94,6 +92,9 @@ public class LoginServiceImpl implements LoginService {
@Autowired @Autowired
private LogLoginAesMapper logLoginAesMapper; private LogLoginAesMapper logLoginAesMapper;
@Autowired
private IntactUtil intactUtil;
@Value("${doubleWritingMode}") @Value("${doubleWritingMode}")
private boolean doubleWritingMode; private boolean doubleWritingMode;
...@@ -125,6 +126,9 @@ public class LoginServiceImpl implements LoginService { ...@@ -125,6 +126,9 @@ public class LoginServiceImpl implements LoginService {
@Override @Override
public LoginResult login(BaseRequest request) { public LoginResult login(BaseRequest request) {
//接入新旭事务一致性
String batchNo = IntactUtils.getUUID();
intactUtil.sendIntact(batchNo,"login",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_1,"request:"+ JSON.toJSONString(request));
String mobile = request.getMobile(); String mobile = request.getMobile();
Integer sourceType = request.getSourceType(); Integer sourceType = request.getSourceType();
String encrypt = AESUtil.encryptV0(mobile); String encrypt = AESUtil.encryptV0(mobile);
...@@ -138,9 +142,12 @@ public class LoginServiceImpl implements LoginService { ...@@ -138,9 +142,12 @@ public class LoginServiceImpl implements LoginService {
// 新版-未设置密码 // 新版-未设置密码
if (StringUtils.isEmpty(oldPwd)) { if (StringUtils.isEmpty(oldPwd)) {
if (sourceType != null && SourceTypeEnum.H5.getCode().equals(sourceType)) { if (sourceType != null && SourceTypeEnum.H5.getCode().equals(sourceType)) {
intactUtil.sendIntact(batchNo,"login",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"该手机号尚未设置密码,设置密码请前往云鹊医APP,或使用其他方式登录。");
throw new PicaWarnException(AccountExceptionEnum.PICA_MOBILE_NOT_SETED_PASSWORD_H5.getCode(), throw new PicaWarnException(AccountExceptionEnum.PICA_MOBILE_NOT_SETED_PASSWORD_H5.getCode(),
AccountExceptionEnum.PICA_MOBILE_NOT_SETED_PASSWORD_H5.getMessage()); AccountExceptionEnum.PICA_MOBILE_NOT_SETED_PASSWORD_H5.getMessage());
} else { } else {
intactUtil.sendIntact(batchNo,"login",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"该手机号{mobile}尚未设置密码,请先设置密码。");
throw new PicaException(AccountExceptionEnum.PICA_PASSWORD_RULE_ERROR.getCode(), throw new PicaException(AccountExceptionEnum.PICA_PASSWORD_RULE_ERROR.getCode(),
AccountExceptionEnum.PICA_PASSWORD_RULE_ERROR.getMessage() AccountExceptionEnum.PICA_PASSWORD_RULE_ERROR.getMessage()
.replace("{mobile}", mobile)); .replace("{mobile}", mobile));
...@@ -151,15 +158,21 @@ public class LoginServiceImpl implements LoginService { ...@@ -151,15 +158,21 @@ public class LoginServiceImpl implements LoginService {
String lockKey = Constants.ACCOUNT_LOCK_KEY.replace("{mobile}", mobile); String lockKey = Constants.ACCOUNT_LOCK_KEY.replace("{mobile}", mobile);
if (redisClient.exists(lockKey)) { if (redisClient.exists(lockKey)) {
if (sourceType != null && SourceTypeEnum.H5.getCode().equals(sourceType)) { if (sourceType != null && SourceTypeEnum.H5.getCode().equals(sourceType)) {
intactUtil.sendIntact(batchNo,"login",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"该账号密码错误次数已达上限请24小时后再试,或请使用其他登录方式");
throw new PicaException(AccountExceptionEnum.PICA_PWD_MISMATCH_5_H5.getCode(), throw new PicaException(AccountExceptionEnum.PICA_PWD_MISMATCH_5_H5.getCode(),
AccountExceptionEnum.PICA_PWD_MISMATCH_5_H5.getMessage()); AccountExceptionEnum.PICA_PWD_MISMATCH_5_H5.getMessage());
} else { } else {
intactUtil.sendIntact(batchNo,"login",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"该账号{mobile}的密码错误次数已达上限请24小时后再试,或请使用其他登录方式或找回密码");
throw new PicaException(AccountExceptionEnum.PICA_PWD_MISMATCH_5.getCode(), throw new PicaException(AccountExceptionEnum.PICA_PWD_MISMATCH_5.getCode(),
AccountExceptionEnum.PICA_PWD_MISMATCH_5.getMessage().replace("{mobile}", mobile)); AccountExceptionEnum.PICA_PWD_MISMATCH_5.getMessage().replace("{mobile}", mobile));
} }
} }
if (password.equals(oldPwd)) { if (password.equals(oldPwd)) {
intactUtil.sendIntact(batchNo,"login",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"接下来调用pwdLoginCorrect");
return pwdLoginCorrect(request, mobile, encrypt, accountInfoEntity); return pwdLoginCorrect(request, mobile, encrypt, accountInfoEntity);
} else { } else {
String errorKey = Constants.PWD_ERROR_NUM_KEY.replace("{mobile}", mobile); String errorKey = Constants.PWD_ERROR_NUM_KEY.replace("{mobile}", mobile);
...@@ -168,21 +181,29 @@ public class LoginServiceImpl implements LoginService { ...@@ -168,21 +181,29 @@ public class LoginServiceImpl implements LoginService {
errorCount = errorCount + 1; errorCount = errorCount + 1;
redisClient.set(errorKey, errorCount, Constants.PWD_ERROR_NUM_SECONDS); redisClient.set(errorKey, errorCount, Constants.PWD_ERROR_NUM_SECONDS);
if (errorCount <= 4) { if (errorCount <= 4) {
intactUtil.sendIntact(batchNo,"login",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"密码错误,请重试");
throw new PicaException(AccountExceptionEnum.PICA_PWD_MISMATCH_4.getCode(), throw new PicaException(AccountExceptionEnum.PICA_PWD_MISMATCH_4.getCode(),
AccountExceptionEnum.PICA_PWD_MISMATCH_4.getMessage()); AccountExceptionEnum.PICA_PWD_MISMATCH_4.getMessage());
} else { } else {
// 设置账号锁定24h // 设置账号锁定24h
redisClient.set(lockKey, mobile, Constants.PWD_ERROR_NUM_SECONDS); redisClient.set(lockKey, mobile, Constants.PWD_ERROR_NUM_SECONDS);
if (sourceType != null && SourceTypeEnum.H5.getCode().equals(sourceType)) { if (sourceType != null && SourceTypeEnum.H5.getCode().equals(sourceType)) {
intactUtil.sendIntact(batchNo,"login",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"该账号密码错误次数已达上限请24小时后再试,或请使用其他登录方式");
throw new PicaException(AccountExceptionEnum.PICA_PWD_MISMATCH_5_H5.getCode(), throw new PicaException(AccountExceptionEnum.PICA_PWD_MISMATCH_5_H5.getCode(),
AccountExceptionEnum.PICA_PWD_MISMATCH_5_H5.getMessage()); AccountExceptionEnum.PICA_PWD_MISMATCH_5_H5.getMessage());
} else { } else {
intactUtil.sendIntact(batchNo,"login",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"该账号{mobile}的密码错误次数已达上限请24小时后再试,或请使用其他登录方式或找回密码");
throw new PicaException(AccountExceptionEnum.PICA_PWD_MISMATCH_5.getCode(), throw new PicaException(AccountExceptionEnum.PICA_PWD_MISMATCH_5.getCode(),
AccountExceptionEnum.PICA_PWD_MISMATCH_5.getMessage().replace("{mobile}", mobile)); AccountExceptionEnum.PICA_PWD_MISMATCH_5.getMessage().replace("{mobile}", mobile));
} }
} }
} else { } else {
redisClient.set(errorKey, 1, Constants.PWD_ERROR_NUM_SECONDS); redisClient.set(errorKey, 1, Constants.PWD_ERROR_NUM_SECONDS);
intactUtil.sendIntact(batchNo,"login",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"密码错误,请重试");
throw new PicaException(AccountExceptionEnum.PICA_PWD_MISMATCH_4.getCode(), throw new PicaException(AccountExceptionEnum.PICA_PWD_MISMATCH_4.getCode(),
AccountExceptionEnum.PICA_PWD_MISMATCH_4.getMessage()); AccountExceptionEnum.PICA_PWD_MISMATCH_4.getMessage());
} }
...@@ -192,9 +213,13 @@ public class LoginServiceImpl implements LoginService { ...@@ -192,9 +213,13 @@ public class LoginServiceImpl implements LoginService {
} else { } else {
// 旧版本 // 旧版本
if (password.equals(oldPwd)) { if (password.equals(oldPwd)) {
intactUtil.sendIntact(batchNo,"login",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"接下来调用pwdLoginCorrect");
return pwdLoginCorrect(request, mobile, encrypt, accountInfoEntity); return pwdLoginCorrect(request, mobile, encrypt, accountInfoEntity);
} else { } else {
logger.info("login failure:" + mobile); logger.info("login failure:" + mobile);
intactUtil.sendIntact(batchNo,"login",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"请输入正确的密码");
throw new PicaException(AccountExceptionEnum.PICA_PASSWORD_ERROR.getCode(), AccountExceptionEnum.PICA_PASSWORD_ERROR.getMessage()); throw new PicaException(AccountExceptionEnum.PICA_PASSWORD_ERROR.getCode(), AccountExceptionEnum.PICA_PASSWORD_ERROR.getMessage());
} }
} }
...@@ -202,15 +227,21 @@ public class LoginServiceImpl implements LoginService { ...@@ -202,15 +227,21 @@ public class LoginServiceImpl implements LoginService {
if (null != request.getBizType() && if (null != request.getBizType() &&
request.getBizType().equals(1)) { request.getBizType().equals(1)) {
if (sourceType != null && SourceTypeEnum.H5.getCode().equals(sourceType)) { if (sourceType != null && SourceTypeEnum.H5.getCode().equals(sourceType)) {
intactUtil.sendIntact(batchNo,"login",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"该手机号尚未设置密码,设置密码请前往云鹊医APP,或使用其他方式登录。");
throw new PicaWarnException(AccountExceptionEnum.PICA_MOBILE_NOT_REGIST_H5.getCode(), throw new PicaWarnException(AccountExceptionEnum.PICA_MOBILE_NOT_REGIST_H5.getCode(),
AccountExceptionEnum.PICA_MOBILE_NOT_REGIST_H5.getMessage()); AccountExceptionEnum.PICA_MOBILE_NOT_REGIST_H5.getMessage());
} else { } else {
// 新版-未注册 // 新版-未注册
intactUtil.sendIntact(batchNo,"login",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"该手机号{mobile}尚未设置密码,请先设置密码。");
throw new PicaException(AccountExceptionEnum.PICA_PASSWORD_RULE_ERROR.getCode(), throw new PicaException(AccountExceptionEnum.PICA_PASSWORD_RULE_ERROR.getCode(),
AccountExceptionEnum.PICA_PASSWORD_RULE_ERROR.getMessage() AccountExceptionEnum.PICA_PASSWORD_RULE_ERROR.getMessage()
.replace("{mobile}", mobile)); .replace("{mobile}", mobile));
} }
} else { } else {
intactUtil.sendIntact(batchNo,"login",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"未注册,请先注册");
throw new PicaException(AccountExceptionEnum.PICA_NOT_REGISTER.getCode(), AccountExceptionEnum.PICA_NOT_REGISTER.getMessage()); throw new PicaException(AccountExceptionEnum.PICA_NOT_REGISTER.getCode(), AccountExceptionEnum.PICA_NOT_REGISTER.getMessage());
} }
} }
...@@ -225,6 +256,9 @@ public class LoginServiceImpl implements LoginService { ...@@ -225,6 +256,9 @@ public class LoginServiceImpl implements LoginService {
* @Return com.pica.cloud.account.account.server.entity.LoginResult * @Return com.pica.cloud.account.account.server.entity.LoginResult
*/ */
private LoginResult pwdLoginCorrect(BaseRequest request, String mobile, String encrypt, AccountInfoEntity accountInfoEntity) { private LoginResult pwdLoginCorrect(BaseRequest request, String mobile, String encrypt, AccountInfoEntity accountInfoEntity) {
//接入新旭事务一致性
String batchNo = IntactUtils.getUUID();
intactUtil.sendIntact(batchNo,"pwdLoginCorrect",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_1,"request:"+ JSON.toJSONString(request)+",+mobile:"+mobile+",encrypt:"+encrypt+",accountInfoEntity:"+JSON.toJSONString(accountInfoEntity));
Date currentTime = new Date(); Date currentTime = new Date();
Integer acctId = accountInfoEntity.getId(); Integer acctId = accountInfoEntity.getId();
int productType = request.getProductType(); int productType = request.getProductType();
...@@ -263,6 +297,8 @@ public class LoginServiceImpl implements LoginService { ...@@ -263,6 +297,8 @@ public class LoginServiceImpl implements LoginService {
redisClient.del(pwdErrorNum); redisClient.del(pwdErrorNum);
} }
} }
intactUtil.sendIntact(batchNo,"pwdLoginCorrect",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"request:"+ JSON.toJSONString(request)+",+mobile:"+mobile+",encrypt:"+",accountInfoEntity:"+JSON.toJSONString(accountInfoEntity));
return result; return result;
} }
...@@ -294,6 +330,9 @@ public class LoginServiceImpl implements LoginService { ...@@ -294,6 +330,9 @@ public class LoginServiceImpl implements LoginService {
} }
private LoginResult processLogin(BaseRequest baseRequest, Integer acctId, Integer loginType, QueryMobileEntity queryMobileEntity) { private LoginResult processLogin(BaseRequest baseRequest, Integer acctId, Integer loginType, QueryMobileEntity queryMobileEntity) {
//接入新旭事务一致性
String batchNo = IntactUtils.getUUID();
intactUtil.sendIntact(batchNo,"processLogin",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_1,"baseRequest:"+ JSON.toJSONString(baseRequest)+",+acctId:"+acctId+",loginType:"+loginType+",queryMobileEntity:"+JSON.toJSONString(queryMobileEntity));
Date currentTime = new Date(); Date currentTime = new Date();
Long userId = accountUtils.getUserIdByAcctId(baseRequest.getProductType(), acctId); Long userId = accountUtils.getUserIdByAcctId(baseRequest.getProductType(), acctId);
Account account = new Account(); Account account = new Account();
...@@ -320,12 +359,17 @@ public class LoginServiceImpl implements LoginService { ...@@ -320,12 +359,17 @@ public class LoginServiceImpl implements LoginService {
entity.setQueryMobileEntity(queryMobileEntity); entity.setQueryMobileEntity(queryMobileEntity);
} }
picaLogUtils.info(entity); picaLogUtils.info(entity);
intactUtil.sendIntact(batchNo,"processLogin",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"baseRequest:"+ JSON.toJSONString(baseRequest)+",+acctId:"+acctId+",loginType:"+loginType+",queryMobileEntity:"+JSON.toJSONString(queryMobileEntity));
return result; return result;
} }
@Override @Override
@Transactional @Transactional
public LoginResult loginByWeChat(BaseRequest request) { public LoginResult loginByWeChat(BaseRequest request) {
//接入新旭事务一致性
String batchNo = IntactUtils.getUUID();
intactUtil.sendIntact(batchNo,"loginByWeChat",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_1,"request:"+ JSON.toJSONString(request));
WeChatEntity weChatEntity = null; WeChatEntity weChatEntity = null;
if (null != request.getBizType() && if (null != request.getBizType() &&
request.getBizType().equals(1)) { request.getBizType().equals(1)) {
...@@ -336,6 +380,8 @@ public class LoginServiceImpl implements LoginService { ...@@ -336,6 +380,8 @@ public class LoginServiceImpl implements LoginService {
weChatEntity = WeChatUtils.getAuthorizationInfo(appId, appSecret, request.getWeChatCode()); weChatEntity = WeChatUtils.getAuthorizationInfo(appId, appSecret, request.getWeChatCode());
} }
if (weChatEntity == null || StringUtils.isEmpty(weChatEntity.getOpenid()) || StringUtils.isEmpty(weChatEntity.getAccess_token())) { if (weChatEntity == null || StringUtils.isEmpty(weChatEntity.getOpenid()) || StringUtils.isEmpty(weChatEntity.getAccess_token())) {
intactUtil.sendIntact(batchNo,"loginByWeChat",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"微信登录授权code不正确:");
throw new PicaException(AccountExceptionEnum.PICA_WECHAT_CODE_ERROR.getCode(), AccountExceptionEnum.PICA_WECHAT_CODE_ERROR.getMessage()); throw new PicaException(AccountExceptionEnum.PICA_WECHAT_CODE_ERROR.getCode(), AccountExceptionEnum.PICA_WECHAT_CODE_ERROR.getMessage());
} }
// 微信登录获取个人信息 // 微信登录获取个人信息
...@@ -378,6 +424,8 @@ public class LoginServiceImpl implements LoginService { ...@@ -378,6 +424,8 @@ public class LoginServiceImpl implements LoginService {
AccountTypeEnum.LOGIN_STATUS_SUCCESS.getCode(), AccountTypeEnum.LOGIN_STATUS_SUCCESS.getCode(),
AccountTypeEnum.LOG_TYPE_LOGIN.getCode(),newToken,1,request.getUserTokenTourist()); AccountTypeEnum.LOG_TYPE_LOGIN.getCode(),newToken,1,request.getUserTokenTourist());
picaLogUtils.info(entity); picaLogUtils.info(entity);
intactUtil.sendIntact(batchNo,"loginByWeChat",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"request:"+ JSON.toJSONString(request));
return result; return result;
} else { } else {
...@@ -389,6 +437,8 @@ public class LoginServiceImpl implements LoginService { ...@@ -389,6 +437,8 @@ public class LoginServiceImpl implements LoginService {
LoginResult result = new LoginResult(); LoginResult result = new LoginResult();
result.setUnionId(unionId); result.setUnionId(unionId);
result.setBindFlag(AccountTypeEnum.BIND_STATUS_FAILURE.getCode() + ""); result.setBindFlag(AccountTypeEnum.BIND_STATUS_FAILURE.getCode() + "");
intactUtil.sendIntact(batchNo,"loginByWeChat",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"request:"+ JSON.toJSONString(request));
return result; return result;
} }
} }
...@@ -469,9 +519,14 @@ public class LoginServiceImpl implements LoginService { ...@@ -469,9 +519,14 @@ public class LoginServiceImpl implements LoginService {
* @param unionId * @param unionId
*/ */
private void processAccountUnion(Integer acctId, String unionId, Integer productType) { private void processAccountUnion(Integer acctId, String unionId, Integer productType) {
//接入新旭事务一致性
String batchNo = IntactUtils.getUUID();
intactUtil.sendIntact(batchNo,"processAccountUnion",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_1,"acctId:"+acctId+",unionId:"+unionId+",productType:"+productType);
//先查询当前产品线是否有记录?如果有就更新成delete_flag=2; 然后在插入新的绑定记录 //先查询当前产品线是否有记录?如果有就更新成delete_flag=2; 然后在插入新的绑定记录
AccountUnionEntity accountUnionResult = accountUnionMapper.selectByUnionId(unionId); AccountUnionEntity accountUnionResult = accountUnionMapper.selectByUnionId(unionId);
if (accountUnionResult != null) { if (accountUnionResult != null) {
intactUtil.sendIntact(batchNo,"processAccountUnion",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"该微信号已绑定其他云鹊医账户,你可以使用微信登录云鹊医,在「设置」页解除绑定");
throw new PicaException(AccountExceptionEnum.PICA_WECHAT_UNBIND.getCode(), AccountExceptionEnum.PICA_WECHAT_UNBIND.getMessage()); throw new PicaException(AccountExceptionEnum.PICA_WECHAT_UNBIND.getCode(), AccountExceptionEnum.PICA_WECHAT_UNBIND.getMessage());
} }
Map<String, Object> map = new HashedMap(2); Map<String, Object> map = new HashedMap(2);
...@@ -479,6 +534,8 @@ public class LoginServiceImpl implements LoginService { ...@@ -479,6 +534,8 @@ public class LoginServiceImpl implements LoginService {
map.put("unionType", AccountTypeEnum.UNION_LOGIN_WE_CHAT.getCode()); map.put("unionType", AccountTypeEnum.UNION_LOGIN_WE_CHAT.getCode());
AccountUnionEntity accountUnionEntityAccount = accountUnionMapper.selectByAcctId(map); AccountUnionEntity accountUnionEntityAccount = accountUnionMapper.selectByAcctId(map);
if (accountUnionEntityAccount != null) { if (accountUnionEntityAccount != null) {
intactUtil.sendIntact(batchNo,"processAccountUnion",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"该手机号已绑定其他微信号,你可以在「设置」页解除绑定");
throw new PicaException(AccountExceptionEnum.PICA_WECHAT_BIND_OTHER.getCode(), AccountExceptionEnum.PICA_WECHAT_BIND_OTHER.getMessage()); throw new PicaException(AccountExceptionEnum.PICA_WECHAT_BIND_OTHER.getCode(), AccountExceptionEnum.PICA_WECHAT_BIND_OTHER.getMessage());
} }
AccountUnionEntity accountUnionEntity = new AccountUnionEntity(); AccountUnionEntity accountUnionEntity = new AccountUnionEntity();
...@@ -494,6 +551,8 @@ public class LoginServiceImpl implements LoginService { ...@@ -494,6 +551,8 @@ public class LoginServiceImpl implements LoginService {
if (doubleWritingMode) { //双写模式 if (doubleWritingMode) { //双写模式
doctorService.bindWeChat(acctId, unionId); doctorService.bindWeChat(acctId, unionId);
} }
intactUtil.sendIntact(batchNo,"processAccountUnion",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"acctId:"+acctId+",unionId:"+unionId+",productType:"+productType);
} }
private void processWeChatInfoUser(WeChatUserInfoEntity weChatUserInfoEntity, int type) { private void processWeChatInfoUser(WeChatUserInfoEntity weChatUserInfoEntity, int type) {
......
package com.pica.cloud.account.account.server.service.impl; package com.pica.cloud.account.account.server.service.impl;
import com.alibaba.fastjson.JSON;
import com.pica.cloud.account.account.common.req.OCINRequest; import com.pica.cloud.account.account.common.req.OCINRequest;
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.*;
...@@ -11,10 +12,8 @@ import com.pica.cloud.account.account.server.log.AccountLogUtils; ...@@ -11,10 +12,8 @@ import com.pica.cloud.account.account.server.log.AccountLogUtils;
import com.pica.cloud.account.account.server.mapper.*; import com.pica.cloud.account.account.server.mapper.*;
import com.pica.cloud.account.account.server.req.BaseRequest; import com.pica.cloud.account.account.server.req.BaseRequest;
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.AESUtil; import com.pica.cloud.account.account.server.util.*;
import com.pica.cloud.account.account.server.util.AccountUtils; import com.pica.cloud.foundation.completeness.client.utils.IntactUtils;
import com.pica.cloud.account.account.server.util.ExecutorServiceUtils;
import com.pica.cloud.account.account.server.util.TokenUtils;
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;
...@@ -58,6 +57,9 @@ public class RegisterServiceImpl implements RegisterService { ...@@ -58,6 +57,9 @@ public class RegisterServiceImpl implements RegisterService {
private ICacheClient redisClient; private ICacheClient redisClient;
@Autowired
private IntactUtil intactUtil;
/** /**
* 1)注册功能:默认未完善信息; * 1)注册功能:默认未完善信息;
* 2)注册成功后发送mq消息,让别的服务初始化数据; * 2)注册成功后发送mq消息,让别的服务初始化数据;
...@@ -74,6 +76,9 @@ public class RegisterServiceImpl implements RegisterService { ...@@ -74,6 +76,9 @@ public class RegisterServiceImpl implements RegisterService {
@Override @Override
public LoginResult register(BaseRequest baseRequest,QueryMobileEntity queryMobileEntity) { public LoginResult register(BaseRequest baseRequest,QueryMobileEntity queryMobileEntity) {
//接入新旭事务一致性
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));
String mobile = baseRequest.getMobile(); String mobile = baseRequest.getMobile();
//对注册接口做幂等性处理:注册成功,删除缓存,注册失败提示用户 //对注册接口做幂等性处理:注册成功,删除缓存,注册失败提示用户
String nxKey = Constants.REPEAT_REGISTER_PREFIX + mobile; String nxKey = Constants.REPEAT_REGISTER_PREFIX + mobile;
...@@ -147,14 +152,20 @@ public class RegisterServiceImpl implements RegisterService { ...@@ -147,14 +152,20 @@ public class RegisterServiceImpl implements RegisterService {
processAgreement(userId); processAgreement(userId);
processRoleMap(userId); processRoleMap(userId);
redisClient.del(nxKey); redisClient.del(nxKey);
intactUtil.sendIntact(batchNo,"register",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"baseRequest:"+ JSON.toJSONString(baseRequest)+",queryMobileEntity:"+JSON.toJSONString(queryMobileEntity));
return result; return result;
} else { } else {
logger.info("register-account is exists"); logger.info("register-account is exists");
intactUtil.sendIntact(batchNo,"register",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"该手机号已注册,请直接登录");
throw new AccountException(AccountExceptionEnum.PICA_ALREADY_REGISTER); throw new AccountException(AccountExceptionEnum.PICA_ALREADY_REGISTER);
} }
} catch (Exception e) { } catch (Exception e) {
//向上抛出异常,让异常处理框架捕获到 //向上抛出异常,让异常处理框架捕获到
logger.error("registerException-" + e.getMessage(), e); logger.error("registerException-" + e.getMessage(), e);
intactUtil.sendIntact(batchNo,"register",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"注册失败");
throw new AccountException(AccountExceptionEnum.PICA_REGISTER_FAIL); throw new AccountException(AccountExceptionEnum.PICA_REGISTER_FAIL);
} finally { } finally {
//如果在注册过程中抛出异常,就删除redis中的注册标记 //如果在注册过程中抛出异常,就删除redis中的注册标记
...@@ -163,6 +174,8 @@ public class RegisterServiceImpl implements RegisterService { ...@@ -163,6 +174,8 @@ public class RegisterServiceImpl implements RegisterService {
} }
} else { } else {
logger.info("register-nxKey is exists"); logger.info("register-nxKey is exists");
intactUtil.sendIntact(batchNo,"register",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"该手机号已注册,请直接登录");
throw new AccountException(AccountExceptionEnum.PICA_ALREADY_REGISTER); throw new AccountException(AccountExceptionEnum.PICA_ALREADY_REGISTER);
} }
} }
......
package com.pica.cloud.account.account.server.util;
import com.pica.cloud.foundation.completeness.client.utils.IntactUtils;
import com.pica.cloud.foundation.completeness.contract.req.LogParamsReq;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
/**
* @param <T>
* @author jiao.yu
* @version V1.0
* @Description:
* @date 2020/5/22 16:04
*/
@Service
public class IntactUtil {
private final static Logger logger = LoggerFactory.getLogger(IntactUtil.class);
/**
* 对接新旭事务一致性
* @param batchNo
* @param methodName
* @param status
* @param params
*/
public void sendIntact(String batchNo,String methodName,Integer status,String params){
logger.info("开始事务一致性,参数为:batchNo:"+batchNo+",methodName:"+methodName+",status:"+status+",params:"+params);
LogParamsReq req = new LogParamsReq();
req.setBatchNo(batchNo);
req.setMethodName(methodName);
req.setStatus(status);
req.setParams(params);
IntactUtils.sendIntact(req);
logger.info("结束事务一致性");
}
}
...@@ -3,6 +3,8 @@ package com.pica.cloud.account.account.server.util; ...@@ -3,6 +3,8 @@ package com.pica.cloud.account.account.server.util;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.pica.cloud.account.account.server.entity.WeChatEntity; import com.pica.cloud.account.account.server.entity.WeChatEntity;
import com.pica.cloud.account.account.server.entity.WeChatUserInfoEntity; import com.pica.cloud.account.account.server.entity.WeChatUserInfoEntity;
import com.pica.cloud.foundation.completeness.client.utils.IntactUtils;
import com.pica.cloud.foundation.completeness.contract.req.LogParamsReq;
import com.pica.cloud.foundation.utils.constants.WeChatConstants; import com.pica.cloud.foundation.utils.constants.WeChatConstants;
import com.pica.cloud.foundation.utils.utils.JsonUtil; import com.pica.cloud.foundation.utils.utils.JsonUtil;
import com.pica.cloud.foundation.utils.utils.StringUtil; import com.pica.cloud.foundation.utils.utils.StringUtil;
...@@ -32,7 +34,11 @@ public class WeChatUtils { ...@@ -32,7 +34,11 @@ public class WeChatUtils {
private static Logger logger = LoggerFactory.getLogger(WeChatUtils.class); private static Logger logger = LoggerFactory.getLogger(WeChatUtils.class);
public static WeChatEntity getAuthorizationInfo(String appId, String appSecret, String code) { public static WeChatEntity getAuthorizationInfo(String appId, String appSecret, String code) {
//接入新旭事务一致性
String batchNo = IntactUtils.getUUID();
sendIntact(batchNo,"getAuthorizationInfo",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_1,"appId:"+appId+",appSecret:"+appSecret+",code:"+code);
logger.info("网页授权获取access_token: code:{}", code); logger.info("网页授权获取access_token: code:{}", code);
String requestUrl = WeChatConstants.AUTH_ACCESS_TOKEN_URL.replace("APPID", appId).replace("SECRET", appSecret).replace("CODE", code); String requestUrl = WeChatConstants.AUTH_ACCESS_TOKEN_URL.replace("APPID", appId).replace("SECRET", appSecret).replace("CODE", code);
JSONObject jsonObject = WeChatToolUtil.httpRequest(requestUrl, "GET", null); JSONObject jsonObject = WeChatToolUtil.httpRequest(requestUrl, "GET", null);
...@@ -51,6 +57,8 @@ public class WeChatUtils { ...@@ -51,6 +57,8 @@ public class WeChatUtils {
logger.error("获取token失败 errcode:{} errmsg:{}", jsonObject.getInt("errcode"), jsonObject.getString("errmsg")); logger.error("获取token失败 errcode:{} errmsg:{}", jsonObject.getInt("errcode"), jsonObject.getString("errmsg"));
} }
sendIntact(batchNo,"getAuthorizationInfo",com.pica.cloud.foundation.completeness.contract.constants.CommonConstants.INTACT_CONTENT_LOG_STATUS_3,"appId:"+appId+",appSecret"+appSecret+",code:"+code);
return accessToken; return accessToken;
} }
...@@ -114,4 +122,23 @@ public class WeChatUtils { ...@@ -114,4 +122,23 @@ public class WeChatUtils {
return user; return user;
} }
/**
* 对接新旭事务一致性
* @param batchNo
* @param methodName
* @param status
* @param params
*/
public static void sendIntact(String batchNo,String methodName,Integer status,String params){
logger.info("开始事务一致性,参数为:batchNo:"+batchNo+",methodName:"+methodName+",status:"+status+",params:"+params);
LogParamsReq req = new LogParamsReq();
req.setBatchNo(batchNo);
req.setMethodName(methodName);
req.setStatus(status);
req.setParams(params);
IntactUtils.sendIntact(req);
logger.info("结束事务一致性");
}
} }
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册