Commit 2a723934 by 墨竹

fix:bug修改

parent 068d8aae
......@@ -12,7 +12,10 @@ import com.gic.haoban.app.customer.enums.QywxSyncTaskTypeEnum;
import com.gic.haoban.base.api.common.BasePageInfo;
import com.gic.haoban.base.api.common.ServiceResponse;
import com.gic.haoban.common.utils.PageUtil;
import com.gic.haoban.manage.api.dto.*;
import com.gic.haoban.manage.api.dto.AlertMessageDTO;
import com.gic.haoban.manage.api.dto.ClerkStaffWxUserDTO;
import com.gic.haoban.manage.api.dto.ExternalClerkRelatedDTO;
import com.gic.haoban.manage.api.dto.ExternalClerkRelatedShortInfoDTO;
import com.gic.haoban.manage.api.enums.AlertTypeEnum;
import com.gic.haoban.manage.api.service.CheckQywxSettingApiService;
import com.gic.haoban.manage.api.service.ExternalClerkRelatedApiService;
......@@ -320,10 +323,10 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
}
String lockKey = "updateNewExternalUserid_" + wxEnterpriseId;
if (RedisUtil.isLocked(lockKey)) {
log.info("redis锁,lockKey:{}",lockKey);
log.info("redis锁,lockKey:{}", lockKey);
return false;
}
RedisUtil.lock(lockKey,1L,TimeUnit.DAYS,0L);
RedisUtil.lock(lockKey, 1L, TimeUnit.DAYS, 0L);
try {
updateNewExUserId(tabHaobanWxEnterprise.getWxEnterpriseId(), tabHaobanWxEnterprise.getCorpid());
log.info("企业外部联系人id end,wxEnterpriseId:{}", wxEnterpriseId);
......@@ -339,55 +342,60 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
@Override
public void updateNewExternalUseridMq(String res) {
log.info("更新新的外部联系人id mq,start");
JSONObject jsonObject = JSON.parseObject(res);
String corpid = jsonObject.getString("corpid");
String wxEnterpriseId = jsonObject.getString("wxEnterpriseId");
Boolean isLastPage = jsonObject.getBoolean("isLastPage");
log.info("更新新的外部联系人id mq,corpid:{},wxEnterpriseId:{}", corpid, wxEnterpriseId);
String externalUserIdLists = jsonObject.getString("externalUserIdList");
List<String> externalUserIdList = JSON.parseArray(externalUserIdLists, String.class);
//查询企微接口,更新新的external_user_id
List<QywxNewExternalUseridDTO> newExternalUseridList = qywxUserApiService.getNewExternalUseridByList(corpid, config.getWxSuiteid(), externalUserIdList);
if (CollectionUtils.isEmpty(newExternalUseridList)) {
log.info("更新新的外部联系人id,查询企业微信接口报错");
wxEnterriseMapper.updateExternalFlagById(3, wxEnterpriseId);
return;
}
List<TabExternalUseridLog> tabExternalUseridLogList = new ArrayList<>();
for (QywxNewExternalUseridDTO qywxNewExternalUseridDTO : newExternalUseridList) {
String new_external_userid = qywxNewExternalUseridDTO.getNew_external_userid();
String external_userid = qywxNewExternalUseridDTO.getExternal_userid();
//好友关系表
tabHaobanExternalClerkRelatedMapper.updateExternalUserIdByOldExternalUserId(new_external_userid, external_userid, wxEnterpriseId);
//会员关系表
memberUnionidRelatedMapper.updateExternalUserIdByOldExternalUserId(new_external_userid, external_userid, wxEnterpriseId);
TabExternalUseridLog tabExternalUseridLog = new TabExternalUseridLog();
tabExternalUseridLog.setId(UniqueIdUtils.uniqueLong());
tabExternalUseridLog.setOldExternalUserId(external_userid);
tabExternalUseridLog.setNewExternalUserId(new_external_userid);
tabExternalUseridLog.setWxEnterpriseId(wxEnterpriseId);
tabExternalUseridLog.setCreatorId("admin");
tabExternalUseridLog.setCreatorName("系统管理员");
tabExternalUseridLogList.add(tabExternalUseridLog);
}
externalUseridLogMapper.insertBatch(tabExternalUseridLogList);
//最后一页
if (isLastPage) {
//serviceCorpid 默认为:达摩网络
boolean flag = qywxUserApiService.finishExternalUseridMigration(corpid, config.getCorpid());
log.info("更新新的外部联系人id最后一页,设置迁移完成:flag:{}", flag);
if (flag) {
//成功
wxEnterriseMapper.updateExternalFlagById(1, wxEnterpriseId);
} else {
//失败
try {
JSONObject jsonObject = JSON.parseObject(res);
String corpid = jsonObject.getString("corpid");
String wxEnterpriseId = jsonObject.getString("wxEnterpriseId");
Boolean isLastPage = jsonObject.getBoolean("isLastPage");
log.info("更新新的外部联系人id mq,corpid:{},wxEnterpriseId:{}", corpid, wxEnterpriseId);
String externalUserIdLists = jsonObject.getString("externalUserIdList");
List<String> externalUserIdList = JSON.parseArray(externalUserIdLists, String.class);
//查询企微接口,更新新的external_user_id
List<QywxNewExternalUseridDTO> newExternalUseridList = qywxUserApiService.getNewExternalUseridByList(corpid, config.getWxSuiteid(), externalUserIdList);
if (CollectionUtils.isEmpty(newExternalUseridList)) {
log.info("更新新的外部联系人id,查询企业微信接口报错");
wxEnterriseMapper.updateExternalFlagById(3, wxEnterpriseId);
externalUseridLogMapper.updateStatusFlagByWxEnterpriseId(0, wxEnterpriseId);
//回退老的
externalUseridLogMapper.updateOldExternalUserId(wxEnterpriseId);
return;
}
List<TabExternalUseridLog> tabExternalUseridLogList = new ArrayList<>();
for (QywxNewExternalUseridDTO qywxNewExternalUseridDTO : newExternalUseridList) {
String new_external_userid = qywxNewExternalUseridDTO.getNew_external_userid();
String external_userid = qywxNewExternalUseridDTO.getExternal_userid();
//好友关系表
tabHaobanExternalClerkRelatedMapper.updateExternalUserIdByOldExternalUserId(new_external_userid, external_userid, wxEnterpriseId);
//会员关系表
memberUnionidRelatedMapper.updateExternalUserIdByOldExternalUserId(new_external_userid, external_userid, wxEnterpriseId);
TabExternalUseridLog tabExternalUseridLog = new TabExternalUseridLog();
tabExternalUseridLog.setId(UniqueIdUtils.uniqueLong());
tabExternalUseridLog.setOldExternalUserId(external_userid);
tabExternalUseridLog.setNewExternalUserId(new_external_userid);
tabExternalUseridLog.setWxEnterpriseId(wxEnterpriseId);
tabExternalUseridLog.setCreatorId("admin");
tabExternalUseridLog.setCreatorName("系统管理员");
tabExternalUseridLogList.add(tabExternalUseridLog);
}
externalUseridLogMapper.insertBatch(tabExternalUseridLogList);
//最后一页
if (isLastPage) {
//serviceCorpid 默认为:达摩网络
boolean flag = qywxUserApiService.finishExternalUseridMigration(corpid, config.getCorpid());
log.info("更新新的外部联系人id最后一页,设置迁移完成:flag:{}", flag);
if (flag) {
//成功
wxEnterriseMapper.updateExternalFlagById(1, wxEnterpriseId);
} else {
//失败
wxEnterriseMapper.updateExternalFlagById(3, wxEnterpriseId);
externalUseridLogMapper.updateStatusFlagByWxEnterpriseId(0, wxEnterpriseId);
//回退老的
externalUseridLogMapper.updateOldExternalUserId(wxEnterpriseId);
}
}
log.info("更新新的外部联系人id mq,end");
} catch (Exception e) {
log.info("更新新的外部联系人id mq报错:{},res:{}", e.getMessage(), res, e);
}
log.info("更新新的外部联系人id mq,end");
}
/**
......@@ -400,7 +408,7 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
*/
private void updateNewExUserId(String wxEnterpriseId, String corpid) {
wxEnterriseMapper.updateExternalFlagById(2, wxEnterpriseId);
messageAlert(wxEnterpriseId,"更新新的外部联系人id");
messageAlert(wxEnterpriseId, "更新新的外部联系人id");
// 限流器
RRateLimiter rateLimiter = RedisUtil.getRedisClient().getRateLimiter("haoban:manage3:updateNewExUserId:limit");
// 每1秒产生5个令牌
......@@ -462,7 +470,7 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
* @param wxEnterpriseId wx企业标识
* @param titleSub 子标题
*/
private void messageAlert(String wxEnterpriseId,String titleSub) {
private void messageAlert(String wxEnterpriseId, String titleSub) {
ProviderLocalTag providerLocalTag = ProviderLocalTag.tag.get();
String traceId = providerLocalTag.traceId;
AlertMessageDTO messageDTO = new AlertMessageDTO();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment