소스 검색

Merge branch 'developer' into developerA

# Conflicts:
#	src/main/java/com/caimei365/order/service/impl/CartClubServiceImpl.java
zhijiezhao 3 년 전
부모
커밋
ef973c53be

+ 24 - 0
src/main/java/com/caimei365/order/controller/CartClubApi.java

@@ -95,6 +95,30 @@ public class CartClubApi {
         return cartClubService.addShoppingCart(cartDto);
     }
 
+    /**
+     * 批量添加购物车
+     *
+     * @param cartDto {
+     *                userId       用户ID
+     *                productInfo  商品及数量信息:[   // 商品id,数量
+     *                                          {"productId": 2789, "productCount": 1},
+     *                                          {"productId": 2790, "productCount": 1}
+     *                                          ]
+     * }
+     */
+    @ApiOperation("批量添加购物车(旧:/shoppingCart/addCarts)")
+    @PostMapping("/cart/add/bulk")
+    public ResponseJson<Integer> addShoppingCartBulk(CartDto cartDto){
+        if (null == cartDto.getUserId()) {
+            return ResponseJson.error("用户Id不能为空!", null);
+        }
+        if (null == cartDto.getProductInfo()) {
+            return ResponseJson.error("商品及数量信息不能为空!", null);
+        }
+        return cartClubService.addShoppingCartBulk(cartDto);
+    }
+
+
     /**
      * 更新购物车
      *

+ 13 - 0
src/main/java/com/caimei365/order/controller/OrderClubApi.java

@@ -109,6 +109,19 @@ public class OrderClubApi {
         return orderClubService.getOrderDetail(userId, orderId);
     }
 
+    /**
+     * 机构最新订单
+     */
+    @ApiOperation("机构最新订单")
+    @ApiImplicitParam(required = true, name = "userId", value = "用户Id")
+    @GetMapping("/latest")
+    public ResponseJson<OrderVo> getOrderLatest(Integer userId) {
+        if (null == userId) {
+            return ResponseJson.error("用户Id不能为空!", null);
+        }
+        return orderClubService.getOrderLatest(userId);
+    }
+
     /**
      * 机构确认订单
      *

+ 15 - 5
src/main/java/com/caimei365/order/controller/OrderSellerApi.java

@@ -15,6 +15,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Map;
+
 /**
  * 协销订单API
  *
@@ -28,6 +30,19 @@ import org.springframework.web.bind.annotation.RestController;
 public class OrderSellerApi {
     private final OrderSellerService orderSellerService;
 
+    /**
+     * 获取协销各状态订单数量
+     */
+    @ApiOperation("获取协销各状态订单数量")
+    @ApiImplicitParam(required = true, name = "serviceProviderId", value = "协销Id")
+    @GetMapping("/count")
+    public  ResponseJson<Map<String, Object>> getOrderCount(Integer serviceProviderId) {
+        if (null == serviceProviderId) {
+            return ResponseJson.error("协销Id不能为空!", null);
+        }
+        return orderSellerService.getSellerOrderCount(serviceProviderId);
+    }
+
     /**
      * 协销订单列表
      */
@@ -97,9 +112,4 @@ public class OrderSellerApi {
         }
         return orderSellerService.getOrderListByKeyword(serviceProviderId, searchWord, pageNum, pageSize);
     }
-
-
-
-
-
 }

+ 4 - 1
src/main/java/com/caimei365/order/mapper/OrderClubMapper.java

@@ -197,7 +197,10 @@ public interface OrderClubMapper {
     void insertCouponClub(CouponClubPo couponClub);
     /**
      * 删除优惠券与订单的关联信息
-     * @param clubCouponId
      */
     void deleteCouponClubById(Integer clubCouponId);
+    /**
+     * 机构最新订单Id
+     */
+    Integer getLatestOrderId(Integer userId);
 }

+ 18 - 0
src/main/java/com/caimei365/order/mapper/OrderSellerMapper.java

