Explorar el Código

Merge branch 'V1.0.1'

woody hace 1 año
padre
commit
c93dd78c44

+ 148 - 0
src/main/java/com/chelvc/cloud/maintain/controller/CouponController.java

@@ -0,0 +1,148 @@
+package com.chelvc.cloud.maintain.controller;
+
+import com.chelvc.cloud.maintain.copier.CouponCopier;
+import com.chelvc.cloud.maintain.vo.CouponVO;
+import com.chelvc.cloud.vehicle.api.constant.CouponClaimType;
+import com.chelvc.cloud.vehicle.api.constant.CouponStatus;
+import com.chelvc.cloud.vehicle.api.dto.CouponDTO;
+import com.chelvc.cloud.vehicle.api.param.CouponModifyParam;
+import com.chelvc.cloud.vehicle.api.param.CouponPagingParam;
+import com.chelvc.cloud.vehicle.api.service.CouponService;
+import com.chelvc.framework.base.annotation.ResponseWrapping;
+import com.chelvc.framework.common.model.Pagination;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.springframework.util.CollectionUtils;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.DeleteMapping;
+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.PutMapping;
+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.List;
+import java.util.stream.Collectors;
+
+/**
+ * 优惠券接口
+ *
+ * @author qizai
+ * @date 2023/9/8
+ */
+@Validated
+@RestController
+@ResponseWrapping
+public class CouponController {
+    @DubboReference
+    private CouponService couponService;
+
+    /**
+     * 新增优惠券
+     *
+     * @param param 新增参数
+     * @return 优惠券主键
+     */
+    @PostMapping("/coupon")
+    public Long addCoupon(@RequestBody @Valid CouponModifyParam param) {
+        return this.couponService.addCoupon(param);
+    }
+
+    /**
+     * 修改优惠券
+     *
+     * @param id    优惠券主键
+     * @param param 修改参数
+     */
+    @PutMapping("/coupon/{id}")
+    public void updateCoupon(@PathVariable("id") @Min(value = 1, message = "优惠券主键不能小于1") Long id,
+                             @RequestBody @Valid CouponModifyParam param) {
+        this.couponService.updateCoupon(id, param);
+    }
+
+    /**
+     * 获取优惠券信息
+     *
+     * @param id 优惠券主键
+     * @return 优惠券信息
+     */
+    @GetMapping("/coupon/{id}")
+    public CouponVO getCoupon(@PathVariable("id") @Min(value = 1, message = "优惠券主键不能小于1") Long id) {
+        return this.convert(this.couponService.getCoupon(id));
+    }
+
+    /**
+     * 查询优惠券分页
+     *
+     * @param param 查询参数
+     * @return 优惠券分页信息
+     */
+    @GetMapping("/coupon/paging")
+    public Pagination<CouponVO> getCouponPaging(@Valid CouponPagingParam param) {
+        Pagination<CouponDTO> pagination = this.couponService.getCouponPaging(param);
+        List<CouponDTO> records = pagination.getRecords();
+        if (CollectionUtils.isEmpty(records)) {
+            return Pagination.empty();
+        }
+
+        // 构建优惠券信息
+        List<CouponVO> coupons = records.stream().map(this::convert).collect(Collectors.toList());
+        return pagination.convert(coupons);
+    }
+
+    /**
+     * 根据商家ID查询优惠券分页
+     *
+     * @param merchantId 商家ID
+     * @param param 查询参数
+     * @return 优惠券分页信息
+     */
+    @GetMapping("/coupon/{merchantId}/paging")
+    public Pagination<CouponVO> listCoupons(@PathVariable("merchantId") @Min(value = 1, message = "优惠券主键不能小于1")
+                                                    Long merchantId, @Valid CouponPagingParam param) {
+        Pagination<CouponDTO> pagination = this.couponService.getMerchantCouponPaging(merchantId, param);
+        List<CouponDTO> records = pagination.getRecords();
+        if (CollectionUtils.isEmpty(records)) {
+            return Pagination.empty();
+        }
+
+        // 构建优惠券信息
+        List<CouponVO> coupons = records.stream().map(this::convert).collect(Collectors.toList());
+        return pagination.convert(coupons);
+    }
+
+    /**
+     * 查询可领取优惠券列表
+     *
+     * @param param 查询参数
+     * @return 优惠券分页信息
+     */
+    @GetMapping("/coupon/availablePaging")
+    public Pagination<CouponVO> getAvailableCouponPaging(@Valid CouponPagingParam param) {
+        param.setCouponStatus(CouponStatus.ONLINE);
+        param.setCouponClaimType(CouponClaimType.FREE);
+        return this.getCouponPaging(param);
+    }
+
+    /**
+     * 删除优惠券
+     *
+     * @param id    优惠券主键
+     */
+    @DeleteMapping("/coupon/{id}")
+    public void deleteCoupon(@PathVariable("id") @Min(value = 1, message = "优惠券主键不能小于1") Long id) {
+
+    }
+
+    /**
+     * 转换优惠券
+     *
+     * @param coupon 优惠券DTO
+     * @return 优惠券VO
+     */
+    private CouponVO convert(CouponDTO coupon) {
+        return CouponCopier.INSTANCE.copying(coupon);
+    }
+}

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

