Commit 8a71371d by songyinghui

feat: 销售线索 会员合并

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