Forráskód Böngészése

分销者订单列表

plf 4 éve
szülő
commit
b173fe0eb1

+ 37 - 1
src/main/java/com/caimei/controller/OrderApi.java

@@ -2,6 +2,7 @@ package com.caimei.controller;
 
 import com.caimei.model.ResponseJson;
 import com.caimei.model.vo.LogisticsBatchVo;
+import com.caimei.model.vo.OrderProductVo;
 import com.caimei.model.vo.OrderVo;
 import com.caimei.service.OrderService;
 import com.github.pagehelper.PageInfo;
@@ -11,7 +12,6 @@ import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -158,4 +158,40 @@ public class OrderApi {
     public ResponseJson<Map<String, Object>> orderTotal(Integer userId) {
         return orderService.orderTotal(userId);
     }
+
+
+    /**
+     * 分销者订单列表
+     */
+    @ApiOperation("分销者订单列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "orderState", required = false, value = "1:待付款,2:待发货,3:已发货,4:退货款"),
+            @ApiImplicitParam(name = "orderType", required = true, value = "0:全部订单,1:用户订单,2:自身订单"),
+            @ApiImplicitParam(name = "userId", required = true, value = "分销者用户id"),
+            @ApiImplicitParam(name = "searchWord", required = false, value = "搜索关键词"),
+            @ApiImplicitParam(name = "pageNum", required = false, value = "第几页"),
+            @ApiImplicitParam(name = "pageSize", required = false, value = "一页多少条")
+    })
+    @GetMapping("/dealer/list")
+    public ResponseJson<PageInfo<OrderVo>> dealerOrderList(Integer orderState, Integer orderType, Integer userId, String searchWord,
+                                                           @RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
+                                                           @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
+        if (userId == null) {
+            return ResponseJson.error("用户参数异常", null);
+        }
+        return orderService.dealerOrderList(orderState, orderType, userId, searchWord, pageNum, pageSize);
+    }
+
+    /**
+     * 再次购买
+     */
+    @ApiOperation("再次购买")
+    @ApiImplicitParam(name = "orderId", required = true, value = "订单id")
+    @GetMapping("/buyAgain")
+    public ResponseJson<List<OrderProductVo>> buyAgain(Integer orderId) {
+        if (orderId == null) {
+            return ResponseJson.error("参数异常", null);
+        }
+        return orderService.buyAgain(orderId);
+    }
 }

+ 8 - 7
src/main/java/com/caimei/controller/OrderSubmitApi.java

@@ -35,13 +35,14 @@ public class OrderSubmitApi {
      */
     @ApiOperation("商品结算")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "productIds", value = "商品ID串用逗号隔开", required = true),
+            @ApiImplicitParam(name = "cartIds", value = "购物车ID串用逗号隔开", required = false),
+            @ApiImplicitParam(name = "productId", value = "立即购买商品ID", required = false),
             @ApiImplicitParam(name = "productCount", value = "立即购买商品数量", required = false),
-            @ApiImplicitParam(name = "userId", value = "用户id", required = true)
+            @ApiImplicitParam(name = "heUserId", value = "分销者用户id", required = false)
     })
     @GetMapping("/confirm")
-    public ResponseJson<Map<String, Object>> orderConfirm(String productIds, Integer productCount, Integer userId) {
-        return orderSubmitService.orderConfirm(productIds, productCount, userId);
+    public ResponseJson<Map<String, Object>> orderConfirm(String cartIds, Integer productId, Integer productCount, Integer heUserId) {
+        return orderSubmitService.orderConfirm(cartIds, productId, productCount, heUserId);
     }
 
     /**
@@ -54,9 +55,9 @@ public class OrderSubmitApi {
      *               *   "orderInfo": [
      *               *                   { "shopId":1001,    // 供应商ID
      *               *                     "note":备注,
-     *               *                     "productInfo":[   // 商品id,数量
-     *               *                         {"productId": 2789, "productNum": 1},
-     *               *                         {"productId": 2789, "productNum": 1}
+     *               *                     "productInfo":[   // 商品id,数量,分销者userId
+     *               *                         {"productId": 2789, "productNum": 1,"heUserId":1010},
+     *               *                         {"productId": 2789, "productNum": 1,"heUserId":0}
      *               *                      ]
      *               *                   },
      *               *                   {多个供应商商品数据结构同上}

+ 15 - 0
src/main/java/com/caimei/controller/ShoppingCartApi.java

@@ -3,6 +3,7 @@ package com.caimei.controller;
 import com.alibaba.fastjson.JSONObject;
 import com.caimei.model.ResponseJson;
 import com.caimei.model.dto.CartDto;
+import com.caimei.model.vo.OrderProductVo;
 import com.caimei.service.ShoppingCartService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -10,6 +11,7 @@ import io.swagger.annotations.ApiOperation;
 import lombok.RequiredArgsConstructor;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -86,4 +88,17 @@ public class ShoppingCartApi {
         cartIds = jsonObject.getString("cartIds");
         return shoppingCartService.deleteCart(cartIds);
     }
+
+    /**
+     * 再次购买,一键加入购物车
+     */
+    @ApiOperation("再次购买,一键加入购物车")
+    @ApiImplicitParam(name = "orderId", required = true, value = "订单id")
+    @GetMapping("/addCart")
+    public ResponseJson<String> buyAgainAddCart(Integer orderId) {
+        if (orderId == null) {
+            return ResponseJson.error("参数异常", null);
+        }
+        return shoppingCartService.buyAgainAddCart(orderId);
+    }
 }

