Commit 4c0feea9 by xugaojun

触发好有关联,逻辑变更, 代码优化,api变更

parent 30f78c71
...@@ -396,18 +396,17 @@ public class EnterpriseController extends WebBaseController { ...@@ -396,18 +396,17 @@ public class EnterpriseController extends WebBaseController {
} }
/** /**
* desc: 发送存量会员关联消息 * desc: 发送会员关联消息
* *
* @param wxEnterpriseId 微信企业id * @param wxEnterpriseId 微信企业id
* @param content 文本内容
* @return : {@link HaobanResponse} * @return : {@link HaobanResponse}
* @author : YongEn * @author : YongEn
* @date : 2022/2/17 * @date : 2022/2/17
*/ */
@RequestMapping("/send-stock-member-relation-message") @RequestMapping("/send-stock-member-relation-message")
public HaobanResponse sendMass(String wxEnterpriseId, String content) { public HaobanResponse sendMass(String wxEnterpriseId) {
// 异步调用 // 异步调用
groupSendOperateApiService.sendStockMemberRelationMessage(wxEnterpriseId, content); groupSendOperateApiService.sendStockMemberRelationMessage(wxEnterpriseId);
return resultResponse(HaoBanErrCode.ERR_1); return resultResponse(HaoBanErrCode.ERR_1);
} }
......
...@@ -4,7 +4,9 @@ import cn.hutool.crypto.SecureUtil; ...@@ -4,7 +4,9 @@ import cn.hutool.crypto.SecureUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.JSONResponse; import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.clerk.api.service.ClerkService;
import com.gic.clerk.api.service.PowerService;
import com.gic.commons.util.EntityUtil; import com.gic.commons.util.EntityUtil;
import com.gic.haoban.manage.api.dto.ExternalUserDTO; import com.gic.haoban.manage.api.dto.ExternalUserDTO;
import com.gic.haoban.manage.api.dto.MemberUnionidRelatedDTO; import com.gic.haoban.manage.api.dto.MemberUnionidRelatedDTO;
...@@ -17,13 +19,9 @@ import com.gic.haoban.manage.service.pojo.ExternalUserPojo; ...@@ -17,13 +19,9 @@ import com.gic.haoban.manage.service.pojo.ExternalUserPojo;
import com.gic.haoban.manage.service.pojo.bo.MemberUnionRelatedBO; import com.gic.haoban.manage.service.pojo.bo.MemberUnionRelatedBO;
import com.gic.haoban.manage.service.service.*; import com.gic.haoban.manage.service.service.*;
import com.gic.haoban.manage.service.util.EmojiFilterUtil; import com.gic.haoban.manage.service.util.EmojiFilterUtil;
import com.gic.wechat.api.dto.qywx.QywxExternalMessageDTO; import com.gic.member.api.dto.MemberDTO;
import com.gic.wechat.api.dto.qywx.QywxMessageMaterialDTO; import com.gic.member.api.service.MemberOpenCardBusinessService;
import com.gic.wechat.api.dto.qywx.QywxMiniprogramMaterialDTO;
import com.gic.wechat.api.enums.QywxMediaTypeEnum;
import com.gic.wechat.api.service.qywx.QywxSuiteApiService;
import com.gic.wechat.api.service.qywx.QywxUserApiService; import com.gic.wechat.api.service.qywx.QywxUserApiService;
import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
...@@ -31,7 +29,6 @@ import org.slf4j.LoggerFactory; ...@@ -31,7 +29,6 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
...@@ -50,8 +47,6 @@ public class AddMemberUnionRelateConsumerProcessor extends AbstractConsumerProce ...@@ -50,8 +47,6 @@ public class AddMemberUnionRelateConsumerProcessor extends AbstractConsumerProce
@Autowired @Autowired
private QywxUserApiService qywxUserApiService; private QywxUserApiService qywxUserApiService;
@Autowired @Autowired
private QywxSuiteApiService qywxSuiteApiService;
@Autowired
private Config config; private Config config;
@Autowired @Autowired
private MemberUnionRelatedService memberUnionRelatedService; private MemberUnionRelatedService memberUnionRelatedService;
...@@ -64,9 +59,11 @@ public class AddMemberUnionRelateConsumerProcessor extends AbstractConsumerProce ...@@ -64,9 +59,11 @@ public class AddMemberUnionRelateConsumerProcessor extends AbstractConsumerProce
@Autowired @Autowired
private ExternalClerkRelatedService externalClerkRelatedService; private ExternalClerkRelatedService externalClerkRelatedService;
@Autowired @Autowired
private StaffService staffService; private ClerkService clerkService;
@Autowired
private PowerService powerService;
@Autowired @Autowired
private MiniprogramSettingService miniprogramSettingService; private MemberOpenCardBusinessService memberOpenCardBusinessService;
@Override @Override
MemberUnionRelatedBO paramParse(String s) { MemberUnionRelatedBO paramParse(String s) {
...@@ -84,13 +81,22 @@ public class AddMemberUnionRelateConsumerProcessor extends AbstractConsumerProce ...@@ -84,13 +81,22 @@ public class AddMemberUnionRelateConsumerProcessor extends AbstractConsumerProce
logger.info("新增外部联系人, 自建与第三方均为空"); logger.info("新增外部联系人, 自建与第三方均为空");
return; return;
} }
if (StringUtils.isEmpty(dto.getUnionid())) {
logger.info("unionId为空, 会员无法查询");
return;
}
// 幂等
MemberUnionidRelatedDTO exsitDTO = memberUnionRelatedService.getByParams(wxUserId, wxEnterpriseId, dto.getExternalName(), dto.getAddCreateTime()); MemberUnionidRelatedDTO exsitDTO = memberUnionRelatedService.getByParams(wxUserId, wxEnterpriseId, dto.getExternalName(), dto.getAddCreateTime());
String memberUnionidRelatedId; String memberUnionIdRelatedId;
if (Objects.isNull(exsitDTO)) { if (Objects.isNull(exsitDTO)) {
// 创建memberUnion 临时表关联 // 创建memberUnion 临时表关联
memberUnionidRelatedId = memberUnionRelatedService.addMemberUnionidRelated(dto); memberUnionIdRelatedId = memberUnionRelatedService.addMemberUnionidRelated(dto);
} else { } else {
memberUnionidRelatedId = exsitDTO.getMemberUnionidRelatedId(); memberUnionIdRelatedId = exsitDTO.getMemberUnionidRelatedId();
}
if (StringUtils.isEmpty(memberUnionIdRelatedId)) {
logger.info("添加临时关联表memberUnionIdRelate失败");
return;
} }
// 创建导购外部联系人导购 // 创建导购外部联系人导购
TabHaobanClerkMainStoreRelated mainStoreRelated = clerkMainStoreRelatedService.getMainStoreByStaffId(staffId, wxEnterpriseId); TabHaobanClerkMainStoreRelated mainStoreRelated = clerkMainStoreRelatedService.getMainStoreByStaffId(staffId, wxEnterpriseId);
...@@ -109,78 +115,70 @@ public class AddMemberUnionRelateConsumerProcessor extends AbstractConsumerProce ...@@ -109,78 +115,70 @@ public class AddMemberUnionRelateConsumerProcessor extends AbstractConsumerProce
logger.info("没有存在企业关联:{},{}", staffClerkRelationDTO.getWxEnterpriseId(), enterpriseId); logger.info("没有存在企业关联:{},{}", staffClerkRelationDTO.getWxEnterpriseId(), enterpriseId);
return; return;
} }
TabMiniprogramSetting miniprogramSetting = miniprogramSettingService.getMiniprogramSetting(wxEnterpriseId, enterpriseId); // 幂等
if (null == miniprogramSetting) {
logger.info("需要配置小程序配置:wxEnterpriseId:{},enterpriseId:{}", wxEnterpriseId, enterpriseId);
return;
}
List<TabHaobanExternalClerkRelated> externalClerkRelateds = externalClerkRelatedService.listByExTernalUseridAndWxUserIdAllStatus(wxEnterpriseId, dto.getExternalUserid(), dto.getWxUserId()); List<TabHaobanExternalClerkRelated> externalClerkRelateds = externalClerkRelatedService.listByExTernalUseridAndWxUserIdAllStatus(wxEnterpriseId, dto.getExternalUserid(), dto.getWxUserId());
if (CollectionUtils.isEmpty(externalClerkRelateds)){ if (CollectionUtils.isEmpty(externalClerkRelateds)){
logger.info("已经存在好友关系"); logger.info("已经存在好友关系");
return; return;
} }
// 新增导购,获取导购二维码
String qrCodeParam = createClerkQrCodeParam(staffClerkRelationDTO.getClerkCode(), enterpriseId, dto.getUnionid());
if (StringUtils.isEmpty(qrCodeParam)) {
logger.info("不能生产导购二维码, clerkCode:{}", staffClerkRelationDTO.getClerkCode());
return;
}
logger.info("【新增外部联系人会员】enterpriseId={},unionId={},name={},avatar={},QrcodeParam={}",
enterpriseId,
dto.getUnionid(),
dto.getExternalName(),
dto.getAvatar(),
qrCodeParam);
MemberDTO member = memberOpenCardBusinessService.getMemberByQywxChannelParam(
enterpriseId,
dto.getUnionid(),
"",
dto.getExternalName(),
dto.getAvatar(),
qrCodeParam);
if (member == null) {
logger.info("生产会员memnerid失败:{}", dto.getUnionid());
return;
}
String relationKey = SecureUtil.md5(staffId + externalUserid); String relationKey = SecureUtil.md5(staffId + externalUserid);
logger.info("新增TabHaobanExternalClerkRelated"); logger.info("新增TabHaobanExternalClerkRelated");
TabHaobanExternalClerkRelated related = new TabHaobanExternalClerkRelated(); TabHaobanExternalClerkRelated related = new TabHaobanExternalClerkRelated();
related.setAddCreateTime(dto.getAddCreateTime()); related.setAddCreateTime(dto.getAddCreateTime());
related.setClerkId(null); related.setClerkId(staffClerkRelationDTO.getClerkId());
related.setEnterpriseId(null); related.setEnterpriseId(enterpriseId);
related.setExternalName(dto.getExternalName()); related.setExternalName(dto.getExternalName());
related.setExternalUserId(externalUserid); related.setExternalUserId(externalUserid);
related.setStaffId(staffId); related.setStaffId(staffId);
related.setHeadUrl(dto.getAvatar()); related.setHeadUrl(dto.getAvatar());
related.setMemberUnionidRelatedId(memberUnionidRelatedId); related.setMemberUnionidRelatedId(memberUnionIdRelatedId);
related.setStoreId(staffClerkRelationDTO.getStoreId()); related.setStoreId(staffClerkRelationDTO.getStoreId());
related.setRelationKey(relationKey); related.setRelationKey(relationKey);
related.setUnionid(null); related.setUnionid(dto.getUnionid());
related.setWxEnterpriseId(wxEnterpriseId); related.setWxEnterpriseId(wxEnterpriseId);
related.setWxUserId(wxUserId); related.setWxUserId(wxUserId);
related.setMemberId(null); related.setMemberId(member.getMemberId());
externalClerkRelatedService.insert(related); externalClerkRelatedService.insert(related);
// 发送群发消息
JSONResponse jsonResponse = sendMessage(bo, relationKey, miniprogramSetting);
logger.info("存量会员群发执行结果:{}", JSON.toJSONString(jsonResponse));
} }
private JSONResponse sendMessage(MemberUnionRelatedBO bo, String relationKey, TabMiniprogramSetting miniprogramSetting) { private String createClerkQrCodeParam(String clerkCode, String enterpriseId, String unionId) {
String wxUserId = bo.getWxUserId(); //新增导购和外部联系人关系
QywxExternalMessageDTO dto = new QywxExternalMessageDTO(); ClerkDTO clerk = clerkService.getClerkByClerkCode(enterpriseId, clerkCode);
// 文本内容 logger.info("【新增外部联系人】clerkCode={},unionid:{}", clerkCode, unionId);
dto.setChatType("single"); if (clerk == null) {
dto.setContent(bo.getContent()); logger.info("【新增外部联系人】导购为空:{},{}", clerkCode, unionId);
// sender return null;
if (bo.getCorpid().length() > 20) {
TabHaobanStaff tabHaobanStaff = staffService.selectByUserIdAndEnterpriseId(wxUserId, bo.getWxEnterpriseId());
if (tabHaobanStaff == null) {
JSONResponse jp = new JSONResponse();
jp.setErrorCode(-1);
jp.setErrorMessage("员工未查询到,群发创建失败,userId:" + wxUserId);
return jp;
}
dto.setSenderUserId(tabHaobanStaff.getWxOpenUseId());
} else {
dto.setSenderUserId(wxUserId);
} }
// 外部联系人id String qrcodeParam = clerk.getQrcodeParam();
dto.setExternalUserid(Lists.newArrayList(bo.getExternalUserid())); if (StringUtils.isBlank(qrcodeParam)) {
List<QywxMessageMaterialDTO> messageMaterialList = new ArrayList<>(1); powerService.saveClerkQrCode(clerk.getClerkId());
clerk = clerkService.getClerkByClerkCode(enterpriseId, clerkCode);
QywxMiniprogramMaterialDTO miniprogramMaterialDTO = new QywxMiniprogramMaterialDTO(); qrcodeParam = clerk.getQrcodeParam();
miniprogramMaterialDTO.setTitle(miniprogramSetting.getTitle()); }
miniprogramMaterialDTO.setPicMediaId(miniprogramSetting.getMediaId()); return qrcodeParam;
miniprogramMaterialDTO.setAppid(miniprogramSetting.getAppId());
miniprogramMaterialDTO.setPage(config.getMemberOpenPage() + relationKey);
QywxMessageMaterialDTO materialDTO = new QywxMessageMaterialDTO();
materialDTO.setMsgType(QywxMediaTypeEnum.MINIPROGRAM.getName());
materialDTO.setMiniprogram(miniprogramMaterialDTO);
messageMaterialList.add(materialDTO);
dto.setAttachments(messageMaterialList);
// 创建企业群发
return qywxSuiteApiService.sendExternalMessage(bo.getCorpid(), config.getSuiteId(), dto);
} }
private MemberUnionidRelatedDTO getAndMergeMemberUnion(MemberUnionRelatedBO bo) { private MemberUnionidRelatedDTO getAndMergeMemberUnion(MemberUnionRelatedBO bo) {
...@@ -215,7 +213,7 @@ public class AddMemberUnionRelateConsumerProcessor extends AbstractConsumerProce ...@@ -215,7 +213,7 @@ public class AddMemberUnionRelateConsumerProcessor extends AbstractConsumerProce
Objects.nonNull(selfExternalUserDTO) ? selfExternalUserDTO.getAvatar() : thirdExternalUserDTO.getAvatar() Objects.nonNull(selfExternalUserDTO) ? selfExternalUserDTO.getAvatar() : thirdExternalUserDTO.getAvatar()
); );
dto.setUnionid( dto.setUnionid(
Objects.nonNull(selfExternalUserDTO) ? selfExternalUserDTO.getName() : null Objects.nonNull(selfExternalUserDTO) ? selfExternalUserDTO.getUnionId() : null
); );
dto.setSelfExternalUserid( dto.setSelfExternalUserid(
Objects.nonNull(selfExternalUserDTO) ? selfExternalUserDTO.getExternalUserId() : null Objects.nonNull(selfExternalUserDTO) ? selfExternalUserDTO.getExternalUserId() : null
......
...@@ -23,8 +23,6 @@ public class MemberUnionRelatedBO implements Serializable { ...@@ -23,8 +23,6 @@ public class MemberUnionRelatedBO implements Serializable {
private String staffId; private String staffId;
private String content;
public String getCorpid() { public String getCorpid() {
return corpid; return corpid;
} }
...@@ -73,11 +71,15 @@ public class MemberUnionRelatedBO implements Serializable { ...@@ -73,11 +71,15 @@ public class MemberUnionRelatedBO implements Serializable {
this.staffId = staffId; this.staffId = staffId;
} }
public String getContent() { @Override
return content; public String toString() {
} return "MemberUnionRelatedBO{" +
"corpid='" + corpid + '\'' +
public void setContent(String content) { ", wxEnterpriseId='" + wxEnterpriseId + '\'' +
this.content = content; ", externalUserid='" + externalUserid + '\'' +
", wxUserId='" + wxUserId + '\'' +
", secret='" + secret + '\'' +
", staffId='" + staffId + '\'' +
'}';
} }
} }
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