Explorar el Código

协销购物车操作

chao hace 4 años
padre
commit
a04186fcb2

+ 47 - 0
backup.sql

@@ -0,0 +1,47 @@
+-- =========== 订单微服务模块
+
+-- 废弃 sku表
+-- 修改 cm_cart 机构购物车表
+ALTER TABLE `cm_cart`
+MODIFY COLUMN `skuID` VARCHAR(20) DEFAULT NULL COMMENT '【V2021已废弃】',
+MODIFY COLUMN `isOutOfTime` CHAR(1) DEFAULT '0' COMMENT '【V2021已废弃】',
+ADD COLUMN `shopID` INT(11) DEFAULT NULL COMMENT '商品供应商Id' AFTER `productID`;
+-- 更新 cm_cart 数据
+UPDATE `cm_cart` c LEFT JOIN `product` p ON c.`productID`=p.`productID` SET c.`shopID`=p.`shopID`;
+
+-- 修改 bp_order_product_cart 协销购物车表
+ALTER TABLE `bp_order_product_cart`
+MODIFY COLUMN `serviceProviderId` BIGINT(11) DEFAULT NULL COMMENT '协销ID' AFTER `id`,
+MODIFY COLUMN `clubId` BIGINT(11) DEFAULT NULL COMMENT '机构ID' AFTER `serviceProviderId`,
+MODIFY COLUMN `shopId` bigint(11) DEFAULT NULL COMMENT '供应商ID' AFTER `clubId`,
+MODIFY COLUMN `productId` bigint(11) DEFAULT NULL COMMENT '商品ID' AFTER `shopId`,
+MODIFY COLUMN `num` int(11) DEFAULT NULL COMMENT '购买数量' AFTER `productId`,
+ADD COLUMN `addDate` datetime DEFAULT NULL COMMENT '添加时间' AFTER `num`,
+MODIFY COLUMN `presentNum` int(11) DEFAULT NULL COMMENT '【V2021已废弃】赠送数量',
+MODIFY COLUMN `name` varchar(300) DEFAULT NULL COMMENT '【V2021已废弃】商品名称',
+MODIFY COLUMN `orderId` bigint(11) DEFAULT NULL COMMENT '【V2021已废弃】订单ID',
+MODIFY COLUMN `contractProductId` bigint(11) DEFAULT NULL COMMENT '【V2021已废弃】合同商品ID',
+MODIFY COLUMN `productAmount` decimal(20,6) DEFAULT NULL COMMENT '【V2021已废弃】price*num',
+MODIFY COLUMN `totalFee` decimal(20,6) DEFAULT NULL COMMENT '【V2021已废弃】总价',
+MODIFY COLUMN `image` text COMMENT '【V2021已废弃】商品图片',
+MODIFY COLUMN `productNo` varchar(50) DEFAULT NULL COMMENT '【V2021已废弃】商品编号',
+MODIFY COLUMN `price` decimal(20,2) DEFAULT NULL COMMENT '【V2021已废弃】商品价格',
+MODIFY COLUMN `contractId` bigint(11) DEFAULT NULL COMMENT '【V2021已废弃】合同id',
+MODIFY COLUMN `shopName` varchar(50) DEFAULT NULL COMMENT '【V2021已废弃】供应商名称',
+MODIFY COLUMN `discount` decimal(20,6) DEFAULT NULL COMMENT '【V2021已废弃】折扣',
+MODIFY COLUMN `discountPrice` decimal(20,6) DEFAULT NULL COMMENT '【V2021已废弃】折后单价',
+MODIFY COLUMN `taxRate` decimal(20,0) DEFAULT NULL COMMENT '【V2021已废弃】税率',
+MODIFY COLUMN `addedValueTax` decimal(20,6) DEFAULT NULL COMMENT '【V2021已废弃】增值税',
+MODIFY COLUMN `totalAddedValueTax` decimal(20,6) DEFAULT NULL COMMENT '【V2021已废弃】总增值税',
+MODIFY COLUMN `stipulateFlag` char(1) DEFAULT '0' COMMENT '【V2021已废弃】是否是规定商品 0否 1是',
+MODIFY COLUMN `shopFee` decimal(20,6) DEFAULT NULL COMMENT '【V2021已废弃】应付供应商金额',
+MODIFY COLUMN `otherFee` decimal(20,6) DEFAULT NULL COMMENT '【V2021已废弃】应付第三方金额',
+MODIFY COLUMN `cmFee` decimal(20,6) DEFAULT NULL COMMENT '【V2021已废弃】应付采美金额',
+MODIFY COLUMN `shopFee1` decimal(20,6) DEFAULT NULL COMMENT '【V2021已废弃】单个应付供应商金额',
+MODIFY COLUMN `otherFee1` decimal(20,6) DEFAULT NULL COMMENT '【V2021已废弃】单个应付第三方金额',
+MODIFY COLUMN `cmFee1` decimal(20,6) DEFAULT NULL COMMENT '【V2021已废弃】单个应付采美金额',
+MODIFY COLUMN `shouldPayFee` decimal(20,6) DEFAULT NULL COMMENT '【V2021已废弃】应付金额',
+MODIFY COLUMN `payStatus` char(1) DEFAULT '0' COMMENT '【V2021已废弃】支付状态 0 未付款 1 已付款',
+MODIFY COLUMN `payDate` datetime DEFAULT NULL COMMENT '【V2021已废弃】支付时间',
+MODIFY COLUMN `stagesFlag` char(1) DEFAULT NULL COMMENT '【V2021已废弃】分期订单标志 0否 1是',
+MODIFY COLUMN `normalUserID` bigint(11) DEFAULT NULL COMMENT '【V2021已废弃】个人用户ID';

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

