Commit 4c0feea9 by xugaojun

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

parent 30f78c71
......@@ -396,18 +396,17 @@ public class EnterpriseController extends WebBaseController {
}
/**
* desc: 发送存量会员关联消息
* desc: 发送会员关联消息
*
* @param wxEnterpriseId 微信企业id
* @param content 文本内容
* @return : {@link HaobanResponse}
* @author : YongEn
* @date : 2022/2/17
*/
@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);
}
......
......@@ -4,7 +4,9 @@ import cn.hutool.crypto.SecureUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
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.haoban.manage.api.dto.ExternalUserDTO;
import com.gic.haoban.manage.api.dto.MemberUnionidRelatedDTO;
......@@ -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.service.*;
import com.gic.haoban.manage.service.util.EmojiFilterUtil;
import com.gic.wechat.api.dto.qywx.QywxExternalMessageDTO;
import com.gic.wechat.api.dto.qywx.QywxMessageMaterialDTO;
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.member.api.dto.MemberDTO;
import com.gic.member.api.service.MemberOpenCardBusinessService;
import com.gic.wechat.api.service.qywx.QywxUserApiService;
import com.google.common.collect.Lists;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
......@@ -31,7 +29,6 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
......@@ -50,8 +47,6 @@ public class AddMemberUnionRelateConsumerProcessor extends AbstractConsumerProce
@Autowired
private QywxUserApiService qywxUserApiService;
@Autowired
private QywxSuiteApiService qywxSuiteApiService;
@Autowired
private Config config;
@Autowired
private MemberUnionRelatedService memberUnionRelatedService;
......@@ -64,9 +59,11 @@ public class AddMemberUnionRelateConsumerProcessor extends AbstractConsumerProce
@Autowired
private ExternalClerkRelatedService externalClerkRelatedService;
@Autowired
private StaffService staffService;
private ClerkService clerkService;
@Autowired
private PowerService powerService;
@Autowired
private MiniprogramSettingService miniprogramSettingService;
private MemberOpenCardBusinessService memberOpenCardBusinessService;
@Override
MemberUnionRelatedBO paramParse(String s) {
......@@ -84,13 +81,22 @@ public class AddMemberUnionRelateConsumerProcessor extends AbstractConsumerProce
logger.info("新增外部联系人, 自建与第三方均为空");
return;
}
if (StringUtils.isEmpty(dto.getUnionid())) {
logger.info("unionId为空, 会员无法查询");
return;
}
// 幂等
MemberUnionidRelatedDTO exsitDTO = memberUnionRelatedService.getByParams(wxUserId, wxEnterpriseId, dto.getExternalName(), dto.getAddCreateTime());
String memberUnionidRelatedId;
String memberUnionIdRelatedId;
if (Objects.isNull(exsitDTO)) {
// 创建memberUnion 临时表关联
memberUnionidRelatedId = memberUnionRelatedService.addMemberUnionidRelated(dto);
memberUnionIdRelatedId = memberUnionRelatedService.addMemberUnionidRelated(dto);
} else {
memberUnionidRelatedId = exsitDTO.getMemberUnionidRelatedId();
memberUnionIdRelatedId = exsitDTO.getMemberUnionidRelatedId();
}
if (StringUtils.isEmpty(memberUnionIdRelatedId)) {
logger.info("添加临时关联表memberUnionIdRelate失败");
return;
}
// 创建导购外部联系人导购
TabHaobanClerkMainStoreRelated mainStoreRelated = clerkMainStoreRelatedService.getMainStoreByStaffId(staffId, wxEnterpriseId);
......@@ -109,78 +115,70 @@ public class AddMemberUnionRelateConsumerProcessor extends AbstractConsumerProce
logger.info("没有存在企业关联:{},{}", staffClerkRelationDTO.getWxEnterpriseId(), enterpriseId);
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());
if (CollectionUtils.isEmpty(externalClerkRelateds)){
logger.info("已经存在好友关系");
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);
logger.info("新增TabHaobanExternalClerkRelated");
TabHaobanExternalClerkRelated related = new TabHaobanExternalClerkRelated();
related.setAddCreateTime(dto.getAddCreateTime());
related.setClerkId(null);
related.setEnterpriseId(null);
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.setMemberUnionidRelatedId(memberUnionIdRelatedId);
related.setStoreId(staffClerkRelationDTO.getStoreId());
related.setRelationKey(relationKey);
related.setUnionid(null);
related.setUnionid(dto.getUnionid());
related.setWxEnterpriseId(wxEnterpriseId);
related.setWxUserId(wxUserId);
related.setMemberId(null);
related.setMemberId(member.getMemberId());
externalClerkRelatedService.insert(related);
// 发送群发消息
JSONResponse jsonResponse = sendMessage(bo, relationKey, miniprogramSetting);
logger.info("存量会员群发执行结果:{}", JSON.toJSONString(jsonResponse));
}
private JSONResponse sendMessage(MemberUnionRelatedBO bo, String relationKey, TabMiniprogramSetting miniprogramSetting) {
String wxUserId = bo.getWxUserId();
QywxExternalMessageDTO dto = new QywxExternalMessageDTO();
// 文本内容
dto.setChatType("single");
dto.setContent(bo.getContent());
// sender
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);
private String createClerkQrCodeParam(String clerkCode, String enterpriseId, String unionId) {
//新增导购和外部联系人关系
ClerkDTO clerk = clerkService.getClerkByClerkCode(enterpriseId, clerkCode);
logger.info("【新增外部联系人】clerkCode={},unionid:{}", clerkCode, unionId);
if (clerk == null) {
logger.info("【新增外部联系人】导购为空:{},{}", clerkCode, unionId);
return null;
}
// 外部联系人id
dto.setExternalUserid(Lists.newArrayList(bo.getExternalUserid()));
List<QywxMessageMaterialDTO> messageMaterialList = new ArrayList<>(1);
QywxMiniprogramMaterialDTO miniprogramMaterialDTO = new QywxMiniprogramMaterialDTO();
miniprogramMaterialDTO.setTitle(miniprogramSetting.getTitle());
miniprogramMaterialDTO.setPicMediaId(miniprogramSetting.getMediaId());
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);
String qrcodeParam = clerk.getQrcodeParam();
if (StringUtils.isBlank(qrcodeParam)) {
powerService.saveClerkQrCode(clerk.getClerkId());
clerk = clerkService.getClerkByClerkCode(enterpriseId, clerkCode);
qrcodeParam = clerk.getQrcodeParam();
}
return qrcodeParam;
}
private MemberUnionidRelatedDTO getAndMergeMemberUnion(MemberUnionRelatedBO bo) {
......@@ -215,7 +213,7 @@ public class AddMemberUnionRelateConsumerProcessor extends AbstractConsumerProce
Objects.nonNull(selfExternalUserDTO) ? selfExternalUserDTO.getAvatar() : thirdExternalUserDTO.getAvatar()
);
dto.setUnionid(
Objects.nonNull(selfExternalUserDTO) ? selfExternalUserDTO.getName() : null
Objects.nonNull(selfExternalUserDTO) ? selfExternalUserDTO.getUnionId() : null
);
dto.setSelfExternalUserid(
Objects.nonNull(selfExternalUserDTO) ? selfExternalUserDTO.getExternalUserId() : null
......
......@@ -23,8 +23,6 @@ public class MemberUnionRelatedBO implements Serializable {
private String staffId;
private String content;
public String getCorpid() {
return corpid;
}
......@@ -73,11 +71,15 @@ public class MemberUnionRelatedBO implements Serializable {
this.staffId = staffId;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
@Override
public String toString() {
return "MemberUnionRelatedBO{" +
"corpid='" + corpid + '\'' +
", wxEnterpriseId='" + wxEnterpriseId + '\'' +
", 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