Commit c3665785 by fudahua

会员标签同步-traceId

parent e7339e82
package com.gic.haoban.manage.api.dto; package com.gic.haoban.manage.api.dto;
import java.io.Serializable; import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
/** /**
...@@ -20,6 +21,8 @@ public class AlertMessageDTO implements Serializable { ...@@ -20,6 +21,8 @@ public class AlertMessageDTO implements Serializable {
private String alertTitle; private String alertTitle;
private Map<String, Object> contentMap; private Map<String, Object> contentMap;
private LinkedHashMap<String, Object> contentLinkMap;
public String getKey() { public String getKey() {
return key; return key;
} }
...@@ -75,4 +78,12 @@ public class AlertMessageDTO implements Serializable { ...@@ -75,4 +78,12 @@ public class AlertMessageDTO implements Serializable {
public void setContentMap(Map<String, Object> contentMap) { public void setContentMap(Map<String, Object> contentMap) {
this.contentMap = contentMap; this.contentMap = contentMap;
} }
public LinkedHashMap<String, Object> getContentLinkMap() {
return contentLinkMap;
}
public void setContentLinkMap(LinkedHashMap<String, Object> contentLinkMap) {
this.contentLinkMap = contentLinkMap;
}
} }
...@@ -10,7 +10,7 @@ public enum QuartzEnum { ...@@ -10,7 +10,7 @@ public enum QuartzEnum {
* 企业微信 * 企业微信
*/ */
HANDOVER_QYWX("handover", "com.gic.haoban.manage.api.service.HandoverOperationApiService", "batchQywxHandoverTimeTask", "0 0 0 * * *", "-1"), HANDOVER_QYWX("handover", "com.gic.haoban.manage.api.service.HandoverOperationApiService", "batchQywxHandoverTimeTask", "0 0 0 * * *", "-1"),
TAG_QYWX("qywxTagCheck", "com.gic.haoban.manage.api.service.QywxTagApiService", "checkQywxSync", "0 5 17 * * *", "-1"); TAG_QYWX("qywxTagCheck", "com.gic.haoban.manage.api.service.QywxTagApiService", "checkQywxSync", "0 30 10 * * *", "-1");
private String key; private String key;
private String serviceName; private String serviceName;
private String method; private String method;
......
...@@ -19,10 +19,7 @@ import org.slf4j.Logger; ...@@ -19,10 +19,7 @@ import org.slf4j.Logger;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.HashMap; import java.util.*;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import static org.slf4j.LoggerFactory.getLogger; import static org.slf4j.LoggerFactory.getLogger;
...@@ -170,6 +167,15 @@ public class CheckQywxSettingApiServiceImpl implements CheckQywxSettingApiServic ...@@ -170,6 +167,15 @@ public class CheckQywxSettingApiServiceImpl implements CheckQywxSettingApiServic
text += "商户:" + enterpriseDTO.getEnterpriseName() + "(" + enterpriseDTO.getBrandName() + ")\n\r"; text += "商户:" + enterpriseDTO.getEnterpriseName() + "(" + enterpriseDTO.getBrandName() + ")\n\r";
} }
LinkedHashMap<String, Object> contentLinkMap = messageDTO.getContentLinkMap();
if (MapUtils.isNotEmpty(contentLinkMap)) {
Set<String> keySet = contentLinkMap.keySet();
for (String k : keySet) {
Object o = contentLinkMap.get(k);
text += k + ":" + o + "\n\r";
}
}
Map<String, Object> contentMap = messageDTO.getContentMap(); Map<String, Object> contentMap = messageDTO.getContentMap();
if (MapUtils.isNotEmpty(contentMap)) { if (MapUtils.isNotEmpty(contentMap)) {
Set<String> keySet = contentMap.keySet(); Set<String> keySet = contentMap.keySet();
......
...@@ -23,6 +23,8 @@ import com.gic.haoban.manage.service.service.QywxTagService; ...@@ -23,6 +23,8 @@ import com.gic.haoban.manage.service.service.QywxTagService;
import com.gic.haoban.manage.service.service.WxEnterpriseService; import com.gic.haoban.manage.service.service.WxEnterpriseService;
import com.gic.member.api.dto.MemberTagDTO; import com.gic.member.api.dto.MemberTagDTO;
import com.gic.member.api.service.MemberTagService; import com.gic.member.api.service.MemberTagService;
import com.gic.member.tag.api.dto.MemberTagItemDTO;
import com.gic.member.tag.api.service.MemberTagItemApiService;
import com.gic.mq.sdk.GicMQClient; import com.gic.mq.sdk.GicMQClient;
import com.gic.search.engine.api.service.dynamic.ESDataDynamicOperationApiService; import com.gic.search.engine.api.service.dynamic.ESDataDynamicOperationApiService;
import com.gic.wechat.api.dto.qywx.QywxTagDTO; import com.gic.wechat.api.dto.qywx.QywxTagDTO;
...@@ -84,6 +86,9 @@ public class QywxTagApiServiceImpl implements QywxTagApiService { ...@@ -84,6 +86,9 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
@Autowired @Autowired
private QywxTagSyncApiService qywxTagSyncApiService; private QywxTagSyncApiService qywxTagSyncApiService;
@Autowired
private MemberTagItemApiService memberTagItemApiService;
@Override @Override
public void pullQywxTag(String wxEnterpriseId) { public void pullQywxTag(String wxEnterpriseId) {
WxEnterpriseDTO wxEnterpriseDTO = wxEnterpriseService.selectById(wxEnterpriseId); WxEnterpriseDTO wxEnterpriseDTO = wxEnterpriseService.selectById(wxEnterpriseId);
...@@ -842,16 +847,14 @@ public class QywxTagApiServiceImpl implements QywxTagApiService { ...@@ -842,16 +847,14 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
List<TabQywxTagRelation> qywxTagRelations = tagRelations.stream().filter(dto -> dto.getRelationType() == QywxTagRelationTypeEnum.TAG_GROUP.getType()).collect(Collectors.toList()); List<TabQywxTagRelation> qywxTagRelations = tagRelations.stream().filter(dto -> dto.getRelationType() == QywxTagRelationTypeEnum.TAG_GROUP.getType()).collect(Collectors.toList());
for (TabQywxTagRelation qywxTagRelation : qywxTagRelations) { for (TabQywxTagRelation qywxTagRelation : qywxTagRelations) {
Map<String, Object> map = checkQywxSyncByQywxTag(qywxTagRelation, wxEnterprise, pojo); LinkedHashMap<String, Object> map = checkQywxSyncByQywxTag(qywxTagRelation, wxEnterprise, pojo);
if (MapUtils.isNotEmpty(map)) { if (MapUtils.isNotEmpty(map)) {
AlertMessageDTO messageDTO = new AlertMessageDTO(); AlertMessageDTO messageDTO = new AlertMessageDTO();
messageDTO.setAlertTitle("企微与好办同步标签不相同"); messageDTO.setAlertTitle("企微与好办同步标签不相同");
messageDTO.setEnterpriseId(qywxTagRelation.getEnterpriseId()); messageDTO.setEnterpriseId(qywxTagRelation.getEnterpriseId());
messageDTO.setAlertType(AlertTypeEnum.QYWX_TAG_SYNC.getType()); messageDTO.setAlertType(AlertTypeEnum.QYWX_TAG_SYNC.getType());
messageDTO.setWxEnterpriseId(wxEnterprise.getWxEnterpriseId()); messageDTO.setWxEnterpriseId(wxEnterprise.getWxEnterpriseId());
messageDTO.setContentMap(map); messageDTO.setContentLinkMap(map);
messageDTO.setTraceId(traceId); messageDTO.setTraceId(traceId);
GicMQClient clientInstance = GICMQClientUtil.getClientInstance(); GicMQClient clientInstance = GICMQClientUtil.getClientInstance();
try { try {
...@@ -877,8 +880,8 @@ public class QywxTagApiServiceImpl implements QywxTagApiService { ...@@ -877,8 +880,8 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
* @param relation * @param relation
* @param wxEnterprise * @param wxEnterprise
*/ */
private Map<String, Object> checkQywxSyncByQywxTag(TabQywxTagRelation relation, TabHaobanWxEnterprise wxEnterprise, QywxSyncTagFormatPojo pojo) { private LinkedHashMap<String, Object> checkQywxSyncByQywxTag(TabQywxTagRelation relation, TabHaobanWxEnterprise wxEnterprise, QywxSyncTagFormatPojo pojo) {
Map<String, Object> ret = new LinkedHashMap<>(); LinkedHashMap<String, Object> ret = new LinkedHashMap<>();
boolean flag = false; boolean flag = false;
ret.put("hb标签id", relation.getQywxTagId()); ret.put("hb标签id", relation.getQywxTagId());
...@@ -903,11 +906,14 @@ public class QywxTagApiServiceImpl implements QywxTagApiService { ...@@ -903,11 +906,14 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
ret.put("描述", "标签组不存在:" + tabQywxTag.getQywxGroupName()); ret.put("描述", "标签组不存在:" + tabQywxTag.getQywxGroupName());
return ret; return ret;
} }
//获取该标签已经绑定的标签项key //获取该标签已经绑定的标签项key
Map<String, String> qywxToGicTagItemIdMap = pojo.getQywxToGicTagItemIdMap(); Map<String, String> qywxToGicTagItemIdMap = pojo.getQywxToGicTagItemIdMap();
List<TabQywxTagItem> gicQywxTagItems = qywxTagService.listByQywxTagId(wxEnterprise.getWxEnterpriseId(), relation.getQywxTagId());
Map<String, String> gicQywxTagNameMap = gicQywxTagItems.stream().filter(tab -> qywxToGicTagItemIdMap.containsKey(tab.getQywxTagKey())).collect(Collectors.toMap(mid -> mid.getQywxTagKey(), mid -> mid.getQywxTagName())); List<TabQywxTagItem> gicQywxSyncTagItems = qywxTagService.listByQywxTagId(wxEnterprise.getWxEnterpriseId(), relation.getQywxTagId());
if (CollectionUtils.isEmpty(gicQywxTagItems)) { Map<String, String> gicQywxTagNameMap = gicQywxSyncTagItems.stream().filter(tab -> qywxToGicTagItemIdMap.containsKey(tab.getQywxTagKey())).collect(Collectors.toMap(mid -> mid.getQywxTagKey(), mid -> mid.getQywxTagName()));
if (CollectionUtils.isEmpty(gicQywxSyncTagItems)) {
logger.info("gic同步企业微信标签异常"); logger.info("gic同步企业微信标签异常");
ret.put("描述", "gic同步企业微信标签异常:" + tabQywxTag.getQywxGroupName()); ret.put("描述", "gic同步企业微信标签异常:" + tabQywxTag.getQywxGroupName());
return ret; return ret;
...@@ -921,19 +927,34 @@ public class QywxTagApiServiceImpl implements QywxTagApiService { ...@@ -921,19 +927,34 @@ public class QywxTagApiServiceImpl implements QywxTagApiService {
ret.put("描述", "企业微信标签项空:" + tabQywxTag.getQywxGroupName()); ret.put("描述", "企业微信标签项空:" + tabQywxTag.getQywxGroupName());
return ret; return ret;
} }
Map<String, QywxTagDTO> qywxTagDTOMap = tagItems.stream().collect(Collectors.toMap(dto -> dto.getId(), dto -> dto)); Map<String, QywxTagDTO> qywxTagDTOMap = tagItems.stream().filter(dto -> dto.isDeleted() == false).collect(Collectors.toMap(dto -> dto.getId(), dto -> dto));
Set<String> qywxKeysSet = qywxTagDTOMap.keySet(); Set<String> qywxKeysSet = qywxTagDTOMap.keySet();
//gic没有同步的标签项
Map<String, String> gicToQywxTagItemIdMap = pojo.getGicToQywxTagItemIdMap();
List<MemberTagItemDTO> gicTagItems = memberTagItemApiService.getItemListByTagId(relation.getMemberTagId());
Set<MemberTagItemDTO> noSyncTags = gicTagItems.stream().filter(dto -> !gicToQywxTagItemIdMap.containsKey(dto.getTagItemId())).collect(Collectors.toSet());
//在gic存在 企业微信不存在 //在gic存在 企业微信不存在
Sets.SetView<String> qywxUnHaves = Sets.difference(gicQywxKeysSet, qywxKeysSet); Sets.SetView<String> qywxUnHaves = Sets.difference(gicQywxKeysSet, qywxKeysSet);
//企业微信存在 gic不存在 //企业微信存在 gic不存在
Sets.SetView<String> gicUnHaves = Sets.difference(qywxKeysSet, gicQywxKeysSet); Sets.SetView<String> gicUnHaves = Sets.difference(qywxKeysSet, gicQywxKeysSet);
ret.put("企微标签项", tagItems.stream().filter(dto -> dto.isDeleted() == false).map(dto -> dto.getName()).collect(Collectors.joining("],[", "[", "]")));
ret.put("gic标签项", gicTagItems.stream().map(dto -> dto.getTagItemName()).collect(Collectors.joining("],[", "[", "]")));
//企业微信缺少 //企业微信缺少
if (!CollectionUtils.isEmpty(qywxUnHaves)) { if (!CollectionUtils.isEmpty(qywxUnHaves)) {
flag = true; flag = true;
ret.put("标签项缺少(企微)", qywxUnHaves.stream().map(mid -> gicQywxTagNameMap.get(mid)).collect(Collectors.joining("],[", "[", "]"))); ret.put("标签项缺少(企微)", qywxUnHaves.stream().map(mid -> gicQywxTagNameMap.get(mid)).collect(Collectors.joining("],[", "[", "]")));
} }
//未同步标签项
if (!CollectionUtils.isEmpty(noSyncTags)) {
flag = true;
ret.put("标签项未同步", noSyncTags.stream().map(mid -> mid.getTagItemName()).collect(Collectors.joining("],[", "[", "]")));
}
//gic缺少 //gic缺少
if (!CollectionUtils.isEmpty(gicUnHaves)) { if (!CollectionUtils.isEmpty(gicUnHaves)) {
flag = true; flag = true;
......
...@@ -90,6 +90,7 @@ ...@@ -90,6 +90,7 @@
<dubbo:reference interface="com.gic.member.api.service.MemberTagService" id="memberTagService"/> <dubbo:reference interface="com.gic.member.api.service.MemberTagService" id="memberTagService"/>
<dubbo:reference interface="com.gic.member.tag.api.service.MemberTagApiService" id="memberTagApiService"/> <dubbo:reference interface="com.gic.member.tag.api.service.MemberTagApiService" id="memberTagApiService"/>
<dubbo:reference interface="com.gic.member.tag.api.service.MemberTagItemApiService" id="memberTagItemApiService"/>
<dubbo:reference interface="com.gic.clerk.api.service.PowerService" id="powerService"/> <dubbo:reference interface="com.gic.clerk.api.service.PowerService" id="powerService"/>
<dubbo:reference interface="com.gic.enterprise.api.service.AuthorizeService" id="authorizeService"/> <dubbo:reference interface="com.gic.enterprise.api.service.AuthorizeService" id="authorizeService"/>
......
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