+ 28 - 1
src/main/java/com/caimei/mapper/OrderMapper.java

@@ -251,5 +251,32 @@ public interface OrderMapper {
      * @param status
      * @return
      */
-    Integer findOrderCount(@Param("userId") Integer userId,@Param("status") int status);
+    Integer findOrderCount(@Param("userId") Integer userId, @Param("status") int status);
+
+    /**
+     * 查询分销者订单
+     *
+     * @param orderState
+     * @param orderType
+     * @param userId
+     * @param searchWord
+     * @return
+     */
+    List<OrderVo> dealerOrderList(@Param("orderState") Integer orderState, @Param("orderType") Integer orderType, @Param("userId") Integer userId, @Param("searchWord") String searchWord);
+
+    /**
+     * 查询主订单下所有的订单商品
+     *
+     * @param orderId
+     * @return
+     */
+    List<OrderProductVo> findOrderProductAll(Integer orderId);
+
+    /**
+     * 查询商品上下架状态
+     *
+     * @param productId
+     * @return
+     */
+    Integer findProductStatus(Integer productId);
 }

+ 22 - 6
src/main/java/com/caimei/mapper/OrderSubmitMapper.java

@@ -20,20 +20,19 @@ public interface OrderSubmitMapper {
     /**
      * 根据商品集合查询供应商信息
      *
-     * @param productIds
+     * @param cartIds
      * @return
      */
-    List<ShopVo> findShopByproductIds(@Param("productIds") String[] productIds);
+    List<ShopVo> findShopByCartIds(@Param("cartIds") String[] cartIds);
 
     /**
      * 查询购物车商品信息
      *
      * @param shopId
-     * @param productId
-     * @param userId
+     * @param cartIds
      * @return
      */
-    List<CartProductVo> findByShopCartProduct(@Param("shopId") Integer shopId, @Param("productIds") String[] productId, @Param("userId") Integer userId);
+    List<CartProductVo> findByShopCartProduct(@Param("shopId") Integer shopId, @Param("cartIds") String[] cartIds);
 
     /**
      * 查询用户信息
@@ -56,8 +55,9 @@ public interface OrderSubmitMapper {
      *
      * @param userId    用户id
      * @param productId 商品id
+     * @param heUserId  分销者id
      */
-    void deleteCartByProductId(@Param("userId") Integer userId, @Param("productId") Integer productId);
+    void deleteCartByProductId(@Param("userId") Integer userId, @Param("productId") Integer productId, @Param("heUserId") Integer heUserId);
 
     /**
      * 保存订单信息
@@ -116,4 +116,20 @@ public interface OrderSubmitMapper {
      * @param userInfo
      */
     void insertUserInfo(BpOrderUserInfoPo userInfo);
+
+    /**
+     * 根据商品id查询供应商信息
+     *
+     * @param productId
+     * @return
+     */
+    ShopVo findShopByProductId(Integer productId);
+
+    /**
+     * 查询商品信息
+     *
+     * @param productId
+     * @return
+     */
+    CartProductVo findProductById(Integer productId);
 }

+ 3 - 2
src/main/java/com/caimei/mapper/ShoppingCartMapper.java

@@ -21,10 +21,11 @@ public interface ShoppingCartMapper {
      * 查询购物车
      *
      * @param userId    机构id
-     * @param productId 组织商品id
+     * @param productId 商品id
+     * @param heUserId 呵呵分销者id
      * @return
      */
-    CmCartPo findCartProduct(@Param("userId") Integer userId, @Param("productId") Integer productId);
+    CmCartPo findCartProduct(@Param("userId") Integer userId, @Param("productId") Integer productId, @Param("heUserId") Integer heUserId);
 
     /**
      * 保存购物车

+ 6 - 0
src/main/java/com/caimei/model/dto/CartDto.java

@@ -31,4 +31,10 @@ public class CartDto implements Serializable {
      */
     @ApiModelProperty("商品数量")
     private Integer productCount;
+
+    /**
+     * 呵呵分销者userId
+     */
+    @ApiModelProperty("呵呵分销者userId")
+    private Integer heUserId;
 }

+ 9 - 2
src/main/java/com/caimei/model/po/CmCartPo.java

@@ -1,12 +1,14 @@
 package com.caimei.model.po;
 
+import lombok.Data;
+
 import java.io.Serializable;
 import java.util.Date;
