Procházet zdrojové kódy

加入超级会员优惠商品sku

zhijiezhao před 2 roky
rodič
revize
674974ec76

+ 8 - 5
src/main/java/com/caimei365/commodity/components/PriceUtilService.java

@@ -4,6 +4,7 @@ package com.caimei365.commodity.components;
 import com.caimei365.commodity.mapper.PriceMapper;
 import com.caimei365.commodity.mapper.PromotionsMapper;
 import com.caimei365.commodity.model.dto.Sku;
+import com.caimei365.commodity.model.dto.VipSkuPriceDto;
 import com.caimei365.commodity.model.vo.*;
 import com.caimei365.commodity.utils.ImageUtils;
 import com.caimei365.commodity.utils.MathUtil;
@@ -147,20 +148,22 @@ public class PriceUtilService {
             if (1 == price.getSvipProductFlag()) {
                 // 超级会员优惠商品,不参与促销活动(普通机构购买该商品可参与店铺促销)/阶梯价/复购价
                 s.setLadderPriceFlag(0);
+                // 根据sku查询vip优惠
+                VipSkuPriceDto vipSku=priceMapper.getVipSku(s.getSkuId());
                 // 超级会员优惠价
-                BigDecimal svipDiscountPrice = price.getSvipDiscountPrice();
-                if (1 == price.getSvipPriceType()) {
+                BigDecimal svipDiscountPrice = BigDecimal.valueOf(vipSku.getDiscountPrice());
+                if (1 == vipSku.getPriceType()) {
                     // 折扣价
-                    price.setSvipPriceTag(MathUtil.div(price.getSvipDiscount(), 10, 1) + "折");
+                    price.setSvipPriceTag(MathUtil.div(vipSku.getDiscount(), 10, 1) + "折");
                     if (isSuperVip) {
                         // 超级会员用户设置优惠价
                         price.setOriginalPrice(atomicDouble.get());
                         s.setOriginalPrice(s.getPrice());
-                        svipDiscountPrice = MathUtil.div(MathUtil.mul(s.getPrice(), price.getSvipDiscount()), 100, 2);
+                        svipDiscountPrice = MathUtil.div(MathUtil.mul(s.getPrice(), vipSku.getDiscount()), 100, 2);
                         s.setPrice(svipDiscountPrice.doubleValue());
                         price.setPrice(svipDiscountPrice.doubleValue());
                     }
-                } else if (2 == price.getSvipPriceType()) {
+                } else if (2 == vipSku.getPriceType()) {
                     // 直接优惠价
                     if (isSuperVip) {
                         // 超级会员用户设置优惠价

+ 3 - 0
src/main/java/com/caimei365/commodity/mapper/PriceMapper.java

@@ -1,6 +1,7 @@
 package com.caimei365.commodity.mapper;
 
 import com.caimei365.commodity.model.dto.Sku;
+import com.caimei365.commodity.model.dto.VipSkuPriceDto;
 import com.caimei365.commodity.model.vo.*;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -95,4 +96,6 @@ public interface PriceMapper {
     ProductItemVo findLowPriceOfAll(Integer productId);
 
     ProductItemVo findLowPriceOfPrice(Integer productId);
+
+    VipSkuPriceDto getVipSku(Integer skuId);
 }

+ 29 - 0
src/main/java/com/caimei365/commodity/model/dto/VipSkuPriceDto.java

@@ -0,0 +1,29 @@
+package com.caimei365.commodity.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * @author zzj
+ */
+@Data
+public class VipSkuPriceDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("会员价类型:1折扣,2优惠价")
+    private Integer priceType;
+
+    @ApiModelProperty("会员折扣")
+    private Double discount;
+
+    @ApiModelProperty("会员价")
+    private Double discountPrice;
+
+    @ApiModelProperty("skuId")
+    private Integer skuId;
+
+    @ApiModelProperty("productId")
+    private Integer productId;
+}

+ 24 - 6
src/main/resources/mapper/PriceMapper.xml

@@ -21,12 +21,16 @@
                p.includedTax,
                p.invoiceType,
                if(csp.id is not null, 1, 0) as svipProductFlag,
-               csp.priceType                as svipPriceType,
-               csp.discount                 as svipDiscount,
-               csp.discountPrice            as svipDiscountPrice,
+               ccs.priceType                as svipPriceType,
+               ccs.discount                 as svipDiscount,
+               ccs.discountPrice            as svipDiscountPrice,
                p.productType
         from product p
                  left join cm_svip_product csp on p.productID = csp.productId
+        left join (select priceType,discount,discountPrice,csps.productId from cm_svip_product_sku csps
+        left join cm_sku cs on csps.skuId=cs.skuId
+        where csps.productId=#{productId}
+            order by cs.price asc limit 1) ccs on ccs.productId=p.productId
         where p.productID = #{productId}
     </select>
     <select id="getListPriceByProductIds" resultType="com.caimei365.commodity.model.vo.PriceVo">
@@ -40,9 +44,18 @@
         p.invoiceType,
         p.taxPoint as taxRate,
         if(csp.id is not null,1,0) as svipProductFlag,
-        csp.priceType as svipPriceType,
-        csp.discount as svipDiscount,
-        csp.discountPrice as svipDiscountPrice,
+        (select priceType from cm_svip_product_sku csps
+        left join cm_sku cs on csps.skuId=cs.skuId
+        where csps.productId=p.productID
+        order by cs.price asc limit 1) as svipPriceType,
+        (select discount from cm_svip_product_sku csps
+        left join cm_sku cs on csps.skuId=cs.skuId
+        where csps.productId=p.productID
+        order by cs.price asc limit 1) as svipDiscount,
+        (select discountPrice from cm_svip_product_sku csps
+        left join cm_sku cs on csps.skuId=cs.skuId
+        where csps.productId=p.productID
+        order by cs.price asc limit 1) as svipDiscountPrice,
         p.productType,
         p.newvalidFlag
         from product p
@@ -235,4 +248,9 @@
         ORDER BY price ASC
         LIMIT 1
     </select>
+    <select id="getVipSku" resultType="com.caimei365.commodity.model.dto.VipSkuPriceDto">
+        select priceType,discountPrice,discount,productId,skuId
+        from cm_svip_product_sku
+        where skuId = #{skuId}
+    </select>
 </mapper>