Merge branch 'feature/REQ-2960' of axzsource.com:universal/infrastructure/backend/riven into feature/REQ-2960

This commit is contained in:
zhongpeng 2024-09-10 11:42:58 +08:00
commit ff0366a6d5
5 changed files with 42 additions and 14 deletions

View File

@ -71,7 +71,7 @@ public class RocketMQConfig {
@Slf4j
@Component
@RocketMQMessageListener(topic = "topic_profile_${spring.profiles.active}",
consumerGroup = "${spring.application.name}-${spring.profiles.active}",
consumerGroup = "GID_topic_${spring.application.name}_${spring.profiles.active}",
consumeMode = ConsumeMode.ORDERLY,
maxReconsumeTimes = 3
)

View File

@ -0,0 +1,10 @@
package cn.axzo.riven.third.service;
public interface DingDingRobotService {
/**
* 发钉钉消息先默认是泰州的后续如果不同三方对应的行为不一致再调整
*
* @param content
*/
void send(String content);
}

View File

@ -0,0 +1,20 @@
package cn.axzo.riven.third.service.impl;
import cn.axzo.riven.third.common.DingTalkUtil;
import cn.axzo.riven.third.service.DingDingRobotService;
import cn.axzo.riven.third.taizhou.config.TaiZhouConfig;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@Slf4j
@Service
@RequiredArgsConstructor
public class DingDingRobotServiceImpl implements DingDingRobotService {
private final TaiZhouConfig taiZhouConfig;
@Override
public void send(String content) {
DingTalkUtil.sendMessage(content, taiZhouConfig.getDingTalkBotAccessToken(), taiZhouConfig.getDingTalkBotSecret());
}
}

View File

@ -6,10 +6,9 @@ import cn.axzo.basics.profiles.common.utils.RpcUtils;
import cn.axzo.basics.profiles.dto.basic.PersonProfileDto;
import cn.axzo.basics.profiles.dto.request.QueryPersonProfileByIdOrPhoneDto;
import cn.axzo.riven.client.common.enums.ThirdCodeEnum;
import cn.axzo.riven.third.common.DingTalkUtil;
import cn.axzo.riven.third.dao.ThirdPersonDao;
import cn.axzo.riven.third.entity.ThirdPerson;
import cn.axzo.riven.third.taizhou.config.TaiZhouConfig;
import cn.axzo.riven.third.service.DingDingRobotService;
import cn.axzo.riven.third.taizhou.service.OperateLogService;
import cn.azxo.framework.common.model.CommonResponse;
import com.alibaba.fastjson.JSON;
@ -52,7 +51,7 @@ public class ManualUpdateTaizhouPersonIdJob extends IJobHandler {
@Autowired
private OperateLogService operateLogService;
@Autowired
private TaiZhouConfig taiZhouConfig;
private DingDingRobotService dingDingRobotService;
@Override
@XxlJob("manualUpdateTaizhouPersonIdJob")
@ -102,11 +101,11 @@ public class ManualUpdateTaizhouPersonIdJob extends IJobHandler {
if (!Objects.equals(personProfile.getRealName(), thirdPerson.getThirdPersonName())
|| !Objects.equals(maskedPersonIdNumber, thirdPerson.getThirdIdNumber())) {
String errorLog = String.format("Job手动刷新personId触发告警根据手机号查询到的安心筑用户实名信息和泰州实名信息不一致请确认。" +
"id = {}, phone = {}, axzoRealname = %s, axzoIdNumber = %s, taizhouRealname = %s, taizhouIdNumber = %s",
"id = %s, phone = %s, axzoRealname = %s, axzoIdNumber = %s, taizhouRealname = %s, taizhouIdNumber = %s",
thirdPerson.getId(), thirdPerson.getThirdPersonPhone(), personProfile.getRealName(), personProfile.getIdNumber(), thirdPerson.getThirdPersonName(), thirdPerson.getThirdIdNumber());
log.info(errorLog);
XxlJobLogger.log(errorLog);
DingTalkUtil.sendMessage(errorLog, taiZhouConfig.getDingTalkBotAccessToken(), taiZhouConfig.getDingTalkBotSecret());
dingDingRobotService.send(errorLog);
return;
}
// 判断新personId有没有被其他ThirdPerson绑定
@ -117,11 +116,11 @@ public class ManualUpdateTaizhouPersonIdJob extends IJobHandler {
.ne(ThirdPerson::getId, thirdPerson.getId())
.list();
if (!conflicts.isEmpty()) {
String errorMsg = String.format("Job手动刷新personId触发告警新personId存在已绑定的workerId的数据本次不更新请确认数据。id = {}, workerId = {}, oldPersonId = %s, newPersonId = %s, conflicts = %s"
String errorMsg = String.format("Job手动刷新personId触发告警新personId存在已绑定的workerId的数据本次不更新请确认数据。id = %s, workerId = %s, oldPersonId = %s, newPersonId = %s, conflicts = %s"
, thirdPerson.getId(), thirdPerson.getThirdUniquePersonId(), oldPersonId, newPersonId, JSON.toJSONString(conflicts));
log.info(errorMsg);
XxlJobLogger.log(errorMsg);
DingTalkUtil.sendMessage(errorMsg, taiZhouConfig.getDingTalkBotAccessToken(), taiZhouConfig.getDingTalkBotSecret());
dingDingRobotService.send(errorMsg);
return;
}

View File

@ -3,10 +3,9 @@ package cn.axzo.riven.third.taizhou.mq.outer;
import cn.axzo.framework.rocketmq.Event;
import cn.axzo.framework.rocketmq.EventConsumer;
import cn.axzo.riven.client.common.enums.ThirdCodeEnum;
import cn.axzo.riven.third.common.DingTalkUtil;
import cn.axzo.riven.third.dao.ThirdPersonDao;
import cn.axzo.riven.third.entity.ThirdPerson;
import cn.axzo.riven.third.taizhou.config.TaiZhouConfig;
import cn.axzo.riven.third.service.DingDingRobotService;
import cn.axzo.riven.third.taizhou.mq.outer.payload.PersonProfileMergedPayload;
import cn.axzo.riven.third.taizhou.service.OperateLogService;
import cn.azxo.framework.common.utils.LogUtil;
@ -43,7 +42,7 @@ public class UpdateTaizhouPersonOnPersonProfileMergedHandler implements Initiali
@Autowired
private OperateLogService operateLogService;
@Autowired
private TaiZhouConfig taiZhouConfig;
private DingDingRobotService dingDingRobotService;
public void updateThirdPersonPersonId(Event event, EventConsumer.Context context) {
PersonProfileMergedPayload payload = event.normalizedData(PersonProfileMergedPayload.class);
@ -83,10 +82,10 @@ public class UpdateTaizhouPersonOnPersonProfileMergedHandler implements Initiali
if (!boundedList.isEmpty()) {
log.info("updateThirdPersonPersonId, oldPersonId = {}, newPersonId = {}, 新personId已经绑定了其他workerId, boundedList = {}"
, oldPersonId, newPersonId, JSON.toJSONString(boundedList));
String errorMsg = String.format("账号合并触发泰州用户表信息触发告警新personId存在已绑定的workerId的数据本次不更新请确认数据。oldPersonId = %s, newPersonId = %s, list = %s",
String errorMsg = String.format("账号合并触发泰州用户表信息触发告警新personId存在已绑定的workerId的数据()本次不更新请确认数据。oldPersonId = %s, newPersonId = %s, list = %s",
oldPersonId, newPersonId, JSON.toJSONString(list));
LogUtil.error(LogUtil.ErrorLevel.P1, LogUtil.ErrorType.ERROR_BUSINESS, errorMsg);
DingTalkUtil.sendMessage(errorMsg, taiZhouConfig.getDingTalkBotAccessToken(), taiZhouConfig.getDingTalkBotSecret());
dingDingRobotService.send(errorMsg);
// 操作失败的也记个日志方便排查问题
operateLogService.save(buildOperateParam(oldPersonId, newPersonId, OperateLogService.OperateType.UPDATE_FAIL, orig, String.format("账号合并更新personId由于新personId已被绑定不进行更新操作%s -> %s", oldPersonId, newPersonId),
new JSONObject().fluentPut("conflictId", boundedList.get(0).getId())
@ -98,7 +97,7 @@ public class UpdateTaizhouPersonOnPersonProfileMergedHandler implements Initiali
String errorMsg = String.format("账号合并触发泰州用户表信息触发告警原personId对应到多个workerId的数据更新其中一条。personId = %s, thirdPersons = %s",
oldPersonId, JSON.toJSONString(list));
LogUtil.error(LogUtil.ErrorLevel.P1, LogUtil.ErrorType.ERROR_BUSINESS, errorMsg);
DingTalkUtil.sendMessage(errorMsg, taiZhouConfig.getDingTalkBotAccessToken(), taiZhouConfig.getDingTalkBotSecret());
dingDingRobotService.send(errorMsg);
}
ThirdPerson toUpdate = new ThirdPerson();