Commit 0deed017 by xugaojun

新增第三方转换

parent 5611ecc6
package com.gic.haoban.manage.service.mq.processor;
import cn.hutool.crypto.SecureUtil;
import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.gic.commons.util.EntityUtil;
import com.gic.dubbo.entity.ProviderLocalTag;
import com.gic.haoban.manage.api.dto.ExternalUserDTO;
import com.gic.haoban.manage.api.dto.MemberUnionidRelatedDTO;
import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO;
......@@ -29,9 +27,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
import java.util.*;
/**
* desc:添加微信好友关系消息消费处理器
......@@ -74,7 +70,6 @@ public class AddMemberUnionRelateConsumerProcessor extends AbstractConsumerProce
@Override
void doProcess(MemberUnionRelatedBO bo) {
String staffId = bo.getStaffId();
messageAlert(staffId);
String wxEnterpriseId = bo.getWxEnterpriseId();
String externalUserid = bo.getExternalUserid();
String wxUserId = bo.getWxUserId();
......@@ -109,12 +104,15 @@ public class AddMemberUnionRelateConsumerProcessor extends AbstractConsumerProce
logger.info("会员信息不存在unionId:{}", dto.getUnionid());
return;
}
// 转换外部联系人id
String serviceExternalUserid = qywxUserApiService.toServiceExternalUserid(bo.getCorpid(), config.getWxSuiteid(), externalUserid);
// 幂等
MemberUnionidRelatedDTO exsitDTO = memberUnionRelatedService.getByUnionId(wxEnterpriseId, wxUserId, dto.getUnionid());
String memberUnionIdRelatedId;
if (Objects.isNull(exsitDTO)) {
dto.setMemberId(member.getMemberId());
dto.setEnterpriseId(enterpriseId);
dto.setExternalUserid(serviceExternalUserid);
// 创建memberUnion 临时表关联
memberUnionIdRelatedId = memberUnionRelatedService.addMemberUnionidRelated(dto);
} else {
......@@ -137,7 +135,7 @@ public class AddMemberUnionRelateConsumerProcessor extends AbstractConsumerProce
related.setClerkId(staffClerkRelationDTO.getClerkId());
related.setEnterpriseId(enterpriseId);
related.setExternalName(dto.getExternalName());
related.setExternalUserId(externalUserid);
related.setExternalUserId(serviceExternalUserid);
related.setStaffId(staffId);
related.setHeadUrl(dto.getAvatar());
related.setMemberUnionidRelatedId(memberUnionIdRelatedId);
......@@ -150,22 +148,6 @@ public class AddMemberUnionRelateConsumerProcessor extends AbstractConsumerProce
externalClerkRelatedService.insert(related);
}
private void messageAlert(String staffId) {
ProviderLocalTag providerLocalTag = ProviderLocalTag.tag.get();
String traceId = providerLocalTag.traceId;
String traceUrl = "http://10.105.8.172:8780/damo-stats/mongodb/getLogMessagesView?trace_id=" + traceId;
Map<String, Object> map = new HashMap<>();
Map<String, Object> link = new HashMap<>();
map.put("msgtype", "link");
link.put("title", "存量会员关联提醒");
link.put("text", "员工id:" + staffId);
link.put("messageUrl", traceUrl);
map.put("link", link);
String post = HttpUtil.post(ALERT_URL, JSONObject.toJSONString(map));
logger.info("alert:{}", post);
}
private MemberUnionidRelatedDTO getAndMergeMemberUnion(MemberUnionRelatedBO bo) {
// 查询自建
ExternalUserDTO selfExternalUserDTO = getCorpSelfExternalUseridInfo(
......@@ -175,36 +157,26 @@ public class AddMemberUnionRelateConsumerProcessor extends AbstractConsumerProce
bo.getSecret(),
bo.getCorpid()
);
// 查询第三方
ExternalUserDTO thirdExternalUserDTO = getExternalUseridInfo(
bo.getWxEnterpriseId(),
bo.getWxUserId(),
bo.getExternalUserid(),
bo.getCorpid()
);
if (Objects.isNull(selfExternalUserDTO) && Objects.isNull(thirdExternalUserDTO)) {
logger.info("新增外部联系人, 自建与第三方均为空");
if (Objects.isNull(selfExternalUserDTO)) {
logger.info("新增外部联系人, 自建为空");
return null;
}
MemberUnionidRelatedDTO dto = EntityUtil.changeEntityNew(MemberUnionidRelatedDTO.class, bo);
// 合并数据
dto.setExternalName(EmojiFilterUtil.removeAllEmoji(
Objects.nonNull(selfExternalUserDTO) ? selfExternalUserDTO.getName() : thirdExternalUserDTO.getName()
selfExternalUserDTO.getName()
));
dto.setAddCreateTime(
Objects.nonNull(selfExternalUserDTO) ? selfExternalUserDTO.getAddCreateTime() : thirdExternalUserDTO.getAddCreateTime()
selfExternalUserDTO.getAddCreateTime()
);
dto.setAvatar(
Objects.nonNull(selfExternalUserDTO) ? selfExternalUserDTO.getAvatar() : thirdExternalUserDTO.getAvatar()
selfExternalUserDTO.getAvatar()
);
dto.setUnionid(
Objects.nonNull(selfExternalUserDTO) ? selfExternalUserDTO.getUnionId() : null
selfExternalUserDTO.getUnionId()
);
dto.setSelfExternalUserid(
Objects.nonNull(selfExternalUserDTO) ? selfExternalUserDTO.getExternalUserId() : null
);
dto.setExternalUserid(
Objects.nonNull(thirdExternalUserDTO) ? thirdExternalUserDTO.getExternalUserId() : null
selfExternalUserDTO.getExternalUserId()
);
return dto;
}
......@@ -223,60 +195,6 @@ public class AddMemberUnionRelateConsumerProcessor extends AbstractConsumerProce
}
public ExternalUserDTO getExternalUseridInfo(String wxEnterpriseId, String wxUserId, String externalUserId, String corpId) {
String uJ = qywxUserApiService.getExternalUseridInfo(corpId, config.getWxSuiteid(), externalUserId);
if (StringUtils.isBlank(uJ)) {
logger.info("好友不存在");
return null;
} else if ("1".equals(uJ)) {
logger.info("限制次数");
throw new WxApiLimitException("getExternalUseridInfo接口次数限制");
}
String name = "";
String createTime = "";
String avatar = "";
Integer friendType = 1;
if (StringUtils.isNotBlank(uJ)) {
JSONObject jo = JSON.parseObject(uJ);
String external_contact = jo.getString("external_contact");
String uj_follow_user = jo.getString("follow_user");
JSONObject jt = null;
if (StringUtils.isNotBlank(external_contact)) {
jt = JSON.parseObject(external_contact);
name = EmojiFilterUtil.filterEmojiLast(jt.getString("name"), true);
if (StringUtils.isBlank(name)) {
name = "--";
}
friendType = jt.getInteger("type");
avatar = jt.getString("avatar");
}
if (StringUtils.isNotBlank(uj_follow_user)) {
JSONArray j = JSON.parseArray(uj_follow_user);
String uj_userId = "";
for (Object object : j) {
String followJson = JSON.toJSONString(object);
JSONObject follow = JSON.parseObject(followJson);
uj_userId = follow.getString("userid");
if (uj_userId.equals(wxUserId)) {
if (jt != null) {
externalUserId = jt.getString("external_userid");
createTime = follow.getString("createtime");
break;
}
}
}
}
}
ExternalUserPojo pojo = new ExternalUserPojo();
pojo.setExternalUserId(externalUserId);
pojo.setName(name);
pojo.setAddCreateTime(createTime);
pojo.setWxEnterpriseId(wxEnterpriseId);
pojo.setAvatar(avatar);
pojo.setFriendType(friendType);
return EntityUtil.changeEntityByJSON(ExternalUserDTO.class, pojo);
}
private ExternalUserPojo getExternalUserPojo(String unionIdJson, String userId1, String wxEnterpriseId) {
ExternalUserPojo pojo = new ExternalUserPojo();
String unionId = "";
......
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