Răsfoiți Sursa

新增商家查询接口;新增获取商家详情接口;

woody 1 an în urmă
părinte
comite
32ada4d463

+ 53 - 0
src/main/java/com/chelvc/cloud/maintain/controller/MerchantController.java

@@ -0,0 +1,53 @@
+package com.chelvc.cloud.maintain.controller;
+
+import java.util.List;
+import javax.validation.Valid;
+import javax.validation.constraints.Min;
+
+import com.chelvc.cloud.maintain.copier.MerchantCopier;
+import com.chelvc.cloud.maintain.vo.MerchantDetailVO;
+import com.chelvc.cloud.maintain.vo.SimpleMerchantVO;
+import com.chelvc.cloud.vehicle.api.param.MerchantQueryParam;
+import com.chelvc.cloud.vehicle.api.service.MerchantService;
+import com.chelvc.framework.base.annotation.UnifiedResponseBody;
+import org.apache.dubbo.config.annotation.DubboReference;
+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.RestController;
+
+/**
+ * 商家接口
+ *
+ * @author Woody
+ * @date 2023/7/20
+ */
+@Validated
+@RestController
+@UnifiedResponseBody
+public class MerchantController {
+    @DubboReference
+    private MerchantService merchantService;
+
+    /**
+     * 获取商家列表
+     *
+     * @param param 查询参数
+     * @return 商家信息列表
+     */
+    @GetMapping("/merchants")
+    public List<SimpleMerchantVO> listSimpleMerchants(@Valid MerchantQueryParam param) {
+        return MerchantCopier.INSTANCE.copying(this.merchantService.listSimpleMerchants(param));
+    }
+
+    /**
+     * 获取商家详情
+     *
+     * @param id 商家ID
+     * @return 商家详情
+     */
+    @GetMapping("/merchant/{id}")
+    public MerchantDetailVO getMerchantDetail(@PathVariable("id") @Min(value = 1, message = "商家ID不能小于1") Long id) {
+        return MerchantCopier.INSTANCE.copying(this.merchantService.getMerchantDetail(id));
+    }
+}

+ 12 - 2
src/main/java/com/chelvc/cloud/maintain/copier/MerchantCopier.java

@@ -3,8 +3,10 @@ package com.chelvc.cloud.maintain.copier;
 import java.util.Collection;
 import java.util.List;
 
-import com.chelvc.cloud.maintain.vo.MerchantVO;
+import com.chelvc.cloud.maintain.vo.MerchantDetailVO;
+import com.chelvc.cloud.maintain.vo.SimpleMerchantVO;
 import com.chelvc.cloud.vehicle.api.dto.MerchantDTO;
+import com.chelvc.cloud.vehicle.api.dto.MerchantDetailDTO;
 import org.mapstruct.Builder;
 import org.mapstruct.Mapper;
 import org.mapstruct.factory.Mappers;
@@ -22,11 +24,19 @@ public interface MerchantCopier {
      */
     MerchantCopier INSTANCE = Mappers.getMapper(MerchantCopier.class);
 
+    /**
+     * 商家信息拷贝
+     *
+     * @param detail 商家详情
+     * @return 商家详情
+     */
+    MerchantDetailVO copying(MerchantDetailDTO detail);
+
     /**
      * 商家信息拷贝
      *
      * @param merchants 商家信息集合
      * @return 商家信息列表
      */
-    List<MerchantVO> copying(Collection<MerchantDTO> merchants);
+    List<SimpleMerchantVO> copying(Collection<MerchantDTO> merchants);
 }

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

@@ -27,10 +27,10 @@ public class CustomerIndexVO implements Serializable {
     /**
      * 推荐商家列表
      */
-    private List<MerchantVO> recommends;
+    private List<SimpleMerchantVO> recommends;
 
     /**
      * 附件商家列表
      */
-    private List<MerchantVO> nears;
+    private List<SimpleMerchantVO> nears;
 }

