Commit 8a71371d by songyinghui

feat: 销售线索 会员合并

parent e4aa9ebf
......@@ -10,8 +10,7 @@ import com.gic.haoban.manage.service.entity.content.TabHaobanInteractRecord;
import com.gic.haoban.manage.service.pojo.bo.content.InteractRecordBO;
import com.gic.haoban.manage.service.pojo.bo.content.InteractRecordExtendInfoBO;
import com.gic.haoban.manage.service.pojo.bo.content.PotentialCustomerBO;
import com.gic.member.api.dto.MemberDTO;
import com.gic.member.api.service.MemberService;
import com.gic.haoban.manage.service.pojo.bo.content.context.InteractRecordMessageContext;
import com.gic.store.goods.dto.goods.GoodsSpuInfoDTO;
import com.gic.store.goods.dto.qdto.GoodsListQDTO;
import com.gic.store.goods.enums.GoodsStatusEnum;
......@@ -41,7 +40,7 @@ public class InteractRecordBuilder {
@Autowired
private GoodsCenterApiService goodsCenterApiService;
@Autowired
private MemberService memberService;
private InteractRecordMessageBuilder interactRecordMessageBuilder;
/**
* 互动记录描述
......@@ -183,12 +182,12 @@ public class InteractRecordBuilder {
BeanUtils.copyProperties(interactRecord, temp);
temp.setId(null);
// 获取会员信息
MemberDTO memberDTO = memberService.queryMember(interactRecord.getMemberId());
if (memberDTO != null) {
temp.setMemberName(memberDTO.getMemberName());
temp.setMemberNickName(memberDTO.getThirdNickname());
temp.setMemberImageUrl(memberDTO.getThirdImgUrl());
temp.setMemberPhone(memberDTO.getPhoneNumber());
InteractRecordMessageContext.MemberInfo memberInfo = interactRecordMessageBuilder.queryMemberInfo(interactRecord.getMemberId());
if (memberInfo != null) {
temp.setMemberName(memberInfo.getMemberName());
temp.setMemberNickName(memberInfo.getMemberNickName());
temp.setMemberImageUrl(memberInfo.getMemberImgUrl());
temp.setMemberPhone(memberInfo.getMemberPhone());
}
temp.setStarFlag(0);
temp.setSeeFlag(0);
......@@ -197,8 +196,8 @@ public class InteractRecordBuilder {
temp.setUpdateTime(new Date());
temp.setDeleteFlag(0);
// 查询memberId是否成交过订单
temp.setDealRecordNum(0);
boolean hasOrder = interactRecordMessageBuilder.queryMemberHasOrder(interactRecord.getMemberId(), interactRecord.getEnterpriseId());
temp.setDealRecordNum(hasOrder ? 1 : 0);
return temp;
}
}
......@@ -12,13 +12,11 @@ import com.gic.haoban.manage.service.pojo.bo.content.InteractRecordExtendInfoBO;
import com.gic.haoban.manage.service.pojo.bo.content.context.InteractRecordMessageContext;
import com.gic.haoban.manage.service.pojo.qo.content.InteractRecordQO;
import com.gic.haoban.manage.service.service.content.InteractRecordService;
import com.gic.member.api.dto.MemberDTO;
import com.gic.member.api.dto.info.MemberBaseInfoDTO;
import com.gic.member.api.dto.info.MemberPersonalInfoDTO;
import com.gic.member.api.dto.info.MemberSummaryInfoDTO;
import com.gic.member.api.dto.info.qo.QueryMemberInfoDTO;
import com.gic.member.api.service.MemberOutApiService;
import com.gic.member.api.service.MemberService;
import com.gic.order.api.service.sharding.OrderApiService;
import com.gic.orderecommerce.api.constant.OrderChannelEnum;
import com.gic.orderecommerce.api.dto.MallEorderDTO;
......@@ -26,7 +24,6 @@ import com.gic.orderecommerce.api.service.EcommerceOrderOutputApiService;
import com.gic.store.goods.dto.goods.GoodsSpuInfoDTO;
import com.gic.store.goods.dto.qdto.GoodsListQDTO;
import com.gic.store.goods.service.GoodsCenterApiService;
import com.gic.store.goods.service.GoodsInfoOutApiService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
......@@ -53,8 +50,6 @@ public class InteractRecordMessageBuilder {
@Autowired
private InteractRecordService interactRecordService;
@Autowired
private MemberService memberService;
@Autowired
MemberOutApiService memberOutApiService;
@Autowired
OrderInfoOutApiService orderInfoOutApiService;
......@@ -94,6 +89,16 @@ public class InteractRecordMessageBuilder {
log.info("互动记录冗余会员信息 会员不存在");
return;
}
InteractRecordMessageContext.MemberInfo memberInfo = this.queryMemberInfo(memberId);
context.setMemberInfo(memberInfo);
}
/**
* 查询会员信息
* @param memberId
* @return
*/
public InteractRecordMessageContext.MemberInfo queryMemberInfo(String memberId) {
QueryMemberInfoDTO queryMemberInfoDTO = QueryMemberInfoDTO
.queryByMemberId(memberId)
.setMemberBaseInfoDTO(true)
......@@ -101,7 +106,7 @@ public class InteractRecordMessageBuilder {
ServiceResponse<MemberSummaryInfoDTO> serviceResponse = memberOutApiService.queryMemberInfo(queryMemberInfoDTO);
if (!serviceResponse.isSuccess() || serviceResponse.getResult() == null) {
log.info("查询会员信息为空 {}", memberId);
return;
return null;
}
MemberSummaryInfoDTO summaryInfoDTO = serviceResponse.getResult();
MemberBaseInfoDTO memberBaseInfoDTO = summaryInfoDTO.getMemberBaseInfoDTO();
......@@ -121,7 +126,7 @@ public class InteractRecordMessageBuilder {
}
InteractRecordMessageContext.MemberInfo memberInfo = new InteractRecordMessageContext
.MemberInfo(memberName, memberNickName, phoneNumber, memberImageUrl);
context.setMemberInfo(memberInfo);
return memberInfo;
}
/**
......@@ -137,18 +142,28 @@ public class InteractRecordMessageBuilder {
String enterpriseId = context.getInteractRecordMessageBO().getEnterpriseId();
context.setHasDeal(false);
// 查询会员全渠道订单
boolean hasOrder = this.queryMemberHasOrder(memberId, enterpriseId);
context.setHasDeal(hasOrder);
}
/**
* 计算会员的订单
* @param memberId
* @param enterpriseId
* @return
*/
public boolean queryMemberHasOrder(String memberId, String enterpriseId) {
Integer countOfSale = orderApiService.getCountOfSale(memberId, enterpriseId);
if (countOfSale != null && countOfSale > 0) {
context.setHasDeal(true);
return;
return true;
}
for (OrderChannelEnum value : OrderChannelEnum.values()) {
Page<MallEorderDTO> eorderDTOPage = ecommerceOrderOutputApiService.queryEorderListByMemberId(enterpriseId, memberId, null, 1, 1, value.getChannelCode());
if (eorderDTOPage != null && CollectionUtils.isNotEmpty(eorderDTOPage.getResult())) {
context.setHasDeal(true);
return;
return true;
}
}
return false;
}
......
......@@ -202,7 +202,7 @@ public class InteractRecordServiceImpl implements InteractRecordService {
tabHaobanInteractRecordMapper.memberAuthorized(memberId, unionId);
Map<String, List<TabHaobanInteractRecord>> interactRecordMap = interactRecords
.stream()
.collect(Collectors.groupingBy(item -> item.getClerkId() + item.getMemberId()));
.collect(Collectors.groupingBy(item -> item.getClerkId() + item.getBizId()));
for (Map.Entry<String, List<TabHaobanInteractRecord>> entry : interactRecordMap.entrySet()) {
this.handlerRecord(memberId, entry.getValue());
......
......@@ -86,7 +86,8 @@ public class InteractRecordApiServiceImpl implements InteractRecordApiService {
*/
@Override
public ServiceResponse<Void> memberChangeMQ(String params) {
log.info("会员合并事件 > {}", params);
if (StringUtils.isBlank(params)) {
log.info("会员id发生变化 {}", params);
return ServiceResponse.success();
......
......@@ -279,7 +279,7 @@
<update id="mergeMember">
update tab_haoban_potential_customer
set member_id = #{memberId}
where member_id = #{memberId} and delete_flag = 0
where member_id = #{mergeMemberId} and delete_flag = 0
</update>
<update id="updateMemberDealRecordNum">
......
......@@ -11,6 +11,7 @@ import com.gic.haoban.manage.api.enums.content.TriggerCustomerChannelType;
import com.gic.haoban.manage.api.service.content.InteractRecordApiService;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatPlanOwnerLogMapper;
import com.gic.haoban.manage.service.pojo.bo.content.InteractRecordBO;
import com.gic.haoban.manage.service.pojo.bo.content.MemberAttrChangeBO;
import com.gic.haoban.manage.service.pojo.bo.content.message.InteractRecordMessageBO;
import com.gic.haoban.manage.service.pojo.qo.content.InteractRecordQO;
import com.gic.haoban.manage.service.service.content.InteractRecordService;
......@@ -95,4 +96,13 @@ public class InteractRecordTest {
search.setWxEnterpriseId("f5f8c78e395e4ca1a493707316096097");
List<ChatOwnerTotalDTO> chatOwnerTotalDTOS = groupChatPlanOwnerLogMapper.listOwnerLogPageForWxaTotal(search);
}
@Test
public void mergeMember() {
MemberAttrChangeBO memberAttrChangeBO = new MemberAttrChangeBO();
memberAttrChangeBO.setMemberId(memberId);
memberAttrChangeBO.setUnionId("orXl9tyHOI4qP1QxwVcA7A3sB7zg");
memberAttrChangeBO.setOpt(MemberAttrChangeBO.MemberChangeOpt.MINI_APP_AUTHORIZED.getCode());
interactRecordApiService.memberChangeMQ(JSON.toJSONString(memberAttrChangeBO));
}
}
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