فهرست منبع

add: 添加接口, 返回每个订单的数量

gaohp 1 سال پیش
والد
کامیت
1e9cbee131

+ 2 - 1
feifan-module-mall/feifan-module-trade-api/src/main/java/cn/newfeifan/mall/module/trade/enums/order/TradeOrderStatusEnum.java

@@ -21,7 +21,8 @@ public enum TradeOrderStatusEnum implements IntArrayValuable {
     UNDELIVERED(10, "待发货"),
     DELIVERED(20, "已发货"),
     COMPLETED(30, "已完成"),
-    CANCELED(40, "已取消");
+    CANCELED(40, "已取消"),
+    AFTER_SALE(-2, "售后");
 
     public static final int[] ARRAYS = Arrays.stream(values()).mapToInt(TradeOrderStatusEnum::getStatus).toArray();
 

+ 35 - 5
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/TradeOrderController.java

@@ -11,25 +11,26 @@ import cn.newfeifan.mall.module.trade.dal.dataobject.delivery.DeliveryExpressDO;
 import cn.newfeifan.mall.module.trade.dal.dataobject.order.TradeOrderDO;
 import cn.newfeifan.mall.module.trade.dal.dataobject.order.TradeOrderItemDO;
 import cn.newfeifan.mall.module.trade.dal.dataobject.order.TradeOrderLogDO;
+import cn.newfeifan.mall.module.trade.enums.order.TradeOrderStatusEnum;
 import cn.newfeifan.mall.module.trade.framework.order.config.TradeOrderProperties;
 import cn.newfeifan.mall.module.trade.service.aftersale.AfterSaleService;
 import cn.newfeifan.mall.module.trade.service.delivery.DeliveryExpressService;
 import cn.newfeifan.mall.module.trade.service.order.TradeOrderLogService;
 import cn.newfeifan.mall.module.trade.service.order.TradeOrderQueryService;
 import cn.newfeifan.mall.module.trade.service.order.TradeOrderUpdateService;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.extern.slf4j.Slf4j;
+import org.checkerframework.checker.nullness.qual.Nullable;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Set;
+import java.util.*;
 
 import static cn.newfeifan.mall.framework.common.pojo.CommonResult.success;
 import static cn.newfeifan.mall.framework.common.util.collection.CollectionUtils.convertList;
@@ -56,6 +57,9 @@ public class TradeOrderController {
 
     @Resource
     private DeliveryExpressService deliveryExpressService;
+    @Resource
+    private AfterSaleService afterSaleService;
+
     @GetMapping("/page")
     @Operation(summary = "获得交易订单分页")
     @PreAuthorize("@ss.hasPermission('trade:order:query')")
@@ -84,6 +88,15 @@ public class TradeOrderController {
         return success(tradeOrderQueryService.getOrderSummary(reqVO));
     }
 
+  /*  @GetMapping("/order-count")
+    @Operation(summary = "获得交易订单统计")
+    @PreAuthorize("@ss.hasPermission('trade:order:query')")
+    public CommonResult<TradeOrderSummaryRespVO> getOrderCount(TradeOrderPageReqVO reqVO) {
+        Long orderCount = tradeOrderQueryService.getOrderCount(getLoginUserId(), null, null);
+        return success(orderCount);
+    }*/
+
+
     @GetMapping("/get-detail")
     @Operation(summary = "获得交易订单详情")
     @Parameter(name = "id", description = "订单编号", required = true, example = "1")
@@ -174,7 +187,24 @@ public class TradeOrderController {
     }
 
 
-
+    @GetMapping("/get-count")
+    @Operation(summary = "获得交易订单数量")
+    public CommonResult<ArrayList<TradeOrderCountRespVO>> getOrderCount() {
+        ArrayList<TradeOrderCountRespVO> tradeOrderCountRespVos = Lists.newArrayListWithCapacity(6);
+        tradeOrderCountRespVos.add(TradeOrderCountRespVO.builder().status(-1)
+                .orderCount(tradeOrderQueryService.getOrderCount(null)).build());
+        tradeOrderCountRespVos.add(TradeOrderCountRespVO.builder().status(TradeOrderStatusEnum.UNPAID.getStatus())
+                .orderCount(tradeOrderQueryService.getOrderCount(TradeOrderStatusEnum.UNPAID.getStatus())).build());
+        tradeOrderCountRespVos.add(TradeOrderCountRespVO.builder().status(TradeOrderStatusEnum.UNDELIVERED.getStatus())
+                .orderCount(tradeOrderQueryService.getOrderCount(TradeOrderStatusEnum.UNDELIVERED.getStatus())).build());
+        tradeOrderCountRespVos.add(TradeOrderCountRespVO.builder().status( TradeOrderStatusEnum.DELIVERED.getStatus())
+                .orderCount(tradeOrderQueryService.getOrderCount( TradeOrderStatusEnum.DELIVERED.getStatus())).build());
+        tradeOrderCountRespVos.add(TradeOrderCountRespVO.builder().status(TradeOrderStatusEnum.COMPLETED.getStatus())
+                .orderCount(tradeOrderQueryService.getOrderCount( TradeOrderStatusEnum.COMPLETED.getStatus())).build());
+        tradeOrderCountRespVos.add(TradeOrderCountRespVO.builder().status(-2)
+                .orderCount(afterSaleService.getApplyingAfterSaleCount(null)).build());
+        return success(tradeOrderCountRespVos);
+    }
 
 
 

+ 26 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/controller/admin/order/vo/TradeOrderCountRespVO.java

@@ -0,0 +1,26 @@
+package cn.newfeifan.mall.module.trade.controller.admin.order.vo;
+
+import cn.newfeifan.mall.framework.common.validation.InEnum;
+import cn.newfeifan.mall.module.trade.enums.order.TradeOrderStatusEnum;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Schema(description = "管理后台 - 订单数量 Response VO")
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+public class TradeOrderCountRespVO {
+
+    @Schema(description = "订单数量", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024")
+    private Long orderCount;
+
+    @Schema(description = "订单状态", example = "1")
+    @InEnum(value = TradeOrderStatusEnum.class, message = "订单状态必须是 {value}")
+    private Integer status;
+
+
+}

+ 1 - 1
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/mysql/aftersale/AfterSaleMapper.java

@@ -44,7 +44,7 @@ public interface AfterSaleMapper extends BaseMapperX<AfterSaleDO> {
 
     default Long selectCountByUserIdAndStatus(Long userId, Collection<Integer> statuses) {
         return selectCount(new LambdaQueryWrapperX<AfterSaleDO>()
-                .eq(AfterSaleDO::getUserId, userId)
+                .eqIfPresent(AfterSaleDO::getUserId, userId)
                 .in(AfterSaleDO::getStatus, statuses));
     }
 

+ 5 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/dal/mysql/order/TradeOrderMapper.java

@@ -79,6 +79,10 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
                 .eqIfPresent(TradeOrderDO::getStatus, status)
                 .eqIfPresent(TradeOrderDO::getCommentStatus, commentStatus));
     }
+    default Long selectCountByStatus(Integer status){
+        return selectCount(new LambdaQueryWrapperX<TradeOrderDO>()
+                .eqIfPresent(TradeOrderDO::getStatus, status));
+    };
 
     default TradeOrderDO selectOrderByIdAndUserId(Long orderId, Long loginUserId) {
         return selectOne(new LambdaQueryWrapperX<TradeOrderDO>()
@@ -124,4 +128,5 @@ public interface TradeOrderMapper extends BaseMapperX<TradeOrderDO> {
         );
     }
 
+
 }

+ 6 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderQueryService.java

@@ -155,4 +155,10 @@ public interface TradeOrderQueryService {
      */
     List<TradeOrderItemDO> getOrderItemListByOrderId(Collection<Long> orderIds);
 
+    /**
+     * 根据状态获取订单数量, 不通过用户ID信息
+     * @param status
+     * @return
+     */
+    Long getOrderCount(Integer status);
 }

+ 7 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderQueryServiceImpl.java

@@ -157,6 +157,11 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService {
     public Long getOrderCount(Long userId, Integer status, Boolean commentStatus) {
         return tradeOrderMapper.selectCountByUserIdAndStatus(userId, status, commentStatus);
     }
+    @Override
+    public Long getOrderCount(Integer status) {
+        return tradeOrderMapper.selectCountByStatus(status);
+
+    }
 
     @Override
     public List<ExpressTrackRespDTO> getExpressTrackList(Long id, Long userId) {
@@ -256,6 +261,8 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService {
         return tradeOrderItemMapper.selectListByOrderId(orderIds);
     }
 
+
+
     /**
      * 获得自身的代理对象,解决 AOP 生效问题
      *