Explorar o código

增加用户端预约列表

liude hai 1 ano
pai
achega
98f0505d0b

+ 11 - 0
vehicle-client/src/main/java/com/chelvc/cloud/vehicle/client/ReservationClient.java

@@ -5,6 +5,7 @@ import java.util.List;
 import com.chelvc.cloud.vehicle.client.constant.ReserveStatus;
 import com.chelvc.cloud.vehicle.client.dto.MerchantReservationDTO;
 import com.chelvc.cloud.vehicle.client.dto.ReservationDTO;
+import com.chelvc.cloud.vehicle.client.dto.UserReservationDTO;
 import com.chelvc.cloud.vehicle.client.param.ReservationModifyParam;
 import com.chelvc.cloud.vehicle.client.param.ReservationPagingParam;
 import com.chelvc.cloud.vehicle.client.param.ReservationQueryParam;
@@ -98,4 +99,14 @@ public interface ReservationClient {
      */
     @GetMapping("/reservation/getMerchantList")
     Pagination<MerchantReservationDTO> getMerchantReservationPaging(@SpringQueryMap ReservationPagingParam param);
+
+
+    /**
+     * 用户端分页查询预约
+     *
+     * @param param 查询参数
+     * @return 预约分页信息
+     */
+    @GetMapping("/reservation/getUserReservation")
+    Pagination<UserReservationDTO> getUserReservationPaging(@SpringQueryMap ReservationPagingParam param);
 }

+ 69 - 0
vehicle-client/src/main/java/com/chelvc/cloud/vehicle/client/dto/UserReservationDTO.java

@@ -0,0 +1,69 @@
+package com.chelvc.cloud.vehicle.client.dto;
+
+import com.chelvc.cloud.vehicle.client.constant.ReserveStatus;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 用户预约记录信息
+ *
+ * @author liude
+ * @date 2024/6/9
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class UserReservationDTO implements Serializable {
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 约定时间
+     */
+    private Date appointTime;
+
+    /**
+     * 预约状态
+     */
+    private ReserveStatus status;
+
+    /**
+     * 订单ID
+     */
+    private Long orderId;
+
+    /** 应付金额(实际支付金额) */
+    private BigDecimal payAmount;
+
+    /**
+     * 发起预约的时间
+     */
+    private Date createTime;
+    /**
+     *购买的商品详细
+     */
+    private List<OrderItemDTO> goodItem;
+    /**
+     * 商家id
+     */
+    private Long mertchantId;
+    /**
+     * 商家名称
+     */
+    private String merchantName;
+    /**
+     * 商家logo
+     */
+    private String logo;
+
+}

+ 13 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/controller/ReservationController.java

@@ -5,6 +5,7 @@ import java.util.List;
 import com.chelvc.cloud.vehicle.client.constant.ReserveStatus;
 import com.chelvc.cloud.vehicle.client.dto.MerchantReservationDTO;
 import com.chelvc.cloud.vehicle.client.dto.ReservationDTO;
+import com.chelvc.cloud.vehicle.client.dto.UserReservationDTO;
 import com.chelvc.cloud.vehicle.client.param.ReservationModifyParam;
 import com.chelvc.cloud.vehicle.client.param.ReservationPagingParam;
 import com.chelvc.cloud.vehicle.client.param.ReservationQueryParam;
@@ -121,4 +122,16 @@ public class ReservationController {
     public Pagination<MerchantReservationDTO> getMerchantReservationPaging(ReservationPagingParam param) {
         return reservationService.getMerchantReservationPaging(param);
     }
+
+
+    /**
+     * 用户端分页查询预约
+     *
+     * @param param 查询参数
+     * @return 预约分页信息
+     */
+    @GetMapping("/reservation/getUserReservation")
+    public Pagination<UserReservationDTO> getUserReservationPaging(ReservationPagingParam param) {
+        return reservationService.getUserReservationPaging(param);
+    }
 }

+ 11 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/dao/ReservationMapper.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.chelvc.cloud.vehicle.client.dto.MerchantReservationDTO;
 import com.chelvc.cloud.vehicle.client.dto.OrderItemDTO;
+import com.chelvc.cloud.vehicle.client.dto.UserReservationDTO;
 import com.chelvc.cloud.vehicle.client.param.ReservationPagingParam;
 import com.chelvc.cloud.vehicle.client.param.ReservationQueryParam;
 import com.chelvc.cloud.vehicle.server.entity.Reservation;
@@ -51,4 +52,14 @@ public interface ReservationMapper extends BaseMapper<Reservation> {
      */
     List<OrderItemDTO> getReservationRetail(Long orderId);
 
+
+    /**
+     * 分页查询用户预约信息
+     * @param page 分页信息
+     * @param param 参数
+     * @return
+     */
+    Page<UserReservationDTO> getUserReservationPaging(IPage<ReservationPagingParam> page, @Param("param")ReservationPagingParam param
+    ,@Param("userId")Long userId);
+
 }

+ 11 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/ReservationService.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
 import com.chelvc.cloud.vehicle.client.constant.ReserveStatus;
 import com.chelvc.cloud.vehicle.client.dto.MerchantReservationDTO;
 import com.chelvc.cloud.vehicle.client.dto.ReservationDTO;
