Browse Source

采美sku bugfix

zhijiezhao 2 years ago
parent
commit
9955b763d4

+ 70 - 43
src/main/java/com/caimei365/commodity/components/PriceUtilService.java

@@ -7,6 +7,7 @@ import com.caimei365.commodity.model.dto.Sku;
 import com.caimei365.commodity.model.vo.*;
 import com.caimei365.commodity.utils.ImageUtils;
 import com.caimei365.commodity.utils.MathUtil;
+import com.google.common.util.concurrent.AtomicDouble;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
@@ -18,6 +19,7 @@ import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
 
@@ -86,11 +88,11 @@ public class PriceUtilService {
 
     /**
      * 根据用户id设置详细价格
-     *
+     * ind=1不屏蔽价格
      * @param price  商品价格类
      * @param userId 用户Id
      */
-    public void setPriceByUserId(PriceVo price, Integer userId) {
+    public void setPriceByUserId(PriceVo price, Integer userId, Integer ind) {
         // 根据用户Id查询用户身份: 0个人,1协销,2会员机构,3供应商,4普通机构
         Integer identity = priceMapper.getIdentityByUserId(userId);
         if (null == identity) {
@@ -127,19 +129,20 @@ public class PriceUtilService {
         // 设置价格标志(协销|价格公开|仅对医美机构公开|仅对会员机构公开|供应商自己的商品)
         boolean setFlag = identity == 1 || priceFlag == 0 || (priceFlag == 3 && clubType == 1) || (priceFlag == 2 && (identity == 2 || isSuperVip)) || isShopOwn;
 
-        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);
+        List<Sku> skus = priceMapper.findSkus(price.getProductId());
+        AtomicDouble atomicDouble = new AtomicDouble();
+        atomicDouble.set(skus.get(0).getPrice());
+        int size = skus.size();
+        //税费标志
+        boolean taxFlag = "0".equals(price.getIncludedTax()) && ("1".equals(price.getInvoiceType()) || "2".equals(price.getInvoiceType()));
+        //未设置价格
+        price.setLadderPriceFlag(0);
+        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());
         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);
@@ -150,14 +153,18 @@ public class PriceUtilService {
                     price.setSvipPriceTag(MathUtil.div(price.getSvipDiscount(), 10, 1) + "折");
                     if (isSuperVip) {
                         // 超级会员用户设置优惠价
+                        price.setOriginalPrice(atomicDouble.get());
+                        s.setOriginalPrice(s.getPrice());
                         svipDiscountPrice = MathUtil.div(MathUtil.mul(s.getPrice(), price.getSvipDiscount()), 100, 2);
                         s.setPrice(svipDiscountPrice.doubleValue());
+                        price.setPrice(svipDiscountPrice.doubleValue());
                     }
                 } else if (2 == price.getSvipPriceType()) {
                     // 直接优惠价
                     if (isSuperVip) {
                         // 超级会员用户设置优惠价
                         s.setPrice(svipDiscountPrice.doubleValue());
+                        price.setPrice(svipDiscountPrice.doubleValue());
                     }
                     if (taxFlag) {
                         //添加税费
@@ -176,40 +183,58 @@ public class PriceUtilService {
                     promotions.setGiftList(giftList);
                 }
                 if (promotions.getType() == 1 && promotions.getMode() == 1 && null != promotions.getTouchPrice()) {
+                    s.setOriginalPrice(s.getPrice());
+                    price.setOriginalPrice(atomicDouble.get());
                     s.setPrice(promotions.getTouchPrice());
+                    price.setPrice(promotions.getTouchPrice());
                 }
                 price.setPromotions(promotions);
             } else {
                 if (null != userId) {
                     if (1 == s.getLadderPriceFlag()) {
-                        // 阶梯价
-                        LadderPriceVo lowerPrice = priceMapper.findLowerLadderPrice(s.getSkuId());
+                        // sku的阶梯价
                         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());
-                            }
-                        } else {
-                            s.setLadderPriceFlag(0);
-                        }
+                        s.setMinBuyNumber(lowerBuyNum.getBuyNum());
+                        s.setPrice(lowerBuyNum.getBuyPrice());
+                        s.setStock(lowerBuyNum.getStock());
+                        s.setUnit(lowerBuyNum.getUnit());
                         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());
+                        if (1 == size) {
+                            //1.对于只有一个SKU的商品,各个商品列表直接显示机构价即可:若是阶梯价,则显示第一级阶梯的价格:
+                            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 {
+                            //2.对于有多个SKU的商品,各个商品列表显示所有SKU中最低的价格:
+                            // 若SKU中,全部都是阶梯价,则显示所有SKU中第一级阶梯的价格中的最低价,
+                            // 若SKU中,使用阶梯价和不使用阶梯价(只是用机构价》并存,则用机构价和第一级阶梯价比大小,展示最小的价格
+                            // skuid分组取第一阶梯中最便宜的
+                            ProductItemVo lowLadderPrice = priceMapper.findLowPriceOfAll(price.getProductId());
+                            ProductItemVo lowAllPrice = priceMapper.findLowPriceOfPrice(price.getProductId());
+                            if (null != lowLadderPrice) {
+                                ProductItemVo productItemVo = lowLadderPrice.getPrice() > lowAllPrice.getPrice() ? lowAllPrice : lowLadderPrice;
+                                price.setPrice(productItemVo.getPrice());
+                                price.setSkuId(productItemVo.getSkuId());
+                                price.setMinBuyNumber(productItemVo.getMinBuyNumber());
+                                price.setUnit(productItemVo.getUnit());
+                                price.setStock(productItemVo.getStock());
+                            } else {
+                                price.setPrice(lowAllPrice.getPrice());
+                                price.setSkuId(lowAllPrice.getSkuId());
+                                price.setMinBuyNumber(lowAllPrice.getMinBuyNumber());
+                                price.setUnit(lowAllPrice.getUnit());
+                                price.setStock(lowAllPrice.getStock());
+                            }
+                        }
                     } else {
-                        price.setLadderPriceFlag(0);
                         // 复购价
                         Double repurchase = priceMapper.getRepurchasePrice(s.getSkuId(), userId);
                         if (null != repurchase && repurchase > 0) {
@@ -228,16 +253,16 @@ public class PriceUtilService {
                 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添加税费
+        if (taxFlag) {
+            BigDecimal thisTaxFee = MathUtil.div(MathUtil.mul(price.getPrice(), price.getTaxRate()), 100, 2);
+            price.setPrice(MathUtil.add(price.getPrice(), thisTaxFee).doubleValue());
+            BigDecimal originalTaxFee = MathUtil.div(MathUtil.mul(price.getOriginalPrice(), price.getTaxRate()), 100, 2);
+            price.setOriginalPrice(MathUtil.add(price.getOriginalPrice(), originalTaxFee).doubleValue());
         }
         price.setSkus(skus);
-        if (!setFlag) {
+        // 身份不对
+        if (!setFlag && 1 != ind) {
             price.setSkus(priceMapper.findSkusOutOfPrice(price.getProductId()));
             price.setUserIdentity(0);
             if (null != promotions) {
@@ -250,21 +275,23 @@ public class PriceUtilService {
                 price.setActStatus(0);
             }
         }
+        log.info("看看pirce----------------"+price);
     }
 
     /**
      * 设置商品主图及价格
+     * ind=1不屏蔽价格
      *
      * @param userId  用户Id
      * @param product ProductItemVo
      */
-    public void setProductDetails(Integer userId, ProductItemVo product) {
+    public void setProductDetails(Integer userId, ProductItemVo product, Integer ind) {
         // 设置图片
         product.setImage(ImageUtils.getImageURL("product", product.getImage(), 0, domain));
         // 数据库获取基本价格信息
         PriceVo price = priceMapper.getDetailPrice(product.getProductId());
         // 根据用户id设置详细价格
-        setPriceByUserId(price, userId);
+        setPriceByUserId(price, userId, ind);
         // 设置价格
         product.setActStatus(price.getActStatus());
         product.setPromotions(price.getPromotions());

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

@@ -91,4 +91,8 @@ public interface PriceMapper {
     Integer getSaleOutFlag(Integer productId);
 
     List<Sku> findSkusOutOfPrice(Integer productId);
+
+    ProductItemVo findLowPriceOfAll(Integer productId);
+
+    ProductItemVo findLowPriceOfPrice(Integer productId);
 }

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

@@ -17,6 +17,8 @@ import java.util.List;
 public class PriceVo implements Serializable {
     private static final long serialVersionUID = 1L;
 
+    private Double originalPrice;
+
     private Integer stock;
 
     private String unit;

+ 2 - 8
src/main/java/com/caimei365/commodity/service/impl/CouponServiceImpl.java

@@ -125,7 +125,7 @@ public class CouponServiceImpl implements CouponService {
         List<ProductItemVo> productList = couponMapper.findCouponProduct(couponId, source, identity);
         productList.forEach(p -> {
             p.setCouponsLogo(true);
-            priceUtilService.setProductDetails(userId, p);
+            priceUtilService.setProductDetails(userId, p, 0);
         });
         PageInfo<ProductItemVo> pageInfo = new PageInfo<>(productList);
         map.put("coupon", coupon);
@@ -167,12 +167,6 @@ public class CouponServiceImpl implements CouponService {
     }
 
 
-
-
-
-
-
-
     @Transactional(rollbackFor = Exception.class)
     @Override
     public ResponseJson<CouponVo> redeemCoupons(RedeemCouponsDto redeemCouponsDto) {
@@ -374,7 +368,7 @@ public class CouponServiceImpl implements CouponService {
                         // 调用 ToolsFeign 发送短信
                         String jsonStr = toolsFeign.getSendSms(mobile, content);
                         JSONObject parseObject = JSONObject.parseObject(jsonStr);
-                        if (0 == parseObject.getInteger("code")){
+                        if (0 == parseObject.getInteger("code")) {
                             returnValue.set(true);
                         }
                     }

+ 12 - 54
src/main/java/com/caimei365/commodity/service/impl/PageServiceImpl.java

@@ -173,7 +173,7 @@ public class PageServiceImpl implements PageService {
             floors.setFloorContent(floorContent);
 
             List<ProductItemVo> newFloorList = pageMapper.getNewFloorList(null, 1);
-            newFloorList.forEach(n -> priceUtilService.setProductDetails(userId, n));
+            newFloorList.forEach(n -> priceUtilService.setProductDetails(userId, n, 0));
             List<FloorImageVo> floorImageLists = new ArrayList<>();
             for (int i = 0; i < newFloorList.size(); i++) {
                 //优惠券标识
@@ -618,12 +618,17 @@ public class PageServiceImpl implements PageService {
         // 商品不处于已删除/待审核/审核未通过的状态
         if (0 != product.getValidFlag()) {
             // 数据库获取基本价格信息
-            List<Sku> skus = priceMapper.findSkus(productId);
             PriceVo price = priceMapper.getDetailPrice(productId);
-            price.setSkus(skus);
             // 根据用户id设置详细价格
-            priceUtilService.setPriceByUserId(price, userId);
+            priceUtilService.setPriceByUserId(price, userId, 0);
             // 设置价格
+            product.setPrice(price.getPrice());
+            product.setOriginalPrice(price.getPrice());
+            product.setMinBuyNumber(price.getMinBuyNumber());
+            product.setUnit(price.getUnit());
+            product.setStock(price.getStock());
+            product.setSkus(price.getSkus());
+            product.setSkuId(price.getSkuId());
             product.setActStatus(price.getActStatus());
             product.setPromotions(price.getPromotions());
             product.setUserIdentity(price.getUserIdentity());
@@ -632,56 +637,9 @@ public class PageServiceImpl implements PageService {
             AtomicBoolean lowPrice = new AtomicBoolean(false);
             //设置展示的价格等级
             product.setPriceGrade(priceUtilService.getPriceGrade(product.getPrice()));
-            // 设置阶梯价格详情
-            List<LadderPriceVo> ladder=new ArrayList<>();
-            skus.forEach(s -> {
-                s.setPriceGrade(priceUtilService.getPriceGrade(s.getPrice()));
-                if (1 == s.getLadderPriceFlag()) {
-                    List<LadderPriceVo> ladderPrices = priceMapper.getLadderPricesByProductId(s.getSkuId());
-                    TaxVo tax = priceMapper.getTaxByProductId(productId);
-                    if (!CollectionUtils.isEmpty(ladderPrices)) {
-                        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(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);
             product.setUserLike(like);
-            //游客屏蔽价格
-            if (null == userId || 0 == userId) {
-                skus.forEach(s -> {
-                    s.setCostPrice(0d);
-                    s.setPrice(0d);
-                    s.setNormalPrice(0d);
-                    s.setOriginalPrice(0d);
-                });
-            }
-            product.setSkus(skus);
         }
         // 设置售罄标记
         Integer flag = priceMapper.getSaleOutFlag(product.getProductId()) > 0 ? 0 : 1;
@@ -712,7 +670,7 @@ public class PageServiceImpl implements PageService {
             boolean state = (costFlag == 1 && MathUtil.compare(costPrice, discountPrice) >= 0) || MathUtil.compare(discountPrice, price) > 0;
             product.setRepurchasePriceState(state);
             // 设置商品主图及价格
-            priceUtilService.setProductDetails(userId, product);
+            priceUtilService.setProductDetails(userId, product, 0);
             //优惠券标识
             Boolean couponsLogo = pageService.setCouponsLogo(userId, product.getProductId(), 2);
             product.setCouponsLogo(couponsLogo);
@@ -1039,7 +997,7 @@ public class PageServiceImpl implements PageService {
                         iterator.remove();
                     } else {
                         // 商品价格
-                        priceUtilService.setProductDetails(userId, product);
+                        priceUtilService.setProductDetails(userId, product, 0);
                         // 设置商品主图
                         image.setListType(1);
                         image.setName(product.getName());
@@ -1270,7 +1228,7 @@ public class PageServiceImpl implements PageService {
         PageHelper.startPage(pageNum, pageSize);
         List<ProductItemVo> svipProductList = pageMapper.getSvipProductList();
         svipProductList.forEach(svipProduct -> {
-            priceUtilService.setProductDetails(userId, svipProduct);
+            priceUtilService.setProductDetails(userId, svipProduct, 0);
             svipProduct.setImage(ImageUtils.getImageURL("product", svipProduct.getImage(), 0, domain));
         });
         PaginationVo<ProductItemVo> svipProductPage = new PaginationVo<>(svipProductList);

+ 2 - 2
src/main/java/com/caimei365/commodity/service/impl/PriceServiceImpl.java

@@ -56,7 +56,7 @@ public class PriceServiceImpl implements PriceService {
         // 数据库获取基本价格信息
         PriceVo price = priceMapper.getDetailPrice(productId);
         // 根据用户id设置详细价格
-        priceUtilService.setPriceByUserId(price, userId);
+        priceUtilService.setPriceByUserId(price, userId, 0);
         log.info(">>>读取商品价格,商品ID:" + productId + ",用户ID:" + userId);
         return ResponseJson.success(price);
     }
@@ -86,7 +86,7 @@ public class PriceServiceImpl implements PriceService {
         List<PriceVo> priceList = priceMapper.getListPriceByProductIds(productIdList);
         for (PriceVo price : priceList) {
             // 根据用户id设置详细价格
-            priceUtilService.setPriceByUserId(price, userId);
+            priceUtilService.setPriceByUserId(price, userId, 0);
             Boolean couponsLogo = pageService.setCouponsLogo(userId, price.getProductId(), source);
             price.setCouponsLogo(couponsLogo);
         }

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

@@ -60,7 +60,7 @@ public class SellerServiceImpl implements SellerService {
         List<ProductItemVo> productList = sellerMapper.getSingleProductList(searchWord);
         productList.forEach(product -> {
             // 设置商品主图及价格
-            priceUtilService.setProductDetails(clubUserId, product);
+            priceUtilService.setProductDetails(clubUserId, product, 0);
         });
         PaginationVo<ProductItemVo> pageData = new PaginationVo<>(productList);
         return ResponseJson.success(pageData);
@@ -93,7 +93,7 @@ public class SellerServiceImpl implements SellerService {
                 product.setInitProductNum(0);
                 product.setTotalPrice(0d);
                 // 设置商品主图及价格
-                priceUtilService.setProductDetails(clubUserId, product);
+                priceUtilService.setProductDetails(clubUserId, product, 1);
                 //优惠券标识
                 Boolean couponsLogo = pageService.setCouponsLogo(clubUserId, product.getProductId(), 2);
                 product.setCouponsLogo(couponsLogo);
@@ -132,7 +132,7 @@ public class SellerServiceImpl implements SellerService {
             }
             productList.forEach(product -> {
                 // 设置商品主图及价格
-                priceUtilService.setProductDetails(userId, product);
+                priceUtilService.setProductDetails(userId, product, 0);
                 //优惠券标识
                 Boolean couponsLogo = pageService.setCouponsLogo(userId, product.getProductId(), source);
                 product.setCouponsLogo(couponsLogo);

+ 1 - 1
src/main/java/com/caimei365/commodity/service/impl/ShopServiceImpl.java

@@ -119,7 +119,7 @@ public class ShopServiceImpl implements ShopService {
                 product.setIsChecked(false);
                 // 设置商品主图及价格
                 Integer userId = shopMapper.getUserIdByshopId(shopId);
-                priceUtilService.setProductDetails(userId, product);
+                priceUtilService.setProductDetails(userId, product, 0);
             }
         }
         PaginationVo<ProductItemVo> productPage = new PaginationVo<>(productList);

+ 1 - 1
src/main/java/com/caimei365/commodity/service/impl/UserLikeServiceImpl.java

@@ -58,7 +58,7 @@ public class UserLikeServiceImpl implements UserLikeService {
         List<ProductItemVo> productList = likeMapper.findLikeList(userId);
         productList.forEach(product -> {
             // 设置商品主图及价格
-            priceUtilService.setProductDetails(userId, product);
+            priceUtilService.setProductDetails(userId, product, 0);
             //优惠券标识
             Boolean couponsLogo = pageService.setCouponsLogo(userId, product.getProductId(), 2);
             product.setCouponsLogo(couponsLogo);

+ 34 - 9
src/main/resources/mapper/PriceMapper.xml

@@ -60,7 +60,7 @@
                buyPrice,
                unit
         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.skuId = #{skuId}
           and userType = 3
           and delFlag = 0
@@ -90,7 +90,7 @@
                buyNum,
                buyPrice
         from product_ladder_price plp
-        left join cm_sku cs on cs.skuId=plp.skuId
+                 left join cm_sku cs on cs.skuId = plp.skuId
         where plp.skuId = #{skuId}
           and userType = 3
           and delFlag = 0
@@ -174,18 +174,22 @@
                price,
                normalPrice,
                costPrice,
-               ifnull(ladderPriceFlag, 0) as ladderPriceFlag,
+               ifnull(ladderPriceFlag, 0)                                                                           as ladderPriceFlag,
                costCheckFlag,
                costProportional,
-               ifnull(stock, 0)           as stock,
+               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
+               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, plp.buyNum as minBuyNumber, cs.skuId as skuId,cs.stock
+        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
         where plp.productId = #{productId}
@@ -200,14 +204,35 @@
     </select>
     <select id="findSkusOutOfPrice" resultType="com.caimei365.commodity.model.dto.Sku">
         select skuId,
-               ifnull(ladderPriceFlag, 0) as ladderPriceFlag,
+               ifnull(ladderPriceFlag, 0)                                                                           as ladderPriceFlag,
                costCheckFlag,
                costProportional,
-               ifnull(stock, 0)           as stock,
+               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
+               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="findLowPriceOfAll" resultType="com.caimei365.commodity.model.vo.ProductItemVo">
+        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
+        where plp.productId = #{productId}
+        GROUP BY plp.skuId
+        order by plp.buyPrice asc
+        limit 1
+    </select>
+    <select id="findLowPriceOfPrice" resultType="com.caimei365.commodity.model.vo.ProductItemVo">
+        SELECT price, unit, skuId, stock,
+        ifnull(minBuyNumber, (SELECT buyNum FROM product_ladder_price WHERE skuId = cm_sku.skuId ORDER BY buyNum asc LIMIT 1)) AS minBuyNumber
+        FROM cm_sku
+        WHERE productId = #{productId}
+        ORDER BY price ASC
+        LIMIT 1
+    </select>
 </mapper>