@@ -1,16 +1,15 @@
 package com.caimei365.order.controller;
 
 import com.caimei365.order.model.ResponseJson;
+import com.caimei365.order.model.dto.SellerCartDto;
 import com.caimei365.order.service.CartSellerService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
 import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.Map;
 
@@ -49,7 +48,107 @@ public class CartSellerApi {
         if (null == clubId) {
             return ResponseJson.error("机构Id不能为空!", null);
         }
-        return cartSellerService.getSellerShoppingCarts(serviceProviderId, clubId, againBuyProductIds, pageNum, pageSize);
+        return cartSellerService.getSellerCartList(serviceProviderId, clubId, againBuyProductIds, pageNum, pageSize);
+    }
+
+    /**
+     * 获取协销购物车商品种类
+     */
+    @ApiOperation("获取协销购物车数量(旧:/seller/productNum)")
+    @ApiImplicitParams({
+            @ApiImplicitParam(required = false, name = "serviceProviderId", value = "协销Id"),
+            @ApiImplicitParam(required = false, name = "clubId", value = "机构Id")
+    })
+    @GetMapping("/cart/count")
+    public ResponseJson<Integer> getSellerCarts(Integer serviceProviderId, Integer clubId) {
+        if (null == serviceProviderId) {
+            return ResponseJson.error("协销Id不能为空!", null);
+        }
+        if (null == clubId) {
+            return ResponseJson.error("机构Id不能为空!", null);
+        }
+        return cartSellerService.getSellerCartCount(serviceProviderId, clubId);
+    }
+
+    /**
+     * 协销添加购物车
+     *
+     * @param sellerCartDto {
+     *                      serviceProviderId 协销Id
+     *                      clubId       机构ID
+     *                      type         商品类型:1单一商品,2组合商品
+     *                      productId    单一商品id
+     *                      productNum   单一商品数量
+     *                      productInfo  组合商品信息:Json字符串格式[{"id":4351,"num":1},{}]
+     * }
+     */
+    @ApiOperation("协销添加购物车(旧:/seller/addCart)(/seller/batchAddCart)")
+    @PostMapping("/cart/add")
+    public ResponseJson<Integer> addSellerCart(SellerCartDto sellerCartDto){
+        if (null == sellerCartDto.getServiceProviderId()) {
+            return ResponseJson.error("协销Id不能为空!", null);
+        }
+        if (null == sellerCartDto.getClubId()) {
+            return ResponseJson.error("机构Id不能为空!", null);
+        }
+        if (null == sellerCartDto.getType()) {
+            return ResponseJson.error("商品类型(单一/组合)不能为空!", null);
+        }
+        if (1 == sellerCartDto.getType()) {
+            if (null == sellerCartDto.getProductId()) {
+                return ResponseJson.error("单一商品Id不能为空!", null);
+            }
+            if (null == sellerCartDto.getProductNum()) {
+                return ResponseJson.error("单一商品数量不能为空!", null);
+            }
+        } else if (2 == sellerCartDto.getType()) {
+            if (StringUtils.isEmpty(sellerCartDto.getProductInfo())) {
+                return ResponseJson.error("组合商品信息不能为空!", null);
+            }
+        } else {
+            return ResponseJson.error("商品类型(1单一/2组合)不正确!", null);
+        }
+        return cartSellerService.addShoppingCart(sellerCartDto);
+    }
+
+    /**
+     * 协销更新购物车
+     *
+     * @param sellerCartDto {
+     *                      id           购物车Id
+     *                      productNum   商品数量
+     *                      }
+     */
+    @ApiOperation("协销更新购物车(旧:/seller/addProductNum)")
+    @PostMapping("/cart/update")
+    public ResponseJson<Integer> updateSellerCart(SellerCartDto sellerCartDto){
+        if (null == sellerCartDto.getId()) {
+            return ResponseJson.error("购物车Id不能为空!", null);
+        }
+        if (null == sellerCartDto.getProductNum()) {
+            return ResponseJson.error("商品数量不能为空!", null);
+        }
+        return cartSellerService.updateSellerCart(sellerCartDto);
+    }
+
+    /**
+     * 协销删除购物车
+     *
+     * @param sellerCartDto {
+     *                      serviceProviderId 协销Id
+     *                      cartIds           购物车IDs
+     * }
+     */
+    @ApiOperation("删除购物车(旧:/seller/deleteSellerCart)")
+    @PostMapping("/cart/delete")
+    public ResponseJson<Integer> deleteSellerCart(SellerCartDto sellerCartDto){
+        if (null == sellerCartDto.getServiceProviderId()) {
+            return ResponseJson.error("协销Id不能为空!", null);
+        }
+        if (StringUtils.isEmpty(sellerCartDto.getCartIds())) {
+            return ResponseJson.error("购物车Id集合不能为空!", null);
+        }
+        return cartSellerService.deleteSellerCart(sellerCartDto);
     }
 
 

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

