zhijiezhao 2 vuotta sitten
vanhempi
commit
89ea49335d
25 muutettua tiedostoa jossa 435 lisäystä ja 343 poistoa
  1. 4 2
      src/main/java/com/caimei365/order/components/ProductService.java
  2. 38 28
      src/main/java/com/caimei365/order/controller/CartClubApi.java
  3. 6 6
      src/main/java/com/caimei365/order/controller/CartSellerApi.java
  4. 3 3
      src/main/java/com/caimei365/order/controller/OrderSubmitApi.java
  5. 5 5
      src/main/java/com/caimei365/order/mapper/BaseMapper.java
  6. 9 9
      src/main/java/com/caimei365/order/mapper/CartClubMapper.java
  7. 6 6
      src/main/java/com/caimei365/order/mapper/CartSellerMapper.java
  8. 2 2
      src/main/java/com/caimei365/order/mapper/SubmitMapper.java
  9. 10 5
      src/main/java/com/caimei365/order/model/dto/CartDto.java
  10. 2 0
      src/main/java/com/caimei365/order/model/po/CartPo.java
  11. 2 0
      src/main/java/com/caimei365/order/model/po/OrderProductPo.java
  12. 2 0
      src/main/java/com/caimei365/order/model/po/PurchaseHistoryPo.java
  13. 2 0
      src/main/java/com/caimei365/order/model/po/PurchasePricePo.java
  14. 8 0
      src/main/java/com/caimei365/order/model/vo/CartItemVo.java
  15. 2 0
      src/main/java/com/caimei365/order/model/vo/CartShopVo.java
  16. 4 0
      src/main/java/com/caimei365/order/model/vo/LadderPriceVo.java
  17. 2 2
      src/main/java/com/caimei365/order/service/CartClubService.java
  18. 2 2
      src/main/java/com/caimei365/order/service/CartSellerService.java
  19. 41 34
      src/main/java/com/caimei365/order/service/impl/CartClubServiceImpl.java
  20. 11 11
      src/main/java/com/caimei365/order/service/impl/CartSellerServiceImpl.java
  21. 14 12
      src/main/java/com/caimei365/order/service/impl/SubmitServiceImpl.java
  22. 58 44
      src/main/resources/mapper/BaseMapper.xml
  23. 59 50
      src/main/resources/mapper/CartClubMapper.xml
  24. 130 111
      src/main/resources/mapper/CartSellerMapper.xml
  25. 13 11
      src/main/resources/mapper/SubmitMapper.xml

+ 4 - 2
src/main/java/com/caimei365/order/components/ProductService.java