@@ -63,4 +63,22 @@ public interface OrderSellerMapper {
      * @param userIds     用户Id
      */
     List<OrderVo> getOrderListByKeyword(@Param("userIds") List<Integer> userIds, @Param("searchWord") String searchWord);
+    /**
+     * 获取协销用户下的机构ID列表
+     */
+    List<Integer> getClubIdsBySellerId(Integer serviceProviderId);
+    /**
+     * 获取各状态订单数量
+     * @param userIds     用户Id
+     * @param orderState 1:待确认,2:待付款,3:待发货,4:已发货,5:退货款
+     */
+    Integer getSellerOrderCount(@Param("userIds") List<Integer> userIds, @Param("orderState") int orderState);
+    /**
+     * 最后查看订单时间(用于协销统计历史订单未查看数量)
+     */
+    Date getLastCheckOrderDate(Integer userId);
+    /**
+     * 订单未查看数量
+     */
+    Integer getUncheckedOrderCount(Integer userId, Date lastCheckOrderDate);
 }

+ 8 - 0
src/main/java/com/caimei365/order/model/dto/CartDto.java

@@ -39,4 +39,12 @@ public class CartDto implements Serializable {
      */
     @ApiModelProperty("来源 : 1 网站 ; 2 小程序")
     private Integer source;
+    /**
+     * 商品及数量(批量加入用):[   // 商品id,数量
+     *                        {"productId": 2789, "productCount": 1},
+     *                        {"productId": 2790, "productCount": 1}
+     *                     ]
+     */
+    @ApiModelProperty("商品及数量(批量加入用)")
+    private String productInfo;
 }

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

@@ -39,6 +39,19 @@ public interface CartClubService {
      */
     ResponseJson<Integer> addShoppingCart(CartDto cartDto);
 
+    /**
+     * 批量添加购物车
+     *
+     * @param cartDto {
+     *                userId       用户ID
+     *                productInfo  商品及数量信息:[   // 商品id,数量
+     *                                          {"productId": 2789, "productCount": 1},
+     *                                          {"productId": 2790, "productCount": 1}
+     *                                          ]
+     * }
+     */
+    ResponseJson<Integer> addShoppingCartBulk(CartDto cartDto);
+
     /**
      * 更新购物车
      *

+ 6 - 0
src/main/java/com/caimei365/order/service/OrderClubService.java

@@ -46,6 +46,11 @@ public interface OrderClubService {
      * @param orderId    订单Id
      */
     ResponseJson<Map<String, Object>> getOrderDetail(Integer userId, Integer orderId);
+    /**
+     * 机构最新订单
+     * @param userId     用户Id
+     */
+    ResponseJson<OrderVo> getOrderLatest(Integer userId);
     /**
      * 机构确认订单
      * @param orderId  订单Id
@@ -124,4 +129,5 @@ public interface OrderClubService {
      * @param clauseId 售后条款Id
      */
     ResponseJson<ClauseVo> getClauseById(Integer clauseId);
+
 }

+ 8 - 0
src/main/java/com/caimei365/order/service/OrderSellerService.java

@@ -4,6 +4,8 @@ import com.caimei365.order.model.ResponseJson;
 import com.caimei365.order.model.vo.OrderVo;
 import com.github.pagehelper.PageInfo;
 
+import java.util.Map;
+
 /**
  * Description
  *
@@ -41,4 +43,10 @@ public interface OrderSellerService {
      * @param pageSize   每页数量
      */
     ResponseJson<PageInfo<OrderVo>> getOrderListByKeyword(Integer serviceProviderId, String searchWord, int pageNum, int pageSize);
+
+    /**
+     * 获取协销各状态订单数量
+     * @param serviceProviderId    协销Id
+     */
+    ResponseJson<Map<String, Object>> getSellerOrderCount(Integer serviceProviderId);
 }

+ 47 - 0
src/main/java/com/caimei365/order/service/impl/CartClubServiceImpl.java

@@ -1,5 +1,7 @@
 package com.caimei365.order.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
@@ -31,6 +33,9 @@ import java.util.stream.Stream;
 
 import static com.alibaba.fastjson.JSON.parseArray;
 