@@ -1,5 +1,7 @@
 package com.caimei365.order.mapper;
 
+import com.caimei365.order.model.dto.SellerCartDto;
+import com.caimei365.order.model.po.SellerCartPo;
 import com.caimei365.order.model.vo.CartItemVo;
 import com.caimei365.order.model.vo.CartShopVo;
 import org.apache.ibatis.annotations.Mapper;
@@ -27,4 +29,37 @@ public interface CartSellerMapper {
      * @param shopId             供应商Id
      */
     List<CartItemVo> getSellerCartProducts(Integer serviceProviderId, Integer clubId, Integer shopId);
+
+    /**
+     * 获取协销购物车商品种类
+     * @param serviceProviderId  协销Id
+     * @param clubId             机构Id
+     */
+    Integer getSellerCartCount(Integer serviceProviderId, Integer clubId);
+    /**
+     * 获取协销购物车
+     * @param sellerCartDto clubId,productId,serviceProviderId
+     */
+    SellerCartPo getSellerCart(SellerCartDto sellerCartDto);
+    /**
+     * 根据Id获取协销购物车
+     * @param id 购物车id
+     */
+    SellerCartPo getSellerCartById(Integer id);
+    /**
+     * 更新购物车
+     * @param sellerCartPo SellerCartPo
+     */
+    void updateSellerCart(SellerCartPo sellerCartPo);
+    /**
+     * 添加购物车
+     * @param sellerCartPo SellerCartPo
+     */
+    void insertSellerCart(SellerCartPo sellerCartPo);
+    /**
+     * 删除购物车
+     * @param serviceProviderId  协销Id
+     * @param cartIds 购物车Id集合
+     */
+    void deleteSellerCartByIds(Integer serviceProviderId, List<Integer> cartIds);
 }

+ 57 - 0
src/main/java/com/caimei365/order/model/dto/SellerCartDto.java