@@ -60,7 +60,7 @@ public class ProductService {
      */
     public void setCartLadderPrices(CartItemVo cartItemVo, boolean taxFlag) {
         // 阶梯价列表
-        List<LadderPriceVo> ladderPrices = baseMapper.getLadderPriceList(cartItemVo.getProductId());
+        List<LadderPriceVo> ladderPrices = baseMapper.getLadderPriceList(cartItemVo.getSkuId());
         if (!CollectionUtils.isEmpty(ladderPrices)) {
             IntStream.range(0, ladderPrices.size()).forEach(i -> {
                 boolean isThisLadder;
@@ -266,7 +266,7 @@ public class ProductService {
             // 机构价大于成本价   ---成本价已经在整理订单商品时计算好(固定或比例)
             boolean costFlag = MathUtil.compare(orderProduct.getPrice(), orderProduct.getCostPrice()) > 0;
             //  查询当前商品复购价信息
-            PurchasePricePo purchase = baseMapper.getPurchasePricePo(order.getUserId(), orderProduct.getProductId());
+            PurchasePricePo purchase = baseMapper.getPurchasePricePo(order.getUserId(), orderProduct.getSkuId());
             // 已有复购价
             if (null != purchase) {
                 // 复购价大于机构价(降价)
@@ -299,6 +299,7 @@ public class ProductService {
                     purchase.setCreateTime(curDateStr);
                     purchase.setUpdateTime(curDateStr);
                     purchase.setDelFlag(0);
+                    purchase.setSkuId(orderProduct.getSkuId());
                     // 新增复购价格库
                     baseMapper.insertPurchasePrice(purchase);
                     historyFlag = true;
@@ -315,6 +316,7 @@ public class ProductService {
                 purchaseHistory.setCurrentCostPrice(orderProduct.getCostPrice());
                 purchaseHistory.setPrice(orderProduct.getPrice());
                 purchaseHistory.setCreateTime(curDateStr);
+                purchaseHistory.setSkuId(orderProduct.getSkuId());
                 purchaseHistory.setDelFlag(0);
                 baseMapper.insertPurchaseHistory(purchaseHistory);
                 log.info(note + ">>>>>>>>>>>新增历史复购价记录(insert[repeat_purchase_price_history])ProductId:" + orderProduct.getProductId() + ",orderId:" + order.getOrderId());

+ 38 - 28
src/main/java/com/caimei365/order/controller/CartClubApi.java

@@ -21,7 +21,7 @@ import java.util.Map;
  * @author : Charles
  * @date : 2021/6/25
  */
-@Api(tags="机构购物车API")
+@Api(tags = "机构购物车API")
 @RestController
 @RequiredArgsConstructor
 @RequestMapping("/order/club")
@@ -38,7 +38,7 @@ public class CartClubApi {
             @ApiImplicitParam(required = false, name = "source", value = "来源 : 1 网站 ; 2 小程序")
     })
     @GetMapping("/cart/list")
-    public ResponseJson<Map<String,Object>> getShoppingCartList(Integer userId, Integer source) {
+    public ResponseJson<Map<String, Object>> getShoppingCartList(Integer userId, Integer source) {
         if (null == userId) {
             return ResponseJson.error("用户Id不能为空!", null);
         }
@@ -77,18 +77,22 @@ public class CartClubApi {
      * @param cartDto {
      *                userId       用户ID
      *                productId    商品id
+     *                skuId        skuId
      *                productCount 商品数量
-     * }
+     *                }
      */
     @ApiOperation("添加购物车(旧:/shoppingCart/addCart)")
     @PostMapping("/cart/add")
-    public ResponseJson<Integer> addShoppingCart(CartDto cartDto){
+    public ResponseJson<Integer> addShoppingCart(CartDto cartDto) {
         if (null == cartDto.getUserId()) {
             return ResponseJson.error("用户Id不能为空!", null);
         }
         if (null == cartDto.getProductId()) {
             return ResponseJson.error("商品Id不能为空!", null);
         }
+        if (null == cartDto.getSkuId()) {
+            return ResponseJson.error("skuId不能为空!", null);
+        }
         if (null == cartDto.getProductCount()) {
             return ResponseJson.error("商品数量不能为空!", null);
         }
@@ -101,14 +105,14 @@ public class CartClubApi {
      * @param cartDto {
      *                userId       用户ID
      *                productInfo  商品及数量信息:[   // 商品id,数量
-     *                                          {"productId": 2789, "productCount": 1},
-     *                                          {"productId": 2790, "productCount": 1}
-     *                                          ]
-     * }
+     *                {"productId": 2789, "skuId":123, "productCount": 1},
+     *                {"productId": 2790, "skuId":123, "productCount": 1}
+     *                ]
+     *                }
      */
     @ApiOperation("批量添加购物车(旧:/shoppingCart/addCarts)")
     @PostMapping("/cart/add/bulk")
-    public ResponseJson<Integer> addShoppingCartBulk(CartDto cartDto){
+    public ResponseJson<Integer> addShoppingCartBulk(CartDto cartDto) {
         if (null == cartDto.getUserId()) {
             return ResponseJson.error("用户Id不能为空!", null);
         }
@@ -126,11 +130,11 @@ public class CartClubApi {
      *                userId       用户ID
      *                productId    商品id
      *                productCount 商品数量
-     * }
+     *                }
      */
     @ApiOperation("更新购物车(旧:/shoppingCart/update)")
     @PostMapping("/cart/update")
-    public ResponseJson<Integer> updateShoppingCart(CartDto cartDto){
+    public ResponseJson<Integer> updateShoppingCart(CartDto cartDto) {
         if (null == cartDto.getUserId()) {
             return ResponseJson.error("用户Id不能为空!", null);
         }
@@ -148,17 +152,17 @@ public class CartClubApi {
      *
      * @param cartDto {
      *                userId       用户ID
-     *                productIds   商品ids,逗号隔开
-     * }
+     *                skuIds       skuIds,逗号隔开
+     *                }
      */
     @ApiOperation("删除购物车(旧:/shoppingCart/delete)")
     @PostMapping("/cart/delete")
-    public ResponseJson<Integer> deleteShoppingCart(CartDto cartDto){
+    public ResponseJson<Integer> deleteShoppingCart(CartDto cartDto) {
         if (null == cartDto.getUserId()) {
             return ResponseJson.error("用户Id不能为空!", null);
         }
-        if (StringUtils.isEmpty(cartDto.getProductIds())) {
-            return ResponseJson.error("商品Id集合不能为空!", null);
+        if (StringUtils.isEmpty(cartDto.getSkuIds())) {
+            return ResponseJson.error("skuId集合不能为空!", null);
         }
         return cartClubService.deleteShoppingCart(cartDto);
     }
@@ -169,18 +173,18 @@ public class CartClubApi {
     @ApiOperation("购物车结算(旧:/order/confirm)")
     @ApiImplicitParams({
             @ApiImplicitParam(required = false, name = "userId", value = "用户Id"),
-            @ApiImplicitParam(required = false, name = "productIds", value = "商品ids,逗号隔开"),
+            @ApiImplicitParam(required = false, name = "skuIds", value = "skuIds,逗号隔开"),
             @ApiImplicitParam(required = false, name = "source", value = "来源 : 1 网站 ; 2 小程序")
     })
     @GetMapping("/cart/settlement")
-    public ResponseJson<Map<String, Object>> settlementShoppingCart(Integer userId, String productIds, Integer source) {
+    public ResponseJson<Map<String, Object>> settlementShoppingCart(Integer userId, String skuIds, Integer source) {
         if (null == userId) {
             return ResponseJson.error("用户Id不能为空!", null);
         }
-        if (StringUtils.isEmpty(productIds)) {
-            return ResponseJson.error("商品Id集合不能为空!", null);
+        if (StringUtils.isEmpty(skuIds)) {
+            return ResponseJson.error("skuId集合不能为空!", null);
         }
-        return cartClubService.settlementShoppingCart(userId, productIds, source);
+        return cartClubService.settlementShoppingCart(userId, skuIds, source);
     }
 
     /**
@@ -190,18 +194,22 @@ public class CartClubApi {
      *                userId       用户ID
      *                productId    商品id
      *                productCount 商品数量
+     *                skuId
      *                source       来源 : 1 网站 ; 2 小程序
-     * }
+     *                }
      */
     @ApiOperation("立即购买(旧:/order/confirm)")
     @GetMapping("/product/settlement")
-    public ResponseJson<Map<String, Object>> buyNowProduct(CartDto cartDto){
+    public ResponseJson<Map<String, Object>> buyNowProduct(CartDto cartDto) {
         if (null == cartDto.getUserId()) {
             return ResponseJson.error("用户Id不能为空!", null);
         }
         if (null == cartDto.getProductId()) {
             return ResponseJson.error("商品Id不能为空!", null);
         }
+        if (null == cartDto.getSkuId()) {
+            return ResponseJson.error("skuId不能为空!", null);
+        }
         if (null == cartDto.getProductCount()) {
             return ResponseJson.error("商品数量不能为空!", null);
         }
@@ -212,10 +220,10 @@ public class CartClubApi {
     @GetMapping("/product/buynow")
     @ApiImplicitParams({
             @ApiImplicitParam(required = false, name = "userId", value = "用户Id"),
-            @ApiImplicitParam(required = false, name = "productInfo", value = "组合商品信息:Json字符串格式[{\"id\":4351,\"count\":1},{}]"),
+            @ApiImplicitParam(required = false, name = "productInfo", value = "组合商品信息:Json字符串格式[{\"id\":4351,\"count\":1,\"skuId\":123},{}]"),
             @ApiImplicitParam(required = false, name = "source", value = "来源 : 1 网站 ; 2 小程序")
     })
-    public ResponseJson<Map<String, Object>> MultipleBuyNow(Integer userId, String productInfo, Integer source){
+    public ResponseJson<Map<String, Object>> MultipleBuyNow(Integer userId, String productInfo, Integer source) {
         if (null == userId) {
             return ResponseJson.error("用户Id不能为空!", null);
         }
@@ -224,6 +232,7 @@ public class CartClubApi {
         }
         return cartClubService.MultipleBuyNow(userId, productInfo, source);
     }
+
     /**
      * 获取结算商品运费
      */
@@ -246,6 +255,7 @@ public class CartClubApi {
         }
         return cartClubService.getProductsPostage(userId, productIds, townId);
     }
+
     /**
      * 获取用户发票信息
      */
@@ -275,7 +285,7 @@ public class CartClubApi {
      */
     @ApiOperation("更新用户发票(旧:/personalCenter/invoice)")
     @PostMapping("/invoice/update")
-    public ResponseJson<Integer> updateUserInvoice(InvoiceDto invoiceDto){
+    public ResponseJson<Integer> updateUserInvoice(InvoiceDto invoiceDto) {
         if (null == invoiceDto.getUserId()) {
             return ResponseJson.error("用户Id不能为空!", null);
         }
@@ -298,8 +308,8 @@ public class CartClubApi {
             @ApiImplicitParam(required = false, name = "source", value = "来源: 1网站, 2小程序")
     })
     @GetMapping("/coupon")
-    public ResponseJson<Map<String, Object>>  getShopCoupons(Integer userId, Integer shopId, Integer source,
-                                   @RequestParam(name = "status", defaultValue = "1") Integer status) {
+    public ResponseJson<Map<String, Object>> getShopCoupons(Integer userId, Integer shopId, Integer source,
+                                                            @RequestParam(name = "status", defaultValue = "1") Integer status) {
         if (null == userId) {
             return ResponseJson.error("用户Id不能为空!", null);
         }

+ 6 - 6
src/main/java/com/caimei365/order/controller/CartSellerApi.java

@@ -36,7 +36,7 @@ public class CartSellerApi {
     @ApiImplicitParams({
             @ApiImplicitParam(required = false, name = "serviceProviderId", value = "协销Id"),
             @ApiImplicitParam(required = false, name = "clubId", value = "机构Id"),
-            @ApiImplicitParam(required = false, name = "againBuyProductIds", value = "再来一单商品Ids"),
+            @ApiImplicitParam(required = false, name = "againBuyProductIds", value = "再来一单商品skuIds"),
             @ApiImplicitParam(required = false, name = "pageNum", value = "页码"),
             @ApiImplicitParam(required = false, name = "pageSize", value = "每页数量")
     })
@@ -164,20 +164,20 @@ public class CartSellerApi {
     @ApiImplicitParams({
             @ApiImplicitParam(required = false, name = "serviceProviderId", value = "协销Id"),
             @ApiImplicitParam(required = false, name = "clubId", value = "机构Id"),
-            @ApiImplicitParam(required = false, name = "productIds", value = "商品ids,逗号隔开")
+            @ApiImplicitParam(required = false, name = "skuIds", value = "skuIds,逗号隔开")
     })
     @GetMapping("/cart/settlement")
-    public ResponseJson<Map<String, Object>> settlementSellerCart(Integer serviceProviderId, Integer clubId, String productIds) {
+    public ResponseJson<Map<String, Object>> settlementSellerCart(Integer serviceProviderId, Integer clubId, String skuIds) {
         if (null == serviceProviderId) {
             return ResponseJson.error("协销Id不能为空!", null);
         }
         if (null == clubId) {
             return ResponseJson.error("机构Id不能为空!", null);
         }
-        if (StringUtils.isEmpty(productIds)) {
-            return ResponseJson.error("商品Id集合不能为空!", null);
+        if (StringUtils.isEmpty(skuIds)) {
+            return ResponseJson.error("skuId集合不能为空!", null);
         }
-        return cartSellerService.settlementSellerCart(serviceProviderId, clubId, productIds);
+        return cartSellerService.settlementSellerCart(serviceProviderId, clubId, skuIds);
     }
 
     /**

+ 3 - 3
src/main/java/com/caimei365/order/controller/OrderSubmitApi.java

@@ -44,9 +44,9 @@ public class OrderSubmitApi {
      *                      { "shopId":1001,                         // 供应商Id
      *                        "splitCode:E123123"       //分账号
      *                        "note":备注,
-     *                        "productInfo":[                      // 商品id,数量,赠品数,商品类型
-     *                              {"productId": 2789, "productNum": 1, "presentNum":0,"productType":2},
-     *                              {"productId": 2789, "productNum": 1, "presentNum":0,"productType":0}
+     *                        "productInfo":[                      // skuId,数量,赠品数,商品类型
+     *                              {"skuId": 2789, "productNum": 1, "presentNum":0,"productType":2},
+     *                              {"skuId": 2789, "productNum": 1, "presentNum":0,"productType":0}
      *                          ]
      *                      },{多个供应商商品数据结构同上}
      *                  ],

+ 5 - 5
src/main/java/com/caimei365/order/mapper/BaseMapper.java

@@ -52,11 +52,11 @@ public interface BaseMapper {
     /**
      * 根据商品ID查询阶梯价列表
      */
-    List<LadderPriceVo> getLadderPriceList(Integer productId);
+    List<LadderPriceVo> getLadderPriceList(Integer skuId);
     /**
-     * 根据商品ID和用户ID 查询复购价
+     * 根据skuId和用户ID 查询复购价
      */
-    Double getRepurchasePrice(@Param("productId") Integer productId, @Param("userId") Integer userId);
+    Double getRepurchasePrice(@Param("skuId") Integer skuId, @Param("userId") Integer userId);
     /**
      * 供应商促销优惠活动
      * @param shopId 供应商Id
@@ -128,9 +128,9 @@ public interface BaseMapper {
     /**
      * 查询当前商品复购价信息
      * @param userId    机构用户Id
-     * @param productId 商品Id
+     * @param skuId     skuId
      */
-    PurchasePricePo getPurchasePricePo(Integer userId, Integer productId);
+    PurchasePricePo getPurchasePricePo(Integer userId, Integer skuId);
     /**
      * 更新复购价格库
      */

+ 9 - 9
src/main/java/com/caimei365/order/mapper/CartClubMapper.java

@@ -51,14 +51,14 @@ public interface CartClubMapper {
     /**
      * 删除购物车
      * @param userId     用户Id
-     * @param productIds 商品Id集合
+     * @param skuIds     skuIds
      */
-    void deleteCartByProductIds(@Param("userId") Integer userId, @Param("productIds") List<String> productIds);
+    void deleteCartByProductIds(@Param("userId") Integer userId, @Param("skuIds") List<String> skuIds);
     /**
      * 根据商品Ids获取购物车供应商列表
      * @param userId 用户Id
      */
-    List<CartShopVo> getCartShopsByProductIds(@Param("userId") Integer userId, @Param("productIds") List<String> productIds,@Param("status")Integer status);
+    List<CartShopVo> getCartShopsByProductIds(@Param("userId") Integer userId, @Param("skuIds") List<String> skuIds,@Param("status")Integer status);
 
     /**
      * 根据商品ids获取供应商列表
@@ -70,15 +70,15 @@ public interface CartClubMapper {
      * 根据商品Ids获取购物车已上架商品列表
      * @param userId 用户Id
      */
-    List<CartItemVo> getCartProductsByShopIdAndProductIds(@Param("userId") Integer userId,@Param("shopId")  Integer shopId, @Param("productIds") List<String> productIds,@Param("splitCode")String splitCode);
+    List<CartItemVo> getCartProductsByShopIdAndProductIds(@Param("userId") Integer userId,@Param("shopId")  Integer shopId, @Param("skuIds") List<String> skuIds,@Param("splitCode")String splitCode);
 
     /**
      * 根据商品id获取已上架商品列表
      * @param shopId
-     * @param productIds
+     * @param skuIdList
      * @return
      */
-    List<CartItemVo> getProductsByShopIdAndProductIds(@Param("shopId")  Integer shopId, @Param("productIds") List<String> productIds);
+    List<CartItemVo> getProductsByShopIdAndProductIds(@Param("shopId")  Integer shopId, @Param("skuIdList") List<Integer> skuIdList);
     /**
      * 删除用户发票信息
      */
@@ -96,10 +96,10 @@ public interface CartClubMapper {
      */
     InvoiceVo getUserInvoice(Integer userId);
     /**
-     * 根据商品Id获取下单商品信息
-     * @param productId 商品Id
+     * 根据skuId获取下单商品信息
+     * @param skuId
      */
-    CartItemVo getCartItemByProductId(Integer productId);
+    CartItemVo getCartItemByProductId(Integer skuId);
 
     List<Integer> findVipCoupon();
     /**

+ 6 - 6
src/main/java/com/caimei365/order/mapper/CartSellerMapper.java

@@ -67,24 +67,24 @@ public interface CartSellerMapper {
      * 删除购物车
      * @param serviceProviderId  协销Id
      * @param clubId             机构Id
-     * @param productIds         商品Id集合
+     * @param skuIds             skuIds
      */
-    void deleteSellerCartByProductIds(@Param("serviceProviderId") Integer serviceProviderId,@Param("clubId") Integer clubId, @Param("productIds") List<String> productIds);
+    void deleteSellerCartByProductIds(@Param("serviceProviderId") Integer serviceProviderId,@Param("clubId") Integer clubId, @Param("skuIds") List<String> skuIds);
     /**
      * 根据商品Ids获取购物车供应商列表
      * @param serviceProviderId  协销Id
      * @param clubId             机构Id
-     * @param productIds      商品Ids
+     * @param skuIds             skuIds
      */
-    List<CartShopVo> getCartShopsByProductIds(@Param("serviceProviderId") Integer serviceProviderId, @Param("clubId") Integer clubId, @Param("productIds") List<String> productIds);
+    List<CartShopVo> getCartShopsByProductIds(@Param("serviceProviderId") Integer serviceProviderId, @Param("clubId") Integer clubId, @Param("skuIds") List<String> skuIds);
     /**
      * 根据商品Ids获取购物车已上架商品列表
      * @param serviceProviderId  协销Id
      * @param clubId             机构Id
      * @param shopId             供应商Id
-     * @param productIds        商品Ids
+     * @param skuIds             skuIds
      */
-    List<CartItemVo> getCartProductsByProductIds(@Param("serviceProviderId") Integer serviceProviderId, @Param("clubId") Integer clubId, @Param("shopId") Integer shopId, @Param("productIds") List<String> productIds);
+    List<CartItemVo> getCartProductsByProductIds(@Param("serviceProviderId") Integer serviceProviderId, @Param("clubId") Integer clubId, @Param("shopId") Integer shopId, @Param("skuIds") List<String> skuIds);
     /**
      * 根据商品Id获取二手商品
      * @param productId      商品Id

+ 2 - 2
src/main/java/com/caimei365/order/mapper/SubmitMapper.java

@@ -45,9 +45,9 @@ public interface SubmitMapper {
     /**
      * 获取数据库商品信息
      *
-     * @param productId 商品Id
+     * @param skuId     skuId
      */
-    OrderProductPo getProductDetails(Integer productId);
+    OrderProductPo getProductDetails(Integer skuId);
 
     /**
      * 抵扣后更新用户余额

+ 10 - 5
src/main/java/com/caimei365/order/model/dto/CartDto.java

@@ -19,6 +19,11 @@ public class CartDto implements Serializable {
      */
     @ApiModelProperty("用户id")
     private Integer userId;
+    /**
+     * skuId
+     */
+    @ApiModelProperty("skuId")
+    private Integer skuId;
     /**
      * 商品id
      */
@@ -30,10 +35,10 @@ public class CartDto implements Serializable {
     @ApiModelProperty("商品数量")
     private Integer productCount;
     /**
-     * 商品ids
+     * skuIds
      */
-    @ApiModelProperty("商品ids,删除购物车用,逗号分隔")
-    private String productIds;
+    @ApiModelProperty("skuIds,删除购物车用,逗号分隔")
+    private String skuIds;
     /**
      * 来源 : 1 网站 ; 2 小程序
      */
@@ -41,8 +46,8 @@ public class CartDto implements Serializable {
     private Integer source;
     /**
      * 商品及数量(批量加入用):[   // 商品id,数量
-     *                        {"productId": 2789, "productCount": 1},
-     *                        {"productId": 2790, "productCount": 1}
+     *                        {"productId": 2789,  "skuId":123, "productCount": 1},
+     *                        {"productId": 2790,  "skuId":123, "productCount": 1}
      *                     ]
      */
     @ApiModelProperty("商品及数量(批量加入用)")

+ 2 - 0
src/main/java/com/caimei365/order/model/po/CartPo.java

@@ -15,6 +15,8 @@ import java.util.Date;
 @Data
 public class CartPo implements Serializable {
     private static final long serialVersionUID = 1L;
+
+    private Integer skuId;
     /**
      * 购物车 cm_cartID
      */

+ 2 - 0
src/main/java/com/caimei365/order/model/po/OrderProductPo.java

@@ -16,6 +16,8 @@ import java.util.List;
 @Data
 public class OrderProductPo implements Serializable {
     private static final long serialVersionUID = 1L;
+
+    private Integer skuId;
     /**
      * 不包含单品满减的商品金额
      */

+ 2 - 0
src/main/java/com/caimei365/order/model/po/PurchaseHistoryPo.java

@@ -13,6 +13,8 @@ import java.io.Serializable;
 @Data
 public class PurchaseHistoryPo implements Serializable {
     private static final long serialVersionUID = 1L;
+
+    private Integer skuId;
     /**
      * id
      */

+ 2 - 0
src/main/java/com/caimei365/order/model/po/PurchasePricePo.java

@@ -14,6 +14,8 @@ import java.io.Serializable;
 @Data
 public class PurchasePricePo implements Serializable {
     private static final long serialVersionUID = 1L;
+
+    private Integer skuId;
     /**
      * id
      */

+ 8 - 0
src/main/java/com/caimei365/order/model/vo/CartItemVo.java

@@ -15,6 +15,14 @@ import java.util.List;
 @Data
 public class CartItemVo implements Serializable {
     private static final long serialVersionUID = 1L;
+    /**
+     * 赠品skuId
+     */
+    private Integer giftSkuId;
+    /**
+     * 购物车的商品skuId
+     */
+    private Integer skuId;
     /**
      * 购物车Id
      */

+ 2 - 0
src/main/java/com/caimei365/order/model/vo/CartShopVo.java

@@ -15,6 +15,8 @@ import java.util.List;
 public class CartShopVo implements Serializable {
     private static final long serialVersionUID = 1L;
     private Integer shopType;
+
+    private Integer skuId;
     /**
      * 供应商Id
      */

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

@@ -16,6 +16,10 @@ public class LadderPriceVo implements Serializable {
     private static final long serialVersionUID = 1L;
 
     private Integer id;
+    /**
+     * 阶梯价的skuId
+     */
+    private Integer skuId;
     /**
      * 商品id
      */

+ 2 - 2
src/main/java/com/caimei365/order/service/CartClubService.java

@@ -77,10 +77,10 @@ public interface CartClubService {
      * 购物车结算
      *
      * @param  userId       用户ID
-     * @param  productIds   商品ids,逗号隔开
+     * @param  skuIds   skuIds,逗号隔开
      * @param source 来源 : 1 网站 ; 2 小程序
      */
-    ResponseJson<Map<String, Object>> settlementShoppingCart(Integer userId, String productIds, Integer source);
+    ResponseJson<Map<String, Object>> settlementShoppingCart(Integer userId, String skuIds, Integer source);
 
     /**
      * 立即购买

+ 2 - 2
src/main/java/com/caimei365/order/service/CartSellerService.java

@@ -72,9 +72,9 @@ public interface CartSellerService {
      * 协销购物车结算
      * @param serviceProviderId 协销Id
      * @param clubId            机构Id
-     * @param productIds        商品Ids
+     * @param skuIds            skuIds
      */
-    ResponseJson<Map<String, Object>> settlementSellerCart(Integer serviceProviderId, Integer clubId, String productIds);
+    ResponseJson<Map<String, Object>> settlementSellerCart(Integer serviceProviderId, Integer clubId, String skuIds);
 
     /**
      * 协销二手商品立即购买

+ 41 - 34
src/main/java/com/caimei365/order/service/impl/CartClubServiceImpl.java

@@ -73,7 +73,7 @@ public class CartClubServiceImpl implements CartClubService {
      */
     @Override
     public ResponseJson<Map<String, Object>> getShoppingCartList(Integer userId, Integer source) {
-        /*
+        /**
          * 初始化返回数据
          */
         // 购物车供应商列表
@@ -92,7 +92,7 @@ public class CartClubServiceImpl implements CartClubService {
         AtomicDouble svipReducedPrice = new AtomicDouble(0);
         // 统计总划线价
         AtomicDouble totalOriginalPrice = new AtomicDouble(0);
-        /*
+        /**
          * 处理数据
          */
         // 促销活动(总)
@@ -113,7 +113,7 @@ public class CartClubServiceImpl implements CartClubService {
         userIdentity = null == userIdentity ? 0 : userIdentity;
         // 会员机构类型:1医美,2生美
         Integer userClubType = 0;
-        if (null != userIdentity && userIdentity == 2) {
+        if (userIdentity == 2) {
             userClubType = cartClubMapper.getClubTypeById(userId);
             userClubType = null == userClubType ? 0 : userClubType;
         }
@@ -230,7 +230,7 @@ public class CartClubServiceImpl implements CartClubService {
                                         productService.setCartLadderPrices(cartItemVo, taxFlag);
                                     } else {
                                         // 复购价
-                                        Double repurchase = baseMapper.getRepurchasePrice(cartItemVo.getProductId(), userId);
+                                        Double repurchase = baseMapper.getRepurchasePrice(cartItemVo.getSkuId(), userId);
                                         if (null != repurchase && repurchase > 0) {
                                             if (taxFlag) {
                                                 BigDecimal cartItemTax = MathUtil.div(MathUtil.mul(repurchase, cartItemVo.getTaxRate()), 100, 2);
@@ -603,7 +603,7 @@ public class CartClubServiceImpl implements CartClubService {
                         cartItemVo.setLadderPrices(null);
                     } else {
                         // 复购价
-                        Double repurchase = baseMapper.getRepurchasePrice(cartItemVo.getProductId(), userId);
+                        Double repurchase = baseMapper.getRepurchasePrice(cartItemVo.getSkuId(), userId);
                         if (null != repurchase && repurchase > 0) {
                             if (taxFlag) {
                                 BigDecimal cartItemTax = MathUtil.div(MathUtil.mul(repurchase, cartItemVo.getTaxRate()), 100, 2);
@@ -685,10 +685,11 @@ public class CartClubServiceImpl implements CartClubService {
             cart.setUserId(cartDto.getUserId());
             cart.setProductId(cartDto.getProductId());
             cart.setProductCount(cartDto.getProductCount());
+            cart.setSkuId(cartDto.getSkuId());
             Integer shopId = baseMapper.getShopIdByproductId(cartDto.getProductId());
             cart.setShopId(shopId);
-            //判断是否是再次购买
-            Double repurchase = baseMapper.getRepurchasePrice(cartDto.getProductId(), cartDto.getUserId());
+            //判断是否是再次购买  由商品id改为skuid
+            Double repurchase = baseMapper.getRepurchasePrice(cartDto.getSkuId(), cartDto.getUserId());
             if (null != repurchase && repurchase > 0) {
                 // 再次购买
                 cart.setReBuyFlag(1);
@@ -705,9 +706,9 @@ public class CartClubServiceImpl implements CartClubService {
      *
      * @param cartDto {
      *                userId       用户ID
-     *                productInfo  商品及数量信息:[   // 商品id数量
-     *                {"productId": 2789, "productCount": 1},
-     *                {"productId": 2790, "productCount": 1}
+     *                productInfo  商品及数量信息:[   // 商品id,skuId,数量
+     *                {"productId": 2789,  "skuId":123, "productCount": 1},
+     *                {"productId": 2790,  "skuId":123, "productCount": 1}
      *                ]
      *                }
      */
@@ -727,10 +728,12 @@ public class CartClubServiceImpl implements CartClubService {
             JSONObject tempObj = (JSONObject) infoObject;
             Integer productId = (Integer) tempObj.get("productId");
             Integer productCount = (Integer) tempObj.get("productCount");
+            Integer skuId = (Integer) tempObj.get("skuId");
             CartDto cartBo = new CartDto();
             cartBo.setUserId(cartDto.getUserId());
             cartBo.setProductId(productId);
             cartBo.setProductCount(productCount);
+            cartBo.setSkuId(skuId);
             saveShoppingCart(cartBo);
         }
         // 获取购物车数量(商品种类数)
@@ -770,14 +773,14 @@ public class CartClubServiceImpl implements CartClubService {
      */
     @Override
     public ResponseJson<Integer> deleteShoppingCart(CartDto cartDto) {
-        List<String> productIdList = Lists.newArrayList();
-        if (cartDto.getProductIds().contains(",")) {
-            String[] productArr = cartDto.getProductIds().split(",");
-            Collections.addAll(productIdList, productArr);
+        List<String> skuIdList = Lists.newArrayList();
+        if (cartDto.getSkuIds().contains(",")) {
+            String[] productArr = cartDto.getSkuIds().split(",");
+            Collections.addAll(skuIdList, productArr);
         } else {
-            productIdList.add(cartDto.getProductIds());
+            skuIdList.add(cartDto.getSkuIds());
         }
-        cartClubMapper.deleteCartByProductIds(cartDto.getUserId(), productIdList);
+        cartClubMapper.deleteCartByProductIds(cartDto.getUserId(), skuIdList);
         // 获取购物车数量(商品种类数)
         int cartCount = getCartCount(cartDto.getUserId());
         return ResponseJson.success("删除成功!返回购物车数量", cartCount);
@@ -841,11 +844,11 @@ public class CartClubServiceImpl implements CartClubService {
      * 购物车结算
      *
      * @param userId     用户ID
-     * @param productIds 商品ids,逗号隔开
+     * @param skuIds     skuIds,逗号隔开
      * @param source     来源 : 1 网站 ; 2 小程序
      */
     @Override
-    public ResponseJson<Map<String, Object>> settlementShoppingCart(Integer userId, String productIds, Integer source) {
+    public ResponseJson<Map<String, Object>> settlementShoppingCart(Integer userId, String skuIds, Integer source) {
         log.info("¥¥¥¥¥¥¥¥¥¥ > 商品结算");
         // 商品种类
         AtomicInteger kindCount = new AtomicInteger(0);
@@ -887,24 +890,24 @@ public class CartClubServiceImpl implements CartClubService {
         boolean svipUserFlag = null != svipUserId;
 
         // 前端接收商品Id信息
-        List<String> productIdList = new ArrayList<>();
-        if (productIds.contains(",")) {
-            productIdList = Stream.of(productIds.split(",")).collect(Collectors.toList());
+        List<String> skuIdList = new ArrayList<>();
+        if (skuIds.contains(",")) {
+            skuIdList = Stream.of(skuIds.split(",")).collect(Collectors.toList());
         } else {
-            productIdList.add(productIds);
+            skuIdList.add(skuIds);
         }
 
         // 购物车商品的分帐号分组的供应商列表
         // 1带分账号,2不带
-        List<CartShopVo> shopList = cartClubMapper.getCartShopsByProductIds(userId, productIdList,1);
+        List<CartShopVo> shopList = cartClubMapper.getCartShopsByProductIds(userId, skuIdList, 1);
         int firstSize = shopList.size();
-        shopList.removeIf(s->StringUtils.isBlank(s.getSplitCode()));
-        if(firstSize!=shopList.size()){
-            shopList=cartClubMapper.getCartShopsByProductIds(userId, productIdList,2);
+        shopList.removeIf(s -> StringUtils.isBlank(s.getSplitCode()));
+        if (firstSize != shopList.size()) {
+            shopList = cartClubMapper.getCartShopsByProductIds(userId, skuIdList, 2);
         }
         if (null != shopList && shopList.size() > 0) {
             // 遍历供应商列表
-            List<String> finalIdList = productIdList;//购物车商品id列表
+            List<String> finalIdList = skuIdList;//购物车商品skuId列表
             Integer finalUserIdentity = userIdentity;
             Integer finalUserClubType = userClubType;
             Integer finalUserIdentity1 = userIdentity;
@@ -929,7 +932,7 @@ public class CartClubServiceImpl implements CartClubService {
                     }
                     // 供应商下商品列表
                     // 过滤保存已上架商品
-                    List<CartItemVo> productList = cartClubMapper.getCartProductsByShopIdAndProductIds(userId, shop.getShopId(), finalIdList,shop.getSplitCode());
+                    List<CartItemVo> productList = cartClubMapper.getCartProductsByShopIdAndProductIds(userId, shop.getShopId(), finalIdList, shop.getSplitCode());
                     if (null != productList && productList.size() > 0) {
                         // 去除不可见商品,visibility商品可见度: 3:所有人可见,2:普通机构可见,1:会员机构可见,4:仅医美机构可见
                         productList.removeIf(cartItemVo -> !(cartItemVo.getVisibility() == 3 || cartItemVo.getVisibility() == 2 || (cartItemVo.getVisibility() == 1 && (finalUserIdentity == 2 || svipUserFlag)) || (cartItemVo.getVisibility() == 4 && finalUserClubType == 1)));
@@ -1006,7 +1009,7 @@ public class CartClubServiceImpl implements CartClubService {
                                         productService.setCartLadderPrices(cartItemVo, taxFlag);
                                     } else {
                                         // 复购价
-                                        Double repurchase = baseMapper.getRepurchasePrice(cartItemVo.getProductId(), userId);
+                                        Double repurchase = baseMapper.getRepurchasePrice(cartItemVo.getSkuId(), userId);
                                         if (null != repurchase && repurchase > 0) {
                                             if (taxFlag) {
                                                 BigDecimal cartItemTax = MathUtil.div(MathUtil.mul(repurchase, cartItemVo.getTaxRate()), 100, 2);
@@ -1232,6 +1235,8 @@ public class CartClubServiceImpl implements CartClubService {
         Map<String, Integer> productInfos = new HashMap<>();
         // 前端接收商品Id信息
         List<String> productIdList = new ArrayList<>();
+        //skuIdList
+        List<Integer> skuIdList = new ArrayList<>();
         // 用户身份
         Integer userIdentity = baseMapper.getIdentityByUserId(userId);
         if (null == userIdentity) {
@@ -1255,8 +1260,10 @@ public class CartClubServiceImpl implements CartClubService {
                 JSONObject product = (JSONObject) o;
                 String productId = product.getString("id");
                 Integer productCount = product.getInteger("count");
-                productInfos.put(productId, productCount);
+                Integer skuId = product.getInteger("skuId");
+                productInfos.put(skuId.toString(), productCount);
                 productIdList.add(productId);
+                skuIdList.add(skuId);
             }
         } catch (Exception e) {
             log.error("组合商品信息格式错误", e);
@@ -1268,7 +1275,7 @@ public class CartClubServiceImpl implements CartClubService {
         //按供应商分类统计商品
         if (null != shopList && shopList.size() > 0) {
             // 遍历供应商列表
-            List<String> finalIdList = productIdList;//商品id列表
+            List<Integer> finalIdList = skuIdList;//商品id列表
             Integer finalUserIdentity = userIdentity;
             Integer finalUserClubType = userClubType;
             Integer finalUserIdentity1 = userIdentity;
@@ -1371,7 +1378,7 @@ public class CartClubServiceImpl implements CartClubService {
                                         productService.setCartLadderPrices(cartItemVo, taxFlag);
                                     } else {
                                         // 复购价
-                                        Double repurchase = baseMapper.getRepurchasePrice(cartItemVo.getProductId(), userId);
+                                        Double repurchase = baseMapper.getRepurchasePrice(cartItemVo.getSkuId(), userId);
                                         if (null != repurchase && repurchase > 0) {
                                             if (taxFlag) {
                                                 BigDecimal cartItemTax = MathUtil.div(MathUtil.mul(repurchase, cartItemVo.getTaxRate()), 100, 2);
@@ -1577,7 +1584,7 @@ public class CartClubServiceImpl implements CartClubService {
         if (null == shop) {
             return ResponseJson.error("商品供应商异常!", null);
         }
-        CartItemVo cartItemVo = cartClubMapper.getCartItemByProductId(cartDto.getProductId());
+        CartItemVo cartItemVo = cartClubMapper.getCartItemByProductId(cartDto.getSkuId());
         if (null == cartItemVo) {
             return ResponseJson.error("商品数据异常!", null);
         }
@@ -1701,7 +1708,7 @@ public class CartClubServiceImpl implements CartClubService {
                     productService.setCartLadderPrices(cartItemVo, taxFlag);
                 } else {
                     // 复购价
-                    Double repurchase = baseMapper.getRepurchasePrice(cartItemVo.getProductId(), cartDto.getUserId());
+                    Double repurchase = baseMapper.getRepurchasePrice(cartItemVo.getSkuId(), cartDto.getUserId());
                     if (null != repurchase && repurchase > 0) {
                         if (taxFlag) {
                             BigDecimal cartItemTax = MathUtil.div(MathUtil.mul(repurchase, cartItemVo.getTaxRate()), 100, 2);

+ 11 - 11
src/main/java/com/caimei365/order/service/impl/CartSellerServiceImpl.java

@@ -58,7 +58,7 @@ public class CartSellerServiceImpl implements CartSellerService {
      *
      * @param serviceProviderId  协销Id
      * @param clubId             机构Id
-     * @param againBuyProductIds 再来一单商品Ids
+     * @param againBuyProductIds 再来一单商品skuIds
      * @param pageNum            页码
      * @param pageSize           每页数量
      */
@@ -189,7 +189,7 @@ public class CartSellerServiceImpl implements CartSellerService {
                                     productService.setCartLadderPrices(cartItemVo, taxFlag);
                                 } else {
                                     // 复购价
-                                    Double repurchase = baseMapper.getRepurchasePrice(cartItemVo.getProductId(), clubUserId);
+                                    Double repurchase = baseMapper.getRepurchasePrice(cartItemVo.getSkuId(), clubUserId);
                                     if (null != repurchase && repurchase > 0) {
                                         if (taxFlag) {
                                             BigDecimal cartItemTax = MathUtil.div(MathUtil.mul(repurchase, cartItemVo.getTaxRate()), 100, 2);
@@ -422,10 +422,10 @@ public class CartSellerServiceImpl implements CartSellerService {
      *
      * @param serviceProviderId 协销Id
      * @param clubId            机构Id
-     * @param productIds        商品Ids
+     * @param skuIds            skuIds
      */
     @Override
-    public ResponseJson<Map<String, Object>> settlementSellerCart(Integer serviceProviderId, Integer clubId, String productIds) {
+    public ResponseJson<Map<String, Object>> settlementSellerCart(Integer serviceProviderId, Integer clubId, String skuIds) {
         log.info("¥¥¥¥¥¥¥¥¥¥ > 商品结算(协销帮机构下单)");
         // 商品种类
         AtomicInteger kindCount = new AtomicInteger(0);
@@ -449,11 +449,11 @@ public class CartSellerServiceImpl implements CartSellerService {
         List<Integer> shopIds = new ArrayList<>();
 
         // 前端接收商品Id信息
-        List<String> productIdList = new ArrayList<>();
-        if (productIds.contains(",")) {
-            productIdList = Stream.of(productIds.split(",")).collect(Collectors.toList());
+        List<String> skuIdList = new ArrayList<>();
+        if (skuIds.contains(",")) {
+            skuIdList = Stream.of(skuIds.split(",")).collect(Collectors.toList());
         } else {
-            productIdList.add(productIds);
+            skuIdList.add(skuIds);
         }
         // 获取机构用户Id
         Integer clubUserId = baseMapper.getUserIdByClubId(clubId);
@@ -461,10 +461,10 @@ public class CartSellerServiceImpl implements CartSellerService {
         Integer svipUserId = baseMapper.getSvipUserIdByClubId(clubId);
         boolean svipUserFlag = null != svipUserId;
         // 供应商列表
-        List<CartShopVo> shopList = cartSellerMapper.getCartShopsByProductIds(serviceProviderId, clubId, productIdList);
+        List<CartShopVo> shopList = cartSellerMapper.getCartShopsByProductIds(serviceProviderId, clubId, skuIdList);
         if (null != shopList && shopList.size() > 0) {
             // 遍历供应商列表
-            List<String> finalIdList = productIdList;
+            List<String> finalIdList = skuIdList;
             shopList.forEach(shop -> {
                 // 该供应商下商品种类
                 AtomicInteger shopKindCount = new AtomicInteger(0);
@@ -550,7 +550,7 @@ public class CartSellerServiceImpl implements CartSellerService {
                                     productService.setCartLadderPrices(cartItemVo, taxFlag);
                                 } else {
                                     // 复购价
-                                    Double repurchase = baseMapper.getRepurchasePrice(cartItemVo.getProductId(), clubUserId);
+                                    Double repurchase = baseMapper.getRepurchasePrice(cartItemVo.getSkuId(), clubUserId);
                                     if (null != repurchase && repurchase > 0) {
                                         if (taxFlag) {
                                             BigDecimal cartItemTax = MathUtil.div(MathUtil.mul(repurchase, cartItemVo.getTaxRate()), 100, 2);

+ 14 - 12
src/main/java/com/caimei365/order/service/impl/SubmitServiceImpl.java

@@ -89,8 +89,8 @@ public class SubmitServiceImpl implements SubmitService {
      *                  "splitCode:E123123"       //分账号
      *                  "note":备注,
      *                  "productInfo":[                      // 商品id,数量,赠品数,商品类型
-     *                  {"productId": 2789, "productNum": 1, "presentNum":0,"productType":2},
-     *                  {"productId": 2789, "productNum": 1, "presentNum":0,"productType":0}
+     *                  {"skuId": 2789, "productNum": 1, "presentNum":0,"productType":2},
+     *                  {"skuId": 2789, "productNum": 1, "presentNum":0,"productType":0}
      *                  ]
      *                  },{多个供应商商品数据结构同上}
      *                  ],
@@ -409,6 +409,7 @@ public class SubmitServiceImpl implements SubmitService {
         // 订单商品列表
         List<OrderProductPo> orderProductList = new ArrayList<>();
         List<String> productIdList = new ArrayList<>();
+        List<String> skuIdList = new ArrayList<>();
 
         // 子订单订单列表
         List<OrderShopPo> shopOrderList = new ArrayList<>();
@@ -468,12 +469,12 @@ public class SubmitServiceImpl implements SubmitService {
             // 遍历所有商品
             for (Object productObject : productArr) {
                 JSONObject productTemp = (JSONObject) productObject;
-                Integer productId = (Integer) productTemp.get("productId");
+                Integer skuId = (Integer) productTemp.get("skuId");
                 Integer productNum = (Integer) productTemp.get("productNum");
                 Integer presentNum = (Integer) productTemp.get("presentNum");
                 Integer productType = (Integer) productTemp.get("productType");
                 productType = (null == productType) ? 0 : productType;
-                if (null == productId) {
+                if (null == skuId) {
                     return ResponseJson.error("订单商品数据异常!", null);
                 }
                 if (null == productNum || productNum == 0) {
@@ -484,7 +485,7 @@ public class SubmitServiceImpl implements SubmitService {
                 // 赠品数
                 presentCount.updateAndGet(v -> v + presentNum);
                 // 获取数据库商品信息
-                OrderProductPo dbProduct = submitMapper.getProductDetails(productId);
+                OrderProductPo dbProduct = submitMapper.getProductDetails(skuId);
                 OrderProductPo product = new OrderProductPo();
                 BeanUtils.copyProperties(dbProduct, product);
                 log.info("splitcode-----------------------》" + product.getSplitCode());
@@ -508,7 +509,7 @@ public class SubmitServiceImpl implements SubmitService {
                 product.setSvipPriceFlag(0);
                 product.setSvipReduction(0d);
                 // 超级会员优惠商品详情
-                SvipProductPo svipProductPo = submitMapper.getSvipProductDetails(productId);
+                SvipProductPo svipProductPo = submitMapper.getSvipProductDetails(product.getProductId());
                 // 是否以超级会员优惠价格购买
                 boolean svipPriceFlag = null != svipProductPo && 1 == svipProductPo.getSvipProductFlag() && orderParamBo.getSvipUserFlag();
                 // 是否是促销赠品
@@ -534,7 +535,7 @@ public class SubmitServiceImpl implements SubmitService {
                     PromotionsVo promotions = null;
                     // 店铺促销优先
                     if (null == shopPromotions) {
-                        promotions = baseMapper.getPromotionByProductId(productId);
+                        promotions = baseMapper.getPromotionByProductId(product.getProductId());
                     }
                     //促销活动如果协销不可见,置为空
                     if (promotions != null && promotions.getSeen() != null && promotions.getSeen() == 2 && 3 == orderParamBo.getCartType()) {
@@ -584,7 +585,7 @@ public class SubmitServiceImpl implements SubmitService {
                     //有阶梯价
                     else if (1 == product.getLadderPriceFlag()) {
                         // 启用了阶梯价格
-                        List<LadderPriceVo> ladderPrices = baseMapper.getLadderPriceList(productId);
+                        List<LadderPriceVo> ladderPrices = baseMapper.getLadderPriceList(skuId);
                         // 判断阶梯价格的购买数量校验
                         int minBuyNumber = null != ladderPrices.get(0) ? ladderPrices.get(0).getBuyNum() : 0;
                         if (productNum < minBuyNumber) {
@@ -600,7 +601,7 @@ public class SubmitServiceImpl implements SubmitService {
                         product.setActProduct(2);
                     } else {
                         // 复购价
-                        Double repurchase = baseMapper.getRepurchasePrice(productId, orderParamBo.getUserId());
+                        Double repurchase = baseMapper.getRepurchasePrice(skuId, orderParamBo.getUserId());
                         if (null != repurchase && repurchase > 0) {
                             discountPrice = repurchase;
                         }
@@ -668,7 +669,7 @@ public class SubmitServiceImpl implements SubmitService {
                         } else if (promotions.getType() == 2) {
                             // 商品添加到总促销
                             PromotionPriceVo promotionPrice = new PromotionPriceVo();
-                            promotionPrice.setProductId(productId);
+                            promotionPrice.setProductId(product.getProductId());
                             promotionPrice.setNumber(productNum);
                             promotionPrice.setPrice(discountTaxPrice);
                             if (null == promotions.getProductList()) {
@@ -798,6 +799,7 @@ public class SubmitServiceImpl implements SubmitService {
                 // 加入订单商品列表
                 orderProductList.add(product);
                 productIdList.add(product.getProductId().toString());
+                skuIdList.add(product.getSkuId().toString());
             }
             Integer count = submitMapper.findSplitResult(productIdList);
             if (count > 0) {
@@ -1571,11 +1573,11 @@ public class SubmitServiceImpl implements SubmitService {
          */
         if (3 == orderParamBo.getCartType()) {
             // 清理当前机构的协销购物车数据
-            cartSellerMapper.deleteSellerCartByProductIds(orderParamBo.getServiceProviderId(), orderParamBo.getClubId(), productIdList);
+            cartSellerMapper.deleteSellerCartByProductIds(orderParamBo.getServiceProviderId(), orderParamBo.getClubId(), skuIdList);
             log.info("【提交订单】>>>>删除当前机构的 协销 购物车数据!");
         } else if (1 == orderParamBo.getCartType()) {
             // 清理用户购物车
-            cartClubMapper.deleteCartByProductIds(orderParamBo.getUserId(), productIdList);
+            cartClubMapper.deleteCartByProductIds(orderParamBo.getUserId(), skuIdList);
             log.info("【提交订单】>>>>删除当前机构 用户 购物车数据!");
         }
         log.info("**********************微信模板消息推送*****************************");

+ 58 - 44
src/main/resources/mapper/BaseMapper.xml

@@ -21,16 +21,16 @@
     </insert>
     <insert id="insertPurchasePrice" keyColumn="id" keyProperty="id"
             parameterType="com.caimei365.order.model.po.PurchasePricePo" useGeneratedKeys="true">
-        INSERT INTO repeat_purchase_price (userId, clubId, orderId, productId, shopId, shopName,
+        INSERT INTO repeat_purchase_price (userId, skuId, clubId, orderId, productId, shopId, shopName,
                                            taxRate, currentPrice, createTime, updateTime, delFlag)
-        VALUES (#{userId}, #{clubId}, #{orderId}, #{productId}, #{shopId}, #{shopName},
+        VALUES (#{userId}, #{skuId}, #{clubId}, #{orderId}, #{productId}, #{shopId}, #{shopName},
                 #{taxRate}, #{currentPrice}, #{createTime}, #{updateTime}, #{delFlag})
     </insert>
     <insert id="insertPurchaseHistory" keyColumn="id" keyProperty="id"
             parameterType="com.caimei365.order.model.po.PurchaseHistoryPo" useGeneratedKeys="true">
-        INSERT INTO repeat_purchase_price_history (userId, clubId, orderId, productId, price, currentCostPrice,
+        INSERT INTO repeat_purchase_price_history (userId, skuId, clubId, orderId, productId, price, currentCostPrice,
                                                    createTime, delFlag)
-        VALUES (#{userId}, #{clubId}, #{orderId}, #{productId}, #{price}, #{currentCostPrice}, #{createTime},
+        VALUES (#{userId}, #{skuId}, #{clubId}, #{orderId}, #{productId}, #{price}, #{currentCostPrice}, #{createTime},
                 #{delFlag})
     </insert>
     <update id="updateUserInvoiceByUserId" parameterType="com.caimei365.order.model.vo.InvoiceVo">
@@ -57,7 +57,7 @@
         LIMIT 1
     </select>
     <select id="getIdentityByUserId" resultType="java.lang.Integer">
-        select ifnull(userIdentity,0)
+        select ifnull(userIdentity, 0)
         from user
         where userID = #{userId}
         LIMIT 1
@@ -71,11 +71,12 @@
     <select id="getLadderPriceList" resultType="com.caimei365.order.model.vo.LadderPriceVo">
         select id,
                productId,
+               skuId,
                ladderNum,
                buyNum,
                buyPrice
         from product_ladder_price
-        where productId = #{productId}
+        where skuId = #{skuId}
           and userType = 3
           and delFlag = 0
         order by ladderNum asc
@@ -83,11 +84,11 @@
     <select id="getRepurchasePrice" resultType="java.lang.Double">
         select r.currentPrice
         from repeat_purchase_price r
-                 left join product p on p.productID = r.productId
-        where r.productId = #{productId}
+                 left join cm_sku cs on r.skuId = cs.skuId
+        where r.skuId = #{skuId}
           and r.userId = #{userId}
-          and ((p.costCheckFlag = 1 and r.currentPrice <![CDATA[ >= ]]> p.costPrice) or p.costCheckFlag = 2)
-          and p.price <![CDATA[ >= ]]> r.currentPrice
+          and ((cs.costCheckFlag = 1 and r.currentPrice <![CDATA[ >= ]]> cs.costPrice) or cs.costCheckFlag = 2)
+          and cs.price <![CDATA[ >= ]]> r.currentPrice
           and r.delFlag = 0
     </select>
     <select id="getPromotionByShopId" resultType="com.caimei365.order.model.vo.PromotionsVo">
@@ -139,21 +140,23 @@
         LIMIT 1
     </select>
     <select id="getPromotionGifts" resultType="com.caimei365.order.model.vo.CartItemVo">
-        SELECT cpg.id      AS id,
-               p.productID AS productId,
-               p.shopID    AS shopId,
-               p.`name`    AS `name`,
-               p.mainImage AS image,
-               cpg.number  AS number,
-               0           AS price,
-               2           as giftType,
-               p.price    AS originalPrice,
-               p.unit      AS unit,
-               p.stock     AS stock,
-               p.validFlag AS validFlag,
+        SELECT cpg.id       AS id,
+               cs.productID AS productId,
+               p.shopID     AS shopId,
+               p.`name`     AS `name`,
+               p.mainImage  AS image,
+               cpg.number   AS number,
+               0            AS price,
+               2            as giftType,
+               cs.price     AS originalPrice,
+               cs.unit      AS unit,
+               cs.stock     AS stock,
+               cpg.skuId    AS giftSkuId,
+               p.validFlag  AS validFlag,
                p.productType
         FROM cm_promotions_gift cpg
-                 LEFT JOIN product p ON cpg.productId = p.productID
+                 LEFT JOIN cm_sku cs ON cpg.skuId = cs.skuId
+                 LEFT JOIN product p ON cs.productId = p.productID
         WHERE cpg.promotionsId = #{promotionsId}
         ORDER BY cpg.id DESC
     </select>
@@ -162,7 +165,7 @@
                s.name   AS shopName,
                s.logo   AS shopLogo
         FROM shop s
-        LEFT JOIN product p ON p.shopID = s.shopID
+                 LEFT JOIN product p ON p.shopID = s.shopID
         WHERE p.productId = #{productId}
         LIMIT 1
     </select>
@@ -224,7 +227,8 @@
         WHERE addressID = #{addressId}
     </select>
     <select id="getPurchasePricePo" resultType="com.caimei365.order.model.po.PurchasePricePo">
-        SELECT id,
+        SELECT skuId,
+               id,
                userId,
                clubId,
                orderId,
@@ -236,7 +240,7 @@
                createTime
         FROM repeat_purchase_price
         WHERE userId = #{userId}
-          AND productId = #{productId}
+          AND skuId = #{skuId}
           AND delFlag = '0'
     </select>
     <select id="getBindMobileByUserId" resultType="java.lang.String">
@@ -245,7 +249,7 @@
         WHERE userID = #{userId}
     </select>
     <select id="getShopIdByproductId" resultType="java.lang.Integer">
-        SELECT shopID,productType
+        SELECT shopID, productType
         FROM product
         WHERE productID = #{productId}
     </select>
@@ -266,10 +270,12 @@
     </insert>
     <insert id="insertOrderReceiptRelation" keyColumn="id" keyProperty="id"
             parameterType="com.caimei365.order.model.po.OrderReceiptRelationPo" useGeneratedKeys="true">
-        INSERT INTO cm_receipt_order_relation (relationType, receiptId, associationType, associateAmount, orderId, couponRecordId, vipRecordId, authVipRecordId, delFlag,
-                                               mbOrderId, orderRequestNo, splitStatus, productId,shopOrderId)
-        VALUES (#{relationType}, #{receiptId}, #{associationType}, #{associateAmount}, #{orderId}, #{couponRecordId}, #{vipRecordId}, #{authVipRecordId}, #{delFlag},
-                #{mbOrderId}, #{orderRequestNo}, #{splitStatus}, #{productId},#{shopOrderId})
+        INSERT INTO cm_receipt_order_relation (relationType, receiptId, associationType, associateAmount, orderId,
+                                               couponRecordId, vipRecordId, authVipRecordId, delFlag,
+                                               mbOrderId, orderRequestNo, splitStatus, productId, shopOrderId)
+        VALUES (#{relationType}, #{receiptId}, #{associationType}, #{associateAmount}, #{orderId}, #{couponRecordId},
+                #{vipRecordId}, #{authVipRecordId}, #{delFlag},
+                #{mbOrderId}, #{orderRequestNo}, #{splitStatus}, #{productId}, #{shopOrderId})
     </insert>
     <insert id="insertBeansHistory" parameterType="com.caimei365.order.model.po.UserBeansHistoryPo">
         INSERT INTO user_beans_history (userId, type, beansType, orderId, num, pushStatus, addTime, delFlag)
@@ -297,12 +303,15 @@
         WHERE userID = #{userId}
     </update>
     <update id="updateOrderOnlineFlag">
-        update cm_order set onlinePayFlag = 1
+        update cm_order
+        set onlinePayFlag = 1
         where orderID = #{orderId}
     </update>
     <insert id="insertBalanceRecord" parameterType="com.caimei365.order.model.po.BalanceRecordPo">
-        INSERT INTO cm_user_balance_record (userId, type, balanceType, addDate, amount, orderId, receiptId, remark, delFlag)
-        VALUES (#{userId}, #{type}, #{balanceType}, #{addDate}, #{amount}, #{orderId}, #{receiptId}, #{remark}, #{delFlag})
+        INSERT INTO cm_user_balance_record (userId, type, balanceType, addDate, amount, orderId, receiptId, remark,
+                                            delFlag)
+        VALUES (#{userId}, #{type}, #{balanceType}, #{addDate}, #{amount}, #{orderId}, #{receiptId}, #{remark},
+                #{delFlag})
     </insert>
     <select id="getSvipUserIdByUserId" resultType="java.lang.Integer">
         select userId
@@ -340,28 +349,33 @@
           and num = 500
     </select>
     <select id="findBeans" resultType="java.lang.Integer">
-        select userBeans from user where userID=#{userId}
+        select userBeans
+        from user
+        where userID = #{userId}
     </select>
     <select id="getAuthUser" resultType="com.caimei365.order.model.vo.AuthUserVo">
-        select authUserId,name,mobile
+        select authUserId, name, mobile
         from cm_brand_auth_user
         where authUserId = #{userId}
         LIMIT 1
     </select>
     <select id="findType" resultType="java.lang.String">
-        SELECT payType FROM cm_discern_receipt cdr
-        LEFT JOIN cm_receipt_order_relation cror ON cdr.id=cror.receiptID
-        WHERE cror.mbOrderId=#{mbOrderId}
+        SELECT payType
+        FROM cm_discern_receipt cdr
+                 LEFT JOIN cm_receipt_order_relation cror ON cdr.id = cror.receiptID
+        WHERE cror.mbOrderId = #{mbOrderId}
     </select>
     <select id="findShopOrderIds" resultType="java.lang.String">
-        select shopOrderIDs from cm_order where orderID = #{orderId}
+        select shopOrderIDs
+        from cm_order
+        where orderID = #{orderId}
     </select>
     <select id="findCoupon" resultType="com.caimei365.order.model.vo.CouponVo">
-        select id as couponId,name,moneyCouponPrice,couponAmount,touchPrice
+        select id as couponId, name, moneyCouponPrice, couponAmount, touchPrice
         from cm_coupon
         where id = #{couponId}
-        and delflag = 0
-        and couponPayWay = 2
-        and moneyCouponFlag = 1
+          and delflag = 0
+          and couponPayWay = 2
+          and moneyCouponFlag = 1
     </select>
 </mapper>

+ 59 - 50
src/main/resources/mapper/CartClubMapper.xml

@@ -27,9 +27,9 @@
         LEFT JOIN shop s ON c.shopID = s.shopID
         LEFT JOIN product p ON c.productID = p.productID
         WHERE c.userID = #{userId}
-        AND c.productID in
-        <foreach collection="productIds" open="(" separator="," close=")" item="productId">
-            #{productId}
+        AND c.skuId in
+        <foreach collection="skuIds" open="(" separator="," close=")" item="skuId">
+            #{skuId}
         </foreach>
         GROUP BY c.shopID, c.cm_cartID
         ORDER BY c.cm_cartID DESC
@@ -60,14 +60,15 @@
             p.`name` AS `name`,
             p.mainImage AS image,
             p.productCode,
-            p.price,
-            p.price AS originalPrice,
-            p.unit AS unit,
-            p.stock AS stock,
+            c.skuId,
+            cs.price,
+            cs.price AS originalPrice,
+            cs.unit AS unit,
+            cs.stock AS stock,
             p.step AS step,
-            p.minBuyNumber AS min,
+            cs.minBuyNumber AS min,
             p.priceFlag,
-            p.ladderPriceFlag AS ladderFlag,
+            cs.ladderPriceFlag AS ladderFlag,
             p.includedTax AS includedTax,
             p.invoiceType AS invoiceType,
             p.taxPoint AS taxRate,
@@ -80,8 +81,9 @@
             csp.discountPrice as svipDiscountPrice,
             p.productType
         FROM cm_cart c
-        LEFT JOIN product p ON c.productID = p.productID
-        LEFT JOIN cm_svip_product csp ON p.productID = csp.productId
+        LEFT JOIN product P on c.productID = p.productID
+        LEFT JOIN cm_sku cs ON c.skuId = cs.skuId
+        LEFT JOIN cm_svip_product csp ON c.productID = csp.productId
         WHERE c.userID = #{userId} and p.shopID = #{shopId}
         ORDER BY c.cm_cartID DESC
     </select>
@@ -94,14 +96,14 @@
         p.`name` AS `name`,
         p.mainImage AS image,
         p.productCode,
-        p.price,
-        p.price AS originalPrice,
-        p.unit AS unit,
-        p.stock AS stock,
+        cs.price,
+        cs.price AS originalPrice,
+        cs.unit AS unit,
+        cs.stock AS stock,
         p.step AS step,
-        p.minBuyNumber AS min,
+        cs.minBuyNumber AS min,
         p.priceFlag,
-        p.ladderPriceFlag AS ladderFlag,
+        cs.ladderPriceFlag AS ladderFlag,
         p.includedTax AS includedTax,
         p.invoiceType AS invoiceType,
         p.taxPoint AS taxRate,
@@ -117,34 +119,36 @@
         p.splitCode
         FROM cm_cart c
         LEFT JOIN product p ON c.productID = p.productID
+        LEFT JOIN cm_sku cs ON c.skuId = cs.skuId
         LEFT JOIN cm_svip_product csp ON p.productID = csp.productId
         WHERE c.userID = #{userId} and p.shopID = #{shopId}
         AND p.validFlag='2'
         <if test="splitCode !=null and splitCode !=''">
             AND p.splitCode = #{splitCode}
         </if>
-        AND p.productID in
-        <foreach collection="productIds" open="(" separator="," close=")" item="productId">
-            #{productId}
+        AND cs.skuId in
+        <foreach collection="skuIds" open="(" separator="," close=")" item="skuId">
+            #{skuId}
         </foreach>
         ORDER BY c.cm_cartID DESC
     </select>
 
     <select id="getProductsByShopIdAndProductIds" resultType="com.caimei365.order.model.vo.CartItemVo">
         SELECT
+        cs.skuId,
         p.productID AS productId,
         p.shopID AS shopId,
         p.`name` AS `name`,
         p.mainImage AS image,
         p.productCode,
-        p.price,
-        p.price AS originalPrice,
-        p.unit AS unit,
-        p.stock AS stock,
+        cs.price,
+        cs.price AS originalPrice,
+        cs.unit AS unit,
+        cs.stock AS stock,
         p.step AS step,
-        p.minBuyNumber AS min,
+        cs.minBuyNumber AS min,
         p.priceFlag,
-        p.ladderPriceFlag AS ladderFlag,
+        cs.ladderPriceFlag AS ladderFlag,
         p.includedTax AS includedTax,
         p.invoiceType AS invoiceType,
         p.taxPoint AS taxRate,
@@ -157,17 +161,19 @@
         csp.discount as svipDiscount,
         csp.discountPrice as svipDiscountPrice,
         p.productType
-        FROM product p
+        FROM cm_sku cs
+        LEFT JOIN product p on cs.productId = p.productID
         LEFT JOIN cm_svip_product csp ON p.productID = csp.productId
         WHERE p.shopID = #{shopId}
-        AND p.validFlag='2' AND p.productID in
-        <foreach collection="productIds" open="(" separator="," close=")" item="productId">
-            #{productId}
+        AND p.validFlag='2' AND cs.skuId in
+        <foreach collection="skuIdList" open="(" separator="," close=")" item="skuId">
+            #{skuId}
         </foreach>
     </select>
 
     <select id="getCartProductList" resultType="com.caimei365.order.model.vo.CartItemVo">
         SELECT
+            c.skuId as skuId,
             c.cm_cartID AS id,
             c.productCount AS number,
             p.productID AS productId,
@@ -175,14 +181,14 @@
             p.`name` AS `name`,
             p.mainImage AS image,
             p.productCode,
-            p.price,
-            p.price AS originalPrice,
-            p.unit AS unit,
-            p.stock AS stock,
+            cs.price,
+            cs.price AS originalPrice,
+            cs.unit AS unit,
+            cs.stock AS stock,
             p.step AS step,
-            p.minBuyNumber AS min,
+            cs.minBuyNumber AS min,
             p.priceFlag,
-            p.ladderPriceFlag AS ladderFlag,
+            cs.ladderPriceFlag AS ladderFlag,
             p.includedTax AS includedTax,
             p.invoiceType AS invoiceType,
             p.taxPoint AS taxRate,
@@ -192,6 +198,7 @@
             p.productType
         FROM cm_cart c
         LEFT JOIN product p ON c.productID = p.productID
+        LEFT JOIN cm_sku cs ON cs.skuId = c.skuId
         WHERE p.validFlag='2' AND c.userID = #{userId}
         AND p.priceFlag != '1'
         AND p.stock != '0' AND p.stock <![CDATA[ >= ]]> c.productCount
@@ -203,9 +210,10 @@
             c.productCount,
             c.productID AS productId,
             c.shopID AS shopId,
-            c.userID AS userId
+            c.userID AS userId,
+            c.skuId
         FROM cm_cart c
-        WHERE c.productID = #{productId} and c.userID = #{userId}
+        WHERE c.skuId = #{skuId} and c.userID = #{userId}
         ORDER BY c.cm_cartID DESC
         limit 1
     </select>
@@ -213,7 +221,7 @@
         UPDATE cm_cart set
            productCount = #{productCount},
            addTime = #{addTime}
-        WHERE userID = #{userId} AND productID = #{productId}
+        WHERE userID = #{userId} AND skuId = #{skuId}
     </update>
     <insert id="insertCart" keyColumn="cm_cartID" keyProperty="id"  parameterType="com.caimei365.order.model.po.CartPo" useGeneratedKeys="true">
         INSERT INTO cm_cart (shopID, productID, userID, productCount, addTime, reBuyFlag)
@@ -222,9 +230,9 @@
     <delete id="deleteCartByProductIds">
         DELETE FROM cm_cart
         WHERE userID = #{userId}
-        AND productID in
-        <foreach collection="productIds" open="(" separator="," close=")" item="productId">
-            #{productId}
+        AND skuId in
+        <foreach collection="skuIds" open="(" separator="," close=")" item="skuId">
+            #{skuId}
         </foreach>
     </delete>
     <delete id="deleteUserInvoice">
@@ -259,14 +267,14 @@
         p.`name` AS `name`,
         p.mainImage AS image,
         p.productCode,
-        p.price,
-        p.price AS originalPrice,
-        p.unit AS unit,
-        p.stock AS stock,
+        cs.price,
+        cs.price AS originalPrice,
+        cs.unit AS unit,
+        cs.stock AS stock,
         p.step AS step,
-        p.minBuyNumber AS min,
+        cs.minBuyNumber AS min,
         p.priceFlag,
-        p.ladderPriceFlag AS ladderFlag,
+        cs.ladderPriceFlag AS ladderFlag,
         p.includedTax AS includedTax,
         p.invoiceType AS invoiceType,
         p.taxPoint AS taxRate,
@@ -279,9 +287,10 @@
         csp.discount as svipDiscount,
         csp.discountPrice as svipDiscountPrice,
         p.productType
-        FROM product p
+        FROM cm_sku cs
+        LEFT JOIN product p on p.productID = cs.productId
         LEFT JOIN cm_svip_product csp ON p.productID = csp.productId
-        WHERE p.validFlag='2' AND p.productID = #{productId}
+        WHERE p.validFlag='2' AND cs.skuId = #{skuId}
     </select>
 
     <select id="findVipCoupon" resultType="java.lang.Integer">

+ 130 - 111
src/main/resources/mapper/CartSellerMapper.xml

@@ -2,71 +2,87 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.caimei365.order.mapper.CartSellerMapper">
     <select id="getSellerCartShops" resultType="com.caimei365.order.model.vo.CartShopVo">
-        SELECT DISTINCT
-            c.shopId,
-            s.name AS shopName,
-            s.logo AS shopLogo
+        SELECT DISTINCT c.shopId,
+                        c.skuId,
+                        s.name AS shopName,
+                        s.logo AS shopLogo
         FROM bp_order_product_cart c
-        LEFT JOIN shop s ON c.shopId = s.shopID
-        WHERE c.serviceProviderId = #{serviceProviderId} AND c.clubId = #{clubId}
+                 LEFT JOIN shop s ON c.shopId = s.shopID
+        WHERE c.serviceProviderId = #{serviceProviderId}
+          AND c.clubId = #{clubId}
         GROUP BY c.shopId, c.id
         ORDER BY c.id DESC
     </select>
     <select id="getSellerCartProducts" resultType="com.caimei365.order.model.vo.CartItemVo">
-        SELECT
-            c.id,
-            c.num AS number,
-            c.productId,
-            c.shopId,
-            p.`name` AS `name`,
-            p.mainImage AS image,
-            p.productCode,
-            p.price,
-            p.price AS originalPrice,
-            p.unit AS unit,
-            p.stock AS stock,
-            p.step AS step,
-            p.minBuyNumber AS min,
-            p.priceFlag,
-            p.ladderPriceFlag AS ladderFlag,
-            p.includedTax AS includedTax,
-            p.invoiceType AS invoiceType,
-            p.taxPoint AS taxRate,
-            p.productCategory,
-            p.validFlag AS validFlag,
-            if(csp.id is not null,1,0) as svipProductFlag,
-            csp.priceType as svipPriceType,
-            csp.discount as svipDiscount,
-            csp.discountPrice as svipDiscountPrice,
-            p.productType
+        SELECT c.id,
+               c.skuId,
+               c.num                        AS number,
+               c.productId,
+               c.shopId,
+               p.`name`                     AS `name`,
+               p.mainImage                  AS image,
+               p.productCode,
+               cs.price,
+               cs.price                     AS originalPrice,
+               cs.unit                      AS unit,
+               cs.stock                     AS stock,
+               p.step                       AS step,
+               cs.minBuyNumber              AS min,
+               p.priceFlag,
+               cs.ladderPriceFlag           AS ladderFlag,
+               p.includedTax                AS includedTax,
+               p.invoiceType                AS invoiceType,
+               p.taxPoint                   AS taxRate,
+               p.productCategory,
+               p.validFlag                  AS validFlag,
+               if(csp.id is not null, 1, 0) as svipProductFlag,
+               csp.priceType                as svipPriceType,
+               csp.discount                 as svipDiscount,
+               csp.discountPrice            as svipDiscountPrice,
+               p.productType
         FROM bp_order_product_cart c
-        LEFT JOIN product p ON c.productId = p.productID
-        LEFT JOIN cm_svip_product csp ON p.productID = csp.productId
-        WHERE c.serviceProviderId = #{serviceProviderId} AND c.clubId = #{clubId} AND c.shopID = #{shopId}
+                 LEFT JOIN cm_sku cs on c.skuId = cs.skuId
+                 LEFT JOIN product p ON c.productId = p.productID
+                 LEFT JOIN cm_svip_product csp ON p.productID = csp.productId
+        WHERE c.serviceProviderId = #{serviceProviderId}
+          AND c.clubId = #{clubId}
+          AND c.shopID = #{shopId}
         ORDER BY c.id DESC
     </select>
     <select id="getSellerCartCount" resultType="java.lang.Integer">
-        SELECT COUNT(*) FROM bp_order_product_cart
-        WHERE serviceProviderId = #{serviceProviderId} AND clubId = #{clubId}
+        SELECT COUNT(*)
+        FROM bp_order_product_cart
+        WHERE serviceProviderId = #{serviceProviderId}
+          AND clubId = #{clubId}
     </select>
     <select id="getSellerCart" resultType="com.caimei365.order.model.po.SellerCartPo">
-        SELECT
-            id, serviceProviderId, clubId, productId, num
+        SELECT id,
+               serviceProviderId,
+               clubId,
+               productId,
+               num
         FROM bp_order_product_cart
-        WHERE serviceProviderId = #{serviceProviderId} AND clubId = #{clubId} AND productId = #{productId}
+        WHERE serviceProviderId = #{serviceProviderId}
+          AND clubId = #{clubId}
+          AND productId = #{productId}
     </select>
     <select id="getSellerCartById" resultType="com.caimei365.order.model.po.SellerCartPo">
-        SELECT
-        id, serviceProviderId, clubId, productId, num
+        SELECT id,
+               serviceProviderId,
+               clubId,
+               productId,
+               num
         FROM bp_order_product_cart
         WHERE id = #{id}
     </select>
     <update id="updateSellerCart" parameterType="com.caimei365.order.model.po.SellerCartPo">
         UPDATE bp_order_product_cart
-        set num = #{num}, addDate = #{addTime}
+        set num     = #{num},
+            addDate = #{addTime}
         WHERE id = #{id}
     </update>
-    <insert id="insertSellerCart" keyColumn="id" keyProperty="id"  parameterType="com.caimei365.order.model.po.SellerCartPo" useGeneratedKeys="true">
+    <insert id="insertSellerCart" keyColumn="id" keyProperty="id"
+            parameterType="com.caimei365.order.model.po.SellerCartPo" useGeneratedKeys="true">
         INSERT INTO bp_order_product_cart (serviceProviderId, clubId, shopId, productId, num, addDate)
         VALUES (#{serviceProviderId}, #{clubId}, #{shopId}, #{productId}, #{num}, #{addTime})
     </insert>
@@ -82,104 +98,107 @@
         DELETE FROM bp_order_product_cart
         WHERE serviceProviderId = #{serviceProviderId}
         AND clubId = #{clubId}
-        AND productId in
-        <foreach collection="productIds" open="(" separator="," close=")" item="productId">
-            #{productId}
+        AND skuId in
+        <foreach collection="skuIds" open="(" separator="," close=")" item="skuId">
+            #{skuId}
         </foreach>
     </delete>
     <select id="getCartShopsByProductIds" resultType="com.caimei365.order.model.vo.CartShopVo">
         SELECT DISTINCT
-            c.shopId,
-            s.name AS shopName,
-            s.logo AS shopLogo
+        c.shopId,
+        s.name AS shopName,
+        s.logo AS shopLogo
         FROM bp_order_product_cart c
         LEFT JOIN shop s ON c.shopId = s.shopID
         WHERE c.serviceProviderId = #{serviceProviderId} AND c.clubId = #{clubId}
-        AND c.productID in
-        <foreach collection="productIds" open="(" separator="," close=")" item="productId">
-            #{productId}
+        AND c.skuId in
+        <foreach collection="skuIds" open="(" separator="," close=")" item="skuId">
+            #{skuId}
         </foreach>
         GROUP BY c.shopId, c.id
         ORDER BY c.id DESC
     </select>
     <select id="getCartProductsByProductIds" resultType="com.caimei365.order.model.vo.CartItemVo">
         SELECT
-            c.id,
-            c.num AS number,
-            c.productId,
-            c.shopId,
-            p.`name` AS `name`,
-            p.mainImage AS image,
-            p.productCode,
-            p.price,
-            p.price AS originalPrice,
-            p.unit AS unit,
-            p.stock AS stock,
-            p.step AS step,
-            p.minBuyNumber AS min,
-            p.priceFlag,
-            p.ladderPriceFlag AS ladderFlag,
-            p.includedTax AS includedTax,
-            p.invoiceType AS invoiceType,
-            p.taxPoint AS taxRate,
-            p.productCategory,
-            p.validFlag AS validFlag,
-            p.productType,
-            if(csp.id is not null,1,0) as svipProductFlag,
-            csp.priceType as svipPriceType,
-            csp.discount as svipDiscount,
-            csp.discountPrice as svipDiscountPrice
+        c.id,
+        c.num AS number,
+        c.productId,
+        c.shopId,
+        p.`name` AS `name`,
+        p.mainImage AS image,
+        p.productCode,
+        cs.price,
+        cs.price AS originalPrice,
+        cs.unit AS unit,
+        cs.stock AS stock,
+        p.step AS step,
+        cs.minBuyNumber AS min,
+        p.priceFlag,
+        ifnull(cs.ladderPriceFlag,0) AS ladderFlag,
+        p.includedTax AS includedTax,
+        p.invoiceType AS invoiceType,
+        p.taxPoint AS taxRate,
+        p.productCategory,
+        p.validFlag AS validFlag,
+        p.productType,
+        if(csp.id is not null,1,0) as svipProductFlag,
+        csp.priceType as svipPriceType,
+        csp.discount as svipDiscount,
+        csp.discountPrice as svipDiscountPrice
         FROM bp_order_product_cart c
         LEFT JOIN product p ON c.productId = p.productID
+        LEFT JOIN cm_sku cs ON c.skuId = cs.skuId
         LEFT JOIN cm_svip_product csp ON p.productID = csp.productId
         WHERE c.serviceProviderId = #{serviceProviderId} AND c.clubId = #{clubId} AND c.shopID = #{shopId}
-        AND p.productID in
-        <foreach collection="productIds" open="(" separator="," close=")" item="productId">
-            #{productId}
+        AND c.skuId in
+        <foreach collection="skuIds" open="(" separator="," close=")" item="skuId">
+            #{skuId}
         </foreach>
         ORDER BY c.id DESC
     </select>
     <select id="getSecondByProductId" resultType="com.caimei365.order.model.vo.CartItemVo">
-        SELECT
-            p.productId,
-            p.shopId,
-            p.`name` AS `name`,
-            p.mainImage AS image,
-            p.productCode,
-            p.price,
-            cshd.originalPrice AS originalPrice,
-            p.unit AS unit,
-            p.priceFlag,
-            p.ladderPriceFlag AS ladderFlag,
-            p.includedTax AS includedTax,
-            p.invoiceType AS invoiceType,
-            p.taxPoint AS taxRate,
-            p.productCategory,
-            p.validFlag AS validFlag
+        SELECT p.productId,
+               p.shopId,
+               p.`name`           AS `name`,
+               p.mainImage        AS image,
+               p.productCode,
+               p.price,
+               cshd.originalPrice AS originalPrice,
+               p.unit             AS unit,
+               p.priceFlag,
+               p.ladderPriceFlag  AS ladderFlag,
+               p.includedTax      AS includedTax,
+               p.invoiceType      AS invoiceType,
+               p.taxPoint         AS taxRate,
+               p.productCategory,
+               p.validFlag        AS validFlag
         FROM product p
-        LEFT JOIN cm_second_hand_detail cshd ON p.productID = cshd.productID
+                 LEFT JOIN cm_second_hand_detail cshd ON p.productID = cshd.productID
         WHERE p.productCategory = 2
-        AND p.productID = #{productId}
+          AND p.productID = #{productId}
         LIMIT 1
     </select>
     <select id="getOrderUserIdByOrderId" resultType="java.lang.Integer">
-        SELECT userID FROM cm_order
-        WHERE orderID = #{orderId} AND delFlag = '0'
+        SELECT userID
+        FROM cm_order
+        WHERE orderID = #{orderId}
+          AND delFlag = '0'
     </select>
     <select id="getOrderClubIdByOrderId" resultType="java.lang.Integer">
-        SELECT clubID FROM cm_order
-        WHERE orderID = #{orderId} AND delFlag = '0'
+        SELECT clubID
+        FROM cm_order
+        WHERE orderID = #{orderId}
+          AND delFlag = '0'
     </select>
     <select id="getOrderProductNum" resultType="com.caimei365.order.model.vo.CartItemVo">
-        SELECT
-            op.ProductID AS productId,
-            op.num AS number,
-            p.minBuyNumber AS min,
-            p.`name` AS `name`,
-            p.mainImage AS image,
-            p.validFlag AS validFlag
+        SELECT op.ProductID   AS productId,
+               op.num         AS number,
+               p.minBuyNumber AS min,
+               p.`name`       AS `name`,
+               p.mainImage    AS image,
+               p.validFlag    AS validFlag
         FROM cm_order_product op
-        LEFT JOIN product p ON op.productID = p.productID
+                 LEFT JOIN product p ON op.productID = p.productID
         WHERE orderID = #{orderID}
         GROUP BY op.ProductID
     </select>

+ 13 - 11
src/main/resources/mapper/SubmitMapper.xml

@@ -57,7 +57,7 @@
                                       cmFee,
                                       payStatus, buyAgainFlag, notOutStore, isActProduct, productType, svipPriceFlag,
                                       svipPriceType,
-                                      svipDiscount, svipReduction)
+                                      svipDiscount, svipReduction,skuID)
         VALUES (#{orderId}, #{orderNo}, #{shopOrderId}, #{shopOrderNo}, #{orderPromotionsId}, #{productId}, #{shopId},
                 #{name},
                 #{image}, #{price}, #{shopName}, #{costPrice}, #{normalPrice}, #{ladderPriceFlag},
@@ -69,7 +69,7 @@
                 #{shopProductAmount}, #{singleShopFee}, #{shopFee}, #{singleOtherFee}, #{otherFee}, #{singleCmFee},
                 #{cmFee},
                 #{payStatus}, #{buyAgainFlag}, #{notOutStore}, #{actProduct}, #{productType}, #{svipPriceFlag},
-                #{svipPriceType}, #{svipDiscount}, #{svipReduction})
+                #{svipPriceType}, #{svipDiscount}, #{svipReduction},#{skuId})
     </insert>
     <insert id="insertOrderPromotions" keyColumn="id" keyProperty="id"
             parameterType="com.caimei365.order.model.vo.PromotionsVo" useGeneratedKeys="true">
@@ -184,25 +184,27 @@
         WHERE userID = #{userId}
     </select>
     <select id="getProductDetails" resultType="com.caimei365.order.model.po.OrderProductPo">
-        SELECT p.productID                AS productId,
+        SELECT cs.skuId                   AS skuId,
+               p.productID                AS productId,
                p.shopID                   AS shopId,
                p.`name`                   AS `name`,
                p.mainImage                AS image,
-               p.price,
-               p.costPrice,
-               IFNULL(p.costCheckFlag, 1) AS costCheckFlag,
-               p.costProportional,
+               cs.price,
+               cs.costPrice,
+               IFNULL(cs.costCheckFlag, 1) AS costCheckFlag,
+               cs.costProportional,
                p.productCategory,
-               p.ladderPriceFlag,
+               cs.ladderPriceFlag,
                p.includedTax,
                p.invoiceType,
                p.taxPoint                 AS taxRate,
-               p.unit                     AS productUnit,
-               p.normalPrice,
+               cs.unit                     AS productUnit,
+               cs.normalPrice,
                p.supplierTaxPoint         AS shopTaxRate,
                p.splitCode as splitCode
         FROM product p
-        WHERE p.productId = #{productId}
+        LEFT JOIN cm_sku cs on p.productID = cs.productId
+        WHERE cs.skuId = #{skuId}
     </select>
     <select id="getClauseNameById" resultType="java.lang.String">
         SELECT `name`