Bladeren bron

查询预约列表功能开发

qizai 1 jaar geleden
bovenliggende
commit
79f54b6fbc

+ 2 - 7
src/main/java/com/chelvc/cloud/maintain/controller/FavoriteController.java

@@ -1,19 +1,12 @@
 package com.chelvc.cloud.maintain.controller;
 
-import javax.validation.Valid;
-import javax.validation.constraints.Min;
-
 import com.chelvc.cloud.maintain.copier.FavoriteCopier;
 import com.chelvc.cloud.maintain.copier.MerchantCopier;
-import com.chelvc.cloud.maintain.copier.UserCouponCopier;
 import com.chelvc.cloud.maintain.vo.FavoriteVO;
-import com.chelvc.cloud.maintain.vo.UserCouponVO;
 import com.chelvc.cloud.vehicle.api.constant.FavoriteType;
 import com.chelvc.cloud.vehicle.api.dto.FavoriteDTO;
-import com.chelvc.cloud.vehicle.api.dto.UserCouponDTO;
 import com.chelvc.cloud.vehicle.api.param.FavoritePagingParam;
 import com.chelvc.cloud.vehicle.api.param.FavoriteQueryParam;
-import com.chelvc.cloud.vehicle.api.param.UserCouponQueryParam;
 import com.chelvc.cloud.vehicle.api.service.FavoriteService;
 import com.chelvc.framework.base.annotation.ResponseWrapping;
 import com.chelvc.framework.common.model.Pagination;
@@ -25,6 +18,8 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.validation.Valid;
+import javax.validation.constraints.Min;
 import java.util.Collections;
 import java.util.List;
 import java.util.stream.Collectors;

+ 35 - 3
src/main/java/com/chelvc/cloud/maintain/controller/ReservationController.java

@@ -1,18 +1,28 @@
 package com.chelvc.cloud.maintain.controller;
 
-import javax.validation.Valid;
-import javax.validation.constraints.Min;
-
+import com.chelvc.cloud.maintain.copier.MerchantCopier;
+import com.chelvc.cloud.maintain.copier.ReservationCopier;
+import com.chelvc.cloud.maintain.vo.ReservationVO;
+import com.chelvc.cloud.vehicle.api.dto.ReservationDTO;
 import com.chelvc.cloud.vehicle.api.param.ReservationModifyParam;
+import com.chelvc.cloud.vehicle.api.param.ReservationQueryParam;
 import com.chelvc.cloud.vehicle.api.service.ReservationService;
 import com.chelvc.framework.base.annotation.ResponseWrapping;
 import org.apache.dubbo.config.annotation.DubboReference;
+import org.springframework.util.CollectionUtils;
 import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.validation.Valid;
+import javax.validation.constraints.Min;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * 预约接口
  *
@@ -37,4 +47,26 @@ public class ReservationController {
                                @RequestBody @Valid ReservationModifyParam param) {
         this.reservationService.addReservation(merchantId, param);
     }
+
+    /**
+     * 查询用户预约列表
+     *
+     * @param param 查询参数
+     * @return 用户预约列表
+     */
+    @GetMapping("/reservations")
+    public List<ReservationVO> listUserReservations(@Valid ReservationQueryParam param) {
+        List<ReservationDTO> reservations = this.reservationService.listUserReservations(param);
+        if (CollectionUtils.isEmpty(reservations)) {
+            return Collections.emptyList();
+        }
+        return reservations
+                .stream()
+                .map(o -> {
+                    ReservationVO reservationVO = ReservationCopier.INSTANCE.copying(o);
+                    reservationVO.setSimpleMerchantVO(MerchantCopier.INSTANCE
+                            .merchantDTOToSimpleMerchantVO(o.getMerchant()));
+                    return reservationVO;
+                }).collect(Collectors.toList());
+    }
 }

+ 40 - 0
src/main/java/com/chelvc/cloud/maintain/copier/ReservationCopier.java

@@ -0,0 +1,40 @@
+package com.chelvc.cloud.maintain.copier;
+
+import com.chelvc.cloud.maintain.vo.ReservationVO;
+import com.chelvc.cloud.vehicle.api.dto.ReservationDTO;
+import org.mapstruct.Builder;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 预约记录对象拷贝接口
+ *
+ * @author qizai
+ * @Date 2023/9/9
+ **/
+@Mapper(builder = @Builder(disableBuilder = true))
+public interface ReservationCopier {
+    /**
+     * 对象拷贝接口实例
+     */
+    ReservationCopier INSTANCE = Mappers.getMapper(ReservationCopier.class);
+
+    /**
+     * 预约记录拷贝
+     *
+     * @param reservation 预约记录DTO
+     * @return 预约记录VO
+     */
+    ReservationVO copying(ReservationDTO reservation);
+
+    /**
+     * 预约记录拷贝
+     *
+     * @param reservations 预约记录集合
+     * @return 预约记录列表
+     */
+    List<ReservationVO> copying(Collection<ReservationDTO> reservations);
+}

+ 2 - 1
src/main/java/com/chelvc/cloud/maintain/vo/FavoriteVO.java

@@ -5,6 +5,7 @@ import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.experimental.SuperBuilder;
 
+import java.io.Serializable;
 import java.util.Date;
 
 /**
@@ -17,7 +18,7 @@ import java.util.Date;
 @SuperBuilder
 @NoArgsConstructor
 @AllArgsConstructor
-public class FavoriteVO {
+public class FavoriteVO implements Serializable {
     /**
      * 主键
      */

+ 57 - 0
src/main/java/com/chelvc/cloud/maintain/vo/ReservationVO.java

@@ -0,0 +1,57 @@
+package com.chelvc.cloud.maintain.vo;
+
+import com.chelvc.cloud.vehicle.api.constant.ReserveStatus;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 预约记录信息
+ *
+ * @author qizai
+ * @date 2023/9/9
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class ReservationVO implements Serializable {
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 用户ID
+     */
+    private Long userId;
+
+    /**
+     * 商家ID
+     */
+    private Long merchantId;
+
+    /**
+     * 联系电话
+     */
+    private String mobile;
+
+    /**
+     * 约定时间
+     */
+    private Date appointTime;
+
+    /**
+     * 预约状态
+     */
+    private ReserveStatus status;
+
+    /**
+     * 简单商家信息
+     */
+    private SimpleMerchantVO simpleMerchantVO;
+}