@@ -0,0 +1,57 @@
+package com.caimei365.order.model.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/6/28
+ */
+@Data
+public class SellerCartDto implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 协销购物车id
+     */
+    @ApiModelProperty("协销购物车id")
+    private Integer id;
+    /**
+     * 协销id
+     */
+    @ApiModelProperty("协销id")
+    private Integer serviceProviderId;
+    /**
+     * 机构id
+     */
+    @ApiModelProperty("机构id")
+    private Integer clubId;
+    /**
+     * 商品类型:1单一商品,2组合商品
+     */
+    @ApiModelProperty("商品类型:1单一商品,2组合商品")
+    private Integer type;
+    /**
+     * 单一商品id
+     */
+    @ApiModelProperty("单一商品id")
+    private Integer productId;
+    /**
+     * 商品数量
+     */
+    @ApiModelProperty("单一商品数量")
+    private Integer productNum;
+    /**
+     * 组合商品信息:Json字符串格式[{id:4351,num:1},{}]
+     */
+    @ApiModelProperty("组合商品信息:Json字符串格式[{id:4351,num:1},{}]")
+    private String productInfo;
+    /**
+     * 商品ids
+     */
+    @ApiModelProperty("购物车ids,删除购物车用,逗号分隔")
+    private String cartIds;
+}

+ 42 - 0
src/main/java/com/caimei365/order/model/po/SellerCartPo.java

@@ -0,0 +1,42 @@
+package com.caimei365.order.model.po;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * Description
+ *
+ * @author : Charles
+ * @date : 2021/6/29
+ */
+@Data
+public class SellerCartPo implements Serializable {
+    private static final long serialVersionUID = 1L;
+    /**
+     * 协销购物车id
+     */
+    private Integer id;
+    /**
+     * 协销id
+     */
+    private Integer serviceProviderId;
+    /**
+     * 机构id
+     */
+    private Integer clubId;
+    /**
+     * 商品id
+     */
+    private Integer productId;
+    /**
+     * 商品数量
+     */
+    private Integer num;
+    /**
+     * 添加时间
+     */
+    private Date addTime;
+
+}

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

@@ -1,6 +1,7 @@
 package com.caimei365.order.service;
 
 import com.caimei365.order.model.ResponseJson;
+import com.caimei365.order.model.dto.SellerCartDto;
 import io.swagger.annotations.ApiImplicitParam;
 
 import java.util.Map;
@@ -12,6 +13,7 @@ import java.util.Map;
  * @date : 2021/6/29
  */
 public interface CartSellerService {
+
     /**
      * 协销购物车列表数据
      * @param serviceProviderId 协销Id
@@ -20,5 +22,46 @@ public interface CartSellerService {
      * @param pageNum            页码
      * @param pageSize           每页数量
      */
-    ResponseJson<Map<String, Object>> getSellerShoppingCarts(Integer serviceProviderId, Integer clubId, String againBuyProductIds, int pageNum, int pageSize);
+    ResponseJson<Map<String, Object>> getSellerCartList(Integer serviceProviderId, Integer clubId, String againBuyProductIds, int pageNum, int pageSize);
+
+    /**
+     * 获取协销购物车商品种类
+     * @param serviceProviderId 协销Id
+     * @param clubId            机构Id
+     */
+    ResponseJson<Integer> getSellerCartCount(Integer serviceProviderId, Integer clubId);
+
+    /**
+     * 协销添加购物车
+     *
+     * @param sellerCartDto {
+     *                      serviceProviderId 协销Id
+     *                      clubId       机构ID
+     *                      type         商品类型:1单一商品,2组合商品
+     *                      productId    单一商品id
+     *                      productNum   单一商品数量
+     *                      productInfo  组合商品信息:Json字符串格式[{"id":4351,"num":1},{}]
+     * }
+     */
+    ResponseJson<Integer> addShoppingCart(SellerCartDto sellerCartDto);
+
+    /**
+     * 协销更新购物车
+     *
+     * @param sellerCartDto {
+     *                      id           购物车Id
+     *                      productNum   商品数量
+     *                      }
+     */
+    ResponseJson<Integer> updateSellerCart(SellerCartDto sellerCartDto);
+
+    /**
+     * 协销删除购物车
+     *
+     * @param sellerCartDto {
+     *                      serviceProviderId 协销Id
+     *                      cartIds           购物车IDs
+     * }
+     */
+    ResponseJson<Integer> deleteSellerCart(SellerCartDto sellerCartDto);
 }

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

