REQ-2960 重写泰州人员同步逻辑
This commit is contained in:
parent
e3f1cf21f1
commit
282e66d9b2
@ -110,7 +110,7 @@ public class FeignConfiguration implements RequestInterceptor {
|
||||
// 调用profile对应环境的服务
|
||||
switch (profile.toLowerCase()) {
|
||||
case "local":
|
||||
return toLocalHost(url);
|
||||
// return toLocalHost(url);
|
||||
case "dev":
|
||||
return toRemoteHost(url, DEV_HOST);
|
||||
case "test":
|
||||
|
||||
@ -90,7 +90,7 @@ public class TaiZhouProjectPersonJob extends IJobHandler {
|
||||
try {
|
||||
taiZhouService.handlePerson(thirdPerson, x);
|
||||
} catch (Exception e) {
|
||||
log.error("同步泰州人员异常,异常泰州人员ID:{},泰州姓名:{}", thirdPerson.getThirdUniquePersonId(), thirdPerson.getThirdPersonName(), e);
|
||||
log.error("泰州人员:{} 处理异常,对应泰州ID:{}", thirdPerson.getThirdPersonName(), thirdPerson.getThirdUniquePersonId(), e);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
@ -41,53 +41,54 @@ public class TaiZhouClient {
|
||||
@Autowired
|
||||
private TaizhouApi taizhouApi;
|
||||
|
||||
// @Resource(name = "basisRedisTemplate")
|
||||
// private RedisTemplate<String, String> redisTemplate;
|
||||
@Resource(name = "basisRedisTemplate")
|
||||
private RedisTemplate<String, String> redisTemplate;
|
||||
|
||||
public String getToken() {
|
||||
|
||||
ApiResult<GetTaiZhouTokenRes> result = taizhouApi.getToken();
|
||||
//todo
|
||||
// ApiResult<GetTaiZhouTokenRes> result = taizhouApi.getToken();
|
||||
//
|
||||
// log.info("从elise获取泰州token结果:{}", JSON.toJSONString(result));
|
||||
//
|
||||
// if (result.isSuccess()) {
|
||||
// return result.getData().getToken();
|
||||
// } else {
|
||||
// log.error("从elise获取泰州token异常:{}", result.getMsg());
|
||||
// return null;
|
||||
// }
|
||||
|
||||
log.info("从elise获取泰州token结果:{}", JSON.toJSONString(result));
|
||||
String token = redisTemplate.opsForValue().get(taiZhouConfig.getRedisTokenName());
|
||||
log.info("获取泰州redis中token:{}", token);
|
||||
if(taiZhouConfig.getEachTimeGetTokenFlag()){
|
||||
token = null;
|
||||
log.info("nacos上泰州请求开启每次获取eachTimeGetTokenFlag");
|
||||
}
|
||||
if (StringUtils.hasText(token)) {
|
||||
log.info("redis中token:{}", token);
|
||||
return token;
|
||||
}
|
||||
String url = taiZhouConfig.getBaseUrl() + TaiZhouApiEnum.GET_TOKEN.getPath() + "?Secret=" + taiZhouConfig.getSecret();
|
||||
|
||||
if (result.isSuccess()) {
|
||||
return result.getData().getToken();
|
||||
} else {
|
||||
log.error("从elise获取泰州token异常:{}", result.getMsg());
|
||||
RestTemplateUtils restTemplateUtils = new RestTemplateUtils(taiZhouConfig.getHttpConnectTimeout(), taiZhouConfig.getHttpReadTimeout());
|
||||
|
||||
ResponseEntity<String> responseEntity = restTemplateUtils.post(url, String.class);
|
||||
|
||||
if (responseEntity.getStatusCode() != HttpStatus.OK) {
|
||||
log.info("获取泰州token异常:{}", responseEntity.getStatusCode());
|
||||
return null;
|
||||
}
|
||||
|
||||
// String token = redisTemplate.opsForValue().get(taiZhouConfig.getRedisTokenName());
|
||||
// log.info("获取泰州redis中token:{}", token);
|
||||
// if(taiZhouConfig.getEachTimeGetTokenFlag()){
|
||||
// token = null;
|
||||
// log.info("nacos上泰州请求开启每次获取eachTimeGetTokenFlag");
|
||||
// }
|
||||
// if (StringUtils.hasText(token)) {
|
||||
// log.info("redis中token:{}", token);
|
||||
// return token;
|
||||
// }
|
||||
// String url = taiZhouConfig.getBaseUrl() + TaiZhouApiEnum.GET_TOKEN.getPath() + "?Secret=" + taiZhouConfig.getSecret();
|
||||
//
|
||||
// RestTemplateUtils restTemplateUtils = new RestTemplateUtils(taiZhouConfig.getHttpConnectTimeout(), taiZhouConfig.getHttpReadTimeout());
|
||||
//
|
||||
// ResponseEntity<String> responseEntity = restTemplateUtils.post(url, String.class);
|
||||
//
|
||||
// if (responseEntity.getStatusCode() != HttpStatus.OK) {
|
||||
// log.info("获取泰州token异常:{}", responseEntity.getStatusCode());
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// TaiZhouRes<TaiZhouTokenRes> taiZhouTokenResTaiZhouRes = parseResult(responseEntity, TaiZhouTokenRes.class);
|
||||
//
|
||||
// log.info("请求泰州住建局(token)返回结果:httpCode={}, body={}", responseEntity.getStatusCode(), taiZhouTokenResTaiZhouRes);
|
||||
//
|
||||
// //token默认43200秒(12小时),建议提前1小时重新获取
|
||||
// redisTemplate.opsForValue().set(taiZhouConfig.getRedisTokenName(), taiZhouTokenResTaiZhouRes.getResultData().getToken(), taiZhouTokenResTaiZhouRes.getResultData().getExpireTime() - 60 * 60, TimeUnit.SECONDS);
|
||||
//
|
||||
// log.info("redis,加入token:{}", taiZhouTokenResTaiZhouRes.getResultData().getToken());
|
||||
//
|
||||
// return taiZhouTokenResTaiZhouRes.getResultData().getToken();
|
||||
TaiZhouRes<TaiZhouTokenRes> taiZhouTokenResTaiZhouRes = parseResult(responseEntity, TaiZhouTokenRes.class);
|
||||
|
||||
log.info("请求泰州住建局(token)返回结果:httpCode={}, body={}", responseEntity.getStatusCode(), taiZhouTokenResTaiZhouRes);
|
||||
|
||||
//token默认43200秒(12小时),建议提前1小时重新获取
|
||||
redisTemplate.opsForValue().set(taiZhouConfig.getRedisTokenName(), taiZhouTokenResTaiZhouRes.getResultData().getToken(), taiZhouTokenResTaiZhouRes.getResultData().getExpireTime() - 60 * 60, TimeUnit.SECONDS);
|
||||
|
||||
log.info("redis,加入token:{}", taiZhouTokenResTaiZhouRes.getResultData().getToken());
|
||||
|
||||
return taiZhouTokenResTaiZhouRes.getResultData().getToken();
|
||||
}
|
||||
|
||||
public ResponseEntity<String> post(String apiPath, Object paramReq, String requestBody) {
|
||||
|
||||
@ -282,6 +282,7 @@ public class TaiZhouServiceImpl implements TaiZhouService {
|
||||
@Override
|
||||
public void handlePerson(ThirdPerson thirdPerson, TaiZhouProject taiZhouProject) {
|
||||
|
||||
log.info("泰州人员:{} 开始处理", thirdPerson.getThirdPersonName());
|
||||
ThirdPerson oldThirdPerson = queryThirdPerson(thirdPerson);
|
||||
//如果数据库为空,则插入
|
||||
if (Objects.isNull(oldThirdPerson)) {
|
||||
@ -299,31 +300,32 @@ public class TaiZhouServiceImpl implements TaiZhouService {
|
||||
updateDataHandle(thirdPerson, taiZhouProject, oldThirdPerson);
|
||||
|
||||
}
|
||||
|
||||
log.info("泰州人员:{} 处理结束", thirdPerson.getThirdPersonName());
|
||||
}
|
||||
|
||||
private void updateDataHandle(ThirdPerson thirdPerson, TaiZhouProject taiZhouProject, ThirdPerson oldThirdPerson) {
|
||||
|
||||
log.info("泰州人员:{},开始执行业务", thirdPerson.getThirdPersonName());
|
||||
|
||||
//业务前置检查,泰州同步关键信息不能变化,身份证,姓名不能有变化
|
||||
taiZhouSyncBasicPersonCheck(thirdPerson, oldThirdPerson);
|
||||
|
||||
//如果没有绑定,直接使用新手机号绑定
|
||||
if (oldThirdPerson.getPersonId() == 0L) {
|
||||
|
||||
log.info("泰州人员:{},历史数据未绑定安心筑账号,重新执行绑定业务(根据业务条件尝试绑定,不一定会绑定)", thirdPerson.getThirdPersonName());
|
||||
newDataHandle(thirdPerson, taiZhouProject);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
//手机号没有变化,直接跳过处理
|
||||
//数据已经绑定了,且手机号没有变更,不做处理
|
||||
if (oldThirdPerson.getThirdPersonPhone().equals(thirdPerson.getThirdPersonPhone())) {
|
||||
//数据已经绑定了,且手机号没有变更,不做处理
|
||||
log.info("泰州人员姓名:{},手机号:{},安心筑personId:{} 绑定过的信息,且信息未修改,不做处理", thirdPerson.getThirdPersonName(), thirdPerson.getThirdPersonPhone(), oldThirdPerson.getPersonId());
|
||||
log.info("泰州人员:{},手机号:{},安心筑personId:{} 绑定过的信息,且信息未修改,不做处理", thirdPerson.getThirdPersonName(), thirdPerson.getThirdPersonPhone(), oldThirdPerson.getPersonId());
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
//如果泰州数据已经绑定过了安心筑账号,且泰州手机号发生了变更
|
||||
log.warn("泰州人员:{},手机号发生变化:{} -> {} ", thirdPerson.getThirdPersonName(), oldThirdPerson.getThirdPersonPhone(), thirdPerson.getThirdPersonPhone());
|
||||
log.info("泰州人员:{},手机号发生变化:{} -> {} ", thirdPerson.getThirdPersonName(), oldThirdPerson.getThirdPersonPhone(), thirdPerson.getThirdPersonPhone());
|
||||
|
||||
//查询新手机在安心筑记录
|
||||
PersonProfileDto newPerson = userCenterRpc.queryPersonByPhone(thirdPerson.getThirdPersonPhone());
|
||||
@ -331,24 +333,34 @@ public class TaiZhouServiceImpl implements TaiZhouService {
|
||||
//查询当前泰州信息绑定安心筑人员的信息
|
||||
PersonProfileDto currentBindPerson = userCenterRpc.queryPersonByPersonId(oldThirdPerson.getPersonId());
|
||||
|
||||
//数据完善验证
|
||||
if (Objects.isNull(currentBindPerson)) {
|
||||
throw new ServiceException("已绑定安心筑账号不存在,PersonID:" + oldThirdPerson.getPersonId());
|
||||
throw new ServiceException("泰州人员:" + thirdPerson.getThirdPersonName() + " 绑定的安心筑数据异常,已绑定安心筑账号不存在,PersonID:" + oldThirdPerson.getPersonId());
|
||||
}
|
||||
|
||||
//泰州数据已经绑定过了安心筑账号,但是泰州变更了手机号,且新手机号没有在安心筑注册,则更新安心筑手机号为泰州手机号
|
||||
//更新安心筑账号的手机号场景验证
|
||||
//1:泰州新手机号必须在安心筑没有注册,2:泰州新手机号必须与当前泰州数据关联的安心筑手机号不一致,3:泰州数据人员信息必须与关联的安心筑人员信息一致,比对姓名,脱敏身份证
|
||||
if (Objects.isNull(newPerson)) {
|
||||
|
||||
//如果泰州信息绑定的安心筑账号的现有手机号和泰州新手机号已经一致了,跳过处理
|
||||
if (currentBindPerson.getPhone().equals(thirdPerson.getThirdPersonPhone())) {
|
||||
log.info("泰州手机号变更后,新手机号和安心筑一致,无需处理");
|
||||
log.info("泰州人员:{} 手机号变更后,新手机号:{}和安心筑一致,无需处理", thirdPerson.getThirdPersonName(), thirdPerson.getThirdPersonPhone());
|
||||
return;
|
||||
}
|
||||
|
||||
//历史绑定数据未实名,直接修改安心筑手机号
|
||||
if (!(VerifyStatus.VERIFY_SUCCESS == currentBindPerson.getVerification().getVerifyStatus())) {
|
||||
log.info("泰州人员:{} 同步数据,新手机号在安心筑账号为空,且历史绑定数据未实名,需要覆盖安心筑手机号,安心筑personId:{}:originPhone:{},newPhone:{}", thirdPerson.getThirdPersonName(), currentBindPerson.getId(), currentBindPerson.getPhone(), thirdPerson.getThirdPersonPhone());
|
||||
userCenterRpc.updateUserPhone(oldThirdPerson.getPersonId(), thirdPerson.getThirdPersonPhone());
|
||||
return;
|
||||
}
|
||||
|
||||
//实名过的数据需要比对信息一致
|
||||
//泰州新手机号与绑定的安心筑手机号不一致,且必须要泰州姓名身份证和安心筑一致,才可以覆盖安心筑的手机号
|
||||
if (comparePersonInfo(currentBindPerson, thirdPerson)) {
|
||||
log.info("泰州同步数据,开始覆盖安心筑手机号,personId:{}:originPhone:{},newPhone:{}", currentBindPerson.getId(), currentBindPerson.getPhone(), thirdPerson.getThirdPersonPhone());
|
||||
userCenterRpc.updateUserPhone(thirdPerson.getPersonId(), thirdPerson.getThirdPersonPhone());
|
||||
log.info("泰州人员:{} 同步数据,新手机号在安心筑账号为空,且历史绑定数据实名,且与泰州信息一致,需要覆盖安心筑手机号,安心筑personId:{}:originPhone:{},newPhone:{}", thirdPerson.getThirdPersonName(), currentBindPerson.getId(), currentBindPerson.getPhone(), thirdPerson.getThirdPersonPhone());
|
||||
userCenterRpc.updateUserPhone(oldThirdPerson.getPersonId(), thirdPerson.getThirdPersonPhone());
|
||||
} else {
|
||||
log.error("泰州信息和安心筑信息不一致,泰州人员名称:{}", thirdPerson.getThirdPersonName());
|
||||
log.error("泰州人员:{} 基本信息和安心筑信息不一致(姓名或者脱敏身份证不一致),不修改安心筑手机号", thirdPerson.getThirdPersonName());
|
||||
}
|
||||
}
|
||||
//泰州数据已经绑定过了安心筑账号,但是泰州变更了手机号,且新手机号在安心筑已经注册了
|
||||
@ -358,13 +370,19 @@ public class TaiZhouServiceImpl implements TaiZhouService {
|
||||
if (VerifyStatus.VERIFY_SUCCESS != currentBindPerson.getVerification().getVerifyStatus() &&
|
||||
VerifyStatus.VERIFY_SUCCESS != newPerson.getVerification().getVerifyStatus()) {
|
||||
|
||||
|
||||
log.info("泰州人员:{} 同步数据,新手机号在安心筑账号不为空,且新老手机号对应的安心筑账号均未实名,需要修改泰州数据关联的安心筑personID,安心筑personId:{}->{}}", thirdPerson.getThirdPersonName(), thirdPerson.getPersonId(), newPerson.getId());
|
||||
|
||||
taiZhouPersonIdRepeatBindCheck(newPerson.getId());
|
||||
thirdPerson.setPersonId(newPerson.getId());
|
||||
|
||||
//将新手机关了的安心筑账号ID更新到中间表中
|
||||
//新手机号必须有对应的工人角色(新手机号对应的安心筑账号是查询出来的,可能没有工人角色,需要补充)
|
||||
userCenterRpc.createNormalWorker(thirdPerson.getThirdPersonPhone());
|
||||
|
||||
PersonProfileDto personProfileDto = userCenterRpc.createNormalWorker(thirdPerson.getThirdPersonPhone());
|
||||
if (personProfileDto.getRealName().contains("工友") || personProfileDto.getRealName().contains("工人")) {
|
||||
log.info("泰州人员:{} 关联的安心筑人员姓名是默认姓名,需要修改,修改前:{},修改后:{}", thirdPerson.getThirdPersonName(), personProfileDto.getRealName(), thirdPerson.getThirdPersonName());
|
||||
userCenterRpc.updateUserName(thirdPerson);
|
||||
}
|
||||
thirdPersonDao.lambdaUpdate()
|
||||
.eq(ThirdPerson::getThirdCode, thirdPerson.getThirdCode())
|
||||
.eq(ThirdPerson::getThirdUniquePersonId, thirdPerson.getThirdUniquePersonId())
|
||||
@ -378,26 +396,60 @@ public class TaiZhouServiceImpl implements TaiZhouService {
|
||||
if (VerifyStatus.VERIFY_SUCCESS == currentBindPerson.getVerification().getVerifyStatus() &&
|
||||
VerifyStatus.VERIFY_SUCCESS != newPerson.getVerification().getVerifyStatus()) {
|
||||
|
||||
|
||||
log.info("泰州人员:{} 同步数据,新手机号在安心筑账号关联的账号未实名,且当前关联的安心筑账号已经实名,安心筑需要合并账号,安心筑销毁账号:{},安心筑销主账号:{}}", thirdPerson.getThirdPersonName(), currentBindPerson.getId(), newPerson.getId());
|
||||
|
||||
taiZhouPersonIdRepeatBindCheck(newPerson.getId());
|
||||
|
||||
//合并账号前,验证用户信息确认泰州和安心筑实名账号是同一个人
|
||||
if (comparePersonInfo(currentBindPerson, thirdPerson)) {
|
||||
//合并账号
|
||||
userCenterRpc.mergeAccount(currentBindPerson.getId(), newPerson.getId());
|
||||
if (!comparePersonInfo(currentBindPerson, thirdPerson)) {
|
||||
log.error("泰州人员:{} 基本信息和安心筑信息不一致(姓名或者脱敏身份证不一致),不能合并账号", thirdPerson.getThirdPersonName());
|
||||
return ;
|
||||
}
|
||||
|
||||
//合并账号
|
||||
userCenterRpc.mergeAccount(currentBindPerson.getId(), newPerson.getId());
|
||||
return;
|
||||
}
|
||||
|
||||
//如果老的关联账号没有实名,新的账号实名了
|
||||
if (VerifyStatus.VERIFY_SUCCESS != currentBindPerson.getVerification().getVerifyStatus() &&
|
||||
VerifyStatus.VERIFY_SUCCESS == newPerson.getVerification().getVerifyStatus()) {
|
||||
|
||||
taiZhouPersonIdRepeatBindCheck(newPerson.getId());
|
||||
|
||||
//修改绑定关系
|
||||
//合并账号前,验证用户信息确认泰州和安心筑实名账号是同一个人
|
||||
if (!comparePersonInfo(newPerson, thirdPerson)) {
|
||||
log.error("泰州人员:{} 基本信息和新手机号对应的实名安心筑信息不一致(姓名或者脱敏身份证不一致),不修改绑定关系", thirdPerson.getThirdPersonName());
|
||||
return ;
|
||||
}
|
||||
|
||||
thirdPerson.setPersonId(newPerson.getId());
|
||||
//将新手机关了的安心筑账号ID更新到中间表中
|
||||
//新手机号必须有对应的工人角色(新手机号对应的安心筑账号是查询出来的,可能没有工人角色,需要补充)
|
||||
PersonProfileDto personProfileDto = userCenterRpc.createNormalWorker(thirdPerson.getThirdPersonPhone());
|
||||
if (personProfileDto.getRealName().contains("工友") || personProfileDto.getRealName().contains("工人")) {
|
||||
log.info("泰州人员:{} 关联的安心筑人员姓名是默认姓名,需要修改,修改前:{},修改后:{}", thirdPerson.getThirdPersonName(), personProfileDto.getRealName(), thirdPerson.getThirdPersonName());
|
||||
userCenterRpc.updateUserName(thirdPerson);
|
||||
}
|
||||
thirdPersonDao.lambdaUpdate()
|
||||
.eq(ThirdPerson::getThirdCode, thirdPerson.getThirdCode())
|
||||
.eq(ThirdPerson::getThirdUniquePersonId, thirdPerson.getThirdUniquePersonId())
|
||||
.set(ThirdPerson::getPersonId, thirdPerson.getPersonId())
|
||||
.update();
|
||||
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
//不存在2个都是实名的情况,除非是2个人,如果是2个人,手机号必定不一样
|
||||
//如果老的关联账号没有实名,新的账号实名了
|
||||
if (VerifyStatus.VERIFY_SUCCESS == currentBindPerson.getVerification().getVerifyStatus() &&
|
||||
VerifyStatus.VERIFY_SUCCESS == newPerson.getVerification().getVerifyStatus()) {
|
||||
log.error("泰州人员:{} 手机号变更,发现新老手机号对应的安心筑账号均实名,异常", thirdPerson.getThirdPersonName());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -495,10 +547,12 @@ public class TaiZhouServiceImpl implements TaiZhouService {
|
||||
private void createUserOrSyncUser(ThirdPerson thirdPerson) {
|
||||
String phone = thirdPerson.getThirdPersonPhone();
|
||||
if (Objects.isNull(phone) || phone.contains("*")) {
|
||||
log.info("手机号不合法,不能进行创建用户校验,{}", phone);
|
||||
log.info("泰州人员:{} 手机号不合法,不能进行创建用户校验,{}", thirdPerson.getThirdPersonName(), phone);
|
||||
return;
|
||||
}
|
||||
|
||||
log.info("泰州人员:{} 开始幂等创建安心筑工人账号,创建信息-手机号:{}", thirdPerson.getThirdPersonName(), thirdPerson.getThirdPersonPhone());
|
||||
|
||||
PersonProfileDto personProfileDto = userCenterRpc.createNormalWorker(thirdPerson.getThirdPersonPhone());
|
||||
|
||||
if (Objects.isNull(personProfileDto)) {
|
||||
@ -507,17 +561,21 @@ public class TaiZhouServiceImpl implements TaiZhouService {
|
||||
thirdPerson.setPersonId(personProfileDto.getId());
|
||||
//先更新安心筑表中的姓名,在更新三方表的记录,顺序不能变
|
||||
if (personProfileDto.getRealName().contains("工友") || personProfileDto.getRealName().contains("工人")) {
|
||||
log.info("泰州人员:{} 关联的安心筑人员姓名是默认姓名,需要修改:修改前:{},修改后:{}", thirdPerson.getThirdPersonName(), personProfileDto.getRealName(), thirdPerson.getThirdPersonName());
|
||||
userCenterRpc.updateUserName(thirdPerson);
|
||||
}
|
||||
|
||||
taiZhouPersonIdRepeatBindCheck(personProfileDto.getId());
|
||||
log.info("泰州人员:{} 开始绑定安心筑personID:{}", thirdPerson.getThirdPersonName(), personProfileDto.getId());
|
||||
|
||||
taiZhouPersonIdRepeatBindCheck(personProfileDto.getId());
|
||||
//更新安心筑关联ID
|
||||
thirdPersonDao.lambdaUpdate()
|
||||
.eq(ThirdPerson::getThirdCode, thirdPerson.getThirdCode())
|
||||
.eq(ThirdPerson::getThirdUniquePersonId, thirdPerson.getThirdUniquePersonId())
|
||||
.set(ThirdPerson::getPersonId, thirdPerson.getPersonId())
|
||||
.update();
|
||||
log.info("泰州人员:{} 绑定安心筑账号结束", thirdPerson.getThirdPersonName());
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user