+import static com.alibaba.fastjson.JSON.parseArray;
+import static com.alibaba.fastjson.JSON.parseObject;
+
 
 /**
  * Description
@@ -616,6 +621,13 @@ public class CartClubServiceImpl implements CartClubService {
      */
     @Override
     public ResponseJson<Integer> addShoppingCart(CartDto cartDto) {
+        saveShoppingCart(cartDto);
+        // 获取购物车数量(商品种类数)
+        int cartCount = getCartCount(cartDto.getUserId());
+        return ResponseJson.success("添加成功!返回购物车数量", cartCount);
+    }
+
+    private void saveShoppingCart(CartDto cartDto) {
         CartPo cart = cartClubMapper.getCartPo(cartDto);
         if (cart != null) {
             // 购物车已存在该商品,更新数量
@@ -641,6 +653,41 @@ public class CartClubServiceImpl implements CartClubService {
             cart.setAddTime(new Date());
             cartClubMapper.insertCart(cart);
         }
+    }
+
+    /**
+     * 批量添加购物车
+     *
+     * @param cartDto {
+     *                userId       用户ID
+     *                productInfo  商品及数量信息:[   // 商品id,数量
+     *                                           {"productId": 2789, "productCount": 1},
+     *                                           {"productId": 2790, "productCount": 1}
+     *                                          ]
+     *                }
+     */
+    @Override
+    public ResponseJson<Integer> addShoppingCartBulk(CartDto cartDto) {
+        JSONArray productInfo = null;
+        try {
+            productInfo = parseArray(cartDto.getProductInfo());
+        } catch (Exception e) {
+            log.error("批量添加购物车参数解析异常try-catch:", e);
+            return ResponseJson.error("商品及数量信息参数解析异常!", null);
+        }
+        if (null == productInfo || productInfo.isEmpty()){
+            return ResponseJson.error("商品及数量信息参数异常!", null);
+        }
+        for (Object infoObject: productInfo) {
+            JSONObject tempObj = (JSONObject) infoObject;
+            Integer productId = (Integer) tempObj.get("productId");
+            Integer productCount = (Integer) tempObj.get("productCount");
+            CartDto cartBo = new CartDto();
+            cartBo.setUserId(cartDto.getUserId());
+            cartBo.setProductId(productId);
+            cartBo.setProductCount(productCount);
+            saveShoppingCart(cartBo);
+        }
         // 获取购物车数量(商品种类数)
         int cartCount = getCartCount(cartDto.getUserId());
         return ResponseJson.success("添加成功!返回购物车数量", cartCount);

+ 29 - 0
src/main/java/com/caimei365/order/service/impl/OrderClubServiceImpl.java

@@ -245,6 +245,35 @@ public class OrderClubServiceImpl implements OrderClubService {
         return ResponseJson.success(map);
     }
 
+    /**
+     * 机构最新订单
+     *
+     * @param userId 用户Id
+     */
+    @Override
+    public ResponseJson<OrderVo> getOrderLatest(Integer userId) {
+        // 机构最新订单Id
+        Integer orderId = orderClubMapper.getLatestOrderId(userId);
+        OrderPo orderPo = orderClubMapper.getMainOrderByOrderId(orderId);
+        if (null == orderPo) {
+            return ResponseJson.error("该订单不存在!", null);
+        }
+        if (!userId.equals(orderPo.getUserId())) {
+            return ResponseJson.error("无权限查看此订单!", null);
+        }
+        OrderVo order = new OrderVo();
+        // OrderPo -> OrderVo
+        BeanUtils.copyProperties(orderPo, order);
+        order.setOrderMark("#" + order.getOrderId() + "#");
+        // 设置订单状态
+        orderCommonService.setOrderStatus(order);
+        // 设置子订单数据
+        orderCommonService.getShopOrderData(order);
+        // 设置付款金额
+        orderCommonService.getDiscernReceiptAndSetOrder(order);
+        return ResponseJson.success(order);
+    }
+
     /**
      * 机构确认订单
      *

+ 45 - 0
src/main/java/com/caimei365/order/service/impl/OrderSellerServiceImpl.java

@@ -13,7 +13,9 @@ import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 /**
  * Description
@@ -133,4 +135,47 @@ public class OrderSellerServiceImpl implements OrderSellerService {
         return ResponseJson.success(pageInfo);
     }
 
+    /**
+     * 获取协销各状态订单数量
+     *
+     * @param serviceProviderId 协销Id
+     */
+    @Override
+    public ResponseJson<Map<String, Object>> getSellerOrderCount(Integer serviceProviderId) {
+        Map<String, Object> map = new HashMap<>(7);
+        // 获取协销用户下的机构ID列表
+        List<Integer> clubUserIds = orderSellerMapper.getClubIdsBySellerId(serviceProviderId);
+        // 1.全部数量
+        Integer totalCount = orderSellerMapper.getSellerOrderCount(clubUserIds, 0);
+        map.put("totalCount", totalCount);
+        // 2.待确认数量
+        Integer confirmedCount = orderSellerMapper.getSellerOrderCount(clubUserIds, 1);
+        map.put("confirmedCount", confirmedCount);
+        // 3.待付款数量
+        Integer paymentCount = orderSellerMapper.getSellerOrderCount(clubUserIds, 2);
+        paymentCount = paymentCount == null ? 0 : paymentCount;
+        map.put("paymentCount", paymentCount);
+        // 4.待发货数量
+        Integer waitShipmentsCount = orderSellerMapper.getSellerOrderCount(clubUserIds, 3);
+        waitShipmentsCount = waitShipmentsCount == null ? 0 : waitShipmentsCount;
+        map.put("waitShipmentsCount", waitShipmentsCount);
+        // 5.已发货数量
+        Integer shipmentsCount = orderSellerMapper.getSellerOrderCount(clubUserIds, 4);
+        shipmentsCount = shipmentsCount == null ? 0 : shipmentsCount;
+        map.put("shipmentsCount", shipmentsCount);
+        // 6.退货款数量
+        Integer salesReturnCount = orderSellerMapper.getSellerOrderCount(clubUserIds, 5);
+        salesReturnCount = salesReturnCount == null ? 0 : salesReturnCount;
+        map.put("salesReturnCount", salesReturnCount);
+        // 7.未查看订单数量
+        int uncheckedOrderCount = 0;
+        for (Integer userId : clubUserIds) {
+            // 最后查看订单时间
+            Date lastCheckOrderDate = orderSellerMapper.getLastCheckOrderDate(userId);
+            Integer i = orderSellerMapper.getUncheckedOrderCount(userId, lastCheckOrderDate);
+            if (null != i) {uncheckedOrderCount += i;}
+        }
+        map.put("uncheckedOrderCount", uncheckedOrderCount);
+        return ResponseJson.success(map);
+    }
 }

+ 1 - 0
src/main/java/com/caimei365/order/service/impl/SubmitServiceImpl.java

@@ -1576,6 +1576,7 @@ public class SubmitServiceImpl implements SubmitService {
         rechargeShopOrder.setNeedPayAmount(rechargeDto.getPrice());
         rechargeShopOrder.setOrderTime(mainOrder.getOrderTime());
         rechargeShopOrder.setCanRefundAmount(0d);
+        rechargeShopOrder.setShopPostFee(0d);
         rechargeShopOrder.setSplitFlag(0);
         rechargeShopOrder.setOrderType(0);
         /*

+ 5 - 0
src/main/resources/mapper/OrderClubMapper.xml

@@ -503,4 +503,9 @@
         FROM cm_coupon_club
         WHERE id = #{clubCouponId}
     </select>
+    <select id="getLatestOrderId" resultType="java.lang.Integer">
+        SELECT orderID FROM cm_order
+        WHERE userId = #{userId}
+        ORDER BY orderID DESC limit 1
+    </select>
 </mapper>

+ 36 - 0
src/main/resources/mapper/OrderSellerMapper.xml

@@ -220,4 +220,40 @@
         GROUP BY co.orderID, co.orderTime
         ORDER BY co.orderTime DESC
     </select>
+    <select id="getClubIdsBySellerId" resultType="java.lang.Integer">
+        select userID from club where spID = #{serviceProviderId}
+    </select>
+    <select id="getSellerOrderCount" resultType="java.lang.Integer">
+        SELECT COUNT(*) FROM cm_order
+        WHERE delFlag = 0 AND userID = IN
+        <foreach item="userId" index="index" collection="userIds" open="(" separator="," close=")">
+            #{userId}
+        </foreach>
+        <if test="orderState == 1 ">
+            AND status = '0'
+        </if>
+        <if test="orderState == 2 ">
+            AND status IN(11,12,13,21,22,23)
+        </if>
+        <if test="orderState == 3 ">
+            AND status IN(11,12,21,22,31,32)
+        </if>
+        <if test="orderState == 4 ">
+            AND status IN(12,13,22,23,32,33)
+        </if>
+        <if test="orderState == 5 ">
+            AND refundType IN(1,2)
+        </if>
+    </select>
+    <select id="getLastCheckOrderDate" resultType="java.util.Date">
+        SELECT lastCheckOrderDate FROM club WHERE userID = #{userId}
+    </select>
+    <select id="getUncheckedOrderCount" resultType="java.lang.Integer">
+        SELECT COUNT(*) FROM cm_order
+        WHERE userID = #{userId}
+        AND orderSubmitType IN (0, 1, 2)
+        <if test="lastCheckOrderDate != null">
+            AND orderTime > #{lastCheckOrderDate}
+        </if>
+    </select>
 </mapper>