1
0
Quellcode durchsuchen

fix:优先级bug,新增积分变动记录商品详情

lhm vor 3 Jahren
Ursprung
Commit
215526649d

+ 42 - 0
kmall-admin/src/main/java/com/kmall/admin/dao/haikong/HaiKongMemberScoreChangeDetailRecordDao.java

@@ -0,0 +1,42 @@
+package com.kmall.admin.dao.haikong;
+
+import com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeDetailRecordEntity;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * 同步会员系统积分,订单详情
+ * @author lhm
+ * @createDate 2021-12-09
+ */
+public interface HaiKongMemberScoreChangeDetailRecordDao {
+
+    /**
+     * 根据订单编号查询详情
+     * @param orderSn   订单编号
+     * @return
+     */
+    List<HaiKongMemberScoreChangeDetailRecordEntity> queryListByOrderSn(@Param("orderSn") String orderSn);
+
+    /**
+     * 新增
+     * @param haiKongMemberScoreChangeDetailRecordEntity    实体
+     * @return  结果
+     */
+    int save(HaiKongMemberScoreChangeDetailRecordEntity haiKongMemberScoreChangeDetailRecordEntity);
+
+    /**
+     * 根据订单编号批量删除详情
+     * @param orderSn   订单编号
+     * @return          结果
+     */
+    int deleteBatchByOrderSn(@Param("orderSn") String orderSn);
+
+    /**
+     * 批量新增
+     * @param entities  实体集合
+     * @return          结果
+     */
+    int saveBatch(List<HaiKongMemberScoreChangeDetailRecordEntity> entities);
+}

+ 128 - 0
kmall-admin/src/main/java/com/kmall/admin/entity/haikong/HaiKongMemberScoreChangeDetailRecordEntity.java