+ 36 - 0
src/main/java/com/chelvc/cloud/maintain/vo/MerchantDetailVO.java

@@ -0,0 +1,36 @@
+package com.chelvc.cloud.maintain.vo;
+
+import java.io.Serializable;
+import java.util.List;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 商家详情
+ *
+ * @author Woody
+ * @date 2023/7/20
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MerchantDetailVO implements Serializable {
+    /**
+     * 商家信息
+     */
+    private MerchantVO merchant;
+
+    /**
+     * 分类列表
+     */
+    private List<CategoryVO> categories;
+
+    /**
+     * 商品信息
+     */
+    private MerchantGoodsVO goods;
+}

+ 31 - 0
src/main/java/com/chelvc/cloud/maintain/vo/MerchantGoodsVO.java

@@ -0,0 +1,31 @@
+package com.chelvc.cloud.maintain.vo;
+
+import java.io.Serializable;
+import java.util.List;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 商家商品信息
+ *
+ * @author Woody
+ * @date 2023/7/20
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MerchantGoodsVO implements Serializable {
+    /**
+     * 商品总数
+     */
+    private Integer total;
+
+    /**
+     * 商品列表
+     */
+    private List<SimpleGoodsVO> goods;
+}

+ 14 - 2
src/main/java/com/chelvc/cloud/maintain/vo/MerchantVO.java

@@ -1,7 +1,9 @@
 package com.chelvc.cloud.maintain.vo;
 
 import java.io.Serializable;
+import java.util.List;
 
+import com.chelvc.framework.base.model.File;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
@@ -29,9 +31,14 @@ public class MerchantVO implements Serializable {
     private String name;
 
     /**
-     * Logo
+     * 联系电话
      */
-    private String logo;
+    private String mobile;
+
+    /**
+     * 营业时间
+     */
+    private String opening;
 
     /**
      * 详细地址
@@ -52,4 +59,9 @@ public class MerchantVO implements Serializable {
      * 距离(米)
      */
     private Integer distance;
+
+    /**
+     * 轮播图列表
+     */
+    private List<File> banners;
 }

+ 55 - 0
src/main/java/com/chelvc/cloud/maintain/vo/SimpleGoodsVO.java

@@ -0,0 +1,55 @@
+package com.chelvc.cloud.maintain.vo;
+
+import java.io.Serializable;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 简单商品信息
+ *
+ * @author Woody
+ * @date 2023/7/20
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SimpleGoodsVO implements Serializable {
+    /**
+     * 商品ID
+     */
+    private Long id;
+
+    /**
+     * 商品名称
+     */
+    private String name;
+
+    /**
+     * 商品Logo
+     */
+    private String logo;
+
+    /**
+     * 商品原价
+     */
+    private Double originalPrice;
+
+    /**
+     * 优惠价格
+     */
+    private Double specialPrice;
+
+    /**
+     * 商品评分
+     */
+    private Double score;
+
+    /**
+     * 订单销量
+     */
+    private Integer sale;
+}

+ 55 - 0
src/main/java/com/chelvc/cloud/maintain/vo/SimpleMerchantVO.java

@@ -0,0 +1,55 @@
+package com.chelvc.cloud.maintain.vo;
+
+import java.io.Serializable;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+/**
+ * 简单商家信息
+ *
+ * @author Woody
+ * @date 2023/5/5
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class SimpleMerchantVO implements Serializable {
+    /**
+     * 商家ID
+     */
+    private Long id;
+
+    /**
+     * 商家名称
+     */
+    private String name;
+
+    /**
+     * 商家Logo
+     */
+    private String logo;
+
+    /**
+     * 详细地址
+     */
+    private String address;
+
+    /**
+     * 商家评分
+     */
+    private Double score;
+
+    /**
+     * 订单销量
+     */
+    private Integer sale;
+
+    /**
+     * 距离(米)
+     */
+    private Integer distance;
+}