@@ -1,15 +1,29 @@
 package com.chelvc.cloud.maintain.controller;
 
-import javax.validation.constraints.Min;
-
+import com.chelvc.cloud.maintain.copier.FavoriteCopier;
+import com.chelvc.cloud.maintain.copier.MerchantCopier;
+import com.chelvc.cloud.maintain.vo.FavoriteVO;
+import com.chelvc.cloud.vehicle.api.constant.FavoriteType;
+import com.chelvc.cloud.vehicle.api.dto.FavoriteDTO;
+import com.chelvc.cloud.vehicle.api.param.FavoritePagingParam;
+import com.chelvc.cloud.vehicle.api.param.FavoriteQueryParam;
 import com.chelvc.cloud.vehicle.api.service.FavoriteService;
 import com.chelvc.framework.base.annotation.ResponseWrapping;
+import com.chelvc.framework.common.model.Pagination;
 import org.apache.dubbo.config.annotation.DubboReference;
+import org.springframework.util.CollectionUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.DeleteMapping;
+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;
+
 /**
  * 收藏接口
  *
@@ -32,4 +46,45 @@ public class FavoriteController {
     public void deleteMineFavorite(@PathVariable("id") @Min(value = 1, message = "收藏ID不能小于1") Long id) {
         this.favoriteService.deleteMineFavorite(id);
     }
+
+    /**
+     * 查询用户收藏列表
+     *
+     * @param param 查询参数
+     * @return 用户收藏信息列表
+     */
+    @GetMapping("/favorites")
+    public List<FavoriteVO> listUserFavorites(@Valid FavoriteQueryParam param) {
+        // 查询收藏的店铺
+        if (FavoriteType.MERCHANT.equals(param.getType())) {
+            List<FavoriteDTO> favoriteMerchants = this.favoriteService.listFavoriteMerchants(param);
+            if (CollectionUtils.isEmpty(favoriteMerchants)) {
+                return Collections.emptyList();
+            }
+            return favoriteMerchants
+                    .stream()
+                    .map(o -> {
+                        FavoriteVO favoriteVO = FavoriteCopier.INSTANCE.copying(o);
+                        favoriteVO.setSimpleMerchantVO(MerchantCopier.INSTANCE
+                                .merchantDTOToSimpleMerchantVO(o.getMerchant()));
+                        return favoriteVO;
+                    }).collect(Collectors.toList());
+        }
+        return Collections.emptyList();
+    }
+
+    /**
+     * 查询收藏列表
+     *
+     * @param param 查询参数
+     * @return 收藏分页信息
+     */
+    @GetMapping("/favorite/paging")
+    public Pagination<FavoriteVO> getFavoritePaging(@Valid FavoritePagingParam param) {
+        // 查询收藏的店铺
+        if (FavoriteType.MERCHANT.equals(param.getType())) {
+            return null;
+        }
+        return null;
+    }
 }

