Commit 185364fa by fudahua

会员标签同步-告警

parent 66258168
package com.gic.haoban.manage.api.dto;
import java.io.Serializable;
import java.util.Map;
/**
* Created 2021/8/2.
*
* @author hua
*/
public class AlertMessageDTO implements Serializable {
private String wxEnterpriseId;
private String enterpriseId;
private Integer alertType;
/**
* 用来判断唯一性 同步的
*/
private String key;
private String traceId;
private String alertTitle;
private Map<String, Object> contentMap;
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getWxEnterpriseId() {
return wxEnterpriseId;
}
public void setWxEnterpriseId(String wxEnterpriseId) {
this.wxEnterpriseId = wxEnterpriseId;
}
public String getEnterpriseId() {
return enterpriseId;
}
public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId;
}
public Integer getAlertType() {
return alertType;
}
public void setAlertType(Integer alertType) {
this.alertType = alertType;
}
public String getTraceId() {
return traceId;
}
public void setTraceId(String traceId) {
this.traceId = traceId;
}
public String getAlertTitle() {
return alertTitle;
}
public void setAlertTitle(String alertTitle) {
this.alertTitle = alertTitle;
}
public Map<String, Object> getContentMap() {
return contentMap;
}
public void setContentMap(Map<String, Object> contentMap) {
this.contentMap = contentMap;
}
}
package com.gic.haoban.manage.api.enums;
/**
* Created by hua on 2021/8/2.
*/
public enum AlertTypeEnum {
QYWX_TAG_SYNC(1, "企业微信标签同步");
private Integer type;
private String name;
AlertTypeEnum(Integer type, String name) {
this.type = type;
this.name = name;
}
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
......@@ -30,4 +30,11 @@ public interface CheckQywxSettingApiService {
* @param dto
*/
public void saveFriendCallback(String wxEnterpriseId, ExternalUserDTO externalUserDTO, MemberUnionidRelatedDTO dto);
/**
* 告警 异步回调
*
* @param params
*/
public void alertCallback(String params);
}
......@@ -3,13 +3,14 @@ package com.gic.haoban.manage.service.service.out.impl;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSONObject;
import com.gic.dubbo.entity.ProviderLocalTag;
import com.gic.haoban.manage.api.dto.CheckFriendSettingDTO;
import com.gic.haoban.manage.api.dto.ExternalUserDTO;
import com.gic.haoban.manage.api.dto.MemberUnionidRelatedDTO;
import com.gic.haoban.manage.api.dto.WxEnterpriseDTO;
import com.gic.enterprise.api.dto.EnterpriseDTO;
import com.gic.enterprise.api.service.EnterpriseService;
import com.gic.haoban.manage.api.dto.*;
import com.gic.haoban.manage.api.enums.AlertTypeEnum;
import com.gic.haoban.manage.api.service.CheckQywxSettingApiService;
import com.gic.haoban.manage.service.service.WxEnterpriseService;
import com.gic.redis.data.util.RedisUtil;
import org.apache.commons.collections.MapUtils;
import org.apache.commons.lang3.StringUtils;
import org.redisson.api.RBucket;
import org.redisson.api.RMap;
......@@ -20,6 +21,7 @@ import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
......@@ -47,6 +49,9 @@ public class CheckQywxSettingApiServiceImpl implements CheckQywxSettingApiServic
@Autowired
private WxEnterpriseService wxEnterpriseService;
@Autowired
private EnterpriseService enterpriseService;
@Override
public void setFriendSetting(String wxEnterpriseId, String name) {
CheckFriendSettingDTO checkFriendSettingDTO = new CheckFriendSettingDTO();
......@@ -124,4 +129,62 @@ public class CheckQywxSettingApiServiceImpl implements CheckQywxSettingApiServic
String post = HttpUtil.post(ALERT_URL, JSONObject.toJSONString(map));
logger.info("alert:{}", post);
}
@Override
public void alertCallback(String params) {
logger.info("告警:{}", params);
AlertMessageDTO messageDTO = JSONObject.parseObject(params, AlertMessageDTO.class);
if (null == messageDTO) {
return;
}
//告警是否拦截重复告警 防止批量触发
if (StringUtils.isNotBlank(messageDTO.getKey())) {
RBucket<Object> bucket = RedisUtil.getRedisClient().getBucket(messageDTO.getKey());
boolean b = bucket.trySet(1, 60L, TimeUnit.SECONDS);
if (!b) {
return;
}
}
Map<String, Object> dingMap = new HashMap<>();
Map<String, Object> markdownMap = new HashMap<>();
dingMap.put("msgtype", "markdown");
dingMap.put("markdown", markdownMap);
String text = "";
//企业微信标签同步
if (messageDTO.getAlertType().equals(AlertTypeEnum.QYWX_TAG_SYNC.getType())) {
markdownMap.put("title", AlertTypeEnum.QYWX_TAG_SYNC.getName() + "-" + messageDTO.getAlertTitle());
text += "标题:" + AlertTypeEnum.QYWX_TAG_SYNC.getName() + "-" + messageDTO.getAlertTitle() + "\n\r";
}
//企业信息
if (StringUtils.isNotBlank(messageDTO.getWxEnterpriseId())) {
WxEnterpriseDTO wxEnterpriseDTO = wxEnterpriseService.selectById(messageDTO.getWxEnterpriseId());
text += "企业:" + wxEnterpriseDTO.getCorpName() + "\n\r";
}
// 商户信息
if (StringUtils.isNotBlank(messageDTO.getEnterpriseId())) {
EnterpriseDTO enterpriseDTO = enterpriseService.getEnterpriseById(messageDTO.getEnterpriseId());
text += "商户:" + enterpriseDTO.getEnterpriseName() + "(" + enterpriseDTO.getBrandName() + ")\n\r";
}
Map<String, Object> contentMap = messageDTO.getContentMap();
if (MapUtils.isNotEmpty(contentMap)) {
Set<String> keySet = contentMap.keySet();
for (String k : keySet) {
Object o = contentMap.get(k);
text += k + ":" + o + "\n\r";
}
}
if (StringUtils.isNotBlank(messageDTO.getTraceId())) {
String traceUrl = "http://10.105.8.172:8780/damo-stats/mongodb/getLogMessagesView?trace_id=" + messageDTO.getTraceId();
text += "链路:[" + messageDTO.getTraceId() + "](" + traceUrl + ")";
}
markdownMap.put("text", text);
String post = HttpUtil.post(ALERT_URL, JSONObject.toJSONString(dingMap));
logger.info("alert:{}", post);
}
}
......@@ -49,7 +49,8 @@
<dubbo:service interface="com.gic.haoban.manage.api.service.StaffClerkRelationApiService" ref="staffClerkRelationApiServiceImpl" timeout="10000"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.DealSyncOperationApiService"
ref="dealSyncOperationApiServiceImpl" timeout="10000"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.CheckQywxSettingApiService"
ref="checkQywxSettingApiService" timeout="10000"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.HandoverOperationApiService"
ref="handoverOperationApiServiceImpl" timeout="10000"/>
<dubbo:service interface="com.gic.haoban.manage.api.service.QywxTagApiService" ref="qywxTagApiServiceImpl"
......
......@@ -2,7 +2,10 @@ import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
import com.gic.commons.util.GICMQClientUtil;
import com.gic.haoban.base.api.common.BasePageInfo;
import com.gic.haoban.manage.api.dto.AlertMessageDTO;
import com.gic.haoban.manage.api.dto.HandoverExternalDTO;
import com.gic.haoban.manage.api.enums.AlertTypeEnum;
import com.gic.haoban.manage.api.service.CheckQywxSettingApiService;
import com.gic.haoban.manage.api.service.HandoverOperationApiService;
import com.gic.haoban.manage.api.service.QywxTagApiService;
import com.gic.mq.sdk.GicMQClient;
......@@ -15,7 +18,9 @@ import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext-conf.xml"})
......@@ -26,6 +31,9 @@ public class QywxTagTest {
@Autowired
private QywxTagApiService qywxTagApiService;
@Autowired
private CheckQywxSettingApiService checkQywxSettingApiService;
@Test
public void test() {
......@@ -33,4 +41,19 @@ public class QywxTagTest {
qywxTagApiService.pullQywxTag(wxEnterpriseId);
}
@Test
public void test2() {
AlertMessageDTO messageDTO = new AlertMessageDTO();
messageDTO.setTraceId("111");
messageDTO.setEnterpriseId("");
messageDTO.setWxEnterpriseId("ca66a01b79474c40b3e7c7f93daf1a3b");
messageDTO.setAlertTitle("测试标题");
messageDTO.setAlertType(AlertTypeEnum.QYWX_TAG_SYNC.getType());
Map<String, Object> map = new HashMap<>();
map.put("测试", "test");
messageDTO.setContentMap(map);
checkQywxSettingApiService.alertCallback(JSONObject.toJSONString(messageDTO));
}
}
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