Commit efaaeebd by songyinghui

feat: 素材

parent aa80967a
...@@ -186,6 +186,12 @@ ...@@ -186,6 +186,12 @@
<artifactId>gic-store-goods-api</artifactId> <artifactId>gic-store-goods-api</artifactId>
<version>${gic-store-goods-api}</version> <version>${gic-store-goods-api}</version>
</dependency> </dependency>
<dependency>
<groupId>com.gic</groupId>
<artifactId>gic-business-order-api</artifactId>
<version>${gic-business-order-api}</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -117,6 +117,7 @@ public class InteractRecordExtendInfoBO implements Serializable { ...@@ -117,6 +117,7 @@ public class InteractRecordExtendInfoBO implements Serializable {
InteractRecordExtendInfoBO temp = new InteractRecordExtendInfoBO(); InteractRecordExtendInfoBO temp = new InteractRecordExtendInfoBO();
// 后续有操作 此处使用可修改类型 // 后续有操作 此处使用可修改类型
temp.setGoodsIds(new ArrayList<>()); temp.setGoodsIds(new ArrayList<>());
temp.setExtendOrderInfos(new ArrayList<>());
return temp; return temp;
} }
} }
package com.gic.haoban.manage.service.service.content.adaptor; package com.gic.haoban.manage.service.service.content.adaptor;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.gic.api.base.commons.Page;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.business.order.dto.ordermanage.ListOrderItemDTO;
import com.gic.business.order.dto.ordermanage.OrderOutInfoDTO;
import com.gic.business.order.qdto.ordermanage.OrderInfoQDTO;
import com.gic.business.order.service.ordermanage.OrderInfoOutApiService;
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.MemberDTO;
import com.gic.member.api.service.MemberService; import com.gic.member.api.service.MemberService;
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 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.Component; import org.springframework.stereotype.Component;
import java.math.BigDecimal;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.stream.Collectors;
/** /**
* @Author MUSI * @Author MUSI
* @Date 2023/3/29 3:48 PM * @Date 2023/3/29 3:48 PM
...@@ -24,6 +45,10 @@ public class InteractRecordMessageBuilder { ...@@ -24,6 +45,10 @@ public class InteractRecordMessageBuilder {
private InteractRecordService interactRecordService; private InteractRecordService interactRecordService;
@Autowired @Autowired
private MemberService memberService; private MemberService memberService;
@Autowired
OrderInfoOutApiService orderInfoOutApiService;
@Autowired
private GoodsCenterApiService goodsCenterApiService;
/** /**
* 计算互动记录的访问次数 * 计算互动记录的访问次数
...@@ -77,5 +102,87 @@ public class InteractRecordMessageBuilder { ...@@ -77,5 +102,87 @@ public class InteractRecordMessageBuilder {
} }
/**
* 冗余订单项信息
* @param context
* @return
*/
public InteractRecordExtendInfoBO.ExtendOrderInfo buildMaterialOrderItemInfo(InteractRecordMessageContext context) {
OrderInfoQDTO orderInfoQDTO = new OrderInfoQDTO();
orderInfoQDTO.setOrderNumber(context.getInteractRecordMessageBO().getOrderNumber());
orderInfoQDTO.setEnterpriseId(context.getInteractRecordMessageBO().getEnterpriseId());
ServiceResponse<OrderOutInfoDTO> serviceResponse =
orderInfoOutApiService.queryOrderInfo(orderInfoQDTO);
if (!serviceResponse.isSuccess()) {
log.info("查询订单信息异常 {}", JSON.toJSONString(serviceResponse));
return null;
}
List<String> goodsIds = serviceResponse.getResult()
.getOrderItems()
.stream()
.map(ListOrderItemDTO::getMallProId)
.distinct()
.collect(Collectors.toList());
Map<String, Integer> goodsSourceTypeMap = queryGoodsSimpleInfo(context, goodsIds);
OrderOutInfoDTO orderOutInfoDTO = serviceResponse.getResult();
InteractRecordExtendInfoBO.ExtendOrderInfo extendOrderInfo = new InteractRecordExtendInfoBO.ExtendOrderInfo();
extendOrderInfo.setOrderNumber(orderOutInfoDTO.getOrderNumber());
extendOrderInfo.setOrderCreateTime(orderOutInfoDTO.getCreateTime());
extendOrderInfo.setOrderTotalNum(orderOutInfoDTO.getOrderItems().size());
extendOrderInfo.setOrderPay(orderOutInfoDTO.getReceivableAmount());
extendOrderInfo.setRealPay(orderOutInfoDTO.getPayAmount());
List<InteractRecordExtendInfoBO.ExtendGoodsInfo> goodsInfos = orderOutInfoDTO.getOrderItems()
.stream()
.map(item -> {
InteractRecordExtendInfoBO.ExtendGoodsInfo goodsInfo = new InteractRecordExtendInfoBO.ExtendGoodsInfo();
goodsInfo.setGoodsCode(item.getProCode());
goodsInfo.setGoodsName(item.getMallProName());
goodsInfo.setOrderNum(item.getMallProNumber().intValue());
goodsInfo.setGoodsImageUrl(item.getMallProImageUrl());
goodsInfo.setSalePrice(BigDecimal.valueOf(item.getMallProPrice()));
goodsInfo.setGoodsNorm(this.convertSkuNorm(item.getMallProSkuAttr()));
Integer sourceType = Optional.ofNullable(goodsSourceTypeMap.get(item.getMallProId())).orElse(2);
goodsInfo.setSourceType(sourceType);
return goodsInfo;
})
.collect(Collectors.toList());
extendOrderInfo.setOrderGoodsInfos(goodsInfos);
return extendOrderInfo;
}
private Map<String, Integer> queryGoodsSimpleInfo(InteractRecordMessageContext context, List<String> goodsIds) {
GoodsListQDTO goodsListQDTO = new GoodsListQDTO();
goodsListQDTO.setEnterpriseId(context.getInteractRecordMessageBO().getEnterpriseId());
goodsListQDTO.setIncludeGoodsIds(goodsIds);
goodsListQDTO.setPageSize(goodsIds.size() + 1);
ServiceResponse<Page<GoodsSpuInfoDTO>> serviceResponse =
goodsCenterApiService.queryStoreGoodsList(goodsListQDTO);
if (!serviceResponse.isSuccess() || CollectionUtils.isEmpty(serviceResponse.getResult().getResult())) {
return Collections.emptyMap();
}
return serviceResponse.getResult()
.getResult()
.stream()
.collect(Collectors.toMap(GoodsSpuInfoDTO::getGoodsId, GoodsSpuInfoDTO::getSourceType, (v1, v2) -> v1));
}
private String convertSkuNorm(String skuAttr) {
if (StringUtils.isBlank(skuAttr)) {
return null;
}
List<JSONObject> jsonObjects = JSON.parseArray(skuAttr, JSONObject.class);
List<String> norms = jsonObjects
.stream()
.map(item -> {
String propName = item.getString("propName");
String valueName = item.getString("valueName");
return propName + "," + valueName;
})
.collect(Collectors.toList());
return StringUtils.join(norms, ",");
}
} }
...@@ -83,7 +83,11 @@ public class InteractRecordMessageService { ...@@ -83,7 +83,11 @@ public class InteractRecordMessageService {
if (MaterialInteractRecordEventType.ORDER.getCode().equals(interactRecordMessageBO.getEventType())) { if (MaterialInteractRecordEventType.ORDER.getCode().equals(interactRecordMessageBO.getEventType())) {
// 下单 // 下单
// 查询订单信息 // 查询订单信息
String orderNumber = interactRecordMessageBO.getOrderNumber(); InteractRecordExtendInfoBO.ExtendOrderInfo extendOrderInfo = interactRecordMessageBuilder.buildMaterialOrderItemInfo(context);
if (extendOrderInfo != null) {
interactRecordBO.getExtendInfo().getExtendOrderInfos().add(extendOrderInfo);
}
} }
interactRecordService.saveOrUpdateInteractRecord(interactRecordBO); interactRecordService.saveOrUpdateInteractRecord(interactRecordBO);
......
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