Browse Source

新增客户端情侣套餐订单列表接口

codingliang 10 months ago
parent
commit
7c6f41f7f6

+ 11 - 0
src/main/java/com/sqx/modules/lovers/controller/app/AppLoversSetOrderController.java

@@ -1,7 +1,9 @@
 package com.sqx.modules.lovers.controller.app;
 
+import com.sqx.common.utils.PageUtils;
 import com.sqx.common.utils.Result;
 import com.sqx.modules.app.annotation.Login;
+import com.sqx.modules.lovers.dto.LoversSetOrderQueryDTO;
 import com.sqx.modules.lovers.dto.LoversSetOrderSubmitDTO;
 import com.sqx.modules.lovers.service.LoversSetOrderInfoService;
 import com.sqx.modules.pay.vo.WechatTransactionsParamVO;
@@ -25,6 +27,15 @@ public class AppLoversSetOrderController {
     private final LoversSetOrderInfoService loversSetOrderInfoService;
 
     @Login
+    @ApiOperation("用户端订单分页")
+    @GetMapping("page")
+    public Result userPage(@RequestAttribute Long userId, @Valid LoversSetOrderQueryDTO queryDTO){
+        queryDTO.setUserId(userId);
+        PageUtils pageUtils = loversSetOrderInfoService.orderPage(queryDTO);
+        return Result.success().put("data", pageUtils);
+    }
+
+    @Login
     @ApiOperation("创建订单")
     @GetMapping
     public Result createOrder(@RequestAttribute Long userId, @Valid LoversSetOrderSubmitDTO submitDTO){

+ 6 - 0
src/main/java/com/sqx/modules/lovers/dao/LoversSetOrderInfoDao.java

@@ -1,9 +1,15 @@
 package com.sqx.modules.lovers.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.sqx.modules.lovers.dto.LoversSetOrderQueryDTO;
 import com.sqx.modules.lovers.entity.LoversSetOrderInfo;
+import com.sqx.modules.lovers.vo.LoversSetOrderVO;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 @Mapper
 public interface LoversSetOrderInfoDao extends BaseMapper<LoversSetOrderInfo> {
+    IPage<LoversSetOrderVO> orderPages(@Param("pages") Page<LoversSetOrderVO> pages, @Param("queryDTO") LoversSetOrderQueryDTO queryDTO);
 }

+ 19 - 0
src/main/java/com/sqx/modules/lovers/dto/LoversSetOrderQueryDTO.java

@@ -0,0 +1,19 @@
+package com.sqx.modules.lovers.dto;
+
+import com.sqx.common.query.PageQuery;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ * @author codingliang
+ * @date 2025-08-22
+ */
+@Data
+public class LoversSetOrderQueryDTO extends PageQuery {
+
+    @ApiModelProperty("用户id,用户端不用传")
+    private Long userId;
+
+    @ApiModelProperty("订单状态;0待支付、1待使用、2使用中、3已使用")
+    private String orderStatus;
+}

+ 11 - 0
src/main/java/com/sqx/modules/lovers/service/LoversSetOrderInfoService.java

@@ -1,6 +1,8 @@
 package com.sqx.modules.lovers.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.sqx.common.utils.PageUtils;
+import com.sqx.modules.lovers.dto.LoversSetOrderQueryDTO;
 import com.sqx.modules.lovers.dto.LoversSetOrderSubmitDTO;
 import com.sqx.modules.lovers.entity.LoversSetOrderInfo;
 import com.sqx.modules.pay.vo.WechatTransactionsParamVO;
@@ -8,6 +10,14 @@ import com.sqx.modules.pay.vo.WechatTransactionsParamVO;
 public interface LoversSetOrderInfoService extends IService<LoversSetOrderInfo> {
 
     /**
+     * 订单列表
+     *
+     * @param queryDTO 查询DTO
+     * @return 分页数据
+     */
+    PageUtils orderPage(LoversSetOrderQueryDTO queryDTO);
+
+    /**
      * 创建订单
      *
      * @param userId 用户id
@@ -39,4 +49,5 @@ public interface LoversSetOrderInfoService extends IService<LoversSetOrderInfo>
      * @param orderNo 订单编号
      */
     void updateOrderAfterPaySuccess(String orderNo);
+
 }

+ 12 - 0
src/main/java/com/sqx/modules/lovers/service/impl/LoversSetOrderInfoServiceImpl.java

@@ -4,16 +4,20 @@ import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.sqx.common.constant.RedisKey;
 import com.sqx.common.exception.SqxException;
 import com.sqx.common.utils.Constant;
+import com.sqx.common.utils.PageUtils;
 import com.sqx.common.utils.RedisUtils;
 import com.sqx.modules.app.entity.UserEntity;
 import com.sqx.modules.app.service.UserService;
 import com.sqx.modules.lovers.dao.LoversSetOrderInfoDao;
 import com.sqx.modules.lovers.dto.LoversSetMenstrualPeriodSettingDTO;
+import com.sqx.modules.lovers.dto.LoversSetOrderQueryDTO;
 import com.sqx.modules.lovers.dto.LoversSetOrderSubmitDTO;
 import com.sqx.modules.lovers.entity.LoversSetOrderDeliveryInfo;
 import com.sqx.modules.lovers.entity.LoversSetOrderDetail;
@@ -23,6 +27,7 @@ import com.sqx.modules.lovers.service.LoversSetOrderDeliveryInfoService;
 import com.sqx.modules.lovers.service.LoversSetOrderDetailService;
 import com.sqx.modules.lovers.service.LoversSetOrderInfoService;
 import com.sqx.modules.lovers.service.LoversSetService;
+import com.sqx.modules.lovers.vo.LoversSetOrderVO;
 import com.sqx.modules.lovers.vo.LoversSetVO;
 import com.sqx.modules.pay.dto.GetPayParamDTO;
 import com.sqx.modules.pay.enums.PayChannelEnum;
@@ -58,6 +63,13 @@ public class LoversSetOrderInfoServiceImpl extends ServiceImpl<LoversSetOrderInf
     private final UserService userService;
 
     @Override
+    public PageUtils orderPage(LoversSetOrderQueryDTO queryDTO) {
+        IPage<LoversSetOrderVO> page = baseMapper.orderPages(new Page<>(queryDTO.getPage(), queryDTO.getLimit()), queryDTO);
+        PageUtils pageUtils = new PageUtils(page);
+        return pageUtils;
+    }
+
+    @Override
     @Transactional
     public Long createOrder(Long userId, LoversSetOrderSubmitDTO submitDTO) {
         // 校验令牌

+ 30 - 0
src/main/java/com/sqx/modules/lovers/vo/LoversSetOrderDeliveryInfoVO.java

@@ -0,0 +1,30 @@
+package com.sqx.modules.lovers.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+
+@Data
+public class LoversSetOrderDeliveryInfoVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("主键id")
+    private Long id;
+
+    @ApiModelProperty("情侣套餐订单id")
+    private Long loversSetOrderId;
+
+    @ApiModelProperty("配送内容")
+    private String deliveryContent;
+
+    @ApiModelProperty("预计配送时间")
+    private LocalDateTime deliveryTimeOfExpect;
+
+    @ApiModelProperty("配送单id(跑腿订单id)")
+    private Long deliveryOrderId;
+
+    @ApiModelProperty("状态;1等待生成配送单、2已生成配送单、3已取消")
+    private String deliveryStatus;
+}

+ 42 - 0
src/main/java/com/sqx/modules/lovers/vo/LoversSetOrderDetailVO.java

@@ -0,0 +1,42 @@
+package com.sqx.modules.lovers.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+public class LoversSetOrderDetailVO implements Serializable {
+    private static final long serialVersionUID = 1L;
+
+    @TableId(type = IdType.AUTO)
+    @ApiModelProperty("主键id")
+    private Long id;
+
+    @ApiModelProperty("情侣套餐订单id")
+    private Long loversSetOrderInfoId;
+
+    @ApiModelProperty("商品id")
+    private Long goodsId;
+
+    @ApiModelProperty("商品名称")
+    private String goodsName;
+
+    @ApiModelProperty("店铺id")
+    private Long shopId;
+
+    @ApiModelProperty("店铺名称")
+    private String shopName;
+
+    @ApiModelProperty("数量")
+    private Integer num;
+
+    @ApiModelProperty("价格")
+    private BigDecimal price;
+
+    @ApiModelProperty("原价")
+    private BigDecimal originalPrice;
+}

+ 80 - 0
src/main/java/com/sqx/modules/lovers/vo/LoversSetOrderVO.java

@@ -0,0 +1,80 @@
+package com.sqx.modules.lovers.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 用户端情侣套餐订单VO
+ * @author codingliang
+ * @date 2025-08-27
+ */
+@Data
+public class LoversSetOrderVO {
+    @ApiModelProperty("主键id")
+    private Long id;
+
+    @ApiModelProperty("订单编号")
+    private String orderNumber;
+
+    @ApiModelProperty("用户id")
+    private Long userId;
+
+    @ApiModelProperty("套餐id")
+    private Long loversSetId;
+
+    @ApiModelProperty("套餐名称")
+    private String loversSetName;
+
+    @ApiModelProperty("套餐主图")
+    private String loversSetMasterImg;
+
+    @ApiModelProperty("套餐金额")
+    private BigDecimal loversSetAmount;
+
+    @ApiModelProperty("实付金额")
+    private BigDecimal payAmount;
+
+    @ApiModelProperty("退款金额")
+    private BigDecimal refundAmount;
+
+    @ApiModelProperty("收货人姓名")
+    private String receiverName;
+
+    @ApiModelProperty("收货人电话")
+    private String receiverPhone;
+
+    @ApiModelProperty("接货开始时间")
+    private Date receiveStartDate;
+
+    @ApiModelProperty("接货结束时间")
+    private Date receiveEndDate;
+
+    @ApiModelProperty("期待接货时间;HH:mm:ss")
+    private String expectReceiveTime;
+
+    @ApiModelProperty("订单激活状态;0待支付、1待使用、2使用中、3已使用")
+    private String activeStatus;
+
+    @ApiModelProperty("订单支付状态;0待支付、1已支付")
+    private String payStatus;
+
+    @ApiModelProperty("订单退款状态;0未退款、1部分退款、2整单退款")
+    private String refundStatus;
+
+    @ApiModelProperty("创建时间")
+    private LocalDateTime createTime;
+
+    @ApiModelProperty("更新时间")
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty("订单详情列表")
+    private List<LoversSetOrderDetailVO> orderDetailList;
+
+    @ApiModelProperty("配送信息")
+    private List<LoversSetOrderDeliveryInfoVO> deliveryInfoList;
+}

+ 87 - 0
src/main/resources/mapper/lovers/LoversSetOrderInfoDao.xml

@@ -3,4 +3,91 @@
 
 <mapper namespace="com.sqx.modules.lovers.dao.LoversSetOrderInfoDao">
 
+    <!-- 定义结果集映射 -->
+    <resultMap id="LoversSetOrderVO" type="com.sqx.modules.lovers.vo.LoversSetOrderVO">
+        <!-- 主表字段映射 -->
+        <id column="id" property="id"/>
+        <result column="order_number" property="orderNumber"/>
+        <result column="user_id" property="userId"/>
+        <result column="lovers_set_id" property="loversSetId"/>
+        <result column="lovers_set_name" property="loversSetName"/>
+        <result column="pay_amount" property="payAmount"/>
+        <result column="pay_status" property="payStatus"/>
+        <result column="active_status" property="activeStatus"/>
+        <result column="receiver_name" property="receiverName"/>
+        <result column="receiver_phone" property="receiverPhone"/>
+        <result column="receive_start_date" property="receiveStartDate"/>
+        <result column="receive_end_date" property="receiveEndDate"/>
+        <result column="create_time" property="createTime"/>
+        <result column="update_time" property="updateTime"/>
+
+        <!-- 订单详情列表 -->
+        <collection property="orderDetailList" ofType="com.sqx.modules.lovers.vo.LoversSetOrderDetailVO">
+            <result column="detail_id" property="id"/>
+            <result column="id" property="loversSetOrderInfoId"/>
+            <result column="goods_id" property="goodsId"/>
+            <result column="goods_name" property="goodsName"/>
+            <result column="shop_id" property="shopId"/>
+            <result column="shop_name" property="shopName"/>
+            <result column="num" property="num"/>
+            <result column="price" property="price"/>
+            <result column="original_price" property="originalPrice"/>
+        </collection>
+
+        <!-- 配送信息列表 -->
+        <collection property="deliveryInfoList" ofType="com.sqx.modules.lovers.vo.LoversSetOrderDeliveryInfoVO">
+            <result column="delivery_id" property="id"/>
+            <result column="id" property="loversSetOrderId"/>
+            <result column="delivery_content" property="deliveryContent"/>
+            <result column="delivery_time_of_expect" property="deliveryTimeOfExpect"/>
+            <result column="delivery_order_id" property="deliveryOrderId"/>
+            <result column="delivery_status" property="deliveryStatus"/>
+        </collection>
+    </resultMap>
+
+    <select id="orderPages" resultMap="LoversSetOrderVO">
+        SELECT
+            o.id,
+            o.order_number,
+            o.user_id,
+            o.lovers_set_id,
+            o.lovers_set_name,
+            o.lovers_set_master_img,
+            o.lovers_set_amount,
+            o.pay_amount,
+            o.refund_amount,
+            o.receiver_name,
+            o.receiver_phone,
+            o.receive_start_date,
+            o.receive_end_date,
+            o.expect_receive_time,
+            o.active_status,
+            o.pay_status,
+            o.refund_status,
+            o.create_time,
+            o.update_time,
+            d.id AS detail_id,
+            d.goods_id,
+            d.goods_name,
+            d.shop_id,
+            d.shop_name,
+            d.num,
+            d.price,
+            d.original_price,
+            dl.id AS delivery_id,
+            dl.delivery_content,
+            dl.delivery_time_of_expect,
+            dl.delivery_order_id,
+            dl.delivery_status
+        FROM
+            lovers_set_order_info o
+            LEFT JOIN lovers_set_order_detail d ON o.id = d.lovers_set_order_id
+            LEFT JOIN lovers_set_order_delivery_info dl ON o.id = dl.lovers_set_order_id
+        WHERE
+            o.del_flag = 0
+            <if test="queryDTO.userId != null">
+                AND o.user_id = #{queryDTO.userId}
+            </if>
+        ORDER BY o.create_time DESC
+    </select>
 </mapper>