@@ -0,0 +1,128 @@
+package com.kmall.admin.entity.haikong;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * 积分变动明细记录
+ * @author lhm
+ * @createDate 2021-12-09
+ */
+public class HaiKongMemberScoreChangeDetailRecordEntity {
+
+    private Integer id;
+
+    private String orderSn;
+
+    private String productBarcode;
+
+    private String sku;
+
+    private BigDecimal retailPrice;
+
+    private BigDecimal actualPrice;
+
+    private Integer sellVolume;
+
+    private Integer deductionScore;
+
+    private Date createTime;
+
+    private Date modifyTime;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getOrderSn() {
+        return orderSn;
+    }
+
+    public void setOrderSn(String orderSn) {
+        this.orderSn = orderSn;
+    }
+
+    public String getProductBarcode() {
+        return productBarcode;
+    }
+
+    public void setProductBarcode(String productBarcode) {
+        this.productBarcode = productBarcode;
+    }
+
+    public String getSku() {
+        return sku;
+    }
+
+    public void setSku(String sku) {
+        this.sku = sku;
+    }
+
+    public BigDecimal getRetailPrice() {
+        return retailPrice;
+    }
+
+    public void setRetailPrice(BigDecimal retailPrice) {
+        this.retailPrice = retailPrice;
+    }
+
+    public BigDecimal getActualPrice() {
+        return actualPrice;
+    }
+
+    public void setActualPrice(BigDecimal actualPrice) {
+        this.actualPrice = actualPrice;
+    }
+
+    public Integer getSellVolume() {
+        return sellVolume;
+    }
+
+    public void setSellVolume(Integer sellVolume) {
+        this.sellVolume = sellVolume;
+    }
+
+    public Integer getDeductionScore() {
+        return deductionScore;
+    }
+
+    public void setDeductionScore(Integer deductionScore) {
+        this.deductionScore = deductionScore;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public Date getModifyTime() {
+        return modifyTime;
+    }
+
+    public void setModifyTime(Date modifyTime) {
+        this.modifyTime = modifyTime;
+    }
+
+    @Override
+    public String toString() {
+        return "HaiKongMemberScoreChangeDetailRecordEntity{" +
+                "id=" + id +
+                ", orderSn='" + orderSn + '\'' +
+                ", productBarcode='" + productBarcode + '\'' +
+                ", sku='" + sku + '\'' +
+                ", retailPrice=" + retailPrice +
+                ", actualPrice=" + actualPrice +
+                ", sellVolume=" + sellVolume +
+                ", deductionScore=" + deductionScore +
+                ", createTime=" + createTime +
+                ", modifyTime=" + modifyTime +
+                '}';
+    }
+}

+ 5 - 1
kmall-admin/src/main/java/com/kmall/admin/haikong/constant/Constants.java

@@ -34,7 +34,11 @@ public class Constants {
         /**
          * 优惠券活动
          */
-        YHQ("yhq", "优惠券", 5)
+        YHQ("yhq", "优惠券", 5),
+        /**
+         * 积分抵扣
+         */
+        JFDK("jfdk", "积分抵扣", 99),
         ;
 
         private final String topicCode;

+ 14 - 3
kmall-admin/src/main/java/com/kmall/admin/haikong/vo/QueryGoodsVO.java

@@ -156,6 +156,8 @@ public class QueryGoodsVO {
      */
     private String productId;
 
+    private Integer deductionScore;
+
 
     public String getProdBarcode() {
         return prodBarcode;
@@ -389,13 +391,21 @@ public class QueryGoodsVO {
         this.productId = productId;
     }
 
+    public Integer getDeductionScore() {
+        return deductionScore;
+    }
+
+    public void setDeductionScore(Integer deductionScore) {
+        this.deductionScore = deductionScore;
+    }
+
     @Override
     public String toString() {
         return "QueryGoodsVO{" +
-                "prodBarcode='" + prodBarcode + '\'' +
+                "id=" + id +
+                ", prodBarcode='" + prodBarcode + '\'' +
                 ", sku='" + sku + '\'' +
                 ", merchSn='" + merchSn + '\'' +
-                ", id=" + id +
                 ", thirdPartyMerchCode='" + thirdPartyMerchCode + '\'' +
                 ", storeId=" + storeId +
                 ", sellVolume=" + sellVolume +
@@ -417,10 +427,11 @@ public class QueryGoodsVO {
                 ", ciqProdModel='" + ciqProdModel + '\'' +
                 ", toBeRestored=" + toBeRestored +
                 ", exitRegionNumber=" + exitRegionNumber +
-                ", productId=" + productId +
                 ", totalPrice=" + totalPrice +
                 ", lastSaleTime=" + lastSaleTime +
                 ", activity='" + activity + '\'' +
+                ", productId='" + productId + '\'' +
+                ", deductionScore=" + deductionScore +
                 '}';
     }
 

+ 42 - 0
kmall-admin/src/main/java/com/kmall/admin/service/haikong/HaiKongMemberScoreChangeDetailRecordService.java

@@ -0,0 +1,42 @@
+package com.kmall.admin.service.haikong;
+
+import com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeDetailRecordEntity;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * @author lhm
+ * @createDate 2021-12-09
+ */
+public interface HaiKongMemberScoreChangeDetailRecordService {
+
+    /**
+     * 根据订单编号查询详情
+     * @param orderSn   订单编号
+     * @return
+     */
+    List<HaiKongMemberScoreChangeDetailRecordEntity> queryListByOrderSn(@Param("orderSn") String orderSn);
+
+    /**
+     * 新增
+     * @param haiKongMemberScoreChangeDetailRecordEntity    实体
+     * @return  结果
+     */
+    int save(HaiKongMemberScoreChangeDetailRecordEntity haiKongMemberScoreChangeDetailRecordEntity);
+
+    /**
+     * 根据订单编号批量删除详情
+     * @param orderSn   订单编号
+     * @return          结果
+     */
+    int deleteBatchByOrderSn(@Param("orderSn") String orderSn);
+
+    /**
+     * 批量新增
+     * @param entities  实体集合
+     * @return          结果
+     */
+    int saveBatch(List<HaiKongMemberScoreChangeDetailRecordEntity> entities);
+
+}

+ 39 - 4
kmall-admin/src/main/java/com/kmall/admin/service/impl/OrderServiceImpl.java

@@ -23,6 +23,7 @@ import com.kmall.admin.dao.vip.Mall2PointsRulesDao;
 import com.kmall.admin.dto.*;
 import com.kmall.admin.entity.*;
 import com.kmall.admin.entity.haikong.HaiKongMemberOrderSyncResendEntity;
+import com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeDetailRecordEntity;
 import com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeRecordEntity;
 import com.kmall.admin.entity.haikong.IntegralGoBackEntity;
 import com.kmall.admin.entity.mk.MkActivitiesEntity;
@@ -47,6 +48,7 @@ import com.kmall.admin.haikong.config.HaiKongProperties;
 import com.kmall.admin.haikong.utils.Response;
 import com.kmall.admin.service.*;
 import com.kmall.admin.service.haikong.HaiKongMemberOrderSyncResendService;
+import com.kmall.admin.service.haikong.HaiKongMemberScoreChangeDetailRecordService;
 import com.kmall.admin.service.haikong.HaiKongMemberScoreChangeRecordService;
 import com.kmall.admin.service.mk.MkActivitiesScoreService;
 import com.kmall.admin.service.mk.MkActivitiesService;
@@ -252,6 +254,7 @@ public class OrderServiceImpl implements OrderService {
      */
     @Autowired
     private MkActivitiesPromotionService mkActivitiesPromotionService;
+
     /**
      * 日志记录
      */
@@ -269,6 +272,13 @@ public class OrderServiceImpl implements OrderService {
      */
     @Autowired
     private HaiKongMemberScoreChangeRecordService haiKongMemberScoreChangeRecordService;
+
+    /**
+     * 会员积分变动商品详情
+     */
+    @Autowired
+    private HaiKongMemberScoreChangeDetailRecordService haiKongMemberScoreChangeDetailRecordService;
+
     /**
      * 接口重发信息
      */
@@ -2209,6 +2219,7 @@ public class OrderServiceImpl implements OrderService {
                 queryGoodsVo.setDisCountedPrice(new BigDecimal(String.valueOf(map.get("discountedPrice"))));
                 queryGoodsVo.setTotalPrice(new BigDecimal(String.valueOf(map.get("actualPaymentAmount"))));
                 queryGoodsVo.setActivity((String) map.get("activity"));
+                queryGoodsVo.setDeductionScore((Integer) map.get("deductionScore"));
                 queryGoodsVOList.add(queryGoodsVo);
             });
             // 将在循环中查询数据库改为一次性查询
@@ -2610,10 +2621,10 @@ public class OrderServiceImpl implements OrderService {
             if (!org.springframework.util.StringUtils.isEmpty(memberCode)) {
                 // 同步会员订单消费记录
                 syncMemberConsumeRecord(memberPhone, order, deductionScore);
-                syncMemberScoreChangeRecord(openId, order, deductionScore, "下单扣减", HaiKongMemberScoreChangeEventEnum.SUBTRACT.getEvent());
+                syncMemberScoreChangeRecord(openId, order, deductionScore, "下单扣减", queryGoodsVOList, HaiKongMemberScoreChangeEventEnum.SUBTRACT.getEvent());
                 // 积分变动接口,下单扣减
                 Integer score = memberScore.get();
-                syncMemberScoreChangeRecord(openId, order, score, "下单赠送", HaiKongMemberScoreChangeEventEnum.ADD.getEvent());
+                syncMemberScoreChangeRecord(openId, order, score, "下单赠送", queryGoodsVOList, HaiKongMemberScoreChangeEventEnum.ADD.getEvent());
             }
 
             // 生成取票码
@@ -3031,9 +3042,12 @@ public class OrderServiceImpl implements OrderService {
      * 同步会员积分变动记录
      * @param openId    会员openid
      * @param order     订单信息
+     * @param changeEvent 变动事件
+     * @param changeReason 变动原因
+     * @param goodsList 商品详情
      * @param score     变动积分
      */
-    private void syncMemberScoreChangeRecord(String openId, OrderVo order, Integer score, String changeReason, String changeEvent) {
+    private void syncMemberScoreChangeRecord(String openId, OrderVo order, Integer score, String changeReason, List<QueryGoodsVO> goodsList, String changeEvent) {
         HaiKongMemberScoreChangeRecordEntity haiKongMemberScoreChangeRecordEntity = new HaiKongMemberScoreChangeRecordEntity();
         MemberScoreChangeDTO memberScoreChangeDTO = new MemberScoreChangeDTO();
         String changeId = UUID.randomUUID(true).toString();
@@ -3067,6 +3081,18 @@ public class OrderServiceImpl implements OrderService {
             haiKongMemberScoreChangeRecordEntity.setResendStatus(HaiKongMemberOrderResendStatusEnum.WAIT_RESEND.getStatus());
             haiKongMemberScoreChangeRecordService.save(haiKongMemberScoreChangeRecordEntity);
         }
+        List<HaiKongMemberScoreChangeDetailRecordEntity> recordEntityList = goodsList.stream().map(goodsEntity -> {
+            HaiKongMemberScoreChangeDetailRecordEntity entity = new HaiKongMemberScoreChangeDetailRecordEntity();
+            entity.setOrderSn(order.getOrder_sn());
+            entity.setRetailPrice(goodsEntity.getRetailPrice());
+            entity.setActualPrice(goodsEntity.getTotalPrice());
+            entity.setProductBarcode(goodsEntity.getProdBarcode());
+            entity.setSellVolume(goodsEntity.getSellVolume());
+            entity.setSku(goodsEntity.getSku());
+            entity.setDeductionScore(goodsEntity.getDeductionScore());
+            return entity;
+        }).collect(Collectors.toList());
+        haiKongMemberScoreChangeDetailRecordService.saveBatch(recordEntityList);
     }
 
     private boolean orderQuery(OrderVo order, OrderProcessRecordEntity processRecordEntity) {
@@ -4026,7 +4052,16 @@ public class OrderServiceImpl implements OrderService {
         // 与积分抵扣互斥的sku
         List<String> promotionSkuList = new ArrayList<>();
         // 判断活动类型并排序,再确定购物栏中商品是否满足活动条件
-        mkActivitiesEntityList.stream().sorted().forEach(mkActivitiesEntity -> {
+        mkActivitiesEntityList.stream().filter(mkActivitiesEntity -> {
+            if (!Constants.ActivityTopicEnum.JFDK.getTopicCode().equals(mkActivitiesEntity.getMkaTopic())) {
+                return true;
+            }
+            if (Objects.isNull(mkActivitiesEntity.getPriority())) {
+                LOGGER.error("活动:【{}】,活动ID:【{}】未设置优先级!请先设置优先级!", mkActivitiesEntity.getMkaTopic(), mkActivitiesEntity.getMkaId());
+                throw new ServiceException(String.format("活动:【%s】,活动ID:【%s】未设置优先级!请先设置优先级!", mkActivitiesEntity.getMkaTopic(), mkActivitiesEntity.getMkaId()));
+            }
+            return false;
+        }).sorted().forEach(mkActivitiesEntity -> {
             String mkaStoreId = mkActivitiesEntity.getMkaStoreId();
             Long mkaId = mkActivitiesEntity.getMkaId();
             String mkaTopic = mkActivitiesEntity.getMkaTopic();

+ 73 - 0
kmall-admin/src/main/java/com/kmall/admin/service/impl/haikong/HaiKongMemberScoreChangeDetailRecordServiceImpl.java

@@ -0,0 +1,73 @@
+package com.kmall.admin.service.impl.haikong;
+
+import com.kmall.admin.dao.haikong.HaiKongMemberScoreChangeDetailRecordDao;
+import com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeDetailRecordEntity;
+import com.kmall.admin.service.haikong.HaiKongMemberScoreChangeDetailRecordService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author lhm
+ * @createDate 2021-12-09
+ */
+@Service("haiKongMemberScoreChangeDetailRecordServiceImpl")
+public class HaiKongMemberScoreChangeDetailRecordServiceImpl implements HaiKongMemberScoreChangeDetailRecordService {
+
+    @Autowired
+    private HaiKongMemberScoreChangeDetailRecordDao haiKongMemberScoreChangeDetailRecordDao;
+
+    /**
+     * 根据订单编号查询详情
+     *
+     * @param orderSn 订单编号
+     * @return
+     */
+    @Override
+    public List<HaiKongMemberScoreChangeDetailRecordEntity> queryListByOrderSn(String orderSn) {
+        return haiKongMemberScoreChangeDetailRecordDao.queryListByOrderSn(orderSn);
+    }
+
+    /**
+     * 新增
+     *
+     * @param haiKongMemberScoreChangeDetailRecordEntity 实体
+     * @return 结果
+     */
+    @Override
+    public int save(HaiKongMemberScoreChangeDetailRecordEntity haiKongMemberScoreChangeDetailRecordEntity) {
+        Date date = new Date();
+        haiKongMemberScoreChangeDetailRecordEntity.setCreateTime(date);
+        haiKongMemberScoreChangeDetailRecordEntity.setModifyTime(date);
+        return haiKongMemberScoreChangeDetailRecordDao.save(haiKongMemberScoreChangeDetailRecordEntity);
+    }
+
+    /**
+     * 根据订单编号批量删除详情
+     *
+     * @param orderSn 订单编号
+     * @return 结果
+     */
+    @Override
+    public int deleteBatchByOrderSn(String orderSn) {
+        return haiKongMemberScoreChangeDetailRecordDao.deleteBatchByOrderSn(orderSn);
+    }
+
+    /**
+     * 批量新增
+     *
+     * @param entities 实体集合
+     * @return 结果
+     */
+    @Override
+    public int saveBatch(List<HaiKongMemberScoreChangeDetailRecordEntity> entities) {
+        entities.forEach(entity -> {
+            Date date = new Date();
+            entity.setCreateTime(date);
+            entity.setModifyTime(date);
+        });
+        return haiKongMemberScoreChangeDetailRecordDao.saveBatch(entities);
+    }
+}

+ 83 - 0
kmall-admin/src/main/resources/mybatis/mapper/haikong/HaiKongMemberScoreChangeDetailRecordDao.xml

@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.kmall.admin.dao.haikong.HaiKongMemberScoreChangeDetailRecordDao">
+    <resultMap id="CommonResultMap" type="com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeDetailRecordEntity">
+        <id column="id" property="id" />
+        <result column="order_sn" property="orderSn" />
+        <result column="product_barcode" property="productBarcode" />
+        <result column="sku" property="sku" />
+        <result column="retail_price" property="retailPrice" />
+        <result column="actual_price" property="actualPrice" />
+        <result column="sell_volume" property="sellVolume" />
+        <result column="deduction_score" property="deductionScore" />
+        <result column="modify_time" property="modifyTime" />
+        <result column="create_time" property="createTime" />
+    </resultMap>
+
+    <select id="queryListByOrderSn" resultType="com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeDetailRecordEntity">
+        select *
+        from haikong_member_score_change_detail_record
+        where haikong_member_score_change_detail_record.order_sn = #{orderSn}
+    </select>
+
+    <insert id="save" parameterType="com.kmall.admin.entity.haikong.HaiKongMemberScoreChangeDetailRecordEntity" useGeneratedKeys="true" keyProperty="id">
+        insert into haikong_member_score_change_detail_record
+        (
+            `order_sn`,
+            `product_barcode`,
+            `sku`,
+            `retail_price`,
+            `actual_price`,
+            `sell_volume`,
+            `deduction_score`,
+            `modify_time`,
+            `create_time`
+        )
+        values
+        (
+            #{orderSn},
+            #{productBarcode},
+            #{sku},
+            #{retailPrice},
+            #{actualPrice},
+            #{sellVolume},
+            #{deductionScore},
+            #{modifyTime},
+            #{createTime}
+        )
+    </insert>
+
+    <insert id="saveBatch">
+        insert into haikong_member_score_change_detail_record
+        (
+            `order_sn`,
+            `product_barcode`,
+            `sku`,
+            `retail_price`,
+            `actual_price`,
+            `sell_volume`,
+            `deduction_score`,
+            `modify_time`,
+            `create_time`
+        )
+        values
+        <foreach collection="list" item="item" separator=",">
+            (
+                #{item.orderSn},
+                #{item.productBarcode},
+                #{item.sku},
+                #{item.retailPrice},
+                #{item.actualPrice},
+                #{item.sellVolume},
+                #{item.deductionScore},
+                #{item.modifyTime},
+                #{item.createTime}
+            )
+        </foreach>
+    </insert>
+
+    <delete id="deleteBatchByOrderSn">
+        delete from haikong_member_score_change_detail_record where order_sn = #{orderSn}
+    </delete>
+
+</mapper>