@@ -1,9 +1,13 @@
 package com.caimei365.order.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.caimei365.order.components.ProductService;
 import com.caimei365.order.mapper.BaseMapper;
 import com.caimei365.order.mapper.CartSellerMapper;
 import com.caimei365.order.model.ResponseJson;
+import com.caimei365.order.model.dto.SellerCartDto;
+import com.caimei365.order.model.po.SellerCartPo;
 import com.caimei365.order.model.vo.CartItemVo;
 import com.caimei365.order.model.vo.PromotionPriceVo;
 import com.caimei365.order.model.vo.PromotionsVo;
@@ -51,7 +55,7 @@ public class CartSellerServiceImpl implements CartSellerService {
      * @param pageSize           每页数量
      */
     @Override
-    public ResponseJson<Map<String, Object>> getSellerShoppingCarts(Integer serviceProviderId, Integer clubId, String againBuyProductIds, int pageNum, int pageSize) {
+    public ResponseJson<Map<String, Object>> getSellerCartList(Integer serviceProviderId, Integer clubId, String againBuyProductIds, int pageNum, int pageSize) {
         List<Integer> againBuyIdList = Lists.newArrayList();
         if (againBuyProductIds.contains(",")) {
             String[] againBuyArr = againBuyProductIds.split(",");
@@ -215,4 +219,124 @@ public class CartSellerServiceImpl implements CartSellerService {
         // 返回数据
         return ResponseJson.success(resultMap);
     }
+
+    /**
+     * 获取协销购物车商品种类
+     *
+     * @param serviceProviderId 协销Id
+     * @param clubId            机构Id
+     */
+    @Override
+    public ResponseJson<Integer> getSellerCartCount(Integer serviceProviderId, Integer clubId) {
+        Integer count = cartSellerMapper.getSellerCartCount(serviceProviderId, clubId);
+        if (null == count) {
+            count = 0;
+        }
+        return ResponseJson.success(count);
+    }
+
+    /**
+     * 协销添加购物车
+     *
+     * @param sellerCartDto {
+     *                      serviceProviderId 协销Id
+     *                      clubId       机构ID
+     *                      type         商品类型:1单一商品,2组合商品
+     *                      productId    单一商品id
+     *                      productNum   单一商品数量
+     *                      productInfo  组合商品信息:Json字符串格式[{"id":4351,"num":1},{}]
+     *                      }
+     */
+    @Override
+    public ResponseJson<Integer> addShoppingCart(SellerCartDto sellerCartDto) {
+        if (1 == sellerCartDto.getType()) {
+            // 单一商品
+            addSellerCart(sellerCartDto);
+        } else if (2 == sellerCartDto.getType()) {
+            try {
+                JSONArray productArr = JSONArray.parseArray(sellerCartDto.getProductInfo());
+                for (Iterator iterator = productArr.iterator(); iterator.hasNext();) {
+                    JSONObject product = (JSONObject) iterator.next();
+                    Integer productId = product.getInteger("id");
+                    Integer productNum = product.getInteger("num");
+                    sellerCartDto.setProductId(productId);
+                    sellerCartDto.setProductNum(productNum);
+                    addSellerCart(sellerCartDto);
+                }
+            } catch (Exception e) {
+                log.error("组合商品信息格式错误", e);
+                return ResponseJson.error("组合商品信息格式错误!Json字符串格式[{\"id\":4351,\"num\":1},{}]", null);
+            }
+        }
+        // 返回购物车种类数量
+        return getSellerCartCount(sellerCartDto.getServiceProviderId(), sellerCartDto.getClubId());
+    }
+
+    /**
+     * 添加购物车,插入数据库
+     * @param sellerCartDto
+     */
+    private void addSellerCart(SellerCartDto sellerCartDto) {
+        SellerCartPo cart = cartSellerMapper.getSellerCart(sellerCartDto);
+        if (cart != null) {
+            // 购物车已存在该商品,更新数量
+            cart.setNum(cart.getNum() + sellerCartDto.getProductNum());
+            cart.setAddTime(new Date());
+            cartSellerMapper.updateSellerCart(cart);
+        } else {
+            // 添加新购物车
+            cart = new SellerCartPo();
+            cart.setServiceProviderId(sellerCartDto.getServiceProviderId());
+            cart.setClubId(sellerCartDto.getClubId());
+            cart.setProductId(sellerCartDto.getProductId());
+            cart.setNum(sellerCartDto.getProductNum());
+            cart.setAddTime(new Date());
+            cartSellerMapper.insertSellerCart(cart);
+        }
+    }
+
+    /**
+     * 协销更新购物车
+     *
+     * @param sellerCartDto {
+     *                      id           购物车Id
+     *                      productNum   商品数量
+     *                      }
+     */
+    @Override
+    public ResponseJson<Integer> updateSellerCart(SellerCartDto sellerCartDto) {
+        SellerCartPo cart = cartSellerMapper.getSellerCartById(sellerCartDto.getId());
+        if (sellerCartDto.getServiceProviderId() != cart.getServiceProviderId()) {
+            return ResponseJson.error("协销Id不正确!",null);
+        }
+        cart.setNum(cart.getNum() + sellerCartDto.getProductNum());
+        cart.setAddTime(new Date());
+        cartSellerMapper.updateSellerCart(cart);
+        return ResponseJson.success(0);
+    }
+
+    /**
+     * 协销删除购物车
+     *
+     * @param sellerCartDto {
+     *                      serviceProviderId 协销Id
+     *                      cartIds           购物车IDs
+     *                      }
+     */
+    @Override
+    public ResponseJson<Integer> deleteSellerCart(SellerCartDto sellerCartDto) {
+        List<Integer> cartIdList = Lists.newArrayList();
+        if (sellerCartDto.getCartIds().contains(",")) {
+            String[] productArr = sellerCartDto.getCartIds().split(",");
+            for (String id : productArr) {
+                cartIdList.add(Integer.parseInt(id));
+            }
+        } else {
+            cartIdList.add(Integer.parseInt(sellerCartDto.getCartIds()));
+        }
+        cartSellerMapper.deleteSellerCartByIds(sellerCartDto.getServiceProviderId(), cartIdList);
+        return ResponseJson.success(0);
+    }
+
+
 }

+ 0 - 12
src/main/resources/backup.sql

@@ -1,12 +0,0 @@
--- =========== 订单微服务模块
-
--- 废弃 sku表
-
-ALTER TABLE `cm_cart`
-MODIFY COLUMN `skuID` varchar(20) DEFAULT NULL COMMENT '【2021-06已废弃】',
-MODIFY COLUMN `isOutOfTime` char(1) DEFAULT '0' COMMENT '【2021-06已废弃】',
-add column `shopID` int(11) default null comment '商品供应商Id' after `productID`;
-
-update `cm_cart` c left join `product` p on c.`productID`=p.`productID` set c.`shopID`=p.`shopID`;
-
-

+ 34 - 0
src/main/resources/mapper/CartSellerMapper.xml

@@ -37,4 +37,38 @@
         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>
+    <select id="getSellerCart" resultType="com.caimei365.order.model.po.SellerCartPo">
+        SELECT
+            id, serviceProviderId, clubId, productId, num
+        FROM bp_order_product_cart
+        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
+        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}, addTime = #{addTime}
+        WHERE id = #{id}
+    </update>
+    <insert id="insertSellerCart" keyColumn="id" keyProperty="id"  parameterType="com.caimei365.order.model.po.SellerCartPo" useGeneratedKeys="true">
+        INSERT INTO bp_order_product_cart (serviceProviderId, clubId, productId, num, addTime)
+        VALUES (#{serviceProviderId}, #{clubId}, #{productId}, #{num}, #{addTime})
+    </insert>
+    <delete id="deleteSellerCartByIds">
+        DELETE FROM bp_order_product_cart
+        WHERE serviceProviderId = #{serviceProviderId}
+        AND id in
+        <foreach collection="cartIds" open="(" separator="," close=")" item="id">
+            #{id}
+        </foreach>
+    </delete>
+
 </mapper>