Browse Source

提交“积分订单管理分页接口”

wangzhijun 1 tuần trước cách đây
mục cha
commit
57a700cba3

+ 6 - 6
nightFragrance-admin/src/main/java/com/ylx/web/controller/massage/ProductOrderController.java

@@ -4,7 +4,7 @@ import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ylx.common.core.controller.BaseController;
 import com.ylx.common.core.domain.R;
-import com.ylx.massage.domain.Product;
+import com.ylx.massage.domain.ProductOrderInfo;
 import com.ylx.massage.domain.dto.ProductOrderCreateRequest;
 import com.ylx.massage.domain.dto.ProductOrderOperateDTO;
 import com.ylx.massage.domain.dto.ProductOrderPageDTO;
@@ -126,10 +126,10 @@ public class ProductOrderController extends BaseController {
     }
 
     @PreAuthorize("@ss.hasPermi('product:order:query')")
-    @GetMapping("/admin/page")
-    @ApiOperation("PC查询商品管理列表")
-    public R<Page<ProductOrderPageVo>> adminPage(Page<Product> page, @RequestBody ProductOrderPageDTO dto) {
-        Page<ProductOrderPageVo> pageData = this.productOrderInfoService.adminPage(page, dto);
-        return R.ok(pageData);
+    @PostMapping("/admin/page")
+    @ApiOperation("积分订单管理分页接口")
+    public R<ProductOrderPageVo> adminPage(Page<ProductOrderInfo> page, @RequestBody ProductOrderPageDTO dto) {
+        ProductOrderPageVo vo = this.productOrderInfoService.adminPage(page, dto);
+        return R.ok(vo);
     }
 }

+ 20 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/domain/vo/ProductOrderCountVo.java

@@ -0,0 +1,20 @@
+package com.ylx.massage.domain.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+@ApiModel("积分订单管理顶部统计VO")
+public class ProductOrderCountVo {
+
+    @ApiModelProperty("待发货数量")
+    private Integer pendingShipmentQty;
+
+    @ApiModelProperty("进行中数量")
+    private Integer inProgressQty;
+
+    @ApiModelProperty("售后数量")
+    private Integer afterSalesQty;
+
+}

+ 62 - 0
nightFragrance-massage/src/main/java/com/ylx/massage/domain/vo/ProductOrderPageItemVo.java