-import lombok.Data;
 
 /**
  * cm_cart
- * @author 
+ *
+ * @author
  */
 @Data
 public class CmCartPo implements Serializable {
@@ -26,5 +28,10 @@ public class CmCartPo implements Serializable {
 
     private String reBuyFlag;
 
+    /**
+     * 呵呵分销者userId
+     */
+    private Integer heUserId;
+
     private static final long serialVersionUID = 1L;
 }

+ 5 - 0
src/main/java/com/caimei/model/po/CmOrderProductPo.java

@@ -333,5 +333,10 @@ public class CmOrderProductPo implements Serializable {
 
     private Integer cancelNum;
 
+    /**
+     * 分销者id(呵呵商城订单使用)
+     */
+    private Integer heUserId;
+
     private static final long serialVersionUID = 1L;
 }

+ 5 - 0
src/main/java/com/caimei/model/vo/CartProductVo.java

@@ -79,6 +79,11 @@ public class CartProductVo implements Serializable {
      */
     private Integer productCount;
 
+    /**
+     * 分销者id
+     */
+    private Integer heUserId;
+
     /**
      * 前端选中状态
      */

+ 5 - 15
src/main/java/com/caimei/model/vo/OrderProductVo.java

@@ -35,16 +35,6 @@ public class OrderProductVo implements Serializable {
      */
     private Integer productId;
 
-    /**
-     * 组织的商品Id,关联cm_mall_organize_products表ID[适用于组织订单]
-     */
-    private Integer organizeProductId;
-
-    /**
-     * 采美组织默认为null,具体对应cm_mall_organize表ID[适用于组织订单]
-     */
-    private Integer organizeId;
-
     /**
      * 购买数量
      */
@@ -227,11 +217,6 @@ public class OrderProductVo implements Serializable {
      */
     private String actType;
 
-    /**
-     * 活动优惠  类似满减优惠金额
-     */
-    private BigDecimal actPreferential;
-
     /**
      * 商品类型(0正常商品,1协商赠品,2促销赠品)
      */
@@ -249,6 +234,11 @@ public class OrderProductVo implements Serializable {
 
     private Integer cancelNum;
 
+    /**
+     * 分销者id(呵呵商城订单使用)
+     */
+    private Integer heUserId;
+
     /**
      * 已发货数量
      */

+ 1 - 1
src/main/java/com/caimei/model/vo/OrderVo.java

@@ -25,7 +25,7 @@ public class OrderVo implements Serializable {
      */
     private String orderNo;
 
-    private Long userId;
+    private Integer userId;
 
     /**
      * 下单人

+ 22 - 0
src/main/java/com/caimei/service/OrderService.java

@@ -2,6 +2,7 @@ package com.caimei.service;
 
 import com.caimei.model.ResponseJson;
 import com.caimei.model.vo.LogisticsBatchVo;
+import com.caimei.model.vo.OrderProductVo;
 import com.caimei.model.vo.OrderVo;
 import com.github.pagehelper.PageInfo;
 
@@ -100,4 +101,25 @@ public interface OrderService {
      * @return
      */
     ResponseJson<Map<String, Object>> orderTotal(Integer userId);
+
+    /**
+     * 分销者订单列表
+     *
+     * @param orderState
+     * @param orderType
+     * @param userId
+     * @param searchWord
+     * @param pageNum
+     * @param pageSize
+     * @return
+     */
+    ResponseJson<PageInfo<OrderVo>> dealerOrderList(Integer orderState, Integer orderType, Integer userId, String searchWord, Integer pageNum, Integer pageSize);
+
+    /**
+     * 再次购买
+     *
+     * @param orderId
+     * @return
+     */
+    ResponseJson<List<OrderProductVo>> buyAgain(Integer orderId);
 }

+ 4 - 3
src/main/java/com/caimei/service/OrderSubmitService.java

@@ -15,12 +15,13 @@ public interface OrderSubmitService {
     /**
      * 商品结算
      *
-     * @param productIds   商品ID串用逗号隔开。
+     * @param cartIds      购物车ID串用逗号隔开。
+     * @param productId    立即购买商品ID
      * @param productCount 立即购买商品数量
-     * @param userId       用户id。
+     * @param heUserId       用户id。
      * @return
      */
-    ResponseJson<Map<String, Object>> orderConfirm(String productIds, Integer productCount, Integer userId);
+    ResponseJson<Map<String, Object>> orderConfirm(String cartIds, Integer productId, Integer productCount, Integer heUserId);
 
     /**
      * 提交订单

+ 8 - 0
src/main/java/com/caimei/service/ShoppingCartService.java

@@ -57,4 +57,12 @@ public interface ShoppingCartService {
      * 设置活动价格阶梯
      */
     void setPrice(CartProductVo product);
+
+    /**
+     * 再次购买,一键加入购物车
+     *
+     * @param orderId
+     * @return
+     */
+    ResponseJson<String> buyAgainAddCart(Integer orderId);
 }

+ 57 - 16
src/main/java/com/caimei/service/impl/OrderServiceImpl.java

@@ -2,13 +2,12 @@ package com.caimei.service.impl;
 
 import com.alibaba.fastjson.JSONArray;
 import com.caimei.mapper.OrderMapper;
-import com.caimei.mapper.OrderSubmitMapper;
 import com.caimei.model.ResponseJson;
 import com.caimei.model.po.CmPayShopRecordPo;
-import com.caimei.model.po.UserPo;
 import com.caimei.model.po.UserSearchHistoryPo;
 import com.caimei.model.vo.*;
 import com.caimei.service.OrderService;
+import com.caimei.service.ShoppingCartService;
 import com.caimei.util.MathUtil;
 import com.caimei.util.ProductUtils;
 import com.github.pagehelper.PageHelper;
@@ -21,10 +20,8 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicBoolean;
 
 /**
  * Description
@@ -38,7 +35,7 @@ public class OrderServiceImpl implements OrderService {
     @Resource
     private OrderMapper orderMapper;
     @Resource
-    private OrderSubmitMapper orderSubmitMapper;
+    private ShoppingCartService shoppingCartService;
     @Value("${caimei.oldapi}")
     private String domain;
 
@@ -274,6 +271,22 @@ public class OrderServiceImpl implements OrderService {
 
     @Override
     public ResponseJson<PageInfo<OrderVo>> searchOrder(String searchWord, Integer userId, Integer pageNum, Integer pageSize) {
+        //保存订单搜索记录
+        saveHistory(searchWord, userId);
+        PageHelper.startPage(pageNum, pageSize);
+        List<OrderVo> orderList = orderMapper.searchOrder(searchWord, userId);
+
+        //获取主订单数据
+        getOrderData(orderList);
+
+        PageInfo<OrderVo> pageData = new PageInfo<>(orderList);
+        return ResponseJson.success(pageData);
+    }
+
+    /**
+     * 保存订单搜索记录
+     */
+    private void saveHistory(String searchWord, Integer userId) {
         //保存并删除大于10条的历史记录
         UserSearchHistoryPo historyRecord = new UserSearchHistoryPo();
         historyRecord.setUserId(userId.longValue());
@@ -288,15 +301,6 @@ public class OrderServiceImpl implements OrderService {
             orderMapper.insertHistory(historyRecord);
         }
         orderMapper.deleteHistoryByUserId(userId);
-
-        PageHelper.startPage(pageNum, pageSize);
-        List<OrderVo> orderList = orderMapper.searchOrder(searchWord, userId);
-
-        //获取主订单数据
-        getOrderData(orderList);
-
-        PageInfo<OrderVo> pageData = new PageInfo<>(orderList);
-        return ResponseJson.success(pageData);
     }
 
     @Override
@@ -333,6 +337,43 @@ public class OrderServiceImpl implements OrderService {
         return ResponseJson.success(map);
     }
 
+    @Override
+    public ResponseJson<PageInfo<OrderVo>> dealerOrderList(Integer orderState, Integer orderType, Integer userId, String searchWord, Integer pageNum, Integer pageSize) {
+        //保存订单搜索记录
+        if (StringUtils.isNotBlank(searchWord)) {
+            saveHistory(searchWord, userId);
+        }
+        PageHelper.startPage(pageNum, pageSize);
+        List<OrderVo> orderList = orderMapper.dealerOrderList(orderState, orderType, userId, searchWord);
+        getOrderData(orderList);
+        PageInfo<OrderVo> pageData = new PageInfo<>(orderList);
+        return ResponseJson.success(pageData);
+    }
+
+    @Override
+    public ResponseJson<List<OrderProductVo>> buyAgain(Integer orderId) {
+        List<OrderProductVo> orderProductList = orderMapper.findOrderProductAll(orderId);
+        List<OrderProductVo> list = new ArrayList<>();
+        //商品是否全部下架
+        AtomicBoolean isOff = new AtomicBoolean(true);
+        orderProductList.forEach(orderProduct -> {
+            orderProduct.setProductImage(ProductUtils.getImageURL("product", orderProduct.getProductImage(), 0, domain));
+            Integer validFlag = orderMapper.findProductStatus(orderProduct.getProductId());
+            if (validFlag == 2) {
+                list.add(orderProduct);
+            } else {
+                isOff.set(false);
+            }
+        });
+        if (isOff.get()) {
+            return ResponseJson.error("订单内商品已全部下架,不能购买!", null);
+        }
+        if (list.size() > 0) {
+            return ResponseJson.error(list);
+        }
+        return ResponseJson.success(null);
+    }
+
     /**
      * 支付金额,待付金额
      */

+ 38 - 28
src/main/java/com/caimei/service/impl/OrderSubmitServiceImpl.java

@@ -46,36 +46,43 @@ public class OrderSubmitServiceImpl implements OrderSubmitService {
     private String domain;
 
     @Override
-    public ResponseJson<Map<String, Object>> orderConfirm(String productIds, Integer productCount, Integer userId) {
+    public ResponseJson<Map<String, Object>> orderConfirm(String cartIds, Integer productId, Integer productCount, Integer heUserId) {
         Map<String, Object> confirmData = new HashMap<>(5);
-        if (userId != null) {
-            log.info("<<<<< 结算订单 >>>>>");
-            //商品总金额
-            AtomicReference<BigDecimal> totalPrice = new AtomicReference<BigDecimal>(BigDecimal.ZERO);
-            String[] productId = productIds.split(",");
-            List<ShopVo> shopList = orderSubmitMapper.findShopByproductIds(productId);
-            shopList.forEach(shop -> {
-                shop.setLogo(ProductUtils.getImageURL("shopLogo", shop.getLogo(), 0, domain));
-                List<CartProductVo> products = orderSubmitMapper.findByShopCartProduct(shop.getShopId(), productId, userId);
-                BigDecimal shopTotalPrice = BigDecimal.ZERO;
-                for (CartProductVo product : products) {
-                    //立即购买
-                    if (productCount != null && productCount > 0) {
-                        product.setProductCount(productCount);
-                    }
-                    shoppingCartService.setPrice(product);
-                    shopTotalPrice = MathUtil.add(shopTotalPrice, MathUtil.mul(product.getProductCount(), product.getPrice()));
-                }
-                shop.setShopTotalPrice(shopTotalPrice);
-                shop.setProductList(products);
-                totalPrice.set(MathUtil.add(totalPrice.get(), shopTotalPrice));
-            });
-            confirmData.put("totalPrice", totalPrice);
-            confirmData.put("shopList", shopList);
-            return ResponseJson.success(confirmData);
+        log.info("<<<<< 结算订单 >>>>>");
+        //商品总金额
+        AtomicReference<BigDecimal> totalPrice = new AtomicReference<BigDecimal>(BigDecimal.ZERO);
+        List<ShopVo> shopList = new ArrayList<>();
+        if (productId != null && productId > 0) {
+            //立即购买
+            shopList.add(orderSubmitMapper.findShopByProductId(productId));
         } else {
-            return ResponseJson.error("登录后才能购买", null);
+            String[] cartId = cartIds.split(",");
+            shopList = orderSubmitMapper.findShopByCartIds(cartId);
         }
+        shopList.forEach(shop -> {
+            shop.setLogo(ProductUtils.getImageURL("shopLogo", shop.getLogo(), 0, domain));
+            List<CartProductVo> products = new ArrayList<>();
+            if (productId != null && productId > 0) {
+                CartProductVo cartProduct = orderSubmitMapper.findProductById(productId);
+                cartProduct.setProductCount(productCount);
+                cartProduct.setHeUserId(heUserId);
+                products.add(cartProduct);
+            } else {
+                String[] cartId = cartIds.split(",");
+                products = orderSubmitMapper.findByShopCartProduct(shop.getShopId(), cartId);
+            }
+            BigDecimal shopTotalPrice = BigDecimal.ZERO;
+            for (CartProductVo product : products) {
+                shoppingCartService.setPrice(product);
+                shopTotalPrice = MathUtil.add(shopTotalPrice, MathUtil.mul(product.getProductCount(), product.getPrice()));
+            }
+            shop.setShopTotalPrice(shopTotalPrice);
+            shop.setProductList(products);
+            totalPrice.set(MathUtil.add(totalPrice.get(), shopTotalPrice));
+        });
+        confirmData.put("totalPrice", totalPrice);
+        confirmData.put("shopList", shopList);
+        return ResponseJson.success(confirmData);
     }
 
     @Override
@@ -166,6 +173,8 @@ public class OrderSubmitServiceImpl implements OrderSubmitService {
                 for (Map<String, Integer> productTemp : productInfoList) {
                     Integer productId = productTemp.get("productId");
                     Integer productNum = productTemp.get("productNum");
+                    Integer heUserId = productTemp.get("heUserId");
+                    heUserId = heUserId == null ? 0 : heUserId;
                     // 统计商品总数量
                     productCount += productNum;
 
@@ -228,11 +237,12 @@ public class OrderSubmitServiceImpl implements OrderSubmitService {
                      * 整理订单商品数据
                      */
                     CmOrderProductPo orderProduct = setOrderProduct(productNum, product, priceType, productPrice, addedValueTax);
+                    orderProduct.setHeUserId(heUserId);
                     // 加入订单商品列表
                     orderProductList.add(orderProduct);
 
                     if (cartType == 1) {
-                        orderSubmitMapper.deleteCartByProductId(user.getUserID(), product.getProductId());
+                        orderSubmitMapper.deleteCartByProductId(user.getUserID(), product.getProductId(), heUserId);
                         log.info(">>>>>>>>>>>>>>>>>>>>>>>>>>删除用户购物车数据productId:" + product.getProductId());
                     }
                 }

+ 36 - 4
src/main/java/com/caimei/service/impl/ShoppingCartServiceImpl.java

@@ -1,13 +1,12 @@
 package com.caimei.service.impl;
 
+import com.caimei.mapper.OrderMapper;
 import com.caimei.mapper.ProductMapper;
 import com.caimei.mapper.ShoppingCartMapper;
 import com.caimei.model.ResponseJson;
 import com.caimei.model.dto.CartDto;
 import com.caimei.model.po.CmCartPo;
-import com.caimei.model.vo.ActivityLadderVo;
-import com.caimei.model.vo.CartProductVo;
-import com.caimei.model.vo.ShopVo;
+import com.caimei.model.vo.*;
 import com.caimei.service.ShoppingCartService;
 import com.caimei.util.MathUtil;
 import com.caimei.util.ProductUtils;
@@ -33,12 +32,16 @@ public class ShoppingCartServiceImpl implements ShoppingCartService {
     private ShoppingCartMapper shoppingCartMapper;
     @Resource
     private ProductMapper productMapper;
+    @Resource
+    private OrderMapper orderMapper;
     @Value("${caimei.oldapi}")
     private String domain;
 
     @Override
     public ResponseJson<Integer> addShoppingCart(CartDto cart) {
-        CmCartPo cartPo = shoppingCartMapper.findCartProduct(cart.getUserId(), cart.getProductId());
+        Integer heUserId = cart.getHeUserId();
+        heUserId = heUserId == null ? 0 : heUserId;
+        CmCartPo cartPo = shoppingCartMapper.findCartProduct(cart.getUserId(), cart.getProductId(), heUserId);
         if (cartPo == null) {
             shoppingCartMapper.insertCart(cart);
         } else {
@@ -107,6 +110,35 @@ public class ShoppingCartServiceImpl implements ShoppingCartService {
         }
     }
 
+    @Override
+    public ResponseJson<String> buyAgainAddCart(Integer orderId) {
+        OrderVo order = orderMapper.findOrder(orderId);
+        List<OrderProductVo> orderProductList = orderMapper.findOrderProductAll(orderId);
+        CartDto cart = new CartDto();
+        cart.setUserId(order.getUserId());
+        //商品是否全部下架
+        orderProductList.forEach(orderProduct -> {
+            Integer validFlag = orderMapper.findProductStatus(orderProduct.getProductId());
+            if (validFlag == 1) {
+                cart.setProductId(orderProduct.getProductId());
+                cart.setProductCount(orderProduct.getNum());
+                Integer heUserId = orderProduct.getHeUserId();
+                if (heUserId != null && heUserId > 0) {
+                    Integer activityId = productMapper.findActivityByProductId(orderProduct.getProductId());
+                    if (activityId != null && activityId > 0) {
+                        cart.setHeUserId(heUserId);
+                    } else {
+                        cart.setHeUserId(0);
+                    }
+                } else {
+                    cart.setHeUserId(0);
+                }
+                addShoppingCart(cart);
+            }
+        });
+        return ResponseJson.success(null);
+    }
+
     @Override
     public void updateNumber(Integer cartId, Integer productCount) {
         shoppingCartMapper.updateByProductCount(cartId, productCount);

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

@@ -93,3 +93,9 @@ COMMENT='呵呵分销用户活动商品表';
 
 ALTER TABLE `cm_order`
   CHANGE `orderType` `orderType` INT NULL   COMMENT '订单类型 0协销订单、 1普通订单、 2呵呵订单';
+
+ALTER TABLE `cm_cart`
+  ADD COLUMN `heUserId` INT NULL  COMMENT '呵呵分销者userId' AFTER `reBuyFlag`;
+
+ALTER TABLE `cm_order_product`
+  ADD COLUMN `heUserId` INT NULL   COMMENT '分销者id(呵呵商城订单使用)' AFTER `cancelNum`;

+ 105 - 75
src/main/resources/mapper/OrderMapper.xml

@@ -4,59 +4,59 @@
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.caimei.mapper.OrderMapper">
     <sql id="cm_Order_List">
-          orderID AS orderId,
-          orderNo,
-          organizeID AS organizeId,
-          userID AS userId,
-          buyUserID AS buyUserId,
-          status,
-          shopOrderIDs AS shopOrderIds,
-          receiptStatus,
-          payStatus,
-          sendOutStatus,
-          refundType,
-          onlinePayFlag,
-          payTotalFee,
-          payableAmount,
-          balancePayFee,
-          discountFee,
-          promotionFullReduction,
-          note,
-          orderSource,
-          orderTime,
-          productCount,
-          presentCount,
-          promotionalGiftsCount,
-          invoiceFlag,
-          clauseID AS clauseId,
-          clauseContent,
-          clauseName,
-          freePostFlag,
-          freight,
-          closeReason
+          co.orderID AS orderId,
+          co.orderNo,
+          co.organizeID AS organizeId,
+          co.userID AS userId,
+          co.buyUserID AS buyUserId,
+          co.status,
+          co.shopOrderIDs AS shopOrderIds,
+          co.receiptStatus,
+          co.payStatus,
+          co.sendOutStatus,
+          co.refundType,
+          co.onlinePayFlag,
+          co.payTotalFee,
+          co.payableAmount,
+          co.balancePayFee,
+          co.discountFee,
+          co.promotionFullReduction,
+          co.note,
+          co.orderSource,
+          co.orderTime,
+          co.productCount,
+          co.presentCount,
+          co.promotionalGiftsCount,
+          co.invoiceFlag,
+          co.clauseID AS clauseId,
+          co.clauseContent,
+          co.clauseName,
+          co.freePostFlag,
+          co.freight,
+          co.closeReason
     </sql>
     <select id="findOrderList" resultType="com.caimei.model.vo.OrderVo">
         select
           <include refid="cm_Order_List"></include>
-        from cm_order
-        where delFlag = '0'
-        AND orderType = 2
+        from cm_order co
+        where co.delFlag = '0'
+        AND co.orderType = 2
         <if test="userId != null ">
-            AND userID = #{userId}
+            AND co.userID = #{userId}
         </if>
         <if test="orderState == 1 ">
-            AND status IN(11,12,13,21,22,23)
+            AND co.status IN(11,12,13,21,22,23)
         </if>
         <if test="orderState == 2 ">
-            AND status IN(11,12,21,22,31,32)
+            AND co.status IN(11,12,21,22,31,32)
         </if>
         <if test="orderState == 3 ">
-            AND status IN(12,13,22,23,32,33)
+            AND co.status IN(12,13,22,23,32,33)
         </if>
         <if test="orderState == 4 ">
-            AND refundType IN(1,2)
+            AND co.refundType IN(1,2)
         </if>
-        ORDER BY orderTime DESC
+        ORDER BY co.orderTime DESC
     </select>
 
     <select id="findLogistics" resultType="com.caimei.model.vo.LogisticsBatchVo">
@@ -105,8 +105,6 @@
           cop.shopOrderID AS shopOrderId,
           cop.shopID AS shopId,
           cop.productID AS productId,
-          cop.organizeProductID AS organizeProductId,
-          cop.organizeID AS organizeId,
           cop.num,
           cop.presentNum,
           cop.outStoreType,
@@ -130,7 +128,8 @@
           cop.productUnit,
           cop.productImage,
           cop.productType,
-          cop.ladderPriceFlag
+          cop.ladderPriceFlag,
+          cop.heUserId
         FROM
           cm_order_product cop
         WHERE
@@ -176,10 +175,10 @@
         SELECT
           <include refid="cm_Order_List"></include>
         FROM
-          cm_order
+          cm_order co
         WHERE
-          orderID = #{orderID}
-          AND delFlag = '0'
+          co.orderID = #{orderID}
+          AND co.delFlag = '0'
     </select>
 
     <select id="returnedPurchase" resultType="integer">
@@ -372,36 +371,7 @@
 
     <select id="searchOrder" resultType="com.caimei.model.vo.OrderVo">
         SELECT
-          co.orderID AS orderId,
-          co.orderNo,
-          co.organizeID AS organizeId,
-          co.userID AS userId,
-          co.buyUserID AS buyUserId,
-          co.status,
-          co.shopOrderIDs AS shopOrderIds,
-          co.receiptStatus,
-          co.payStatus,
-          co.sendOutStatus,
-          co.refundType,
-          co.onlinePayFlag,
-          co.payTotalFee,
-          co.payableAmount,
-          co.balancePayFee,
-          co.discountFee,
-          co.promotionFullReduction,
-          co.note,
-          co.orderSource,
-          co.orderTime,
-          co.productCount,
-          co.presentCount,
-          co.promotionalGiftsCount,
-          co.invoiceFlag,
-          co.clauseID AS clauseId,
-          co.clauseContent,
-          co.clauseName,
-          co.freePostFlag,
-          co.freight,
-          co.closeReason
+          <include refid="cm_Order_List"></include>
         FROM
           cm_order co
           LEFT JOIN cm_order_product cop ON co.orderID = cop.orderID
@@ -494,4 +464,64 @@
             AND refundType IN(1,2)
         </if>
     </select>
+
+    <select id="dealerOrderList" resultType="com.caimei.model.vo.OrderVo">
+        SELECT
+        <include refid="cm_Order_List"></include>
+        FROM
+          cm_order co
+          LEFT JOIN cm_order_product cop ON co.orderID = cop.orderID
+        WHERE
+          co.delFlag = '0'
+          AND co.orderType = 2
+        <if test="orderType == 0">
+          AND (
+            cop.heUserId = #{userId}
+            OR co.userID = #{userId}
+          )
+        </if>
+        <if test="orderType == 1">
+            AND cop.heUserId = #{userId}
+            AND co.userID != #{userId}
+        </if>
+        <if test="orderType == 2">
+            AND co.userID = #{userId}
+        </if>
+        <if test="orderState == 1 ">
+            AND co.status IN(11,12,13,21,22,23)
+        </if>
+        <if test="orderState == 2 ">
+            AND co.status IN(11,12,21,22,31,32)
+        </if>
+        <if test="orderState == 3 ">
+            AND co.status IN(12,13,22,23,32,33)
+        </if>
+        <if test="orderState == 4 ">
+            AND co.refundType IN(1,2)
+        </if>
+        <if test="searchWord != null and searchWord != ''">
+            AND cop.name LIKE CONCAT('%',#{searchWord},'%')
+        </if>
+        GROUP BY
+          co.orderID
+        ORDER BY
+          co.orderTime DESC
+    </select>
+
+    <select id="findOrderProductAll" resultType="com.caimei.model.vo.OrderProductVo">
+        SELECT
+          productID AS productId,
+          heUserId,
+          name,
+          productImage,
+          num
+        FROM
+          cm_order_product
+        WHERE
+          orderID = #{orderId}
+    </select>
+
+    <select id="findProductStatus" resultType="integer">
+        SELECT validFlag FROM cm_hehe_product WHERE productId = #{productId}
+    </select>
 </mapper>

+ 51 - 13
src/main/resources/mapper/OrderSubmitMapper.xml

@@ -3,20 +3,19 @@
         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.caimei.mapper.OrderSubmitMapper">
-    <select id="findShopByproductIds" resultType="com.caimei.model.vo.ShopVo">
+    <select id="findShopByCartIds" resultType="com.caimei.model.vo.ShopVo">
         SELECT
           s.shopID AS shopId,
           s.name,
           s.logo
         FROM
-          cm_hehe_product chp
-          LEFT JOIN product p ON chp.productId = p.productID
+          cm_cart cc
+          LEFT JOIN product p ON cc.productID = p.productID
           LEFT JOIN shop s ON p.shopID = s.shopID
-          LEFT JOIN cm_cart cc ON chp.productId = cc.productID
         WHERE
-          chp.productId IN
-        <foreach item="productId" index="index" collection="productIds" open="(" separator="," close=")">
-            #{productId}
+          cc.cm_cartID IN
+        <foreach item="cartId" index="index" collection="cartIds" open="(" separator="," close=")">
+            #{cartId}
         </foreach>
         GROUP BY
           s.shopID
@@ -29,6 +28,7 @@
           cc.cm_cartID AS cartId,
           cc.productID AS productId,
           cc.productCount,
+          cc.heUserId,
           chp.price,
           chp.includedTax,
           chp.invoiceType,
@@ -42,12 +42,11 @@
           LEFT JOIN cm_hehe_product chp ON cc.productID = chp.productId
           LEFT JOIN product p ON cc.productID = p.productID
         WHERE
-          cc.userID = #{userId}
-          AND chp.validFlag = 1
+          chp.validFlag = 1
           AND p.shopID = #{shopId}
-          AND chp.productId IN
-        <foreach item="productId" index="index" collection="productIds" open="(" separator="," close=")">
-            #{productId}
+          AND cc.cm_cartID IN
+        <foreach item="cartId" index="index" collection="cartIds" open="(" separator="," close=")">
+            #{cartId}
         </foreach>
     </select>
 
@@ -91,7 +90,7 @@
     </select>
 
     <delete id="deleteCartByProductId">
-        DELETE FROM cm_cart WHERE userID = #{userId} AND productID = #{productId}
+        DELETE FROM cm_cart WHERE userID = #{userId} AND productID = #{productId} AND heUserId = #{heUserId}
     </delete>
 
     <insert id="insertOrder" keyColumn="orderID" keyProperty="orderID" parameterType="com.caimei.model.po.CmOrderPo" useGeneratedKeys="true">
@@ -1113,6 +1112,9 @@
             <if test="ladderPriceFlag != null">
                 ladderPriceFlag,
             </if>
+            <if test="heUserId != null">
+                heUserId,
+            </if>
         </trim>
         <trim prefix="values (" suffix=")" suffixOverrides=",">
             <if test="orderNo != null">
@@ -1310,6 +1312,9 @@
             <if test="ladderPriceFlag != null">
                 #{ladderPriceFlag,jdbcType=INTEGER},
             </if>
+            <if test="heUserId != null">
+                #{heUserId},
+            </if>
         </trim>
     </insert>
 
@@ -1598,4 +1603,37 @@
             </if>
         </trim>
     </insert>
+
+    <select id="findShopByProductId" resultType="com.caimei.model.vo.ShopVo">
+        SELECT
+          s.shopID AS shopId,
+          s.name,
+          s.logo
+        FROM
+          cm_hehe_product chp
+          LEFT JOIN product p ON chp.productId = p.productID
+          LEFT JOIN shop s ON p.shopID = s.shopID
+        WHERE
+          chp.productId = #{productId}
+          AND chp.validFlag = 1
+    </select>
+
+    <select id="findProductById" resultType="com.caimei.model.vo.CartProductVo">
+        SELECT
+          chp.productId,
+          chp.price,
+          chp.includedTax,
+          chp.invoiceType,
+          chp.clubTaxPoint,
+          p.name AS productName,
+          p.shopID AS shopId,
+          p.mainImage,
+          p.unit
+        FROM
+          cm_hehe_product chp
+          LEFT JOIN product p ON chp.productId = p.productID
+        WHERE
+          chp.validFlag = 1
+          AND chp.productId = #{productId}
+    </select>
 </mapper>

+ 6 - 3
src/main/resources/mapper/ShoppingCartMapper.xml

@@ -12,23 +12,25 @@
           addTime,
           isOutOfTime,
           skuID,
-          reBuyFlag
+          reBuyFlag,
+          heUserId
         FROM
           cm_cart
         WHERE
           userID = #{userId}
           AND productID = #{productId}
+          AND heUserId = #{heUserId}
     </select>
 
     <insert id="insertCart">
         INSERT INTO cm_cart (
           productID, userID, productCount, ADDTIME,
-          reBuyFlag
+          reBuyFlag, heUserId
         )
         VALUES
           (
             #{productId}, #{userId}, #{productCount}, NOW(),
-            0
+            0, #{heUserId}
           )
     </insert>
 
@@ -78,6 +80,7 @@
           cc.cm_cartID AS cartId,
           cc.productID AS productId,
           cc.productCount,
+          cc.heUserId,
           chp.price,
           chp.includedTax,
           chp.invoiceType,