Commit 6c49d1db by songyinghui

feat: 互动记录调试

parent 33929f74
......@@ -14,30 +14,11 @@ import java.util.List;
public class InteractRecordExtendInfoDTO implements Serializable {
private static final long serialVersionUID = 1577766149535235456L;
/**
* 订单编号
*/
private String orderNumber;
/**
* 订单创建时间
*/
private Date orderCreateTime;
/**
* 订单商品项总数
*/
private Integer orderTotalNum;
/**
* 订单应付
*/
private BigDecimal orderPay;
/**
* 订单实付
* 素材关联的订单信息
*/
private BigDecimal realPay;
private List<ExtendOrderInfo> extendOrderInfos;
/**
* 失效商品数量
......@@ -129,44 +110,95 @@ public class InteractRecordExtendInfoDTO implements Serializable {
}
}
public String getOrderNumber() {
return orderNumber;
}
/**
* 素材关联的订单信息
*/
public static class ExtendOrderInfo {
/**
* 订单编号
*/
private String orderNumber;
public void setOrderNumber(String orderNumber) {
this.orderNumber = orderNumber;
}
/**
* 订单创建时间
*/
private Date orderCreateTime;
public Date getOrderCreateTime() {
return orderCreateTime;
}
/**
* 订单商品项总数
*/
private Integer orderTotalNum;
public void setOrderCreateTime(Date orderCreateTime) {
this.orderCreateTime = orderCreateTime;
}
/**
* 订单应付
*/
private BigDecimal orderPay;
public Integer getOrderTotalNum() {
return orderTotalNum;
}
/**
* 订单实付
*/
private BigDecimal realPay;
public void setOrderTotalNum(Integer orderTotalNum) {
this.orderTotalNum = orderTotalNum;
}
/**
* 订单商品信息
*/
private List<ExtendGoodsInfo> orderGoodsInfos;
public BigDecimal getOrderPay() {
return orderPay;
}
public String getOrderNumber() {
return orderNumber;
}
public void setOrderNumber(String orderNumber) {
this.orderNumber = orderNumber;
}
public Date getOrderCreateTime() {
return orderCreateTime;
}
public void setOrderCreateTime(Date orderCreateTime) {
this.orderCreateTime = orderCreateTime;
}
public Integer getOrderTotalNum() {
return orderTotalNum;
}
public void setOrderPay(BigDecimal orderPay) {
this.orderPay = orderPay;
public void setOrderTotalNum(Integer orderTotalNum) {
this.orderTotalNum = orderTotalNum;
}
public BigDecimal getOrderPay() {
return orderPay;
}
public void setOrderPay(BigDecimal orderPay) {
this.orderPay = orderPay;
}
public BigDecimal getRealPay() {
return realPay;
}
public void setRealPay(BigDecimal realPay) {
this.realPay = realPay;
}
public List<ExtendGoodsInfo> getOrderGoodsInfos() {
return orderGoodsInfos;
}
public void setOrderGoodsInfos(List<ExtendGoodsInfo> orderGoodsInfos) {
this.orderGoodsInfos = orderGoodsInfos;
}
}
public BigDecimal getRealPay() {
return realPay;
public List<ExtendOrderInfo> getExtendOrderInfos() {
return extendOrderInfos;
}
public void setRealPay(BigDecimal realPay) {
this.realPay = realPay;
public void setExtendOrderInfos(List<ExtendOrderInfo> extendOrderInfos) {
this.extendOrderInfos = extendOrderInfos;
}
public Integer getInvalidGoodsNum() {
......
......@@ -40,6 +40,11 @@ public class InteractRecordInfoDTO implements Serializable {
private Date createTime;
/**
* 线索来源 1朋友圈; 2客户群; 3 对话框; 0其他
*/
private Integer channelSource;
/**
* 记录事件类型
* 1浏览素材;2 查看商品; 3 购买商品
* 通过此类型区分 弹窗提示
......@@ -52,6 +57,16 @@ public class InteractRecordInfoDTO implements Serializable {
private String bizId;
/**
* 浏览的商品数量
*/
private Integer visitGoodsNum;
/**
* 下单的商品数量
*/
private Integer orderGoodsNum;
/**
* 扩展信息
*/
private InteractRecordExtendInfoDTO extendInfo;
......@@ -119,4 +134,28 @@ public class InteractRecordInfoDTO implements Serializable {
public void setExtendInfo(InteractRecordExtendInfoDTO extendInfo) {
this.extendInfo = extendInfo;
}
public Integer getChannelSource() {
return channelSource;
}
public void setChannelSource(Integer channelSource) {
this.channelSource = channelSource;
}
public Integer getVisitGoodsNum() {
return visitGoodsNum;
}
public void setVisitGoodsNum(Integer visitGoodsNum) {
this.visitGoodsNum = visitGoodsNum;
}
public Integer getOrderGoodsNum() {
return orderGoodsNum;
}
public void setOrderGoodsNum(Integer orderGoodsNum) {
this.orderGoodsNum = orderGoodsNum;
}
}
package com.gic.haoban.manage.service.pojo.bo.content;
import com.gic.haoban.manage.api.enums.content.InteractRecordExtendInfoDTO;
import lombok.Data;
import java.util.Date;
......@@ -84,4 +83,15 @@ public class InteractRecordBO {
* 扩展信息
*/
private InteractRecordExtendInfoBO extendInfo;
/**
* 浏览的商品数量
*/
private Integer visitGoodsNum;
/**
* 下单的商品数量
*/
private Integer orderGoodsNum;
}
......@@ -18,34 +18,9 @@ import java.util.List;
public class InteractRecordExtendInfoBO implements Serializable {
/**
* 浏览的商品id
* 素材关联的订单信息
*/
private List<String> goodsIds;
/**
* 订单编号
*/
private String orderNumber;
/**
* 订单创建时间
*/
private Date orderCreateTime;
/**
* 订单商品项总数
*/
private Integer orderTotalNum;
/**
* 订单应付
*/
private BigDecimal orderPay;
/**
* 订单实付
*/
private BigDecimal realPay;
private List<ExtendOrderInfo> extendOrderInfos;
/**
* 失效商品数量
......@@ -57,6 +32,11 @@ public class InteractRecordExtendInfoBO implements Serializable {
*/
private List<ExtendGoodsInfo> extendGoodsInfos;
/**
* 冗余的商品id
*/
private List<String> goodsIds;
@Data
public static class ExtendGoodsInfo {
......@@ -88,6 +68,49 @@ public class InteractRecordExtendInfoBO implements Serializable {
* 商品单价
*/
private BigDecimal salePrice;
/***
* 1 erp同步
* 2 自建
* @see com.gic.store.goods.enums.GoodsSourceTypeEnum
*/
private Integer sourceType;
}
/**
* 素材关联的订单信息
*/
@Data
public static class ExtendOrderInfo {
/**
* 订单编号
*/
private String orderNumber;
/**
* 订单创建时间
*/
private Date orderCreateTime;
/**
* 订单商品项总数
*/
private Integer orderTotalNum;
/**
* 订单应付
*/
private BigDecimal orderPay;
/**
* 订单实付
*/
private BigDecimal realPay;
/**
* 订单商品信息
*/
private List<ExtendGoodsInfo> orderGoodsInfos;
}
public static InteractRecordExtendInfoBO empty() {
......
......@@ -54,13 +54,13 @@ public class InteractRecordMessageBO implements Serializable {
*/
private Integer durationTime;
/**
* 购买商品时的 订单id
* 购买商品时的 订单编号
*/
private String orderId;
private String orderNumber;
/**
* 查看商品时查看的商品id
*/
private List<String> goodsIds;
private String goodsId;
/**
* 业务唯一标识
*/
......
......@@ -2,14 +2,17 @@ package com.gic.haoban.manage.service.service.content.adaptor;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.haoban.manage.api.enums.content.MaterialInteractRecordEventType;
import com.gic.haoban.manage.api.enums.content.TriggerCustomerChannelType;
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.store.goods.dto.goods.GoodsInfoSimpleDTO;
import com.gic.store.goods.dto.qdto.ErpGoodsInfoQDTO;
import com.gic.store.goods.dto.goods.GoodsSpuInfoDTO;
import com.gic.store.goods.dto.qdto.GoodsListQDTO;
import com.gic.store.goods.enums.GoodsStatusEnum;
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;
......@@ -34,6 +37,8 @@ public class InteractRecordBuilder {
@Autowired
private GoodsInfoOutApiService goodsInfoOutApiService;
@Autowired
private GoodsCenterApiService goodsCenterApiService;
/**
* 互动记录描述
......@@ -47,6 +52,7 @@ public class InteractRecordBuilder {
/**
* 基于渠道和事件类型拼接信息
*
* @param channelSource
* @param eventType
* @return
......@@ -93,10 +99,12 @@ public class InteractRecordBuilder {
// 浏览商品事件
List<String> visitGoodsIds = extendInfo.getGoodsIds();
if (CollectionUtils.isEmpty(visitGoodsIds)) {
log.info("组装浏览商品信息, 商品信息不存在 {}", interactRecord.getExtendInfo());
return null;
}
// 拼接商品信息
List<InteractRecordExtendInfoBO.ExtendGoodsInfo> extendGoodsInfos = this.convertGoodsInfo(visitGoodsIds, interactRecord.getEnterpriseId());
List<InteractRecordExtendInfoBO.ExtendGoodsInfo> extendGoodsInfos =
this.convertGoodsInfo(visitGoodsIds, interactRecord.getEnterpriseId());
extendInfo.setExtendGoodsInfos(extendGoodsInfos);
extendInfo.setInvalidGoodsNum(visitGoodsIds.size() - extendGoodsInfos.size());
return extendInfo;
......@@ -105,26 +113,65 @@ public class InteractRecordBuilder {
}
private List<InteractRecordExtendInfoBO.ExtendGoodsInfo> convertGoodsInfo(List<String> visitGoodsIds, String enterpriseId) {
ErpGoodsInfoQDTO search = new ErpGoodsInfoQDTO();
search.setEnterpriseId(enterpriseId);
search.setGoodsIds(visitGoodsIds);
search.setExcludeStatus(Arrays.asList(GoodsStatusEnum.DELETED.getCode(), GoodsStatusEnum.BACK.getCode()));
ServiceResponse<List<GoodsInfoSimpleDTO>> serviceResponse =
goodsInfoOutApiService.queryErpGoodsInfoWithIds(search);
if (CollectionUtils.isEmpty(visitGoodsIds)) {
return Collections.emptyList();
}
GoodsListQDTO goodsListQDTO = new GoodsListQDTO();
goodsListQDTO.setEnterpriseId(enterpriseId);
goodsListQDTO.setIncludeGoodsIds(visitGoodsIds);
goodsListQDTO.setExcludeStatus(Arrays.asList(GoodsStatusEnum.DELETED.getCode(), GoodsStatusEnum.BACK.getCode()));
goodsListQDTO.setPageSize(visitGoodsIds.size() + 1);
ServiceResponse<Page<GoodsSpuInfoDTO>> serviceResponse = goodsCenterApiService.queryStoreGoodsList(goodsListQDTO);
if (!serviceResponse.isSuccess()) {
log.info("查询商品异常 {}", JSON.toJSONString(serviceResponse));
return Collections.emptyList();
}
if (CollectionUtils.isEmpty(serviceResponse.getResult().getResult())) {
log.info("查询商品为空 {}", JSON.toJSONString(serviceResponse));
return Collections.emptyList();
}
return serviceResponse.getResult()
.getResult()
.stream()
.map(item -> {
InteractRecordExtendInfoBO.ExtendGoodsInfo extendGoodsInfo = new InteractRecordExtendInfoBO.ExtendGoodsInfo();
extendGoodsInfo.setGoodsName(item.getGoodsName());
extendGoodsInfo.setGoodsCode(item.getGoodsCode());
extendGoodsInfo.setGoodsImageUrl(item.getGoodsImageUrl());
extendGoodsInfo.setGoodsImageUrl(item.getImageUrl());
extendGoodsInfo.setSalePrice(item.getSalePrice());
extendGoodsInfo.setSourceType(item.getSourceType());
return extendGoodsInfo;
})
.collect(Collectors.toList());
}
/**
* 计算商品浏览数量
* @param interactRecordBO
* @return
*/
public void warpRelationGoodsNum(InteractRecordBO interactRecordBO) {
if (interactRecordBO == null) {
log.info("互动记录不存在");
return;
}
if (interactRecordBO.getExtendInfo() == null) {
log.info("互动记录不存在扩展信息 {}", JSON.toJSONString(interactRecordBO));
return;
}
InteractRecordExtendInfoBO extendInfo = interactRecordBO.getExtendInfo();
interactRecordBO.setVisitGoodsNum(0);
if (CollectionUtils.isNotEmpty(extendInfo.getGoodsIds())) {
interactRecordBO.setVisitGoodsNum(extendInfo.getGoodsIds().size());
}
interactRecordBO.setOrderGoodsNum(0);
if (CollectionUtils.isNotEmpty(extendInfo.getExtendOrderInfos())) {
Integer orderGoodsNum = extendInfo.getExtendOrderInfos()
.stream()
.map(item -> item.getOrderGoodsInfos().size())
.reduce(0, Integer::sum);
interactRecordBO.setOrderGoodsNum(orderGoodsNum);
}
}
}
......@@ -71,12 +71,14 @@ public class InteractRecordServiceImpl implements InteractRecordService {
@Override
public Page<InteractRecordBO> queryInteractRecordPage(InteractRecordQO interactRecordQO) {
// 默认查最近一年内的的数据
if (StringUtils.isBlank(interactRecordQO.getClerkId())) {
log.info("queryInteractRecordPage 参数缺失");
return new Page<>();
}
interactRecordQO.setStartTime(DateUtil.addNumForYear(new Date(), -1));
// 默认查最近一年内的的数据
if (interactRecordQO.getStartTime() == null || interactRecordQO.getStartTime().before(DateUtil.addNumForYear(new Date(), -1))) {
interactRecordQO.setStartTime(DateUtil.addNumForYear(new Date(), -1));
}
PageHelper.startPage(interactRecordQO.getPageNum(), interactRecordQO.getPageSize());
com.github.pagehelper.Page<TabHaobanInteractRecord> pageResult =
(com.github.pagehelper.Page<TabHaobanInteractRecord>) tabHaobanInteractRecordMapper.queryInteractRecordList(interactRecordQO);
......@@ -91,8 +93,9 @@ public class InteractRecordServiceImpl implements InteractRecordService {
.map(item -> {
InteractRecordBO temp = new InteractRecordBO();
BeanUtils.copyProperties(item, temp);
temp.setRecordDesc(this.interactRecordBuilder.buildDesc(item));
temp.setRecordDesc(interactRecordBuilder.buildDesc(item));
temp.setExtendInfo(interactRecordBuilder.convertExtendInfo(item));
interactRecordBuilder.warpRelationGoodsNum(temp);
return temp;
})
.collect(Collectors.toList());
......
......@@ -69,22 +69,21 @@ public class InteractRecordMessageService {
}
}
if (null == interactRecordBO.getExtendInfo()) {
interactRecordBO.setExtendInfo(InteractRecordExtendInfoBO.empty());
}
// 组装扩展信息
if (MaterialInteractRecordEventType.VISIT_PRODUCT.getCode().equals(interactRecordMessageBO.getEventType())) {
// 浏览商品
if (CollectionUtils.isNotEmpty(interactRecordMessageBO.getGoodsIds())) {
if (interactRecordBO.getExtendInfo() == null){
interactRecordBO.setExtendInfo(InteractRecordExtendInfoBO.empty());
}
interactRecordBO.getExtendInfo().getGoodsIds().addAll(interactRecordMessageBO.getGoodsIds());
if (StringUtils.isNotBlank(interactRecordMessageBO.getGoodsId())) {
interactRecordBO.getExtendInfo().getGoodsIds().add(interactRecordMessageBO.getGoodsId());
}
}
if (MaterialInteractRecordEventType.ORDER.getCode().equals(interactRecordMessageBO.getEventType())) {
// 下单
// 查询订单信息
String orderId = interactRecordMessageBO.getOrderId();
String orderNumber = interactRecordMessageBO.getOrderNumber();
}
interactRecordService.saveOrUpdateInteractRecord(interactRecordBO);
......
......@@ -19,40 +19,19 @@ public class InteractRecordExtendInfoVO implements Serializable {
private static final long serialVersionUID = 799914036029100258L;
/**
* 订单编号
* 素材关联的商品信息商品信息
*/
private String orderNumber;
/**
* 订单创建时间
*/
private Date orderCreateTime;
/**
* 订单商品项总数
*/
private Integer orderTotalNum;
/**
* 订单应付
*/
private BigDecimal orderPay;
private List<ExtendGoodsInfo> extendGoodsInfos;
/**
* 订单实付
* 素材关联的订单信息
*/
private BigDecimal realPay;
private List<ExtendOrderInfo> extendOrderInfos;
/**
* 失效商品数量
*/
private Integer invalidGoodsNum;
/**
* 素材扩展商品信息
*/
private List<ExtendGoodsInfo> extendGoodsInfos;
@Data
public static class ExtendGoodsInfo {
......@@ -84,5 +63,45 @@ public class InteractRecordExtendInfoVO implements Serializable {
* 商品单价
*/
private BigDecimal salePrice;
/***
* 1 erp同步
* 2 自建
* @see com.gic.store.goods.enums.GoodsSourceTypeEnum
*/
private Integer sourceType;
}
@Data
public static class ExtendOrderInfo {
/**
* 订单编号
*/
private String orderNumber;
/**
* 订单创建时间
*/
private Date orderCreateTime;
/**
* 订单商品项总数
*/
private Integer orderTotalNum;
/**
* 订单应付
*/
private BigDecimal orderPay;
/**
* 订单实付
*/
private BigDecimal realPay;
/**
* 订单项商品信息
*/
private List<ExtendGoodsInfo> orderGoodsInfos;
}
}
......@@ -43,6 +43,11 @@ public class InteractRecordVO implements Serializable {
private Date createTime;
/**
* 1 "朋友圈"; 2 "客户群";3 "对话框";4 "复制文案"; 5"下载素材"
*/
private Integer channelSource;
/**
* 记录事件类型
* 1浏览素材;2 查看商品; 3 购买商品
* 通过此类型区分 弹窗提示
......@@ -50,6 +55,16 @@ public class InteractRecordVO implements Serializable {
private Integer eventType;
/**
* 浏览的商品数量
*/
private Integer visitGoodsNum;
/**
* 下单的商品数量
*/
private Integer orderGoodsNum;
/**
* 素材信息
* null 代表素材被删除
*/
......
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