Bladeren bron

获取协销各状态订单数量

chao 3 jaren geleden
bovenliggende
commit
75ddda208a

+ 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);
     }
-
-
-
-
-
 }

+ 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/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);
 }

+ 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);
+    }
 }

+ 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>