Bläddra i källkod

收藏店铺、取消收藏、查询收藏列表功能开发

qizai 1 år sedan
förälder
incheckning
b2892a4cf5

+ 39 - 0
src/main/java/com/chelvc/cloud/maintain/controller/FavoriteController.java

@@ -3,19 +3,32 @@ 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;
 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 java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * 收藏接口
  *
@@ -43,6 +56,32 @@ public class FavoriteController {
      * 查询用户收藏列表
      *
      * @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")

+ 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);
+
     /**
      * 商家信息拷贝
      *

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

@@ -1,14 +1,11 @@
 package com.chelvc.cloud.maintain.copier;
 
-import com.chelvc.cloud.maintain.vo.CouponVO;
 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.IterableMapping;
 import org.mapstruct.Mapper;
 import org.mapstruct.Mapping;
-import org.mapstruct.Named;
 import org.mapstruct.factory.Mappers;
 
 import java.util.Collection;