浏览代码

fix 套餐价格

zoujiajian 3 年之前
父节点
当前提交
452d26be73

+ 3 - 0
netflix-dao/src/main/java/com/cyksj/mapper/GoodsDonSkuMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.cyksj.model.entity.GoodsDonSku;
 import org.apache.ibatis.annotations.Param;
 
+import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -13,4 +14,6 @@ import java.util.List;
 public interface GoodsDonSkuMapper  extends BaseMapper<GoodsDonSku> {
 
 	List<Long> selectAIMonthSkuIds(@Param("list") List<Long> goodsIds);
+
+	BigDecimal sumMoneyBySkuId(@Param("list") List<Long> skuIds);
 }

+ 5 - 0
netflix-dao/src/main/java/com/cyksj/model/manage/request/ReqGoodsSkuSpec.java

@@ -1,5 +1,6 @@
 package com.cyksj.model.manage.request;
 
+import com.fasterxml.jackson.annotation.JsonInclude;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -12,6 +13,7 @@ import java.util.List;
  */
 @Getter
 @Setter
+@JsonInclude(JsonInclude.Include.NON_NULL)
 public class ReqGoodsSkuSpec {
     private String key;
 
@@ -19,6 +21,7 @@ public class ReqGoodsSkuSpec {
 
     @Getter
     @Setter
+    @JsonInclude(JsonInclude.Include.NON_NULL)
     public static class Node {
         private Integer id;
 
@@ -27,5 +30,7 @@ public class ReqGoodsSkuSpec {
         private BigDecimal price;
 
         private String benefitsList;
+
+        private BigDecimal benefitsPrice;
     }
 }

+ 7 - 0
netflix-dao/src/main/resources/mapper/GoodsDonSkuMapper.xml

@@ -9,4 +9,11 @@
         </foreach>
         and `months` = 1
     </select>
+
+    <select id="sumMoneyBySkuId" resultType="java.math.BigDecimal">
+        select sum(price) from goods_don_sku where id in
+        <foreach collection="list" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </select>
 </mapper>

+ 24 - 0
netflix-service/src/main/java/com/cyksj/service/mange/goods/CmsGoodsDonSpecServiceImpl.java

@@ -130,6 +130,30 @@ public class CmsGoodsDonSpecServiceImpl extends ServiceImpl<GoodsDonSpecMapper,
 		spec.setGoodsId(insert.getGoodsId());
 		spec.setMaxId(maxId);
 		spec.setSpecsJson(Jsons.toJson(specs));
+		if (goods.getType() == 2) {
+			List<ReqGoodsSkuSpec> specJsonList = Jsons.parseList(spec.getSpecsJson(), ReqGoodsSkuSpec.class);
+			for (ReqGoodsSkuSpec skuSpec : specJsonList) {
+				if ("套餐".equals(skuSpec.getKey())) {
+					BigDecimal benefitsPrice = null;
+					for (ReqGoodsSkuSpec.Node value : skuSpec.getValues()) {
+						String benefitsList = value.getBenefitsList();
+						if (StrUtil.isEmpty(benefitsList)) {
+							value.setBenefitsPrice(null);
+							return;
+						}
+						List<GoodsDonSku> goodsDonSkus = Jsons.parseList(benefitsList, GoodsDonSku.class);
+						if (CollUtil.isEmpty(goodsDonSkus)) {
+							value.setBenefitsPrice(null);
+						}
+						List<Long> skuIds = goodsDonSkus.stream().map(GoodsDonSku::getId).collect(Collectors.toList());
+						benefitsPrice = goodsDonSkuMapper.sumMoneyBySkuId(skuIds);
+						value.setBenefitsPrice(benefitsPrice);
+					}
+					spec.setSpecsJson(Jsons.toJson(specJsonList));
+					break;
+				}
+			}
+		}
 		spec.setSpecNumber(specNumber);
 		spec.setSpecMapping(Jsons.toJson(map));
 		if (insert.getId() != null) {