Browse Source

采美sku bugfix

zhijiezhao 2 years ago
parent
commit
114ffcb310

+ 114 - 129
src/main/java/com/caimei365/commodity/components/PriceUtilService.java

@@ -14,6 +14,7 @@ import org.springframework.util.CollectionUtils;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -125,106 +126,119 @@ public class PriceUtilService {
         }
         // 设置价格标志(协销|价格公开|仅对医美机构公开|仅对会员机构公开|供应商自己的商品)
         boolean setFlag = identity == 1 || priceFlag == 0 || (priceFlag == 3 && clubType == 1) || (priceFlag == 2 && (identity == 2 || isSuperVip)) || isShopOwn;
-        if (setFlag) {
-            List<Sku> skus = price.getSkus();
-            if (null == skus || skus.size() < 1) {
-                List<Sku> skuList = priceMapper.findSkus(price.getProductId());
-                price.setSkus(skuList);
-                skus = skuList;
-            }
-            //给一个默认的最低价和最低起订量
-            price.setPrice(skus.get(0).getPrice());
-            price.setSkuId(skus.get(0).getSkuId());
-            price.setMinBuyNumber(skus.get(0).getMinBuyNumber());
-            skus.forEach(s -> {
-                // 设置划线价
-                s.setOriginalPrice(s.getPrice());
-                //税费标志
-                boolean taxFlag = "0".equals(price.getIncludedTax()) && ("1".equals(price.getInvoiceType()) || "2".equals(price.getInvoiceType()));
-                if (1 == price.getSvipProductFlag()) {
-                    // 超级会员优惠商品,不参与促销活动(普通机构购买该商品可参与店铺促销)/阶梯价/复购价
-                    s.setLadderPriceFlag(0);
-                    // 超级会员优惠价
-                    BigDecimal svipDiscountPrice = price.getSvipDiscountPrice();
-                    if (1 == price.getSvipPriceType()) {
-                        // 折扣价
-                        price.setSvipPriceTag(MathUtil.div(price.getSvipDiscount(), 10, 1) + "折");
-                        if (isSuperVip) {
-                            // 超级会员用户设置优惠价
-                            svipDiscountPrice = MathUtil.div(MathUtil.mul(s.getPrice(), price.getSvipDiscount()), 100, 2);
-                            s.setPrice(svipDiscountPrice.doubleValue());
-                        }
-                    } else if (2 == price.getSvipPriceType()) {
-                        // 直接优惠价
-                        if (isSuperVip) {
-                            // 超级会员用户设置优惠价
-                            s.setPrice(svipDiscountPrice.doubleValue());
-                        }
-                        if (taxFlag) {
-                            //添加税费
-                            BigDecimal thisTaxFee = MathUtil.div(MathUtil.mul(svipDiscountPrice, price.getTaxRate()), 100, 2);
-                            svipDiscountPrice = MathUtil.add(svipDiscountPrice, thisTaxFee);
-                        }
-                        price.setSvipPriceTag("¥" + svipDiscountPrice);
+
+        List<Sku> skus = price.getSkus();
+        if (null == skus || skus.size() < 1) {
+            List<Sku> skuList = priceMapper.findSkus(price.getProductId());
+            price.setSkus(skuList);
+            skus = skuList;
+        }
+
+        AtomicBoolean ladderFlag= new AtomicBoolean(false);
+        skus.forEach(s -> {
+            // 设置划线价
+            s.setOriginalPrice(s.getPrice());
+            //税费标志
+            boolean taxFlag = "0".equals(price.getIncludedTax()) && ("1".equals(price.getInvoiceType()) || "2".equals(price.getInvoiceType()));
+            if (1 == price.getSvipProductFlag()) {
+                // 超级会员优惠商品,不参与促销活动(普通机构购买该商品可参与店铺促销)/阶梯价/复购价
+                s.setLadderPriceFlag(0);
+                // 超级会员优惠价
+                BigDecimal svipDiscountPrice = price.getSvipDiscountPrice();
+                if (1 == price.getSvipPriceType()) {
+                    // 折扣价
+                    price.setSvipPriceTag(MathUtil.div(price.getSvipDiscount(), 10, 1) + "折");
+                    if (isSuperVip) {
+                        // 超级会员用户设置优惠价
+                        svipDiscountPrice = MathUtil.div(MathUtil.mul(s.getPrice(), price.getSvipDiscount()), 100, 2);
+                        s.setPrice(svipDiscountPrice.doubleValue());
                     }
-                } else if (null != promotions) {
-                    // 促销活动
-                    price.setActStatus(1);
-                    s.setLadderPriceFlag(0);
-                    if (promotions.getMode() == 3) {
-                        // 获取赠品
-                        List<ProductItemVo> giftList = promotionsMapper.getPromotionGifts(promotions.getId());
-                        promotions.setGiftList(giftList);
+                } else if (2 == price.getSvipPriceType()) {
+                    // 直接优惠价
+                    if (isSuperVip) {
+                        // 超级会员用户设置优惠价
+                        s.setPrice(svipDiscountPrice.doubleValue());
                     }
-                    if (promotions.getType() == 1 && promotions.getMode() == 1 && null != promotions.getTouchPrice()) {
-                        s.setPrice(promotions.getTouchPrice());
+                    if (taxFlag) {
+                        //添加税费
+                        BigDecimal thisTaxFee = MathUtil.div(MathUtil.mul(svipDiscountPrice, price.getTaxRate()), 100, 2);
+                        svipDiscountPrice = MathUtil.add(svipDiscountPrice, thisTaxFee);
                     }
-                    price.setPromotions(promotions);
-                } else {
-                    if (null != userId) {
-                        if (1 == s.getLadderPriceFlag()) {
-                            // 阶梯价
-                            LadderPriceVo lowerPrice = priceMapper.findLowerLadderPrice(s.getSkuId());
-                            LadderPriceVo lowerBuyNum = priceMapper.findMaxLadderPrice(s.getSkuId());
-                            if (null != lowerPrice) {
-                                if (null != lowerBuyNum) {
-                                    s.setMinBuyNumber(lowerBuyNum.getBuyNum());
-                                    s.setPrice(lowerBuyNum.getBuyPrice());
-                                }
-                            } else {
-                                s.setLadderPriceFlag(0);
-                            }
-                            List<LadderPriceVo> ladderPrices = priceMapper.getLadderPricesByProductId(s.getSkuId());
-                            TaxVo tax = priceMapper.getTaxByProductId(price.getProductId());
-                            if (!CollectionUtils.isEmpty(ladderPrices)) {
-                                setLadderPriceList(ladderPrices, tax);
+                    price.setSvipPriceTag("¥" + svipDiscountPrice);
+                }
+            } else if (null != promotions) {
+                // 促销活动
+                price.setActStatus(1);
+                s.setLadderPriceFlag(0);
+                if (promotions.getMode() == 3) {
+                    // 获取赠品
+                    List<ProductItemVo> giftList = promotionsMapper.getPromotionGifts(promotions.getId());
+                    promotions.setGiftList(giftList);
+                }
+                if (promotions.getType() == 1 && promotions.getMode() == 1 && null != promotions.getTouchPrice()) {
+                    s.setPrice(promotions.getTouchPrice());
+                }
+                price.setPromotions(promotions);
+            } else {
+                if (null != userId) {
+                    if (1 == s.getLadderPriceFlag()) {
+                        // 阶梯价
+                        LadderPriceVo lowerPrice = priceMapper.findLowerLadderPrice(s.getSkuId());
+                        LadderPriceVo lowerBuyNum = priceMapper.findMaxLadderPrice(s.getSkuId());
+                        if (null != lowerPrice) {
+                            if (null != lowerBuyNum) {
+                                s.setMinBuyNumber(lowerBuyNum.getBuyNum());
+                                s.setPrice(lowerBuyNum.getBuyPrice());
+                                s.setStock(lowerBuyNum.getStock());
+                                s.setUnit(lowerBuyNum.getUnit());
                             }
-                            s.setLadderPriceList(ladderPrices);
-                            price.setLadderPriceFlag(1);
-                            price.setPrice(lowerPrice.getBuyPrice());
-                            price.setMinBuyNumber(lowerPrice.getBuyNum());
                         } else {
-                            price.setLadderPriceFlag(0);
-                            // 复购价
-                            Double repurchase = priceMapper.getRepurchasePrice(s.getSkuId(), userId);
-                            if (null != repurchase && repurchase > 0) {
-                                s.setPrice(repurchase);
-                                s.setRepurchaseFlag(1);
-                                s.setLadderPriceFlag(0);
-                            }
+                            s.setLadderPriceFlag(0);
+                        }
+                        List<LadderPriceVo> ladderPrices = priceMapper.getLadderPricesByProductId(s.getSkuId());
+                        TaxVo tax = priceMapper.getTaxByProductId(price.getProductId());
+                        if (!CollectionUtils.isEmpty(ladderPrices)) {
+                            setLadderPriceList(ladderPrices, tax);
+                        }
+                        s.setLadderPriceList(ladderPrices);
+                        ladderFlag.set(true);
+                        price.setLadderPriceFlag(1);
+                        price.setSkuId(ladderPrices.get(0).getSkuId());
+                        price.setPrice(ladderPrices.get(0).getBuyPrice());
+                        price.setMinBuyNumber(ladderPrices.get(0).getBuyNum());
+                        price.setStock(ladderPrices.get(0).getStock());
+                        price.setUnit(ladderPrices.get(0).getUnit());
+                    } else {
+                        price.setLadderPriceFlag(0);
+                        // 复购价
+                        Double repurchase = priceMapper.getRepurchasePrice(s.getSkuId(), userId);
+                        if (null != repurchase && repurchase > 0) {
+                            s.setPrice(repurchase);
+                            s.setRepurchaseFlag(1);
+                            s.setLadderPriceFlag(0);
                         }
                     }
                 }
-                //添加税费
-                if (taxFlag) {
-                    BigDecimal thisTaxFee = MathUtil.div(MathUtil.mul(s.getPrice(), price.getTaxRate()), 100, 2);
-                    s.setPrice(MathUtil.add(s.getPrice(), thisTaxFee).doubleValue());
-                    BigDecimal originalTaxFee = MathUtil.div(MathUtil.mul(s.getOriginalPrice(), price.getTaxRate()), 100, 2);
-                    s.setOriginalPrice(MathUtil.add(s.getOriginalPrice(), originalTaxFee).doubleValue());
-                }
-            });
-            price.setSkus(skus);
-        } else {
+            }
+            //添加税费
+            if (taxFlag) {
+                BigDecimal thisTaxFee = MathUtil.div(MathUtil.mul(s.getPrice(), price.getTaxRate()), 100, 2);
+                s.setPrice(MathUtil.add(s.getPrice(), thisTaxFee).doubleValue());
+                BigDecimal originalTaxFee = MathUtil.div(MathUtil.mul(s.getOriginalPrice(), price.getTaxRate()), 100, 2);
+                s.setOriginalPrice(MathUtil.add(s.getOriginalPrice(), originalTaxFee).doubleValue());
+            }
+        });
+        //给一个默认的最低价和最低起订量
+        if(!ladderFlag.get()){
+            price.setPrice(skus.get(0).getPrice());
+            price.setSkuId(skus.get(0).getSkuId());
+            price.setMinBuyNumber(skus.get(0).getMinBuyNumber());
+            price.setUnit(skus.get(0).getUnit());
+            price.setStock(skus.get(0).getStock());
+        }
+        price.setSkus(skus);
+        if (!setFlag) {
+            price.setSkus(priceMapper.findSkusOutOfPrice(price.getProductId()));
             price.setUserIdentity(0);
             if (null != promotions) {
                 price.setActStatus(1);
@@ -247,45 +261,8 @@ public class PriceUtilService {
     public void setProductDetails(Integer userId, ProductItemVo product) {
         // 设置图片
         product.setImage(ImageUtils.getImageURL("product", product.getImage(), 0, domain));
-        // 设置sku
-        List<Sku> skus = priceMapper.findSkus(product.getProductId());
-        AtomicBoolean lowPrice = new AtomicBoolean(false);
-        skus.forEach(s -> {
-            // 设置价格等级
-            s.setPriceGrade(getPriceGrade(s.getPrice()));
-            s.setOriginalPrice(s.getPrice());
-            if (1 == s.getLadderPriceFlag()) {
-                List<LadderPriceVo> ladderPrices = priceMapper.getLadderPricesByProductId(s.getSkuId());
-                TaxVo tax = priceMapper.getTaxByProductId(product.getProductId());
-                if (!CollectionUtils.isEmpty(ladderPrices)) {
-                    setLadderPriceList(ladderPrices, tax);
-                }
-                s.setLadderPriceList(ladderPrices);
-                lowPrice.set(true);
-            }
-        });
-        //设置展示的默认最低价和展示最低价的规格
-        if (lowPrice.get()) {
-            ProductItemVo showProduct = priceMapper.findLowPrice(product.getProductId());
-            product.setSkuId(showProduct.getSkuId());
-            product.setPrice(showProduct.getPrice());
-            product.setOriginalPrice(showProduct.getPrice());
-            product.setUnit(showProduct.getUnit());
-            product.setMinBuyNumber(showProduct.getMinBuyNumber());
-            product.setPriceGrade(getPriceGrade(showProduct.getPrice()));
-        } else {
-            List<Sku> collect = skus.stream().sorted(Comparator.comparing(Sku::getPrice)).collect(Collectors.toList());
-            product.setSkuId(collect.get(0).getSkuId());
-            product.setPrice(collect.get(0).getPrice());
-            product.setOriginalPrice(collect.get(0).getPrice());
-            product.setUnit(collect.get(0).getUnit());
-            product.setMinBuyNumber(collect.get(0).getMinBuyNumber());
-            product.setPriceGrade(getPriceGrade(collect.get(0).getPrice()));
-        }
-        product.setSkus(skus);
         // 数据库获取基本价格信息
         PriceVo price = priceMapper.getDetailPrice(product.getProductId());
-        price.setSkus(skus);
         // 根据用户id设置详细价格
         setPriceByUserId(price, userId);
         // 设置价格
@@ -294,6 +271,14 @@ public class PriceUtilService {
         product.setUserIdentity(price.getUserIdentity());
         product.setSvipProductFlag(price.getSvipProductFlag());
         product.setSvipPriceTag(price.getSvipPriceTag());
+        product.setPrice(price.getPrice());
+        product.setSkuId(price.getSkuId());
+        product.setOriginalPrice(price.getPrice());
+        product.setPriceGrade(getPriceGrade(price.getPrice()));
+        product.setMinBuyNumber(price.getMinBuyNumber());
+        product.setUnit(price.getUnit());
+        product.setStock(price.getStock());
+        product.setSkus(price.getSkus());
     }
 
 }

+ 6 - 0
src/main/java/com/caimei365/commodity/controller/ProductPageApi.java

@@ -33,6 +33,12 @@ public class ProductPageApi {
 
     private final PageService pageService;
 
+    @ApiOperation("删除sku")
+    @ApiImplicitParam(required = true, name = "skuId", value = "skuId")
+    @GetMapping("/del/sku")
+    public ResponseJson delSku(Integer skuId) {
+        return pageService.delSku(skuId);
+    }
     /**
      * 获取分类列表
      *

+ 2 - 0
src/main/java/com/caimei365/commodity/mapper/PageMapper.java

@@ -414,4 +414,6 @@ public interface PageMapper {
     List<BrandVo> getNewFloorBrand();
 
     String findLink(Integer productId);
+
+    void delSku(Integer skuId);
 }

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

@@ -87,4 +87,8 @@ public interface PriceMapper {
      * @return
      */
     ProductItemVo findLowPrice(Integer productId);
+
+    Integer getSaleOutFlag(Integer productId);
+
+    List<Sku> findSkusOutOfPrice(Integer productId);
 }

+ 4 - 0
src/main/java/com/caimei365/commodity/model/vo/LadderPriceVo.java

@@ -14,6 +14,10 @@ import java.io.Serializable;
 public class LadderPriceVo implements Serializable {
     private static final long serialVersionUID = 1L;
 
+    private Integer stock;
+
+    private String unit;
+
     private Integer id;
 
     private Integer skuId;

+ 4 - 0
src/main/java/com/caimei365/commodity/model/vo/PriceVo.java

@@ -17,6 +17,10 @@ import java.util.List;
 public class PriceVo implements Serializable {
     private static final long serialVersionUID = 1L;
 
+    private Integer stock;
+
+    private String unit;
+
     private List<Sku> skus;
     /**
      * 展示的最低市场价

+ 8 - 0
src/main/java/com/caimei365/commodity/model/vo/ProductDetailVo.java

@@ -23,6 +23,14 @@ import java.util.List;
 @Data
 public class ProductDetailVo implements Serializable {
     private static final long serialVersionUID = 1L;
+
+    private Integer minBuyNumber;
+
+    private Integer stock;
+    /**
+     * 售罄标记 0否1是
+     */
+    private Integer saleOutFlag;
     /**
      * 展示的最低市场价
      */

+ 2 - 0
src/main/java/com/caimei365/commodity/model/vo/ProductItemVo.java

@@ -16,6 +16,8 @@ import java.util.List;
 @Data
 public class ProductItemVo implements Serializable {
     private static final long serialVersionUID = 1L;
+
+    private Integer stock;
     /**
      * 展示的sku的价格等级
      */

+ 2 - 0
src/main/java/com/caimei365/commodity/service/PageService.java

@@ -241,4 +241,6 @@ public interface PageService {
      * @param floorContent
      */
     void setFloorLinkType(FloorContentVo floorContent);
+
+    ResponseJson delSku(Integer skuId);
 }

+ 22 - 3
src/main/java/com/caimei365/commodity/service/impl/PageServiceImpl.java

@@ -633,6 +633,7 @@ public class PageServiceImpl implements PageService {
             //设置展示的价格等级
             product.setPriceGrade(priceUtilService.getPriceGrade(product.getPrice()));
             // 设置阶梯价格详情
+            List<LadderPriceVo> ladder=new ArrayList<>();
             skus.forEach(s -> {
                 s.setPriceGrade(priceUtilService.getPriceGrade(s.getPrice()));
                 if (1 == s.getLadderPriceFlag()) {
@@ -642,22 +643,31 @@ public class PageServiceImpl implements PageService {
                         priceUtilService.setLadderPriceList(ladderPrices, tax);
                     }
                     s.setLadderPriceList(ladderPrices);
+                    s.setPrice(ladderPrices.get(0).getBuyPrice());
+                    s.setMinBuyNumber(ladderPrices.get(0).getBuyNum());
+                    s.setUnit(ladderPrices.get(0).getUnit());
+                    s.setStock(ladderPrices.get(0).getStock());
+                    ladder.addAll(ladderPrices);
                     lowPrice.set(true);
                 }
             });
             //设置展示的默认最低价
             if (lowPrice.get()) {
                 ProductItemVo showProduct = priceMapper.findLowPrice(productId);
-                product.setSkuId(showProduct.getSkuId());
-                product.setPrice(showProduct.getPrice());
-                product.setUnit(showProduct.getUnit());
+                product.setSkuId(ladder.get(0).getSkuId());
+                product.setPrice(ladder.get(0).getBuyPrice());
+                product.setUnit(ladder.get(0).getUnit());
                 product.setLadderPriceFlag(1);
+                product.setStock(ladder.get(0).getStock());
+                product.setMinBuyNumber(ladder.get(0).getBuyNum());
             } else {
                 product.setLadderPriceFlag(0);
                 List<Sku> collect = skus.stream().sorted(Comparator.comparing(Sku::getPrice)).collect(Collectors.toList());
                 product.setPrice(collect.get(0).getPrice());
                 product.setUnit(collect.get(0).getUnit());
                 product.setSkuId(collect.get(0).getSkuId());
+                product.setStock(collect.get(0).getStock());
+                product.setMinBuyNumber(collect.get(0).getMinBuyNumber());
             }
             //查询商品收藏情况,1未收藏,0未收藏,未收藏过该商品用户是null
             Integer like = likeMapper.findLike(userId, productId);
@@ -673,6 +683,9 @@ public class PageServiceImpl implements PageService {
             }
             product.setSkus(skus);
         }
+        // 设置售罄标记
+        Integer flag = priceMapper.getSaleOutFlag(product.getProductId()) > 0 ? 0 : 1;
+        product.setSaleOutFlag(flag);
         return ResponseJson.success(product);
     }
 
@@ -978,6 +991,12 @@ public class PageServiceImpl implements PageService {
         }
     }
 
+    @Override
+    public ResponseJson delSku(Integer skuId) {
+        pageMapper.delSku(skuId);
+        return ResponseJson.success();
+    }
+
     /**
      * 设置楼层相关图片的商品信息
      */

+ 13 - 6
src/main/resources/mapper/PageMapper.xml

@@ -1,6 +1,10 @@
 <?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.caimei365.commodity.mapper.PageMapper">
+    <delete id="delSku">
+        delete from cm_sku
+        where skuId=#{skuId}
+    </delete>
     <select id="getPageTypeSort" resultType="java.lang.Integer">
         select typeSort
         from cm_page
@@ -159,14 +163,14 @@
                p.mainImage         as image,
                p.productCode       as code,
                p.priceFlag,
-               (select unit from cm_sku where p.productID=#{productId} order by price asc LIMIT 1) as unit,
-               (select price from cm_sku where p.productID=#{productId} order by price asc LIMIT 1) as price,
-               (select price from cm_sku where p.productID=#{productId} order by price asc LIMIT 1) as originalPrice,
+               (select unit from cm_sku where productID=#{productId} order by price asc LIMIT 1) as unit,
+               (select price from cm_sku where productID=#{productId} order by price asc LIMIT 1) as price,
+               (select price from cm_sku where productID=#{productId} order by price asc LIMIT 1) as originalPrice,
                p.shopID            as shopId,
                p.searchKey         as keyword,
-               (select minBuyNumber from cm_sku where p.productID=#{productId} order by price asc LIMIT 1) as minBuyNumber,
-               (select ladderPriceFlag from cm_sku where p.productID=#{productId} order by price asc LIMIT 1) as ladderPriceFlag,
-               (select normalPrice from cm_sku where p.productID=#{productId} order by price asc LIMIT 1) as normalPrice,
+               (select minBuyNumber from cm_sku where productID=#{productId} order by price asc LIMIT 1) as minBuyNumber,
+               (select ladderPriceFlag from cm_sku where productID=#{productId} order by price asc LIMIT 1) as ladderPriceFlag,
+               (select normalPrice from cm_sku where productID=#{productId} order by price asc LIMIT 1) as normalPrice,
                p.step,
                p.shopID            as shopId,
                p.taxPoint          as taxRate,
@@ -212,6 +216,9 @@
         select p.productID         as productId,
                p.shopID            as shopId,
                (select normalPrice from cm_sku where productId=#{productId} order by price asc limit 1) as normalPrice,
+               ifnull((select stock from cm_sku where productId=#{productId} order by price asc limit 1),0) as stock,
+               (select minBuyNumber from cm_sku where productId=#{productId} order by price asc limit 1) as minBuyNumber,
+               (select unit from cm_sku where productId=#{productId} order by price asc limit 1) as unit,
                p.name,
                p.aliasName,
                p.commodityType,

+ 45 - 18
src/main/resources/mapper/PriceMapper.xml

@@ -9,7 +9,11 @@
     <select id="getDetailPrice" resultType="com.caimei365.commodity.model.vo.PriceVo">
         select p.productID                  as productId,
                p.actStatus,
-               (select normalPrice from cm_sku where productId=#{productId} order by price asc limit 1) as normalPrice,
+               (select normalPrice
+                from cm_sku
+                where productId = #{productId}
+                order by price asc
+                limit 1)                    as normalPrice,
                p.priceFlag,
                p.step,
                p.shopID                     as shopId,
@@ -49,16 +53,18 @@
         </foreach>
     </select>
     <select id="getLadderPricesByProductId" resultType="com.caimei365.commodity.model.vo.LadderPriceVo">
-        select id,
-               productId,
-               ladderNum,
+        select plp.skuId,
+               plp.productId,
                buyNum,
-               buyPrice
-        from product_ladder_price
-        where skuId = #{skuId}
+               stock,
+               buyPrice,
+               unit
+        from product_ladder_price plp
+        left join cm_sku cs on plp.skuId=cs.skuId
+        where plp.skuId = #{skuId}
           and userType = 3
           and delFlag = 0
-        order by ladderNum asc
+        order by buynum asc
     </select>
     <select id="findLowerLadderPrice" resultType="com.caimei365.commodity.model.vo.LadderPriceVo">
         select id,
@@ -76,13 +82,16 @@
     </select>
     <select id="findMaxLadderPrice" resultType="com.caimei365.commodity.model.vo.LadderPriceVo">
         select id,
-               skuId,
-               productId,
+               plp.skuId,
+               plp.productId,
                ladderNum,
+               cs.unit,
+               cs.stock,
                buyNum,
                buyPrice
-        from product_ladder_price
-        where skuId = #{skuId}
+        from product_ladder_price plp
+        left join cm_sku cs on cs.skuId=plp.skuId
+        where plp.skuId = #{skuId}
           and userType = 3
           and delFlag = 0
         order by buyprice desc
@@ -168,19 +177,37 @@
                ifnull(ladderPriceFlag, 0) as ladderPriceFlag,
                costCheckFlag,
                costProportional,
-               stock,
+               ifnull(stock, 0)           as stock,
                unit,
-               minBuyNumber
-        from cm_sku
+               ifnull(minBuyNumber,(SELECT buyNum FROM product_ladder_price WHERE skuId = cs.skuId ORDER BY buyNum asc LIMIT 1)) AS minBuyNumber
+        from cm_sku cs
         where productId = #{productId}
         ORDER BY price ASC
     </select>
     <select id="findLowPrice" resultType="com.caimei365.commodity.model.vo.ProductItemVo">
-        select plp.buyPrice as price, cs.unit as unit, cs.minBuyNumber as minBuyNumber, cs.skuId as skuId
+        select plp.buyPrice as price, cs.unit as unit, plp.buyNum as minBuyNumber, cs.skuId as skuId,cs.stock
         from product_ladder_price plp
-        left join cm_sku cs on plp.skuId = cs.skuId
+                 left join cm_sku cs on plp.skuId = cs.skuId
         where plp.productId = #{productId}
-        order by buyPrice asc
+        order by buynum asc
         limit 1
     </select>
+    <select id="getSaleOutFlag" resultType="java.lang.Integer">
+        SELECT COUNT(*)
+        FROM cm_sku
+        WHERE stock > 0
+          AND productId = #{productId}
+    </select>
+    <select id="findSkusOutOfPrice" resultType="com.caimei365.commodity.model.dto.Sku">
+        select skuId,
+               ifnull(ladderPriceFlag, 0) as ladderPriceFlag,
+               costCheckFlag,
+               costProportional,
+               ifnull(stock, 0)           as stock,
+               unit,
+               ifnull(minBuyNumber,(SELECT buyNum FROM product_ladder_price WHERE skuId = cs.skuId ORDER BY buyNum asc LIMIT 1)) AS minBuyNumber
+        from cm_sku cs
+        where productId = #{productId}
+        ORDER BY price ASC
+    </select>
 </mapper>

+ 2 - 2
src/main/resources/mapper/SearchMapper.xml

@@ -27,8 +27,8 @@
         IFNULL(p.visibility,3) as p_visibility,
         ifnull(p.newvalidflag,0) as p_newvalidflag,
         p.productType as p_product_type,
-        (select unit from cm_sku where p.productID=#{productId} order by price asc LIMIT 1) as p_unit,
-        (select price from cm_sku where p.productID=#{productId} order by price asc LIMIT 1) as p_price
+        (select unit from cm_sku where productID=#{productId} order by price asc LIMIT 1) as p_unit,
+        (select price from cm_sku where productID=#{productId} order by price asc LIMIT 1) as p_price
     </sql>
     <sql id="Product_Joins">
         left join tinytype as t on p.tinyTypeID = t.tinyTypeID

+ 5 - 5
src/main/resources/mapper/SellerMapper.xml

@@ -7,15 +7,15 @@
                p.name,
                p.aliasName,
                p.mainImage       as image,
-               (select unit from cm_sku where p.productID=p.productID order by price asc limit 1)as unit,
+               (select unit from cm_sku where productID=p.productID order by price asc limit 1)as unit,
                p.productCode     as code,
                p.priceFlag,
-               (select price from cm_sku where p.productID=p.productID order by price asc limit 1)as price,
+               (select price from cm_sku where productID=p.productID order by price asc limit 1)as price,
                p.shopID          as shopId,
                p.searchKey       as keyword,
-               (select minBuyNumber from cm_sku where p.productID=p.productID order by price asc limit 1) as minBuyNumber,
-               (select ladderPriceFlag from cm_sku where p.productID=p.productID order by price asc limit 1) as ladderPriceFlag,
-               (select normalPrice from cm_sku where p.productID=p.productID order by price asc limit 1)as normalPrice,
+               (select minBuyNumber from cm_sku where productID=p.productID order by price asc limit 1) as minBuyNumber,
+               (select ladderPriceFlag from cm_sku where productID=p.productID order by price asc limit 1) as ladderPriceFlag,
+               (select normalPrice from cm_sku where productID=p.productID order by price asc limit 1)as normalPrice,
                p.step,
                p.shopID          as shopId,
                p.taxPoint        as taxRate,