@@ -0,0 +1,62 @@
+package com.ylx.massage.domain.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Data
+@ApiModel("积分订单管理分页列表行VO")
+public class ProductOrderPageItemVo {
+
+    @ApiModelProperty("订单ID")
+    private Long id;
+
+    @ApiModelProperty("订单号")
+    private String orderNo;
+
+    @ApiModelProperty("用户openId")
+    private String openId;
+
+    @ApiModelProperty("电话号码")
+    private String phone;
+
+    @ApiModelProperty("昵称")
+    private String nickName;
+
+    @ApiModelProperty("订单状态:0待付款 1待发货 2已发货 3待收货 4已收货 5换货待审核 6换货中 7退货待审核")
+    private Integer orderStatus;
+
+    @ApiModelProperty("支付状态:0未支付 1已支付 2支付失败 3已退款")
+    private Integer payStatus;
+
+    @ApiModelProperty("实付金额")
+    private BigDecimal payAmount;
+
+    @ApiModelProperty("使用积分数量")
+    private Integer pointsUsed;
+
+    @ApiModelProperty("快递单号")
+    private String logisticsNo;
+
+    @ApiModelProperty("发货时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime deliveryTime;
+
+    @ApiModelProperty("下单时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("商品名称")
+    private String productName;
+
+    @ApiModelProperty("商品ID")
+    private Long productId;
+
+    @ApiModelProperty("购买数量")
+    private Integer quantity;
+
+}

+ 6 - 47
nightFragrance-massage/src/main/java/com/ylx/massage/domain/vo/ProductOrderPageVo.java

@@ -1,59 +1,18 @@
 package com.ylx.massage.domain.vo;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import java.math.BigDecimal;
-import java.time.LocalDateTime;
-
 @Data
-@ApiModel("管理后台积分订单管理分页vo")
+@ApiModel("积分订单管理分页总VO")
 public class ProductOrderPageVo {
 
-    @ApiModelProperty("订单ID")
-    private Long id;
-
-    @ApiModelProperty("订单号")
-    private String orderNo;
-
-    @ApiModelProperty("用户openId")
-    private String openId;
-
-    @ApiModelProperty("电话号码")
-    private String phone;
-
-    @ApiModelProperty("昵称")
-    private String nickName;
-
-    @ApiModelProperty("订单状态:0待付款 1待发货 2已发货 3待收货 4已收货 5换货待审核 6换货中 7退货待审核")
-    private Integer orderStatus;
-
-    @ApiModelProperty("支付状态:0未支付 1已支付 2支付失败 3已退款")
-    private Integer payStatus;
-
-    @ApiModelProperty("实付金额(分)")
-    private BigDecimal payAmount;
-
-    @ApiModelProperty("使用积分数量")
-    private Integer pointsUsed;
-
-    @ApiModelProperty("快递单号")
-    private String logisticsNo;
-
-    @ApiModelProperty("发货时间")
-    private LocalDateTime deliveryTime;
-
-    @ApiModelProperty("下单时间")
-    private LocalDateTime createTime;
-
-    @ApiModelProperty("商品名称")
-    private String productName;
-
-    @ApiModelProperty("商品ID")
-    private Long productId;
+    @ApiModelProperty("分页列表数据")
+    private Page<ProductOrderPageItemVo> list;
 
-    @ApiModelProperty("购买数量")
-    private Integer quantity;
+    @ApiModelProperty("顶部统计数据")
+    private ProductOrderCountVo count;
 
 }

+ 8 - 4
nightFragrance-massage/src/main/java/com/ylx/massage/mapper/ProductOrderInfoMapper.java

@@ -3,8 +3,8 @@ package com.ylx.massage.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ylx.massage.domain.ProductOrderInfo;
-import com.ylx.massage.domain.vo.ProductOrderDetailVo;
-import com.ylx.massage.domain.vo.ProductOrderListVo;
+import com.ylx.massage.domain.dto.ProductOrderPageDTO;
+import com.ylx.massage.domain.vo.*;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -17,7 +17,7 @@ public interface ProductOrderInfoMapper extends BaseMapper<ProductOrderInfo> {
     /**
      * 分页查询用户商品订单列表
      *
-     * @param page 分页参数
+     * @param page   分页参数
      * @param openId 用户openId
      * @return 订单列表
      */
@@ -27,8 +27,12 @@ public interface ProductOrderInfoMapper extends BaseMapper<ProductOrderInfo> {
      * 查询订单详情
      *
      * @param orderNo 订单编号
-     * @param openId 用户openId
+     * @param openId  用户openId
      * @return 订单详情
      */
     ProductOrderDetailVo selectProductOrderDetailByOrderNoAndOpenId(@Param("orderNo") String orderNo, @Param("openId") String openId);
+
+    Page<ProductOrderPageItemVo> adminPage(Page<ProductOrderInfo> page, @Param("dto") ProductOrderPageDTO dto);
+
+    ProductOrderCountVo getOrderTotalCount();
 }

+ 1 - 2
nightFragrance-massage/src/main/java/com/ylx/massage/service/IProductOrderInfoService.java

@@ -3,7 +3,6 @@ package com.ylx.massage.service;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ylx.common.core.domain.R;
-import com.ylx.massage.domain.Product;
 import com.ylx.massage.domain.ProductOrderInfo;
 import com.ylx.massage.domain.dto.ProductOrderCreateRequest;
 import com.ylx.massage.domain.dto.ProductOrderOperateDTO;
@@ -56,5 +55,5 @@ public interface IProductOrderInfoService extends IService<ProductOrderInfo> {
 
     boolean cancelReturn(ProductOrderOperateDTO dto);
 
-    Page<ProductOrderPageVo> adminPage(Page<Product> page, ProductOrderPageDTO dto);
+    ProductOrderPageVo adminPage(Page<ProductOrderInfo> page, ProductOrderPageDTO dto);
 }

+ 14 - 5
nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/ProductOrderInfoServiceImpl.java

@@ -15,9 +15,7 @@ import com.ylx.massage.domain.dto.ProductOrderCreateRequest;
 import com.ylx.massage.domain.dto.ProductOrderOperateDTO;
 import com.ylx.massage.domain.dto.ProductOrderPageDTO;
 import com.ylx.massage.domain.dto.ProductOrderPayRequest;
-import com.ylx.massage.domain.vo.ProductOrderDetailVo;
-import com.ylx.massage.domain.vo.ProductOrderListVo;
-import com.ylx.massage.domain.vo.ProductOrderPageVo;
+import com.ylx.massage.domain.vo.*;
 import com.ylx.massage.enums.BillTypeEnum;
 import com.ylx.massage.enums.ProductOrderStatusEnum;
 import com.ylx.massage.mapper.ProductMapper;
@@ -396,8 +394,19 @@ public class ProductOrderInfoServiceImpl extends ServiceImpl<ProductOrderInfoMap
     }
 
     @Override
-    public Page<ProductOrderPageVo> adminPage(Page<Product> page, ProductOrderPageDTO dto) {
-        return null;
+    public ProductOrderPageVo adminPage(Page<ProductOrderInfo> page, ProductOrderPageDTO dto) {
+
+        ProductOrderPageVo vo = new ProductOrderPageVo();
+
+        // 1. 分页查询订单列表
+        Page<ProductOrderPageItemVo> list = this.productOrderInfoMapper.adminPage(page, dto);
+        vo.setList(list);
+
+        // 2. 查询订单总数
+        ProductOrderCountVo count = this.productOrderInfoMapper.getOrderTotalCount();
+        vo.setCount(count);
+
+        return vo;
     }
 
     private WxLoginUser getCurrentWxLoginUser() {

+ 55 - 0
nightFragrance-massage/src/main/resources/mapper/massage/ProductOrderInfoMapper.xml

@@ -82,4 +82,59 @@
         WHERE order_no = #{orderNo} AND open_id = #{openId}
     </select>
 
+    <select id="adminPage" resultType="com.ylx.massage.domain.vo.ProductOrderPageItemVo">
+        SELECT
+            oi.id,
+            oi.order_no AS orderNo,
+            oi.order_status AS orderStatus,
+            oi.pay_status AS payStatus,
+            oi.points_used AS pointsUsed,
+            oi.logistics_no AS logisticsNo,
+            oi.delivery_time AS deliveryTime,
+            oi.create_time AS createTime,
+            item.product_id,
+            item.product_name AS productName,
+            item.quantity AS quantity,
+            item.price AS price,
+            ROUND( item.price / 100, 2 ) AS payAmount,
+            oi.open_id,
+            u.c_nick_name AS nickName,
+            u.c_phone AS phone
+        FROM
+            product_order_info oi
+        LEFT JOIN product_order_item item ON oi.id = item.order_id
+        LEFT JOIN t_wx_user u ON oi.open_id = u.c_openid
+        WHERE oi.is_deleted = 0
+
+        <!-- 查询条件 -->
+        <if test="dto.orderNo != null and dto.orderNo != ''">
+            AND oi.order_no LIKE CONCAT('%', #{dto.orderNo}, '%')
+        </if>
+        <if test="dto.logisticsNo != null and dto.logisticsNo != ''">
+            AND oi.logistics_no LIKE CONCAT('%', #{dto.logisticsNo}, '%')
+        </if>
+        <if test="dto.orderStatus != null">
+            AND oi.order_status = #{dto.orderStatus}
+        </if>
+        <if test="dto.payStatus != null">
+            AND oi.pay_status = #{dto.payStatus}
+        </if>
+        <if test="dto.startTime != null and dto.endTime != null">
+            AND oi.create_time BETWEEN #{dto.startTime} AND #{dto.endTime}
+        </if>
+
+        ORDER BY oi.create_time DESC
+    </select>
+
+    <select id="getOrderTotalCount" resultType="com.ylx.massage.domain.vo.ProductOrderCountVo">
+        SELECT
+            SUM( CASE WHEN order_status = 1 THEN 1 ELSE 0 END ) AS pendingShipmentQty,
+            SUM( CASE WHEN order_status IN ( 2, 3 ) THEN 1 ELSE 0 END ) AS inProgressQty,
+            SUM( CASE WHEN order_status IN ( 5, 6, 7, 8, 9 ) THEN 1 ELSE 0 END ) AS afterSalesQty
+        FROM
+            product_order_info
+        WHERE
+            is_deleted = 0
+    </select>
+
 </mapper>