diff --git a/jzo2o-health/src/main/java/com/jzo2o/health/controller/admin/OrdersStatsController.java b/jzo2o-health/src/main/java/com/jzo2o/health/controller/admin/OrdersStatsController.java index 0e98bb9..6ad1589 100644 --- a/jzo2o-health/src/main/java/com/jzo2o/health/controller/admin/OrdersStatsController.java +++ b/jzo2o-health/src/main/java/com/jzo2o/health/controller/admin/OrdersStatsController.java @@ -1,12 +1,15 @@ package com.jzo2o.health.controller.admin; import com.jzo2o.health.model.dto.response.OrdersCountResDTO; +import com.jzo2o.health.service.IOrderManagerService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; + /** * @author itcast */ @@ -14,10 +17,12 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("/admin/orders") @Api(tags = "管理端 - 根据状态统计订单数量") public class OrdersStatsController { + @Resource + private IOrderManagerService orderManagerService; @GetMapping("/countByStatus") @ApiOperation("根据状态统计数量") public OrdersCountResDTO countByStatus() { - return null; + return orderManagerService.countByStatus(); } -} +} \ No newline at end of file diff --git a/jzo2o-health/src/main/java/com/jzo2o/health/mapper/OrdersMapper.java b/jzo2o-health/src/main/java/com/jzo2o/health/mapper/OrdersMapper.java index 6c08cf2..ab12df6 100644 --- a/jzo2o-health/src/main/java/com/jzo2o/health/mapper/OrdersMapper.java +++ b/jzo2o-health/src/main/java/com/jzo2o/health/mapper/OrdersMapper.java @@ -6,7 +6,6 @@ import com.jzo2o.health.model.dto.OrderCountDTO; import org.apache.ibatis.annotations.Select; import java.util.List; -import java.util.Map; /** *

@@ -17,7 +16,6 @@ import java.util.Map; * @since 2023-11-02 */ public interface OrdersMapper extends BaseMapper { - @Select("SELECT order_status AS orderStatus,COUNT(id) AS count FROM orders GROUP BY order_status") - List countByStatus(); -} + List countStatus(); +} \ No newline at end of file diff --git a/jzo2o-health/src/main/java/com/jzo2o/health/model/dto/OrderCountDTO.java b/jzo2o-health/src/main/java/com/jzo2o/health/model/dto/OrderCountDTO.java index eb5c0a3..dc34306 100644 --- a/jzo2o-health/src/main/java/com/jzo2o/health/model/dto/OrderCountDTO.java +++ b/jzo2o-health/src/main/java/com/jzo2o/health/model/dto/OrderCountDTO.java @@ -4,14 +4,11 @@ import lombok.Data; /** * 订单数量响应 - * * @author itcast * @create 2023/11/9 16:54 **/ @Data public class OrderCountDTO { - private Integer orderStatus; - private Integer count; -} +} \ No newline at end of file diff --git a/jzo2o-health/src/main/java/com/jzo2o/health/service/IOrderManagerService.java b/jzo2o-health/src/main/java/com/jzo2o/health/service/IOrderManagerService.java index 502aa5b..9f7c7b4 100644 --- a/jzo2o-health/src/main/java/com/jzo2o/health/service/IOrderManagerService.java +++ b/jzo2o-health/src/main/java/com/jzo2o/health/service/IOrderManagerService.java @@ -5,6 +5,7 @@ import com.jzo2o.common.model.PageResult; import com.jzo2o.health.model.domain.Orders; import com.jzo2o.health.model.dto.request.OrdersPageQueryReqDTO; import com.jzo2o.health.model.dto.response.AdminOrdersDetailResDTO; +import com.jzo2o.health.model.dto.response.OrdersCountResDTO; import com.jzo2o.health.model.dto.response.OrdersDetailResDTO; import com.jzo2o.health.model.dto.response.OrdersResDTO; @@ -34,4 +35,9 @@ public interface IOrderManagerService extends IService { * 用户端获取订单详情 */ OrdersDetailResDTO getOrderById(Long id); + + /** + * 获取每种状态的订单数 + */ + OrdersCountResDTO countByStatus(); } \ No newline at end of file diff --git a/jzo2o-health/src/main/java/com/jzo2o/health/service/impl/OrderManagerServiceImpl.java b/jzo2o-health/src/main/java/com/jzo2o/health/service/impl/OrderManagerServiceImpl.java index 5243e3a..febcff4 100644 --- a/jzo2o-health/src/main/java/com/jzo2o/health/service/impl/OrderManagerServiceImpl.java +++ b/jzo2o-health/src/main/java/com/jzo2o/health/service/impl/OrderManagerServiceImpl.java @@ -14,8 +14,10 @@ import com.jzo2o.health.mapper.OrdersMapper; import com.jzo2o.health.model.UserThreadLocal; import com.jzo2o.health.model.domain.Orders; import com.jzo2o.health.model.domain.OrdersCancelled; +import com.jzo2o.health.model.dto.OrderCountDTO; import com.jzo2o.health.model.dto.request.OrdersPageQueryReqDTO; import com.jzo2o.health.model.dto.response.AdminOrdersDetailResDTO; +import com.jzo2o.health.model.dto.response.OrdersCountResDTO; import com.jzo2o.health.model.dto.response.OrdersDetailResDTO; import com.jzo2o.health.model.dto.response.OrdersResDTO; import com.jzo2o.health.service.IOrderCancelService; @@ -27,6 +29,7 @@ import javax.annotation.Resource; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; +import java.util.Map; import java.util.stream.Collectors; /** @@ -162,4 +165,34 @@ public class OrderManagerServiceImpl extends ServiceImpl i return ordersDetailResDTO; } + + @Override + public OrdersCountResDTO countByStatus() { + OrdersCountResDTO ordersCountResDTO = new OrdersCountResDTO(); + + List orderCountList = baseMapper.countStatus(); + if (CollUtils.isEmpty(orderCountList)) { + return ordersCountResDTO; + } + + Map map = orderCountList + .stream() + .collect(Collectors + .toMap(OrderCountDTO::getOrderStatus, OrderCountDTO::getCount)); + + Integer noPayCount = map.getOrDefault(OrderStatusEnum.NO_PAY.getStatus(), 0); + Integer waitingCheckupCount = map.getOrDefault(OrderStatusEnum.WAITING_CHECKUP.getStatus(), 0); + Integer completedCheckupCount = map.getOrDefault(OrderStatusEnum.COMPLETED_CHECKUP.getStatus(), 0); + Integer closedCount = map.getOrDefault(OrderStatusEnum.CLOSED.getStatus(), 0); + Integer cancelledCount = map.getOrDefault(OrderStatusEnum.CANCELLED.getStatus(), 0); + + ordersCountResDTO.setNoPayCount(noPayCount); + ordersCountResDTO.setWaitingCheckupCount(waitingCheckupCount); + ordersCountResDTO.setCompletedCheckupCount(completedCheckupCount); + ordersCountResDTO.setClosedCount(closedCount); + ordersCountResDTO.setCancelledCount(cancelledCount); + ordersCountResDTO.setTotalCount(noPayCount + waitingCheckupCount + completedCheckupCount + closedCount + cancelledCount); + + return ordersCountResDTO; + } } \ No newline at end of file