Commit 7d4e90ec by 王祖波

发送商品、素材自动建联

parent a29fa8d1
package com.gic.haoban.manage.api.dto.send; package com.gic.haoban.manage.api.dto.send;
import com.gic.haoban.manage.api.dto.anaylsis.ClerkShareGoodsLogDTO;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* Created by wangzubo on 2025/3/25. * Created by wangzubo on 2025/3/25.
...@@ -60,6 +63,11 @@ public class DealQwSendDTO implements Serializable { ...@@ -60,6 +63,11 @@ public class DealQwSendDTO implements Serializable {
*/ */
private String enterpriseId; private String enterpriseId;
/**
* 商品分享信息
*/
private List<ClerkShareGoodsLogDTO> shareGoodsList;
public FinishQwSendBO() { public FinishQwSendBO() {
} }
...@@ -119,6 +127,14 @@ public class DealQwSendDTO implements Serializable { ...@@ -119,6 +127,14 @@ public class DealQwSendDTO implements Serializable {
public void setEnterpriseId(String enterpriseId) { public void setEnterpriseId(String enterpriseId) {
this.enterpriseId = enterpriseId; this.enterpriseId = enterpriseId;
} }
public List<ClerkShareGoodsLogDTO> getShareGoodsList() {
return shareGoodsList;
}
public void setShareGoodsList(List<ClerkShareGoodsLogDTO> shareGoodsList) {
this.shareGoodsList = shareGoodsList;
}
} }
public static class QwSendMsgBO implements Serializable { public static class QwSendMsgBO implements Serializable {
......
...@@ -4,22 +4,24 @@ import org.apache.commons.lang3.StringUtils; ...@@ -4,22 +4,24 @@ import org.apache.commons.lang3.StringUtils;
public enum ContactFollowTypeEnum { public enum ContactFollowTypeEnum {
PRIVATE_PHONE(1, "私人电话","私人电话"), PRIVATE_PHONE(1, "私人电话","私人电话",null),
WECHAT_SESSION(2, "企微会话","企微会话"), WECHAT_SESSION(2, "企微会话","企微会话",null),
PRODUCT(3, "发送商品","商品"), PRODUCT(3, "发送商品","商品",ContactAutoTypeEnum.GOODS_RECOMMEND.getCode()),
WECHAT_GROUP_SEND(4, "企微群发","企微群发"), WECHAT_GROUP_SEND(4, "企微群发","企微群发",null),
CONTACT(5, "标记建联","标记了建联"), CONTACT(5, "标记建联","标记了建联",null),
AUTO_CONTACT(6, "系统自动标记","系统自动标记"), AUTO_CONTACT(6, "系统自动标记","系统自动标记",null),
MATERIAL(7, "营销素材","营销素材"); MATERIAL(7, "营销素材","营销素材",ContactAutoTypeEnum.MATERIAL.getCode());
private final int code; private final int code;
private final String description; private final String description;
private final String textMatch; private final String textMatch;
private final Integer contactAutoType;
ContactFollowTypeEnum(int code, String description,String textMatch) { ContactFollowTypeEnum(int code, String description,String textMatch,Integer contactAutoType) {
this.code = code; this.code = code;
this.description = description; this.description = description;
this.textMatch = textMatch; this.textMatch = textMatch;
this.contactAutoType = contactAutoType;
} }
public String getTextMatch() { public String getTextMatch() {
...@@ -34,6 +36,10 @@ public enum ContactFollowTypeEnum { ...@@ -34,6 +36,10 @@ public enum ContactFollowTypeEnum {
return description; return description;
} }
public Integer getContactAutoType() {
return contactAutoType;
}
public static ContactFollowTypeEnum fromCode(int code) { public static ContactFollowTypeEnum fromCode(int code) {
for (ContactFollowTypeEnum type : values()) { for (ContactFollowTypeEnum type : values()) {
if (type.code == code) { if (type.code == code) {
......
...@@ -78,6 +78,11 @@ public class ContactFollowBatchQDTO implements Serializable { ...@@ -78,6 +78,11 @@ public class ContactFollowBatchQDTO implements Serializable {
private String memberId; private String memberId;
/** /**
* 外部联系人id
*/
private String externalUserId;
/**
* 跟进时间 * 跟进时间
*/ */
private Date followTime; private Date followTime;
...@@ -90,6 +95,12 @@ public class ContactFollowBatchQDTO implements Serializable { ...@@ -90,6 +95,12 @@ public class ContactFollowBatchQDTO implements Serializable {
this.followTime = followTime; this.followTime = followTime;
} }
public MemberFollow(String memberId, String externalUserId, Date followTime) {
this.memberId = memberId;
this.externalUserId = externalUserId;
this.followTime = followTime;
}
public String getMemberId() { public String getMemberId() {
return memberId; return memberId;
} }
...@@ -98,6 +109,14 @@ public class ContactFollowBatchQDTO implements Serializable { ...@@ -98,6 +109,14 @@ public class ContactFollowBatchQDTO implements Serializable {
this.memberId = memberId; this.memberId = memberId;
} }
public String getExternalUserId() {
return externalUserId;
}
public void setExternalUserId(String externalUserId) {
this.externalUserId = externalUserId;
}
public Date getFollowTime() { public Date getFollowTime() {
return followTime; return followTime;
} }
......
...@@ -8,6 +8,7 @@ import com.gic.api.base.commons.ServiceResponse; ...@@ -8,6 +8,7 @@ import com.gic.api.base.commons.ServiceResponse;
import com.gic.clerk.api.dto.ClerkDTO; import com.gic.clerk.api.dto.ClerkDTO;
import com.gic.clerk.api.service.ClerkService; import com.gic.clerk.api.service.ClerkService;
import com.gic.commons.util.EntityUtil; import com.gic.commons.util.EntityUtil;
import com.gic.commons.util.GICMQClientUtil;
import com.gic.commons.util.PageHelperUtils; import com.gic.commons.util.PageHelperUtils;
import com.gic.commons.util.UniqueIdUtils; import com.gic.commons.util.UniqueIdUtils;
import com.gic.haoban.manage.api.dto.contact.ContactFollowDTO; import com.gic.haoban.manage.api.dto.contact.ContactFollowDTO;
...@@ -15,9 +16,11 @@ import com.gic.haoban.manage.api.dto.contact.ContactFollowGoodsDTO; ...@@ -15,9 +16,11 @@ import com.gic.haoban.manage.api.dto.contact.ContactFollowGoodsDTO;
import com.gic.haoban.manage.api.enums.contact.ContactFollowTypeEnum; import com.gic.haoban.manage.api.enums.contact.ContactFollowTypeEnum;
import com.gic.haoban.manage.api.qdto.contact.ContactFollowQDTO; import com.gic.haoban.manage.api.qdto.contact.ContactFollowQDTO;
import com.gic.haoban.manage.api.qdto.contact.ContactFollowSearchQDTO; import com.gic.haoban.manage.api.qdto.contact.ContactFollowSearchQDTO;
import com.gic.haoban.manage.api.qdto.contact.ContactLogQDTO;
import com.gic.haoban.manage.service.dao.mapper.contact.TabContactFollowMapper; import com.gic.haoban.manage.service.dao.mapper.contact.TabContactFollowMapper;
import com.gic.haoban.manage.service.entity.contact.TabContactFollow; import com.gic.haoban.manage.service.entity.contact.TabContactFollow;
import com.gic.haoban.manage.service.service.contact.ContactFollowService; import com.gic.haoban.manage.service.service.contact.ContactFollowService;
import com.gic.mq.sdk.GicMQClient;
import com.gic.store.goods.service.StoreGoodsService; import com.gic.store.goods.service.StoreGoodsService;
import com.gic.store.goods.vo.StoreGoodsVO; import com.gic.store.goods.vo.StoreGoodsVO;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
...@@ -85,6 +88,32 @@ public class ContactFollowServiceImpl implements ContactFollowService { ...@@ -85,6 +88,32 @@ public class ContactFollowServiceImpl implements ContactFollowService {
return contactFollow; return contactFollow;
}).filter(Objects::nonNull).collect(Collectors.toList()); }).filter(Objects::nonNull).collect(Collectors.toList());
contactFollowMapper.insertBatch(followList); contactFollowMapper.insertBatch(followList);
// 部分跟进发送自动建联
autoContactSend(followList);
}
private static void autoContactSend(List<TabContactFollow> followList) {
// 自动建联
Integer followType = followList.get(0).getFollowType();
Integer contactAutoType = ContactFollowTypeEnum.fromCode(followType).getContactAutoType();
if (contactAutoType != null) {
List<String> message = followList.stream().map(x -> {
ContactLogQDTO contactLogQDTO = new ContactLogQDTO();
contactLogQDTO.setMemberId(x.getMemberId());
contactLogQDTO.setClerkId(x.getClerkId());
contactLogQDTO.setEnterpriseId(x.getEnterpriseId());
contactLogQDTO.setContactAutoType(contactAutoType);
return JSON.toJSONString(contactLogQDTO);
}).collect(Collectors.toList());
String routerName = "autoContactLogForMQ";
try {
GicMQClient clientInstance = GICMQClientUtil.getClientInstance();
clientInstance.sendBatchMessages(routerName, message);
} catch (Exception e) {
logger.error("发送错误!路由规则名称:" + routerName + ",message:" + message,e);
}
message.clear();
}
} }
@Override @Override
......
...@@ -42,7 +42,7 @@ public class QwSendApiServiceImpl implements QwSendApiService { ...@@ -42,7 +42,7 @@ public class QwSendApiServiceImpl implements QwSendApiService {
if (Objects.equals(refreshType,1)) { if (Objects.equals(refreshType,1)) {
qwSendMsgService.finishQwSend(dealQwSendDTO.getFinishQwSend(),dealQwSendDTO.getTryCount()); qwSendMsgService.finishQwSend(dealQwSendDTO.getFinishQwSend(),dealQwSendDTO.getTryCount());
} else if (Objects.equals(refreshType, 2)) { } else if (Objects.equals(refreshType, 2)) {
qwSendMsgService.refreshQwSendLog(dealQwSendDTO.getQwSendMsg()); qwSendMsgService.refreshQwSendLog(dealQwSendDTO);
} }
return ServiceResponse.success(); return ServiceResponse.success();
} }
......
...@@ -20,8 +20,8 @@ public interface QwSendMsgService { ...@@ -20,8 +20,8 @@ public interface QwSendMsgService {
/** /**
* 刷新企微群结果 * 刷新企微群结果
* @param qwSendMsg * @param dealQwSendDTO
*/ */
void refreshQwSendLog(DealQwSendDTO.QwSendMsgBO qwSendMsg); void refreshQwSendLog(DealQwSendDTO dealQwSendDTO);
} }
...@@ -5,31 +5,36 @@ import com.alibaba.fastjson.JSON; ...@@ -5,31 +5,36 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.BusinessException; import com.gic.api.base.commons.BusinessException;
import com.gic.api.base.commons.JSONResponse; import com.gic.api.base.commons.JSONResponse;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.UniqueIdUtils; import com.gic.commons.util.UniqueIdUtils;
import com.gic.content.api.utils.MqUtils; import com.gic.content.api.utils.MqUtils;
import com.gic.haoban.common.utils.EntityUtil; import com.gic.haoban.common.utils.EntityUtil;
import com.gic.haoban.manage.api.dto.anaylsis.ClerkShareGoodsLogDTO;
import com.gic.haoban.manage.api.dto.send.DealQwSendDTO; import com.gic.haoban.manage.api.dto.send.DealQwSendDTO;
import com.gic.haoban.manage.api.enums.contact.ContactFollowTypeEnum; import com.gic.haoban.manage.api.enums.contact.ContactFollowTypeEnum;
import com.gic.haoban.manage.api.qdto.contact.ContactFollowBatchQDTO; import com.gic.haoban.manage.api.qdto.contact.ContactFollowBatchQDTO;
import com.gic.haoban.manage.api.service.MemberUnionidRelatedApiService; import com.gic.haoban.manage.api.service.MemberUnionidRelatedApiService;
import com.gic.haoban.manage.api.service.MessageApiService; import com.gic.haoban.manage.api.service.MessageApiService;
import com.gic.haoban.manage.api.service.content.MaterialShareLogApiService;
import com.gic.haoban.manage.service.dao.mapper.TabHaobanExternalClerkRelatedMapper; import com.gic.haoban.manage.service.dao.mapper.TabHaobanExternalClerkRelatedMapper;
import com.gic.haoban.manage.service.dao.mapper.send.QwSendLogMapper; import com.gic.haoban.manage.service.dao.mapper.send.QwSendLogMapper;
import com.gic.haoban.manage.service.dao.mapper.send.QwSendMsgMapper; import com.gic.haoban.manage.service.dao.mapper.send.QwSendMsgMapper;
import com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated; import com.gic.haoban.manage.service.entity.TabHaobanExternalClerkRelated;
import com.gic.haoban.manage.service.entity.send.TabQwSendLog; import com.gic.haoban.manage.service.entity.send.TabQwSendLog;
import com.gic.haoban.manage.service.entity.send.TabQwSendMsg; import com.gic.haoban.manage.service.entity.send.TabQwSendMsg;
import com.gic.haoban.manage.service.pojo.bo.send.FinishQwSendBO;
import com.gic.haoban.manage.service.pojo.bo.send.GroupSendResultBO; import com.gic.haoban.manage.service.pojo.bo.send.GroupSendResultBO;
import com.gic.haoban.manage.service.service.chat.GroupChatPlanService; import com.gic.haoban.manage.service.service.chat.GroupChatPlanService;
import com.gic.haoban.manage.service.service.content.impl.GroupMessageServiceImpl; import com.gic.haoban.manage.service.service.content.impl.GroupMessageServiceImpl;
import com.gic.haoban.manage.service.service.send.QwSendMsgService; import com.gic.haoban.manage.service.service.send.QwSendMsgService;
import com.gic.member.api.constant.MemberExtKeyEnum;
import com.gic.member.api.dto.member.req.MemberExtraPropertyReq;
import com.gic.member.api.service.extra.MemberExtraPropertyApiService;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -55,6 +60,10 @@ public class QwSendMsgServiceImpl implements QwSendMsgService { ...@@ -55,6 +60,10 @@ public class QwSendMsgServiceImpl implements QwSendMsgService {
private MemberUnionidRelatedApiService memberUnionidRelatedApiService; private MemberUnionidRelatedApiService memberUnionidRelatedApiService;
@Autowired @Autowired
private MessageApiService messageApiService; private MessageApiService messageApiService;
@Autowired
private MaterialShareLogApiService materialShareLogApiService;
@Autowired
private MemberExtraPropertyApiService memberExtraPropertyApiService;
@Override @Override
public void finishQwSend(DealQwSendDTO.FinishQwSendBO finishQwSendBO,Integer tryCount) { public void finishQwSend(DealQwSendDTO.FinishQwSendBO finishQwSendBO,Integer tryCount) {
...@@ -83,7 +92,8 @@ public class QwSendMsgServiceImpl implements QwSendMsgService { ...@@ -83,7 +92,8 @@ public class QwSendMsgServiceImpl implements QwSendMsgService {
dealQwSendDTO.setRefreshType(2); dealQwSendDTO.setRefreshType(2);
DealQwSendDTO.QwSendMsgBO qwSendMsgBO = EntityUtil.changeEntityByJSON(DealQwSendDTO.QwSendMsgBO.class, qwSendMsg); DealQwSendDTO.QwSendMsgBO qwSendMsgBO = EntityUtil.changeEntityByJSON(DealQwSendDTO.QwSendMsgBO.class, qwSendMsg);
dealQwSendDTO.setQwSendMsg(qwSendMsgBO); dealQwSendDTO.setQwSendMsg(qwSendMsgBO);
MqUtils.sendMessageToMQ("qwSendRefreshByMQ", JSON.toJSONString(dealQwSendDTO), 60); dealQwSendDTO.setFinishQwSend(finishQwSendBO);
MqUtils.sendMessageToMQ("qwSendRefreshByMQ", JSON.toJSONString(dealQwSendDTO), 30);
}else { }else {
if (tryCount != null && tryCount >= 5) { if (tryCount != null && tryCount >= 5) {
return; return;
...@@ -102,7 +112,8 @@ public class QwSendMsgServiceImpl implements QwSendMsgService { ...@@ -102,7 +112,8 @@ public class QwSendMsgServiceImpl implements QwSendMsgService {
} }
@Override @Override
public void refreshQwSendLog(DealQwSendDTO.QwSendMsgBO qwSendMsg) { public void refreshQwSendLog(DealQwSendDTO dealQwSendDTO) {
DealQwSendDTO.QwSendMsgBO qwSendMsg = dealQwSendDTO.getQwSendMsg();
List<GroupSendResultBO> sendResultList = getSendResultList(qwSendMsg); List<GroupSendResultBO> sendResultList = getSendResultList(qwSendMsg);
if (CollectionUtils.isEmpty(sendResultList)) { if (CollectionUtils.isEmpty(sendResultList)) {
return; return;
...@@ -147,9 +158,9 @@ public class QwSendMsgServiceImpl implements QwSendMsgService { ...@@ -147,9 +158,9 @@ public class QwSendMsgServiceImpl implements QwSendMsgService {
if (StringUtils.isBlank(log.getMemberId())) { if (StringUtils.isBlank(log.getMemberId())) {
return; return;
} }
memberList.add(new ContactFollowBatchQDTO.MemberFollow(log.getMemberId(), log.getSendTime())); memberList.add(new ContactFollowBatchQDTO.MemberFollow(log.getMemberId(), log.getExternalUserId(), log.getSendTime()));
}); });
saveFollowMQ(qwSendMsg.getEnterpriseId(),qwSendMsg.getClerkId(), memberList); saveFollowMQ(qwSendMsg.getEnterpriseId(),qwSendMsg.getClerkId(), memberList,dealQwSendDTO.getFinishQwSend());
} }
entities.clear(); entities.clear();
} }
...@@ -229,16 +240,59 @@ public class QwSendMsgServiceImpl implements QwSendMsgService { ...@@ -229,16 +240,59 @@ public class QwSendMsgServiceImpl implements QwSendMsgService {
return EntityUtil.changeEntityListByJSON(GroupSendResultBO.class, list); return EntityUtil.changeEntityListByJSON(GroupSendResultBO.class, list);
} }
private void saveFollowMQ(String enterpriseId,String clerkId,List<ContactFollowBatchQDTO.MemberFollow> memberList) { private void saveFollowMQ(String enterpriseId,String clerkId,List<ContactFollowBatchQDTO.MemberFollow> memberList,DealQwSendDTO.FinishQwSendBO finishQwSendBO) {
if (org.apache.commons.collections.CollectionUtils.isEmpty(memberList)) { if (org.apache.commons.collections.CollectionUtils.isEmpty(memberList)) {
return; return;
} }
if (finishQwSendBO == null) {
return;
}
Integer followType = null;
String followRemark = null;
Integer bizType = finishQwSendBO.getBizType();
List<ClerkShareGoodsLogDTO> shareGoodsList = finishQwSendBO.getShareGoodsList();
if (Objects.equals(bizType, 1)) {
followType = ContactFollowTypeEnum.MATERIAL.getCode();
followRemark = "向客户发送了营销素材";
} else if (Objects.equals(bizType, 2)) {
followType = ContactFollowTypeEnum.PRODUCT.getCode();
followRemark = "向客户发送了" + shareGoodsList.size() + "款商品";
} else {
return;
}
ContactFollowBatchQDTO batchQDTO = new ContactFollowBatchQDTO(); ContactFollowBatchQDTO batchQDTO = new ContactFollowBatchQDTO();
batchQDTO.setEnterpriseId(enterpriseId); batchQDTO.setEnterpriseId(enterpriseId);
batchQDTO.setMemberList(memberList); batchQDTO.setMemberList(memberList);
batchQDTO.setClerkId(clerkId); batchQDTO.setClerkId(clerkId);
batchQDTO.setFollowType(ContactFollowTypeEnum.WECHAT_GROUP_SEND.getCode()); batchQDTO.setFollowType(followType);
batchQDTO.setFollowRemark("通过企微群发向客户发送了消息"); batchQDTO.setFollowRemark(followRemark);
MqUtils.sendMessageToMQ("saveBatchFollowForMQ", JSON.toJSONString(batchQDTO)); MqUtils.sendMessageToMQ("saveBatchFollowForMQ", JSON.toJSONString(batchQDTO));
if (Objects.equals(bizType, 2)) {
saveShareMaterialLog(enterpriseId, shareGoodsList, memberList);
}
}
private void saveShareMaterialLog(String enterpriseId,List<ClerkShareGoodsLogDTO> shareGoodsList,List<ContactFollowBatchQDTO.MemberFollow> memberList) {
List<ClerkShareGoodsLogDTO> list = Lists.newArrayList();
for (ContactFollowBatchQDTO.MemberFollow memberInfo : memberList) {
for (ClerkShareGoodsLogDTO goodsLogDTO : shareGoodsList) {
ClerkShareGoodsLogDTO temp = EntityUtil.changeEntityByJSON(ClerkShareGoodsLogDTO.class, goodsLogDTO);
temp.setExternalUserId(memberInfo.getExternalUserId());
temp.setMemberId(memberInfo.getMemberId());
list.add(temp);
}
//更新会员推荐时间更新
MemberExtraPropertyReq memberExtraPropertyReq = new MemberExtraPropertyReq();
memberExtraPropertyReq.setEnterpriseId(enterpriseId);
memberExtraPropertyReq.setMemberId(memberInfo.getMemberId());
memberExtraPropertyReq.setExtraKey(MemberExtKeyEnum.MEMBER_GOODS_SUGGEST_TIME.key());
memberExtraPropertyReq.setExtraValue(memberInfo.getFollowTime().getTime());
try {
memberExtraPropertyApiService.updateMemberExtraProperty(memberExtraPropertyReq);
} catch (Exception e) {
log.info("更新会员推荐时间更新异常,", e);
}
}
materialShareLogApiService.saveClerkShareRecommendLog(list);
} }
} }
...@@ -257,6 +257,7 @@ ...@@ -257,6 +257,7 @@
<dubbo:reference interface="com.gic.clerk.api.service.MenuApiService" id="menuApiService" timeout="10000" retries="0" check="false" /> <dubbo:reference interface="com.gic.clerk.api.service.MenuApiService" id="menuApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference interface="com.gic.member.ext.api.service.MemberGrowthWriteApiService" id="memberGrowthWriteApiService" timeout="10000" retries="0" check="false" /> <dubbo:reference interface="com.gic.member.ext.api.service.MemberGrowthWriteApiService" id="memberGrowthWriteApiService" timeout="10000" retries="0" check="false" />
<dubbo:reference interface="com.gic.member.api.service.integral.IntegralWriteApiService" id="integralWriteApiService" timeout="10000" retries="0" check="false"/> <dubbo:reference interface="com.gic.member.api.service.integral.IntegralWriteApiService" id="integralWriteApiService" timeout="10000" retries="0" check="false"/>
<dubbo:reference id="memberExtraPropertyApiService" interface="com.gic.member.api.service.extra.MemberExtraPropertyApiService" timeout="100000" retries="0" check="false" />
<dubbo:reference id="memberTagEsApiService" interface="com.gic.member.tag.api.service.MemberTagEsApiService" timeout="100000" retries="0" check="false"/> <dubbo:reference id="memberTagEsApiService" interface="com.gic.member.tag.api.service.MemberTagEsApiService" timeout="100000" retries="0" check="false"/>
<dubbo:reference id="memberCrowdApiService" interface="com.gic.member.ext.api.service.MemberCrowdApiService" timeout="10000" retries="0" check="false"/> <dubbo:reference id="memberCrowdApiService" interface="com.gic.member.ext.api.service.MemberCrowdApiService" timeout="10000" retries="0" check="false"/>
......
...@@ -130,21 +130,12 @@ public class ClerkMaterialShareController { ...@@ -130,21 +130,12 @@ public class ClerkMaterialShareController {
log.info("saveClerkShareMaterialLog 保存导购分享推荐商品日志 clerkId:{}, recommendShareLogQO{}", recommendShareLogQO.getClerkId(), JSON.toJSONString(recommendShareLogQO)); log.info("saveClerkShareMaterialLog 保存导购分享推荐商品日志 clerkId:{}, recommendShareLogQO{}", recommendShareLogQO.getClerkId(), JSON.toJSONString(recommendShareLogQO));
List<ClerkShareGoodsLogDTO> list = Lists.newArrayList(); List<ClerkShareGoodsLogDTO> list = Lists.newArrayList();
List<String> memberIdList = Lists.newArrayList();
List<String> goodsIdList = recommendShareLogQO.getGoodsIdList(); List<String> goodsIdList = recommendShareLogQO.getGoodsIdList();
List<RecommendShareLogQO.MemberInfo> externalUserIdList = recommendShareLogQO.getMemberInfoList();
for (RecommendShareLogQO.MemberInfo memberInfo : externalUserIdList) {
for (String goodsId : goodsIdList) { for (String goodsId : goodsIdList) {
ClerkShareGoodsLogDTO temp = new ClerkShareGoodsLogDTO(); ClerkShareGoodsLogDTO temp = new ClerkShareGoodsLogDTO();
temp.setEnterpriseId(recommendShareLogQO.getEnterpriseId()); temp.setEnterpriseId(recommendShareLogQO.getEnterpriseId());
temp.setWxEnterpriseId(recommendShareLogQO.getWxEnterpriseId()); temp.setWxEnterpriseId(recommendShareLogQO.getWxEnterpriseId());
temp.setClerkId(recommendShareLogQO.getClerkId()); temp.setClerkId(recommendShareLogQO.getClerkId());
temp.setExternalUserId(memberInfo.getExternalUserId());
temp.setMemberId(memberInfo.getMemberId());
if(StringUtils.isNotEmpty(memberInfo.getMemberId())){
memberIdList.add(memberInfo.getMemberId());
}
temp.setBizId(goodsId); temp.setBizId(goodsId);
temp.setBizType(ShareBizType.GOODS.getCode()); temp.setBizType(ShareBizType.GOODS.getCode());
temp.setStoreId(recommendShareLogQO.getStoreId()); temp.setStoreId(recommendShareLogQO.getStoreId());
...@@ -153,24 +144,19 @@ public class ClerkMaterialShareController { ...@@ -153,24 +144,19 @@ public class ClerkMaterialShareController {
temp.setWxaLinkId(recommendShareLogQO.getWxaLinkId()); temp.setWxaLinkId(recommendShareLogQO.getWxaLinkId());
list.add(temp); list.add(temp);
} }
}
ServiceResponse<Long> serviceResponse = materialShareLogApiService.saveClerkShareRecommendLog(list); // 改为查询企微是否真正发送成功
DealQwSendDTO.FinishQwSendBO finishQwSendBO = new DealQwSendDTO.FinishQwSendBO(
recommendShareLogQO.getClerkId(),
recommendShareLogQO.getStaffId(),
DateUtil.date(),
2,
recommendShareLogQO.getWxEnterpriseId(),
recommendShareLogQO.getEnterpriseId());
finishQwSendBO.setShareGoodsList(list);
dealQwSendMsg(finishQwSendBO);
if (!serviceResponse.isSuccess()) {
return RestResponse.failure("-701", "系统异常");
}
//更新会员推荐时间更新
if(CollectionUtils.isNotEmpty(memberIdList)){
for (String memberId : memberIdList) {
MemberExtraPropertyReq memberExtraPropertyReq = new MemberExtraPropertyReq();
memberExtraPropertyReq.setEnterpriseId(recommendShareLogQO.getEnterpriseId());
memberExtraPropertyReq.setMemberId(memberId);
memberExtraPropertyReq.setExtraKey(MemberExtKeyEnum.MEMBER_GOODS_SUGGEST_TIME.key());
memberExtraPropertyReq.setExtraValue(new Date().getTime());
memberExtraPropertyApiService.updateMemberExtraProperty(memberExtraPropertyReq);
}
}
if (StringUtils.isNotBlank(recommendShareLogQO.getWxaLinkId())) { if (StringUtils.isNotBlank(recommendShareLogQO.getWxaLinkId())) {
enterpriseWxaLinkService.updateTimeById(recommendShareLogQO.getWxaLinkId()); enterpriseWxaLinkService.updateTimeById(recommendShareLogQO.getWxaLinkId());
} }
...@@ -179,7 +165,6 @@ public class ClerkMaterialShareController { ...@@ -179,7 +165,6 @@ public class ClerkMaterialShareController {
} }
private void dealQwSendMsg(DealQwSendDTO.FinishQwSendBO finishQwSend) { private void dealQwSendMsg(DealQwSendDTO.FinishQwSendBO finishQwSend) {
// 商品分享暂时不记,记录的是发送商品的类型而不是企微群发
DealQwSendDTO dealQwSendDTO = new DealQwSendDTO(); DealQwSendDTO dealQwSendDTO = new DealQwSendDTO();
dealQwSendDTO.setEnterpriseId(finishQwSend.getEnterpriseId()); dealQwSendDTO.setEnterpriseId(finishQwSend.getEnterpriseId());
dealQwSendDTO.setRefreshType(1); dealQwSendDTO.setRefreshType(1);
......
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