Commit 76f36682 by 墨竹

Merge branch 'feature/2022-0104' into developer

parents 85e7d1db da9bb241
...@@ -89,7 +89,7 @@ public interface ExternalClerkRelatedApiService { ...@@ -89,7 +89,7 @@ public interface ExternalClerkRelatedApiService {
* *
* @return * @return
*/ */
List<ExternalClerkRelatedDTO> listExternalClerkByWxUserIdAncExternalUserId(String wxEnterpriseId, String wxUserId, String enterpriseId, String externalUserId); ExternalClerkRelatedDTO getExternalClerkByWxUserIdAncExternalUserId(String wxEnterpriseId, String wxUserId, String enterpriseId, String externalUserId);
/** /**
* 根据id查询列表 * 根据id查询列表
......
...@@ -68,5 +68,7 @@ public interface MemberUnionidRelatedMapper { ...@@ -68,5 +68,7 @@ public interface MemberUnionidRelatedMapper {
* @author mozhu * @author mozhu
* @date 2021-12-29 16:30:43 * @date 2021-12-29 16:30:43
*/ */
int updateExternalUserIdByOldExternalUserId(String new_external_userid, String external_userid, String wxEnterpriseId); int updateExternalUserIdByOldExternalUserId(@Param("newExternalUserId") String new_external_userid,
@Param("oldExternalUserId") String external_userid,
@Param("wxEnterpriseId") String wxEnterpriseId);
} }
\ No newline at end of file
...@@ -100,7 +100,7 @@ public interface TabHaobanExternalClerkRelatedMapper { ...@@ -100,7 +100,7 @@ public interface TabHaobanExternalClerkRelatedMapper {
* @param externalUserId * @param externalUserId
* @return * @return
*/ */
List<TabHaobanExternalClerkRelated> listExternalClerkByWxUserIdAncExternalUserId( TabHaobanExternalClerkRelated getExternalClerkByWxUserIdAncExternalUserId(
@Param("wxEnterpriseId") String wxEnterpriseId, @Param("wxUserId") String wxUserId, @Param("wxEnterpriseId") String wxEnterpriseId, @Param("wxUserId") String wxUserId,
@Param("enterpriseId") String enterpriseId, @Param("externalUserId") String externalUserId); @Param("enterpriseId") String enterpriseId, @Param("externalUserId") String externalUserId);
......
...@@ -12,10 +12,14 @@ import com.gic.haoban.app.customer.enums.QywxSyncTaskTypeEnum; ...@@ -12,10 +12,14 @@ import com.gic.haoban.app.customer.enums.QywxSyncTaskTypeEnum;
import com.gic.haoban.base.api.common.BasePageInfo; import com.gic.haoban.base.api.common.BasePageInfo;
import com.gic.haoban.base.api.common.ServiceResponse; import com.gic.haoban.base.api.common.ServiceResponse;
import com.gic.haoban.common.utils.PageUtil; 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.enums.AlertTypeEnum;
import com.gic.haoban.manage.api.service.CheckQywxSettingApiService; import com.gic.haoban.manage.api.service.CheckQywxSettingApiService;
import com.gic.haoban.manage.api.service.ExternalClerkRelatedApiService; import com.gic.haoban.manage.api.service.ExternalClerkRelatedApiService;
import com.gic.haoban.manage.api.service.WxEnterpriseApiService;
import com.gic.haoban.manage.service.config.Config; import com.gic.haoban.manage.service.config.Config;
import com.gic.haoban.manage.service.dao.mapper.*; import com.gic.haoban.manage.service.dao.mapper.*;
import com.gic.haoban.manage.service.entity.*; import com.gic.haoban.manage.service.entity.*;
...@@ -63,6 +67,8 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA ...@@ -63,6 +67,8 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
private ExternalUseridLogMapper externalUseridLogMapper; private ExternalUseridLogMapper externalUseridLogMapper;
@Autowired @Autowired
private CheckQywxSettingApiService checkQywxSettingApiService; private CheckQywxSettingApiService checkQywxSettingApiService;
@Autowired
private WxEnterpriseApiService wxEnterpriseApiService;
/** /**
* 查询导购好友关联 * 查询导购好友关联
...@@ -203,9 +209,9 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA ...@@ -203,9 +209,9 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
} }
@Override @Override
public List<ExternalClerkRelatedDTO> listExternalClerkByWxUserIdAncExternalUserId(String wxEnterpriseId, String wxUserId, String enterpriseId, String externalUserId) { public ExternalClerkRelatedDTO getExternalClerkByWxUserIdAncExternalUserId(String wxEnterpriseId, String wxUserId, String enterpriseId, String externalUserId) {
List<TabHaobanExternalClerkRelated> list = tabHaobanExternalClerkRelatedMapper.listExternalClerkByWxUserIdAncExternalUserId(wxEnterpriseId, wxUserId, enterpriseId, externalUserId); TabHaobanExternalClerkRelated externalClerkRelated = tabHaobanExternalClerkRelatedMapper.getExternalClerkByWxUserIdAncExternalUserId(wxEnterpriseId, wxUserId, enterpriseId, externalUserId);
return EntityUtil.changeEntityListNew(ExternalClerkRelatedDTO.class, list); return EntityUtil.changeEntityNew(ExternalClerkRelatedDTO.class, externalClerkRelated);
} }
@Override @Override
...@@ -320,10 +326,10 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA ...@@ -320,10 +326,10 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
} }
String lockKey = "updateNewExternalUserid_" + wxEnterpriseId; String lockKey = "updateNewExternalUserid_" + wxEnterpriseId;
if (RedisUtil.isLocked(lockKey)) { if (RedisUtil.isLocked(lockKey)) {
log.info("redis锁,lockKey:{}",lockKey); log.info("redis锁,lockKey:{}", lockKey);
return false; return false;
} }
RedisUtil.lock(lockKey,1L,TimeUnit.DAYS,0L); RedisUtil.lock(lockKey, 1L, TimeUnit.DAYS, 0L);
try { try {
updateNewExUserId(tabHaobanWxEnterprise.getWxEnterpriseId(), tabHaobanWxEnterprise.getCorpid()); updateNewExUserId(tabHaobanWxEnterprise.getWxEnterpriseId(), tabHaobanWxEnterprise.getCorpid());
log.info("企业外部联系人id end,wxEnterpriseId:{}", wxEnterpriseId); log.info("企业外部联系人id end,wxEnterpriseId:{}", wxEnterpriseId);
...@@ -339,55 +345,60 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA ...@@ -339,55 +345,60 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
@Override @Override
public void updateNewExternalUseridMq(String res) { public void updateNewExternalUseridMq(String res) {
log.info("更新新的外部联系人id mq,start"); log.info("更新新的外部联系人id mq,start");
JSONObject jsonObject = JSON.parseObject(res); try {
String corpid = jsonObject.getString("corpid"); JSONObject jsonObject = JSON.parseObject(res);
String wxEnterpriseId = jsonObject.getString("wxEnterpriseId"); String corpid = jsonObject.getString("corpid");
Boolean isLastPage = jsonObject.getBoolean("isLastPage"); String wxEnterpriseId = jsonObject.getString("wxEnterpriseId");
log.info("更新新的外部联系人id mq,corpid:{},wxEnterpriseId:{}", corpid, wxEnterpriseId); Boolean isLastPage = jsonObject.getBoolean("isLastPage");
String externalUserIdLists = jsonObject.getString("externalUserIdList"); log.info("更新新的外部联系人id mq,corpid:{},wxEnterpriseId:{}", corpid, wxEnterpriseId);
List<String> externalUserIdList = JSON.parseArray(externalUserIdLists, String.class); String externalUserIdLists = jsonObject.getString("externalUserIdList");
//查询企微接口,更新新的external_user_id List<String> externalUserIdList = JSON.parseArray(externalUserIdLists, String.class);
List<QywxNewExternalUseridDTO> newExternalUseridList = qywxUserApiService.getNewExternalUseridByList(corpid, config.getWxSuiteid(), externalUserIdList); //查询企微接口,更新新的external_user_id
if (CollectionUtils.isEmpty(newExternalUseridList)) { List<QywxNewExternalUseridDTO> newExternalUseridList = qywxUserApiService.getNewExternalUseridByList(corpid, config.getWxSuiteid(), externalUserIdList);
log.info("更新新的外部联系人id,查询企业微信接口报错"); if (CollectionUtils.isEmpty(newExternalUseridList)) {
wxEnterriseMapper.updateExternalFlagById(3, wxEnterpriseId); log.info("更新新的外部联系人id,查询企业微信接口报错");
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); wxEnterriseMapper.updateExternalFlagById(3, wxEnterpriseId);
externalUseridLogMapper.updateStatusFlagByWxEnterpriseId(0, wxEnterpriseId); return;
//回退老的 }
externalUseridLogMapper.updateOldExternalUserId(wxEnterpriseId); 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) {
//成功
wxEnterpriseApiService.agreeExternalUseridFlag(wxEnterpriseId, 1);
} 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 +411,7 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA ...@@ -400,7 +411,7 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
*/ */
private void updateNewExUserId(String wxEnterpriseId, String corpid) { private void updateNewExUserId(String wxEnterpriseId, String corpid) {
wxEnterriseMapper.updateExternalFlagById(2, wxEnterpriseId); wxEnterriseMapper.updateExternalFlagById(2, wxEnterpriseId);
messageAlert(wxEnterpriseId,"更新新的外部联系人id"); messageAlert(wxEnterpriseId, "更新新的外部联系人id");
// 限流器 // 限流器
RRateLimiter rateLimiter = RedisUtil.getRedisClient().getRateLimiter("haoban:manage3:updateNewExUserId:limit"); RRateLimiter rateLimiter = RedisUtil.getRedisClient().getRateLimiter("haoban:manage3:updateNewExUserId:limit");
// 每1秒产生5个令牌 // 每1秒产生5个令牌
...@@ -462,7 +473,7 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA ...@@ -462,7 +473,7 @@ public class ExternalClerkRelatedApiServiceImpl implements ExternalClerkRelatedA
* @param wxEnterpriseId wx企业标识 * @param wxEnterpriseId wx企业标识
* @param titleSub 子标题 * @param titleSub 子标题
*/ */
private void messageAlert(String wxEnterpriseId,String titleSub) { private void messageAlert(String wxEnterpriseId, String titleSub) {
ProviderLocalTag providerLocalTag = ProviderLocalTag.tag.get(); ProviderLocalTag providerLocalTag = ProviderLocalTag.tag.get();
String traceId = providerLocalTag.traceId; String traceId = providerLocalTag.traceId;
AlertMessageDTO messageDTO = new AlertMessageDTO(); AlertMessageDTO messageDTO = new AlertMessageDTO();
......
...@@ -440,7 +440,7 @@ ...@@ -440,7 +440,7 @@
and status_flag in (3, 4) and status_flag in (3, 4)
</update> </update>
<select id="listExternalClerkByWxUserIdAncExternalUserId" resultMap="BaseResultMap"> <select id="getExternalClerkByWxUserIdAncExternalUserId" resultMap="BaseResultMap">
select select
<include refid="Base_Column_List"/> <include refid="Base_Column_List"/>
from tab_haoban_external_clerk_related from tab_haoban_external_clerk_related
...@@ -449,7 +449,7 @@ ...@@ -449,7 +449,7 @@
and enterprise_id = #{enterpriseId} and enterprise_id = #{enterpriseId}
and external_user_id = #{externalUserId} and external_user_id = #{externalUserId}
and status_flag in(1,3,4) and status_flag in(1,3,4)
order by update_time desc order by update_time desc limit 1
</select> </select>
<select id="listByMemberIdAndWxEnterpriseId" resultMap="BaseResultMap"> <select id="listByMemberIdAndWxEnterpriseId" resultMap="BaseResultMap">
......
...@@ -413,21 +413,20 @@ public class WxEnterpriseInfoController extends WebBaseController { ...@@ -413,21 +413,20 @@ public class WxEnterpriseInfoController extends WebBaseController {
logger.info("请刷新好友"); logger.info("请刷新好友");
return resultResponse(HaoBanErrCode.ERR_11123); return resultResponse(HaoBanErrCode.ERR_11123);
} }
List<ExternalClerkRelatedDTO> clerkRelatedDTOS = externalClerkRelatedApiService.listExternalClerkByWxUserIdAncExternalUserId(wxEnterpriseId, wxUserId, gicEnterpriseId, memberUnionidRelatedDTO.getExternalUserid()); ExternalClerkRelatedDTO clerkRelatedDTO = externalClerkRelatedApiService.getExternalClerkByWxUserIdAncExternalUserId(wxEnterpriseId, wxUserId, gicEnterpriseId, memberUnionidRelatedDTO.getExternalUserid());
if (CollectionUtils.isEmpty(clerkRelatedDTOS)) { if (clerkRelatedDTO == null) {
logger.info("该企业没有对应需要发送的信息村子啊"); logger.info("该企业没有对应需要发送好友关系的信息");
return resultResponse(HaoBanErrCode.ERR_11123); return resultResponse(HaoBanErrCode.ERR_11123);
} }
MiniprogramSettingDTO settingDTO = wxEnterpriseApiService.getMiniprogramSettingByEid(wxEnterpriseId, gicEnterpriseId); MiniprogramSettingDTO settingDTO = wxEnterpriseApiService.getMiniprogramSettingByEid(wxEnterpriseId, gicEnterpriseId);
if (null == settingDTO) { if (null == settingDTO) {
logger.info("该企业没有对应需要发送的信息村子啊"); logger.info("该企业没有对应需要发送的小程序信息");
return resultResponse(HaoBanErrCode.ERR_11124); return resultResponse(HaoBanErrCode.ERR_11124);
} }
EnterpriseDTO enterpriseDTO = enterpriseService.getEnterpriseById(gicEnterpriseId); EnterpriseDTO enterpriseDTO = enterpriseService.getEnterpriseById(gicEnterpriseId);
ExternalClerkRelatedDTO clerkRelatedDTO = clerkRelatedDTOS.get(0);
MemberSendMessageVo memberSendMessageVo = new MemberSendMessageVo(); MemberSendMessageVo memberSendMessageVo = new MemberSendMessageVo();
memberSendMessageVo.setRelationKey(clerkRelatedDTO.getRelationKey()); String relationKey = clerkRelatedDTO.getRelationKey();
memberSendMessageVo.setRelationKey(StringUtils.isNotBlank(relationKey) ? relationKey : "-1");
memberSendMessageVo.setImageUrl(settingDTO.getImageUrl()); memberSendMessageVo.setImageUrl(settingDTO.getImageUrl());
memberSendMessageVo.setMediaId(settingDTO.getMediaId()); memberSendMessageVo.setMediaId(settingDTO.getMediaId());
memberSendMessageVo.setSelfExteralUserId(externalUserid); memberSendMessageVo.setSelfExteralUserId(externalUserid);
......
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