+ 71 - 0
src/main/java/com/chelvc/cloud/maintain/controller/OrderController.java

@@ -0,0 +1,71 @@
+package com.chelvc.cloud.maintain.controller;
+
+import com.chelvc.cloud.maintain.vo.UserCouponVO;
+import com.chelvc.cloud.vehicle.api.param.OrderQueryParam;
+import com.chelvc.cloud.vehicle.api.service.UserCouponService;
+import com.chelvc.framework.base.annotation.ResponseWrapping;
+import org.apache.dubbo.config.annotation.DubboReference;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import javax.validation.constraints.Min;
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * 订单接口
+ *
+ * @author qizai
+ * @Date 2023/10/19
+ **/
+@Validated
+@RestController
+@ResponseWrapping
+public class OrderController {
+    @DubboReference
+    private UserCouponService userCouponService;
+
+
+    /**
+     * 获取用户的订单列表
+     *
+     * @param param 查询参数
+     * @return 用户的订单列表
+     */
+    @GetMapping("/userorders")
+    public List<UserCouponVO> listUserOrders(@Valid OrderQueryParam param) {
+        return Collections.emptyList();
+    }
+
+    /**
+     * 获取订单明细
+     *
+     * @param id 订单主键
+     * @return 订单明细
+     */
+    @GetMapping("/orderdetail/{id}")
+    public UserCouponVO getOrderDetail(@PathVariable("id") @Min(value = 1, message = "订单主键不能小于1") Long id) {
+        return null;
+    }
+
+    /**
+     * 取消订单
+     *
+     * @param id 订单主键
+     * @return
+     */
+    @PutMapping("/cancelorder/{id}")
+    public void cancelOrder(@PathVariable("id") @Min(value = 1, message = "订单主键不能小于1") Long id) {
+    }
+
+    /**
+     * 取消订单
+     *
+     * @param id 订单主键
+     * @return
+     */
+    @DeleteMapping("/deleteorder/{id}")
+    public void deleteOrder(@PathVariable("id") @Min(value = 1, message = "订单主键不能小于1") Long id) {
+    }
+}

+ 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());
+    }
 }

+ 36 - 0
src/main/java/com/chelvc/cloud/maintain/controller/UserController.java

@@ -1,12 +1,26 @@
 package com.chelvc.cloud.maintain.controller;
 
+import com.chelvc.cloud.maintain.copier.UserCopier;
+import com.chelvc.cloud.maintain.vo.UserVO;
+import com.chelvc.cloud.uc.api.dto.UserDTO;
+import com.chelvc.cloud.uc.api.param.UserModifyParam;
 import com.chelvc.cloud.uc.api.service.UserService;
 import com.chelvc.framework.base.annotation.ResponseWrapping;
+import com.chelvc.framework.base.context.SessionContextHolder;
+import com.chelvc.framework.base.util.ResourceUtils;
+import com.chelvc.framework.common.util.ErrorUtils;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 
+import javax.validation.Valid;
+import javax.validation.constraints.Min;
+
 /**
  * 用户接口
  *
@@ -27,4 +41,26 @@ public class UserController {
     public void unregister() {
         this.userService.unregister();
     }
+
+    /**
+     * 获取用户信息
+     *
+     * @return 用户信息
+     */
+    @GetMapping("/user/info")
+    public UserVO getUserInfo() {
+        UserDTO user = this.userService.getUser();
+        ResourceUtils.required(user, "用户不存在");
+        return UserCopier.INSTANCE.copying(user);
+    }
+
+    /**
+     * 修改用户信息
+     *
+     * @param param 修改参数
+     */
+    @PutMapping("/user/info")
+    public void updateUser(@RequestBody @Valid UserModifyParam param) {
+        this.userService.updateUser(param);
+    }
 }