+import com.chelvc.cloud.vehicle.client.dto.UserReservationDTO;
 import com.chelvc.cloud.vehicle.client.param.ReservationModifyParam;
 import com.chelvc.cloud.vehicle.client.param.ReservationPagingParam;
 import com.chelvc.cloud.vehicle.client.param.ReservationQueryParam;
@@ -84,5 +85,15 @@ public interface ReservationService extends IService<Reservation> {
 
 
 
+    /**
+     * 用户分页查询预约
+     *
+     * @param param 查询参数
+     * @return 预约分页信息
+     */
+    Pagination<UserReservationDTO> getUserReservationPaging(ReservationPagingParam param);
+
+
+
 
 }

+ 16 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/ReservationServiceImpl.java

@@ -10,6 +10,7 @@ import com.chelvc.cloud.vehicle.client.constant.ReserveStatus;
 import com.chelvc.cloud.vehicle.client.dto.MerchantDTO;
 import com.chelvc.cloud.vehicle.client.dto.MerchantReservationDTO;
 import com.chelvc.cloud.vehicle.client.dto.ReservationDTO;
+import com.chelvc.cloud.vehicle.client.dto.UserReservationDTO;
 import com.chelvc.cloud.vehicle.client.param.LocationQueryPagingParam;
 import com.chelvc.cloud.vehicle.client.param.ReservationModifyParam;
 import com.chelvc.cloud.vehicle.client.param.ReservationPagingParam;
@@ -187,4 +188,19 @@ public class ReservationServiceImpl extends ServiceImpl<ReservationMapper, Reser
         });
         return DatabaseContextHolder.pagination(list);
     }
+
+    public Pagination<UserReservationDTO> getUserReservationPaging(ReservationPagingParam param){
+        IPage<ReservationPagingParam> iPage = new Page<>();
+        iPage.setCurrent(param.getPaging().getNumber());
+        iPage.setSize(param.getPaging().getSize());
+        Long userId = SessionContextHolder.getId();
+        Page<UserReservationDTO> list = this.baseMapper.getUserReservationPaging(iPage,param,userId);
+        if (CollectionUtils.isEmpty(list.getRecords())){
+            return DatabaseContextHolder.pagination(list);
+        }
+        list.getRecords().forEach(item ->{
+            item.setGoodItem(this.baseMapper.getReservationRetail(item.getOrderId()));
+        });
+        return DatabaseContextHolder.pagination(list);
+    }
 }

+ 51 - 1
vehicle-server/src/main/resources/mapper/ReservationMapper.xml

@@ -73,7 +73,7 @@
         re.create_time,
         re.appoint_time,
         od.pay_amount,
-        re.user_id
+        re.user_id,
         re.status
         FROM
         reservation re
@@ -106,5 +106,55 @@
     </select>
 
 
+    <select id="getUserReservationPaging" resultMap="USERRESULT_MAP">
+        SELECT
+        re.id,
+        od.id order_id,
+        re.create_time,
+        re.appoint_time,
+        od.pay_amount,
+        re.user_id,
+        re.status,
+        m.id merchantId
+        m.name ,
+        m.logo
+        FROM
+        reservation re
+        LEFT JOIN oms_order od ON re.order_id = od.id left join merchant m on re.merchant_id = m.id
+        WHERE re.user_id = #{userId}
+        <if test="param.merchantId != null">
+            and re.merchant_id = #{param.merchantId}
+        </if>
+        <if test="param.status != null">
+            and re.status = #{param.status}
+        </if>
+        <if test="param.date != null and param.date != ''">
+            and  DATE_FORMAT(re.appoint_time, '%Y-%m-%d') = #{param.date}
+        </if>
+        order by re.appoint_time asc
+    </select>
+
+
+    <resultMap id="USERRESULT_MAP" type="com.chelvc.cloud.vehicle.client.dto.UserReservationDTO">
+        <id column="id" property="id" jdbcType="BIGINT"/>
+        <result column="appoint_time" property="appointTime" jdbcType="TIMESTAMP"/>
+        <result column="status" property="status" jdbcType="VARCHAR"/>
+        <result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
+        <result property="payAmount"    column="pay_amount"    />
+        <result column="order_id" property="orderId" jdbcType="BIGINT"/>
+        <result column="user_id" property="userId" jdbcType="BIGINT"/>
+        <result column="merchantId" property="merchantId" jdbcType="BIGINT"/>
+        <result column="name" property="merchantName" jdbcType="VARCHAR"/>
+        <result column="logo" property="logo" jdbcType="VARCHAR"/>
+        <association property="goodItem" javaType="com.chelvc.cloud.vehicle.client.dto.OrderItemDTO">
+            <result column="goods_id" property="goodsId" jdbcType="BIGINT"/>
+            <result column="goods_name" property="goodsName" jdbcType="VARCHAR"/>
+            <result column="goods_pic" property="goodsPic" jdbcType="VARCHAR"/>
+            <result column="goods_quantity" property="goodsQuantity" jdbcType="INTEGER"/>
+            <result column="goods_price" property="goodsPrice" jdbcType="DOUBLE"/>
+        </association>
+    </resultMap>
+
+
 
 </mapper>