Commit 1ab2fdd7 by 王祖波

销售线索下单修改

parent 25a35cd6
...@@ -94,6 +94,13 @@ public class WeekMonthDataAdaptor { ...@@ -94,6 +94,13 @@ public class WeekMonthDataAdaptor {
private String clerkId; private String clerkId;
private String bizId; private String bizId;
private String storeId; private String storeId;
private Integer bizType;
public MaterialBizInfo(String clerkId, String bizId, String storeId) {
this.clerkId = clerkId;
this.bizId = bizId;
this.storeId = storeId;
}
} }
public MaterialDataResult queryClerkReportData(MaterialReportContext context,String storeId,String bizDate) { public MaterialDataResult queryClerkReportData(MaterialReportContext context,String storeId,String bizDate) {
......
...@@ -75,7 +75,7 @@ public class InteractRecordMessageService { ...@@ -75,7 +75,7 @@ public class InteractRecordMessageService {
// 根据key 查询是否存在记录 // 根据key 查询是否存在记录
InteractRecordBO interactRecordBO = null; InteractRecordBO interactRecordBO = null;
if (MaterialInteractRecordEventType.ORDER.getCode().equals(interactRecordMessageBO.getEventType())) { if (MaterialInteractRecordEventType.ORDER.getCode().equals(interactRecordMessageBO.getEventType())) {
interactRecordBO = this.getInteractRecordBOWithOrderType(interactRecordMessageBO); interactRecordBO = this.getInteractRecordBOWithOrderType(interactRecordMessageBO,context.getBizId());
if (interactRecordBO == null) { if (interactRecordBO == null) {
// 订单事件已过滤,理论上此处不会出现 // 订单事件已过滤,理论上此处不会出现
log.info("下单事件 互动记录为空 {}", JSON.toJSONString(interactRecordMessageBO)); log.info("下单事件 互动记录为空 {}", JSON.toJSONString(interactRecordMessageBO));
...@@ -226,12 +226,8 @@ public class InteractRecordMessageService { ...@@ -226,12 +226,8 @@ public class InteractRecordMessageService {
* @param interactRecordMessageBO * @param interactRecordMessageBO
* @return * @return
*/ */
public InteractRecordBO getInteractRecordBOWithOrderType(InteractRecordMessageBO interactRecordMessageBO) { public InteractRecordBO getInteractRecordBOWithOrderType(InteractRecordMessageBO interactRecordMessageBO,String bizId) {
InteractRecordBO interactRecordBO = null; InteractRecordBO interactRecordBO = null;
String bizId = interactRecordMessageBO.getMaterialId();
if (StringUtils.isBlank(bizId)) {
bizId = interactRecordMessageBO.getGoodsId();
}
interactRecordBO = interactRecordService.queryLeastRecord(interactRecordMessageBO.getEnterpriseId(), interactRecordMessageBO.getClerkId(), interactRecordBO = interactRecordService.queryLeastRecord(interactRecordMessageBO.getEnterpriseId(), interactRecordMessageBO.getClerkId(),
bizId, interactRecordMessageBO.getMemberId()); bizId, interactRecordMessageBO.getMemberId());
......
package com.gic.haoban.manage.service.service.out.impl.content; package com.gic.haoban.manage.service.service.out.impl.content;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse; import com.gic.api.base.commons.ServiceResponse;
import com.gic.business.order.dto.ordermanage.OrderOutInfoDTO; import com.gic.business.order.dto.ordermanage.OrderOutInfoDTO;
import com.gic.business.order.enums.OrderEnum; import com.gic.business.order.enums.OrderEnum;
import com.gic.business.order.qdto.ordermanage.OrderInfoQDTO; import com.gic.business.order.qdto.ordermanage.OrderInfoQDTO;
import com.gic.business.order.service.ordermanage.OrderInfoOutApiService; import com.gic.business.order.service.ordermanage.OrderInfoOutApiService;
import com.gic.commons.util.GICMQClientUtil; import com.gic.commons.util.GICMQClientUtil;
import com.gic.content.api.dto.analysis.GoodsAnalysisMemberBuryPointDTO;
import com.gic.content.api.dto.burypoint.ContentMemberBuryPointDTO; import com.gic.content.api.dto.burypoint.ContentMemberBuryPointDTO;
import com.gic.content.api.dto.setting.ContentSettingDTO; import com.gic.content.api.dto.setting.ContentSettingDTO;
import com.gic.content.api.enums.ContentMallShopType; import com.gic.content.api.enums.ContentMallShopType;
import com.gic.content.api.qdto.analysis.GoodsAnalysisMemberBuryPointQDTO;
import com.gic.content.api.qdto.burypoint.MemberBuryPointOrderQDTO; import com.gic.content.api.qdto.burypoint.MemberBuryPointOrderQDTO;
import com.gic.content.api.service.ContentMemberBuryPointApiService; import com.gic.content.api.service.ContentMemberBuryPointApiService;
import com.gic.content.api.service.ContentSettingApiService; import com.gic.content.api.service.ContentSettingApiService;
import com.gic.content.api.service.analysis.GoodsAnalysisMemberBuryPointApiService;
import com.gic.enterprise.api.constant.EnterpriseServiceEnum; import com.gic.enterprise.api.constant.EnterpriseServiceEnum;
import com.gic.enterprise.api.dto.EnterpriseUsingPermissionDto;
import com.gic.enterprise.api.dto.enterprise.EnterpriseUsingStatusDTO; import com.gic.enterprise.api.dto.enterprise.EnterpriseUsingStatusDTO;
import com.gic.enterprise.api.service.EnterpriseUseForbidService; import com.gic.enterprise.api.service.EnterpriseUseForbidService;
import com.gic.haoban.manage.api.enums.content.MaterialInteractRecordEventType; import com.gic.haoban.manage.api.enums.content.MaterialInteractRecordEventType;
...@@ -24,10 +30,13 @@ import com.gic.haoban.manage.service.pojo.bo.content.InteractRecordBO; ...@@ -24,10 +30,13 @@ import com.gic.haoban.manage.service.pojo.bo.content.InteractRecordBO;
import com.gic.haoban.manage.service.pojo.bo.content.OrderEventMqBO; import com.gic.haoban.manage.service.pojo.bo.content.OrderEventMqBO;
import com.gic.haoban.manage.service.pojo.bo.content.binlog.MemberOrderBo; import com.gic.haoban.manage.service.pojo.bo.content.binlog.MemberOrderBo;
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.service.content.adaptor.InteractRecordBuilder;
import com.gic.haoban.manage.service.service.content.adaptor.WeekMonthDataAdaptor; import com.gic.haoban.manage.service.service.content.adaptor.WeekMonthDataAdaptor;
import com.gic.haoban.manage.service.service.content.message.InteractRecordMessageService; import com.gic.haoban.manage.service.service.content.message.InteractRecordMessageService;
import com.gic.haoban.manage.service.task.KafkaMessageServiceImpl; import com.gic.haoban.manage.service.task.KafkaMessageServiceImpl;
import com.gic.order.api.constant.OrderChannelEnum;
import com.gic.redis.data.util.RedisUtil; import com.gic.redis.data.util.RedisUtil;
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.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
...@@ -36,7 +45,10 @@ import org.springframework.stereotype.Component; ...@@ -36,7 +45,10 @@ import org.springframework.stereotype.Component;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
/** /**
* @Author MUSI * @Author MUSI
...@@ -61,11 +73,24 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang ...@@ -61,11 +73,24 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang
private ContentSettingApiService contentSettingApiService; private ContentSettingApiService contentSettingApiService;
@Autowired @Autowired
private ContentMemberBuryPointApiService contentMemberBuryPointApiService; private ContentMemberBuryPointApiService contentMemberBuryPointApiService;
@Autowired
private InteractRecordBuilder interactRecordBuilder;
@Autowired
private GoodsAnalysisMemberBuryPointApiService goodsAnalysisMemberBuryPointApiService;
private static final String ORDER_EVENT_RETRY = "orderEventRetryMQ"; private static final String ORDER_EVENT_RETRY = "orderEventRetryMQ";
private static final Long cache_hour_sec = 300L; private static final Long cache_hour_sec = 300L;
/**
* 销售线索处理微盟订单的服务
*/
private static final List<String> rightCodeList = Lists.newArrayList(
EnterpriseServiceEnum.POTENTIAL.getRightMenuCode(),
EnterpriseServiceEnum.CONTENT.getRightMenuCode(),
EnterpriseServiceEnum.GOODS_ANALYSIS.getRightMenuCode()
);
/*** /***
* 订单状态变更事件 * 订单状态变更事件
* @param params * @param params
...@@ -119,16 +144,29 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang ...@@ -119,16 +144,29 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang
String clerkId = jsonObject.getString("clerkId"); String clerkId = jsonObject.getString("clerkId");
String contentMaterialId = jsonObject.getString("contentMaterialId"); String contentMaterialId = jsonObject.getString("contentMaterialId");
String goodsId = jsonObject.getString("proId"); String goodsId = jsonObject.getString("proId");
String wxaLinkId = jsonObject.getString("wxaLinkId");
String memberId = orderEventMqBO.getMemberId(); String memberId = orderEventMqBO.getMemberId();
InteractRecordMessageBO interactRecordMessageBO = new InteractRecordMessageBO(); InteractRecordMessageBO interactRecordMessageBO = new InteractRecordMessageBO();
// 查询多商品页面数据
if (StringUtils.isNotBlank(wxaLinkId)) {
Map<String, List<List<String>>> multipleMap = interactRecordBuilder.getGroupGoodsIdByWxaLinkIds(Lists.newArrayList(interactRecordMessageBO.getWxaLinkId()));
Integer goodsCount = interactRecordBuilder.getGoodsCount(interactRecordMessageBO, multipleMap);
interactRecordMessageBO.setGoodsCount(goodsCount);
}
String bizId = contentMaterialId;
interactRecordMessageBO.setEnterpriseId(orderEventMqBO.getEnterpriseId()); interactRecordMessageBO.setEnterpriseId(orderEventMqBO.getEnterpriseId());
interactRecordMessageBO.setMemberId(memberId); interactRecordMessageBO.setMemberId(memberId);
interactRecordMessageBO.setClerkId(clerkId); interactRecordMessageBO.setClerkId(clerkId);
if (StringUtils.isNotBlank(contentMaterialId) && StringUtils.isNumeric(contentMaterialId)) { if (StringUtils.isNotBlank(contentMaterialId) && StringUtils.isNumeric(contentMaterialId)) {
interactRecordMessageBO.setMaterialId(contentMaterialId); interactRecordMessageBO.setMaterialId(contentMaterialId);
}else if (interactRecordMessageBO.getGoodsCount() > 1) {
interactRecordMessageBO.setWxaLinkId(wxaLinkId);
bizId = wxaLinkId;
}else if (StringUtils.isNotBlank(goodsId) && !StringUtils.isNumeric(goodsId)) { }else if (StringUtils.isNotBlank(goodsId) && !StringUtils.isNumeric(goodsId)) {
interactRecordMessageBO.setGoodsId(goodsId); interactRecordMessageBO.setGoodsId(goodsId);
bizId = goodsId;
}else { }else {
log.info("订单扩展信息中无要处理的数据 {}", extendJson); log.info("订单扩展信息中无要处理的数据 {}", extendJson);
return ServiceResponse.success(); return ServiceResponse.success();
...@@ -139,7 +177,7 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang ...@@ -139,7 +177,7 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang
interactRecordMessageBO.setOrderNumber(orderEventMqBO.getOrderNumber()); interactRecordMessageBO.setOrderNumber(orderEventMqBO.getOrderNumber());
interactRecordMessageBO.setTimes(orderEventMqBO.getTimes()); interactRecordMessageBO.setTimes(orderEventMqBO.getTimes());
interactRecordMessageBO.setOrderType(1); interactRecordMessageBO.setOrderType(1);
InteractRecordBO interactRecordBO = interactRecordMessageService.getInteractRecordBOWithOrderType(interactRecordMessageBO); InteractRecordBO interactRecordBO = interactRecordMessageService.getInteractRecordBOWithOrderType(interactRecordMessageBO,bizId);
if (interactRecordBO == null) { if (interactRecordBO == null) {
log.info("订单事件先到达,埋点事件延迟 >>> {}", JSON.toJSONString(interactRecordMessageBO)); log.info("订单事件先到达,埋点事件延迟 >>> {}", JSON.toJSONString(interactRecordMessageBO));
if (orderEventMqBO.getTimes() != null && orderEventMqBO.getTimes() > 60) { if (orderEventMqBO.getTimes() != null && orderEventMqBO.getTimes() > 60) {
...@@ -205,20 +243,17 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang ...@@ -205,20 +243,17 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang
String key = "haoban_enterprise_content_deal_weimob:" + enterpriseId; String key = "haoban_enterprise_content_deal_weimob:" + enterpriseId;
String cache = RedisUtil.getCache(key, String.class); String cache = RedisUtil.getCache(key, String.class);
if (StringUtils.isBlank(cache)) { if (StringUtils.isBlank(cache)) {
cache = "0"; List<EnterpriseUsingPermissionDto> list = enterpriseUseForbidService.selectUsingEnterprisePermissionByEnterpriseId(enterpriseId);
ServiceResponse<List<EnterpriseUsingStatusDTO>> tempServiceResponse = enterpriseUseForbidService.getUseEnterpriseByCode(EnterpriseServiceEnum.CONTENT.getRightMenuCode(), enterpriseId); if (CollectionUtils.isEmpty(list)) {
if (!tempServiceResponse.isSuccess() || CollectionUtils.isEmpty(tempServiceResponse.getResult())) {
log.info("企业 {} 没有内容权限 {}", enterpriseId, JSON.toJSONString(tempServiceResponse));
RedisUtil.setCache(key, cache, cache_hour_sec, TimeUnit.SECONDS);
return ServiceResponse.success(); return ServiceResponse.success();
} }
EnterpriseUsingStatusDTO enterpriseUsingStatusDTO = tempServiceResponse.getResult().get(0); List<String> hasList = list.stream().map(EnterpriseUsingPermissionDto::getRightMenuCode).collect(Collectors.toList());
if (!Boolean.TRUE.equals(enterpriseUsingStatusDTO.getVaild())) { hasList = hasList.stream().filter(rightCodeList::contains).collect(Collectors.toList());
log.info("企业 {} 内容权限已失效 {}", enterpriseId, JSON.toJSONString(tempServiceResponse)); if (CollectionUtils.isEmpty(hasList)) {
RedisUtil.setCache(key, cache, cache_hour_sec, TimeUnit.SECONDS); cache = "0";
return ServiceResponse.success(); }else {
cache = "1";
} }
cache = "1";
RedisUtil.setCache(key, cache, cache_hour_sec, TimeUnit.SECONDS); RedisUtil.setCache(key, cache, cache_hour_sec, TimeUnit.SECONDS);
} }
if (!StringUtils.equals(cache, "1")) { if (!StringUtils.equals(cache, "1")) {
...@@ -237,6 +272,11 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang ...@@ -237,6 +272,11 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang
log.info("当前企业内容配置非微盟/自研商城 {}", JSON.toJSONString(response)); log.info("当前企业内容配置非微盟/自研商城 {}", JSON.toJSONString(response));
return ServiceResponse.success(); return ServiceResponse.success();
} }
Date materialTime = null;
Date goodsTime = null;
String goodsId = null;
String wxaLinkId = null;
String memberId = memberOrderBo.getMemberId(); String memberId = memberOrderBo.getMemberId();
String orderId = memberOrderBo.getOrderId(); String orderId = memberOrderBo.getOrderId();
...@@ -257,8 +297,36 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang ...@@ -257,8 +297,36 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang
ServiceResponse<ContentMemberBuryPointDTO> buryPointResponse = contentMemberBuryPointApiService.queryMemberBuryPoint(memberBuryPointOrderQDTO); ServiceResponse<ContentMemberBuryPointDTO> buryPointResponse = contentMemberBuryPointApiService.queryMemberBuryPoint(memberBuryPointOrderQDTO);
if (buryPointResponse.isSuccess() && buryPointResponse.getResult() != null) { if (buryPointResponse.isSuccess() && buryPointResponse.getResult() != null) {
ContentMemberBuryPointDTO result = buryPointResponse.getResult(); ContentMemberBuryPointDTO result = buryPointResponse.getResult();
materialBizInfo = new WeekMonthDataAdaptor.MaterialBizInfo(result.getClerkId(), String.valueOf(result.getContentMaterialId()), result.getStoreId()); materialTime = result.getLocalTimestamp();
materialBizInfo = new WeekMonthDataAdaptor.MaterialBizInfo(result.getClerkId(), String.valueOf(result.getContentMaterialId()), result.getStoreId(), ShareBizType.MATERIAL.getCode());
} }
// 商品分享逻辑
int offsetDay = -1;
if (Objects.equals(OrderChannelEnum.IPOS.getSort(),orderType)) {
offsetDay = -7;
}
GoodsAnalysisMemberBuryPointQDTO goodsAnalysisMemberBuryPointQDTO = new GoodsAnalysisMemberBuryPointQDTO();
goodsAnalysisMemberBuryPointQDTO.setEnterpriseId(enterpriseId);
goodsAnalysisMemberBuryPointQDTO.setMemberId(memberId);
goodsAnalysisMemberBuryPointQDTO.setStartTime(DateUtil.offsetDay(orderTime, offsetDay));
goodsAnalysisMemberBuryPointQDTO.setEndTime(orderTime);
goodsAnalysisMemberBuryPointQDTO.setPageSize(1);
ServiceResponse<Page<GoodsAnalysisMemberBuryPointDTO>> goodsResponse = goodsAnalysisMemberBuryPointApiService.queryMemberBuryPoint(goodsAnalysisMemberBuryPointQDTO);
if (goodsResponse.isSuccess() && goodsResponse.getResult() != null && CollectionUtils.isNotEmpty(goodsResponse.getResult().getResult())) {
GoodsAnalysisMemberBuryPointDTO goodsResult = goodsResponse.getResult().getResult().get(0);
goodsTime = goodsResult.getLocalTimestamp();
if (goodsTime == null && materialTime == null) {
return ServiceResponse.success();
}
goodsId = goodsResult.getGoodsId();
wxaLinkId = goodsResult.getWxaLinkId();
if (DateUtil.compare(goodsTime, materialTime) > 0) {
materialBizInfo = new WeekMonthDataAdaptor.MaterialBizInfo(goodsResult.getClerkId(), goodsResult.getWxaLinkId(), goodsResult.getStoreId(), goodsResult.getBizType());
}
}
// MaterialDataAdaptor.MaterialBizInfo materialBizInfo = materialDataAdaptor.queryMaterialBizInfo(enterpriseId, memberId, orderTime, null); // MaterialDataAdaptor.MaterialBizInfo materialBizInfo = materialDataAdaptor.queryMaterialBizInfo(enterpriseId, memberId, orderTime, null);
if (materialBizInfo == null) { if (materialBizInfo == null) {
if (memberOrderBo.getTimes() == null) { if (memberOrderBo.getTimes() == null) {
...@@ -282,12 +350,14 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang ...@@ -282,12 +350,14 @@ public class MallOrderStatusChangeApiServiceImpl implements MallOrderStatusChang
} }
interactRecordMessageBO.setClerkId(materialBizInfo.getClerkId()); interactRecordMessageBO.setClerkId(materialBizInfo.getClerkId());
interactRecordMessageBO.setMaterialId(materialBizInfo.getBizId()); interactRecordMessageBO.setMaterialId(materialBizInfo.getBizId());
interactRecordMessageBO.setBizType(ShareBizType.MATERIAL.getCode()); interactRecordMessageBO.setBizType(materialBizInfo.getBizType());
interactRecordMessageBO.setEventType(MaterialInteractRecordEventType.ORDER.getCode()); interactRecordMessageBO.setEventType(MaterialInteractRecordEventType.ORDER.getCode());
interactRecordMessageBO.setDurationTime(0); interactRecordMessageBO.setDurationTime(0);
interactRecordMessageBO.setLastAccessTime(System.currentTimeMillis()); interactRecordMessageBO.setLastAccessTime(System.currentTimeMillis());
interactRecordMessageBO.setOrderNumber(orderNumber); interactRecordMessageBO.setOrderNumber(orderNumber);
interactRecordMessageBO.setOrderId(orderId); interactRecordMessageBO.setOrderId(orderId);
interactRecordMessageBO.setGoodsId(goodsId);
interactRecordMessageBO.setWxaLinkId(wxaLinkId);
if (StringUtils.equalsIgnoreCase(memberOrderBo.getTableName(), KafkaMessageServiceImpl.tab_gic_eorder)) { if (StringUtils.equalsIgnoreCase(memberOrderBo.getTableName(), KafkaMessageServiceImpl.tab_gic_eorder)) {
interactRecordMessageBO.setOrderType(2); interactRecordMessageBO.setOrderType(2);
}else { }else {
......
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