+ 136 - 0
src/main/java/com/chelvc/cloud/maintain/controller/UserCouponController.java

@@ -0,0 +1,136 @@
+package com.chelvc.cloud.maintain.controller;
+
+import com.chelvc.cloud.maintain.copier.UserCouponCopier;
+import com.chelvc.cloud.maintain.vo.CouponVO;
+import com.chelvc.cloud.maintain.vo.UserCouponVO;
+import com.chelvc.cloud.vehicle.api.dto.UserCouponDTO;
+import com.chelvc.cloud.vehicle.api.param.CouponPagingParam;
+import com.chelvc.cloud.vehicle.api.param.UserCouponPagingParam;
+import com.chelvc.cloud.vehicle.api.param.UserCouponQueryParam;
+import com.chelvc.cloud.vehicle.api.service.UserCouponService;
+import com.chelvc.framework.base.annotation.ResponseWrapping;
+import com.chelvc.framework.common.model.Pagination;
+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.RestController;
+
+import javax.validation.Valid;
+import javax.validation.constraints.Min;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 优惠券领取记录接口
+ *
+ * @author qizai
+ * @Date 2023/9/8
+ **/
+@Validated
+@RestController
+@ResponseWrapping
+public class UserCouponController {
+    @DubboReference
+    private UserCouponService userCouponService;
+
+    /**
+     * 领取优惠券
+     *
+     * @param couponId 优惠券ID
+     * @return 优惠券领取记录主键
+     */
+    @PostMapping("/usercoupon/{couponId}/claim")
+    public Long claimCoupon(@PathVariable("couponId") @Min(value = 1, message = "优惠券主键不能小于1") Long couponId) {
+        return this.userCouponService.claimCoupon(couponId);
+    }
+
+    /**
+     * 自动领取优惠券
+     *
+     */
+    @PostMapping("/usercoupon/autoclaim")
+    public void autoClaimCoupon() {
+
+    }
+
+    /**
+     * 获取用户领取的优惠券列表
+     *
+     * @param param 查询参数
+     * @return 用户已领取的优惠券信息列表
+     */
+    @GetMapping("/usercoupons")
+    public List<UserCouponVO> listUserCoupons(@Valid UserCouponQueryParam param) {
+        List<UserCouponDTO> userCoupons = this.userCouponService.listUserCoupons(param);
+        if (CollectionUtils.isEmpty(userCoupons)) {
+            return Collections.emptyList();
+        }
+        return userCoupons
+                .stream()
+                .map(o -> UserCouponCopier.INSTANCE.copying(o, o.getCouponDTO()))
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * 获取当前用户对于当前商品可使用的优惠券列表
+     *
+     * @param param 查询参数
+     * @return 用户可用优惠券信息列表
+     */
+    @GetMapping("/canusecoupons")
+    public List<UserCouponVO> listUserCanUseCoupons(@Valid UserCouponQueryParam param) {
+        List<UserCouponDTO> userCoupons = this.userCouponService.listUserCanUseCoupons(param);
+        if (CollectionUtils.isEmpty(userCoupons)) {
+            return Collections.emptyList();
+        }
+        return userCoupons
+                .stream()
+                .map(o -> UserCouponCopier.INSTANCE.copying(o, o.getCouponDTO()))
+                .collect(Collectors.toList());
+    }
+
+    /**
+     * 获取优惠券领取记录信息
+     *
+     * @param id 优惠券领取记录主键
+     * @return 优惠券领取记录信息
+     */
+    @GetMapping("/usercoupon/{id}")
+    public UserCouponVO getUserCoupon(@PathVariable("id") @Min(value = 1, message = "优惠券领取记录主键不能小于1") Long id) {
+        UserCouponVO couponGain = this.convert(this.userCouponService.getUserCoupon(id));
+        return couponGain;
+    }
+
+    /**
+     * 查询优惠券领取记录分页
+     *
+     * @param param 查询参数
+     * @return 优惠券领取记录分页信息
+     */
+    @GetMapping("/usercoupon/paging")
+    public Pagination<UserCouponVO> getUserCouponPaging(@Valid UserCouponPagingParam param) {
+        Pagination<UserCouponDTO> pagination = this.userCouponService.getUserCouponPaging(param);
+        List<UserCouponDTO> records = pagination.getRecords();
+        if (CollectionUtils.isEmpty(records)) {
+            return Pagination.empty();
+        }
+
+        // 构建优惠券领取记录信息
+        List<UserCouponVO> couponGains = records.stream().map(this::convert).collect(Collectors.toList());
+        return pagination.convert(couponGains);
+    }
+
+    /**
+     * 转换优惠券领取记录
+     *
+     * @param userCoupon 优惠券领取记录DTO
+     * @return 优惠券领取记录VO
+     */
+    private UserCouponVO convert(UserCouponDTO userCoupon) {
+        return UserCouponCopier.INSTANCE.copying(userCoupon);
+    }
+}

+ 45 - 0
src/main/java/com/chelvc/cloud/maintain/copier/CouponCopier.java

@@ -0,0 +1,45 @@
+package com.chelvc.cloud.maintain.copier;
+
+import com.chelvc.cloud.maintain.vo.CouponVO;
+import com.chelvc.cloud.vehicle.api.dto.CouponDTO;
+import org.mapstruct.Builder;
+import org.mapstruct.IterableMapping;
+import org.mapstruct.Mapper;
+import org.mapstruct.Named;
+import org.mapstruct.factory.Mappers;
+
+import java.util.Collection;
+import java.util.List;
+
+
+/**
+ * 优惠券对象拷贝接口
+ *
+ * @author qizai
+ * @Date 2023/9/8
+ **/
+@Mapper(builder = @Builder(disableBuilder = true))
+public interface CouponCopier {
+    /**
+     * 对象拷贝接口实例
+     */
+    CouponCopier INSTANCE = Mappers.getMapper(CouponCopier.class);
+
+    /**
+     * 优惠券拷贝
+     *
+     * @param coupon 优惠券DTO
+     * @return 优惠券VO
+     */
+    @Named("dto2vo")
+    CouponVO copying(CouponDTO coupon);
+
+    /**
+     * 优惠券拷贝
+     *
+     * @param coupons 优惠券集合
+     * @return 优惠券列表
+     */
+    @IterableMapping(qualifiedByName = "dto2vo")
+    List<CouponVO> copying(Collection<CouponDTO> coupons);
+}

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

@@ -0,0 +1,40 @@
+package com.chelvc.cloud.maintain.copier;
+
+import com.chelvc.cloud.maintain.vo.FavoriteVO;
+import com.chelvc.cloud.vehicle.api.dto.FavoriteDTO;
+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 FavoriteCopier {
+    /**
+     * 对象拷贝接口实例
+     */
+    FavoriteCopier INSTANCE = Mappers.getMapper(FavoriteCopier.class);
+
+    /**
+     * 收藏记录拷贝
+     *
+     * @param favorite 收藏记录DTO
+     * @return 收藏记录VO
+     */
+    FavoriteVO copying(FavoriteDTO favorite);
+
+    /**
+     * 收藏记录拷贝
+     *
+     * @param favorites 收藏记录集合
+     * @return 收藏记录列表
+     */
+    List<FavoriteVO> copying(Collection<FavoriteDTO> favorites);
+}

+ 9 - 0
src/main/java/com/chelvc/cloud/maintain/copier/MerchantCopier.java

@@ -4,6 +4,7 @@ import java.util.Collection;
 import java.util.List;
 
 import com.chelvc.cloud.maintain.vo.MerchantDetailVO;
+import com.chelvc.cloud.maintain.vo.MerchantVO;
 import com.chelvc.cloud.maintain.vo.SimpleMerchantVO;
 import com.chelvc.cloud.vehicle.api.dto.MerchantDTO;
 import com.chelvc.cloud.vehicle.api.dto.MerchantDetailDTO;
@@ -32,6 +33,14 @@ public interface MerchantCopier {
      */
     MerchantDetailVO copying(MerchantDetailDTO detail);
 
+    /**
+     * 商家信息拷贝
+     *
+     * @param merchant 商家信息DTO
+     * @return 简单商家信息VO
+     */
+    SimpleMerchantVO merchantDTOToSimpleMerchantVO(MerchantDTO merchant);
+
     /**
      * 商家信息拷贝
      *

+ 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);
+}

+ 44 - 0
src/main/java/com/chelvc/cloud/maintain/copier/UserCopier.java

@@ -0,0 +1,44 @@
+package com.chelvc.cloud.maintain.copier;
+
+import com.chelvc.cloud.maintain.vo.UserVO;
+import com.chelvc.cloud.uc.api.dto.UserDTO;
+import org.mapstruct.Builder;
+import org.mapstruct.IterableMapping;
+import org.mapstruct.Mapper;
+import org.mapstruct.Named;
+import org.mapstruct.factory.Mappers;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 用户对象拷贝接口
+ *
+ * @author qizai
+ * @Date 2023/9/8
+ **/
+@Mapper(builder = @Builder(disableBuilder = true))
+public interface UserCopier {
+    /**
+     * 对象拷贝接口实例
+     */
+    UserCopier INSTANCE = Mappers.getMapper(UserCopier.class);
+
+    /**
+     * 用户信息拷贝
+     *
+     * @param user 用户信息
+     * @return 用户信息
+     */
+    @Named("dto2vo")
+    UserVO copying(UserDTO user);
+
+    /**
+     * 用户信息拷贝
+     *
+     * @param users 用户信息集合
+     * @return 用户信息列表
+     */
+    @IterableMapping(qualifiedByName = "dto2vo")
+    List<UserVO> copying(Collection<UserDTO> users);
+}

+ 47 - 0
src/main/java/com/chelvc/cloud/maintain/copier/UserCouponCopier.java

@@ -0,0 +1,47 @@
+package com.chelvc.cloud.maintain.copier;
+
+import com.chelvc.cloud.maintain.vo.UserCouponVO;
+import com.chelvc.cloud.vehicle.api.dto.CouponDTO;
+import com.chelvc.cloud.vehicle.api.dto.UserCouponDTO;
+import org.mapstruct.Builder;
+import org.mapstruct.Mapper;
+import org.mapstruct.Mapping;
+import org.mapstruct.factory.Mappers;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 优惠券领取记录对象拷贝接口
+ *
+ * @author qizai
+ * @Date 2023/9/8
+ **/
+@Mapper(builder = @Builder(disableBuilder = true))
+public interface UserCouponCopier {
+    /**
+     * 对象拷贝接口实例
+     */
+    UserCouponCopier INSTANCE = Mappers.getMapper(UserCouponCopier.class);
+
+    /**
+     * 优惠券领取记录拷贝
+     *
+     * @param userCoupon 优惠券领取记录DTO
+     * @return 优惠券领取记录VO
+     */
+    UserCouponVO copying(UserCouponDTO userCoupon);
+
+    /**
+     * 优惠券领取记录拷贝
+     *
+     * @param userCoupons 优惠券领取记录集合
+     * @return 优惠券领取记录列表
+     */
+    List<UserCouponVO> copying(Collection<UserCouponDTO> userCoupons);
+
+    @Mapping(source = "userCoupon.id", target = "id")
+    @Mapping(source = "userCoupon.type", target = "type")
+    @Mapping(source = "coupon", target = "couponVO")
+    UserCouponVO copying(UserCouponDTO userCoupon, CouponDTO coupon);
+}

+ 10 - 0
src/main/java/com/chelvc/cloud/maintain/vo/CouponVO.java

@@ -27,6 +27,11 @@ public class CouponVO implements Serializable {
      */
     private Long id;
 
+    /**
+     * 商家ID
+     */
+    private Long merchantId;
+
     /**
      * 优惠券类型
      */
@@ -57,4 +62,9 @@ public class CouponVO implements Serializable {
      * 过期时间
      */
     private Date expiration;
+
+    /**
+     * 优惠券描述
+     */
+    private String description;
 }

+ 51 - 0
src/main/java/com/chelvc/cloud/maintain/vo/FavoriteVO.java

@@ -0,0 +1,51 @@
+package com.chelvc.cloud.maintain.vo;
+import com.chelvc.cloud.vehicle.api.constant.FavoriteType;
+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/4
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class FavoriteVO implements Serializable {
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 用户ID
+     */
+    private Long userId;
+
+    /**
+     * 收藏类型
+     */
+    private FavoriteType type;
+
+    /**
+     * 收藏内容ID
+     */
+    private Long contentId;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 简单商家信息
+     */
+    private SimpleMerchantVO simpleMerchantVO;
+}

+ 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;
+}

+ 47 - 0
src/main/java/com/chelvc/cloud/maintain/vo/UserCouponVO.java

@@ -0,0 +1,47 @@
+package com.chelvc.cloud.maintain.vo;
+
+import com.chelvc.cloud.vehicle.api.constant.CouponType;
+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/8
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class UserCouponVO implements Serializable {
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 用户id
+     */
+    private Long userId;
+
+    /**
+     * 优惠券id
+     */
+    private Long couponId;
+
+    /**
+     * 优惠券类型
+     */
+    private CouponType type;
+
+    /**
+     * 优惠券
+     */
+    private CouponVO couponVO;
+}

+ 26 - 0
src/main/java/com/chelvc/cloud/maintain/vo/UserVO.java

@@ -1,6 +1,7 @@
 package com.chelvc.cloud.maintain.vo;
 
 import java.io.Serializable;
+import java.util.Date;
 
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -23,6 +24,11 @@ public class UserVO implements Serializable {
      */
     private Long id;
 
+    /**
+     * 用户名
+     */
+    private String username;
+
     /**
      * 用户头像
      */
@@ -32,4 +38,24 @@ public class UserVO implements Serializable {
      * 用户昵称
      */
     private String nickname;
+
+    /**
+     * 性别
+     */
+    private String gender;
+
+    /**
+     * 常用地
+     */
+    private String useCity;
+
+    /**
+     * 个人介绍
+     */
+    private String introduction;
+
+    /**
+     * 生日
+     */
+    private Date birthday;
 }

+ 29 - 0
src/main/resources/application-qizai.yml

@@ -0,0 +1,29 @@
+spring:
+  cloud:
+    nacos:
+      discovery:
+        server-addr: 47.108.128.78:6848
+  redis:
+    host: 47.108.128.78
+    port: 7031
+    password: Chelvc@2023
+
+dubbo:
+  registry:
+    address: nacos://47.108.128.78:6848
+
+nacos:
+  config:
+    server-addr: 47.108.128.78:6848
+
+platform:
+  oauth:
+    token:
+      secret: oauth.token.secret@chelvc!@#2023
+  upload:
+    standard:
+      path: /home/chelvc/upload
+      domain: http://file.chelvc.com
+  location:
+    tencent:
+      key: VPKBZ-CR3CG-R23QE-QK2IY-LNXKZ-GCB34

+ 1 - 1
src/main/resources/application.yml

@@ -5,7 +5,7 @@ spring:
   main:
     allow-bean-definition-overriding: true
   profiles:
-    active: dev
+    active: qizai
   application:
     name: maintain
   jackson: