Commit ec8217cb by 墨竹

feat:刷新历史好友旧好友更新,新好友插入

parent bc6ae773
......@@ -9,9 +9,9 @@ import com.gic.haoban.manage.api.dto.ExternalUserDTO;
import com.gic.haoban.manage.api.dto.MemberUnionidRelatedDTO;
import com.gic.haoban.manage.api.dto.StaffClerkRelationDTO;
import com.gic.haoban.manage.api.service.MemberUnionidRelatedApiService;
import com.gic.haoban.manage.service.config.Config;
import com.gic.haoban.manage.service.entity.TabHaobanClerkMainStoreRelated;
import com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated;
import com.gic.haoban.manage.service.entity.TabHaobanStaff;
import com.gic.haoban.manage.service.entity.TabHaobanWxEnterpriseRelated;
import com.gic.haoban.manage.service.exception.WxApiLimitException;
import com.gic.haoban.manage.service.pojo.ExternalUserPojo;
......@@ -31,7 +31,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.*;
import java.util.Objects;
/**
* desc:添加微信好友关系消息消费处理器
......@@ -43,14 +43,11 @@ import java.util.*;
**/
@Component
public class AddMemberUnionRelateConsumerProcessor extends AbstractConsumerProcessor<String, MemberUnionRelatedBO> {
private static final Logger logger = LoggerFactory.getLogger(AddMemberUnionRelateConsumerProcessor.class);
@Autowired
private QywxUserApiService qywxUserApiService;
@Autowired
private Config config;
@Autowired
private MemberUnionRelatedService memberUnionRelatedService;
@Autowired
private StaffClerkRelationService staffClerkRelationService;
......@@ -62,9 +59,8 @@ public class AddMemberUnionRelateConsumerProcessor extends AbstractConsumerProce
private ExternalClerkRelatedService externalClerkRelatedService;
@Autowired
private MemberService memberService;
private static final String ALERT_URL = "https://oapi.dingtalk.com/robot/send?access_token=435c0ddaacda849e145b64cc3a83c37f742105d88cf27b719b2dbef167436ad4";
@Autowired
private StaffService staffService;
@Override
MemberUnionRelatedBO paramParse(String s) {
......@@ -78,14 +74,15 @@ public class AddMemberUnionRelateConsumerProcessor extends AbstractConsumerProce
rateLimiter.acquire();
String staffId = bo.getStaffId();
String wxEnterpriseId = bo.getWxEnterpriseId();
String externalUserid = bo.getExternalUserid();
String wxUserId = bo.getWxUserId();
String selfExternalUserid = bo.getExternalUserid();
MemberUnionidRelatedDTO dto = getAndMergeMemberUnion(bo);
if (Objects.isNull(dto)) {
logger.info("新增外部联系人, 自建与第三方均为空");
return;
}
if (StringUtils.isEmpty(dto.getUnionid())) {
String unionid = dto.getUnionid();
String addCreateTime = dto.getAddCreateTime();
if (StringUtils.isEmpty(unionid)) {
logger.info("unionId为空, 会员无法查询");
return;
}
......@@ -100,30 +97,45 @@ public class AddMemberUnionRelateConsumerProcessor extends AbstractConsumerProce
logger.info("【新增外部联系人】导购和clerk关联为空");
return;
}
TabHaobanStaff staff = staffService.selectById(staffId);
if (staff == null) {
logger.info("【新增外部联系人】导购为空,staffId:{}", staffId);
return;
}
String wxUserId = staff.getWxUserId();
String enterpriseId = staffClerkRelationDTO.getEnterpriseId();
TabHaobanWxEnterpriseRelated wxEnterpriseRelated = wxEnterpriseRelatedService.getByEnterpriseId(wxEnterpriseId, enterpriseId);
if (wxEnterpriseRelated == null) {
logger.info("没有存在企业关联:{},{}", staffClerkRelationDTO.getWxEnterpriseId(), enterpriseId);
return;
}
MemberDTO member = memberService.getMemberByUnionid(dto.getUnionid(), enterpriseId);
MemberDTO member = memberService.getMemberByUnionid(unionid, enterpriseId);
if (member == null) {
logger.info("会员信息不存在unionId:{}", dto.getUnionid());
logger.info("会员信息不存在unionId:{}", unionid);
return;
}
String memberId = member.getMemberId();
// 转换外部联系人id
String serviceExternalUserid = qywxUserApiService.toServiceExternalUserid(bo.getCorpid(), bo.getSecret(), externalUserid);
logger.info("自建转换第三方返回:{}", serviceExternalUserid);
String externalUserid = qywxUserApiService.toServiceExternalUserid(bo.getCorpid(), bo.getSecret(), selfExternalUserid);
logger.info("自建转换第三方返回:{}", externalUserid);
// 幂等
MemberUnionidRelatedDTO exsitDTO = memberUnionRelatedService.getByUnionId(wxEnterpriseId, wxUserId, dto.getUnionid());
MemberUnionidRelatedDTO exsitDTO = memberUnionRelatedService.getByUnionId(wxEnterpriseId, wxUserId, unionid);
String memberUnionIdRelatedId;
if (Objects.isNull(exsitDTO)) {
dto.setMemberId(member.getMemberId());
dto.setMemberId(memberId);
dto.setEnterpriseId(enterpriseId);
dto.setExternalUserid(serviceExternalUserid);
dto.setExternalUserid(externalUserid);
// 创建memberUnion 临时表关联
memberUnionIdRelatedId = memberUnionRelatedService.addMemberUnionidRelated(dto);
} else {
exsitDTO.setAvatar(dto.getAvatar());
exsitDTO.setMemberId(memberId);
exsitDTO.setUnionid(unionid);
exsitDTO.setAddCreateTime(addCreateTime);
exsitDTO.setEnterpriseId(enterpriseId);
exsitDTO.setExternalUserid(externalUserid);
exsitDTO.setSelfExternalUserid(selfExternalUserid);
memberUnionRelatedService.update(exsitDTO);
memberUnionIdRelatedId = exsitDTO.getMemberUnionidRelatedId();
}
if (StringUtils.isEmpty(memberUnionIdRelatedId)) {
......@@ -131,29 +143,44 @@ public class AddMemberUnionRelateConsumerProcessor extends AbstractConsumerProce
return;
}
// 幂等
TabHaobanExternalClerkRelated haobanExternalClerkRelated = externalClerkRelatedService.getByParams(dto.getWxUserId(), wxEnterpriseId, dto.getExternalName(), dto.getAddCreateTime());
if (haobanExternalClerkRelated != null) {
TabHaobanExternalClerkRelated external = externalClerkRelatedService.getByParams(wxUserId, wxEnterpriseId, dto.getExternalName(), addCreateTime);
String relationKey = SecureUtil.md5(staffId + selfExternalUserid);
if (external != null) {
logger.info("已经存在好友关系");
return;
external.setMemberId(memberId);
external.setMemberUnionidRelatedId(memberUnionIdRelatedId);
external.setExternalUserId(externalUserid);
external.setExternalName(dto.getExternalName());
external.setRelationKey(relationKey);
external.setUnionid(unionid);
external.setStoreId(staffClerkRelationDTO.getStoreId());
external.setEnterpriseId(enterpriseId);
external.setClerkId(staffClerkRelationDTO.getClerkId());
external.setStaffId(staffId);
external.setMemberId(memberId);
external.setHeadUrl(dto.getAvatar());
external.setStatusFlag(1);
externalClerkRelatedService.update(external);
} else {
logger.info("新增TabHaobanExternalClerkRelated");
TabHaobanExternalClerkRelated related = new TabHaobanExternalClerkRelated();
related.setAddCreateTime(addCreateTime);
related.setClerkId(staffClerkRelationDTO.getClerkId());
related.setEnterpriseId(enterpriseId);
related.setExternalName(dto.getExternalName());
related.setExternalUserId(externalUserid);
related.setStaffId(staffId);
related.setHeadUrl(dto.getAvatar());
related.setMemberUnionidRelatedId(memberUnionIdRelatedId);
related.setStoreId(staffClerkRelationDTO.getStoreId());
related.setRelationKey(relationKey);
related.setUnionid(unionid);
related.setWxEnterpriseId(wxEnterpriseId);
related.setWxUserId(wxUserId);
related.setMemberId(memberId);
related.setStatusFlag(1);
externalClerkRelatedService.insert(related);
}
String relationKey = SecureUtil.md5(staffId + externalUserid);
logger.info("新增TabHaobanExternalClerkRelated");
TabHaobanExternalClerkRelated related = new TabHaobanExternalClerkRelated();
related.setAddCreateTime(dto.getAddCreateTime());
related.setClerkId(staffClerkRelationDTO.getClerkId());
related.setEnterpriseId(enterpriseId);
related.setExternalName(dto.getExternalName());
related.setExternalUserId(serviceExternalUserid);
related.setStaffId(staffId);
related.setHeadUrl(dto.getAvatar());
related.setMemberUnionidRelatedId(memberUnionIdRelatedId);
related.setStoreId(staffClerkRelationDTO.getStoreId());
related.setRelationKey(relationKey);
related.setUnionid(dto.getUnionid());
related.setWxEnterpriseId(wxEnterpriseId);
related.setWxUserId(wxUserId);
related.setMemberId(member.getMemberId());
externalClerkRelatedService.insert(related);
}
private MemberUnionidRelatedDTO getAndMergeMemberUnion(MemberUnionRelatedBO bo) {
......
......@@ -1531,7 +1531,6 @@ public class MemberUnionidRelatedApiServiceImpl implements MemberUnionidRelatedA
related.setHeadUrl(dto.getAvatar());
related.setStatusFlag(1);
externalClerkRelatedService.insert(related);
} else {
TabHaobanExternalClerkRelated external = clerkRelateds.get(0);
external.setMemberId(memberId);
......
......@@ -202,8 +202,8 @@ public class FriendSyncNewOperation implements BaseSyncOperation {
externalUserDTO.setEnterpriseId(staffClerkRelationDTO.getEnterpriseId());
externalUserDTO.setStoreId(mainStore.getStoreId());
externalUserDTO.setClerkId(staffClerkRelationDTO.getClerkId());
//externalUserDTO.setWxUserId(staff.getWxUserId());
externalUserDTO.setWxUserId(wxUserId);
externalUserDTO.setWxUserId(staff.getWxUserId());
//externalUserDTO.setWxUserId(wxUserId);
externalUserDTO.setStaffId(staffClerkRelationDTO.getStaffId());
TabHaobanWxEnterpriseRelated wxEnterpriseRelated = wxEnterpriseRelatedService.getByEnterpriseId(staffClerkRelationDTO.getWxEnterpriseId(), staffClerkRelationDTO.getEnterpriseId());
......
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