Kaynağa Gözat

商家及商品查询

liude 1 yıl önce
ebeveyn
işleme
3e6d251dff

+ 42 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/GoodsPagingParam.java

@@ -0,0 +1,42 @@
+package com.chelvc.cloud.vehicle.api.param;
+
+import com.chelvc.cloud.vehicle.api.constant.GoodsStatus;
+import com.chelvc.framework.base.model.File;
+import com.chelvc.framework.base.model.Paging;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 商品信息
+ *
+ * @author liude
+ * @date 2023/7/17
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class GoodsPagingParam implements Serializable {
+    /**
+     * 分页信息
+     */
+    @NotNull(message = "分页不能为空")
+    private Paging paging;
+
+    /**
+     * 商品名称
+     */
+    private String name;
+    /**
+     * 商品状态
+     */
+    private GoodsStatus status;
+
+}

+ 77 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/MerchantPagingParam.java

@@ -0,0 +1,77 @@
+package com.chelvc.cloud.vehicle.api.param;
+
+import com.chelvc.cloud.vehicle.api.constant.MerchantStatus;
+import com.chelvc.framework.base.model.File;
+import com.chelvc.framework.base.model.Paging;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 商家信息
+ *
+ * @author Woody
+ * @date 2023/5/4
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class MerchantPagingParam implements Serializable {
+    /**
+     * 分页信息
+     */
+    @NotNull(message = "分页不能为空")
+    private Paging paging;
+
+    /**
+     * 商家名称
+     */
+    private String name;
+
+    /**
+     * 详细地址
+     */
+    private String address;
+
+    /**
+     * 商家评分
+     */
+    private Double score;
+
+    /**
+     * 订单销量
+     */
+    private Integer sale;
+
+    /**
+     * 距离(米)
+     */
+    private Integer distance;
+
+    /**
+     * 经度
+     */
+    private Double longitude;
+
+    /**
+     * 纬度
+     */
+    private Double latitude;
+
+    /**
+     * 是否推荐
+     */
+    private Boolean recommend;
+
+    /**
+     * 商家状态
+     */
+    private MerchantStatus status;
+}

+ 29 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/GoodsService.java

@@ -0,0 +1,29 @@
+package com.chelvc.cloud.vehicle.api.service;
+
+import com.chelvc.cloud.vehicle.api.dto.GoodsDTO;
+import com.chelvc.cloud.vehicle.api.param.GoodsPagingParam;
+import com.chelvc.cloud.vehicle.api.param.MerchantPagingParam;
+import com.chelvc.framework.base.model.Pagination;
+/**
+ * 商家业务接口
+ *
+ * @author liude
+ * @date 2023/7/18
+ */
+public interface GoodsService {
+    /**
+     * 查询服务
+     *
+     * @param param 查询参数
+     * @return 服务分页信息
+     */
+    Pagination<GoodsDTO> getGoodsPaging(GoodsPagingParam param);
+
+    /**
+     * 查询服务详情
+     * @param id
+     * @return
+     */
+    GoodsDTO getGoods(Long id);
+
+}

+ 18 - 2
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/MerchantService.java

@@ -1,10 +1,10 @@
 package com.chelvc.cloud.vehicle.api.service;
-
 import java.util.List;
-
 import com.chelvc.cloud.vehicle.api.dto.MerchantDTO;
+import com.chelvc.cloud.vehicle.api.param.MerchantPagingParam;
 import com.chelvc.cloud.vehicle.api.param.NearbyQueryParam;
 import com.chelvc.cloud.vehicle.api.param.PointQueryParam;
+import com.chelvc.framework.base.model.Pagination;
 
 /**
  * 商家业务接口
@@ -30,4 +30,20 @@ public interface MerchantService {
      * @return 商家信息列表
      */
     List<MerchantDTO> listNearbyMerchants(NearbyQueryParam param, int size);
+
+    /**
+     * 查询商家
+     *
+     * @param param 查询参数
+     * @return 商家分页信息
+     */
+    Pagination<MerchantDTO> getMerchantPaging(MerchantPagingParam param);
+
+    /**
+     * 查询商家详情
+     * @param id
+     * @return
+     */
+    MerchantDTO getMerchant(Long id);
+
 }

+ 45 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/copier/GoodsCopier.java

@@ -0,0 +1,45 @@
+package com.chelvc.cloud.vehicle.server.copier;
+
+import com.chelvc.cloud.vehicle.api.dto.GoodsDTO;
+import com.chelvc.cloud.vehicle.server.entity.Goods;
+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 liude
+ * @date 2023/7/22
+ */
+@Mapper(builder = @Builder(disableBuilder = true))
+public interface GoodsCopier {
+    /**
+     * 对象拷贝接口实例
+     */
+    GoodsCopier INSTANCE = Mappers.getMapper(GoodsCopier.class);
+
+    /**
+     * 服务信息拷贝
+     *
+     * @param goods 服务信息
+     * @return 商家信息
+     */
+    @Named("entity2dto")
+    GoodsDTO copying(Goods goods);
+
+    /**
+     * 服务信息拷贝
+     *
+     * @param goods 服务信息集合
+     * @return 服务信息列表
+     */
+    @IterableMapping(qualifiedByName = "entity2dto")
+    List<GoodsDTO> copying(Collection<Goods> goods);
+
+}

+ 41 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/copier/MerchantCopier.java

@@ -0,0 +1,41 @@
+package com.chelvc.cloud.vehicle.server.copier;
+import com.chelvc.cloud.vehicle.api.dto.MerchantDTO;
+import com.chelvc.cloud.vehicle.server.entity.Merchant;
+import org.mapstruct.*;
+import org.mapstruct.factory.Mappers;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 商家信息拷贝接口
+ *
+ * @author liude
+ * @date 2023/7/22
+ */
+@Mapper(builder = @Builder(disableBuilder = true))
+public interface MerchantCopier {
+    /**
+     * 对象拷贝接口实例
+     */
+    MerchantCopier INSTANCE = Mappers.getMapper(MerchantCopier.class);
+
+    /**
+     * 商家信息拷贝
+     *
+     * @param merchant 商家信息
+     * @return 商家信息
+     */
+    @Named("entity2dto")
+    MerchantDTO copying(Merchant merchant);
+
+    /**
+     * 商家信息拷贝
+     *
+     * @param merchants 商家信息集合
+     * @return 商家信息列表
+     */
+    @IterableMapping(qualifiedByName = "entity2dto")
+    List<MerchantDTO> copying(Collection<Merchant> merchants);
+
+}

+ 25 - 4
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/GoodsServiceImpl.java

@@ -1,17 +1,38 @@
 package com.chelvc.cloud.vehicle.server.service.impl;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.chelvc.cloud.vehicle.api.dto.GoodsDTO;
+import com.chelvc.cloud.vehicle.api.param.GoodsPagingParam;
+import com.chelvc.cloud.vehicle.server.copier.GoodsCopier;
 import com.chelvc.cloud.vehicle.server.dao.GoodsMapper;
 import com.chelvc.cloud.vehicle.server.entity.Goods;
 import com.chelvc.cloud.vehicle.server.service.GoodsService;
-import org.springframework.stereotype.Service;
+import com.chelvc.framework.base.model.Pagination;
+import com.chelvc.framework.base.util.StringUtils;
+import com.chelvc.framework.database.util.PagingUtils;
+import lombok.NonNull;
+import org.apache.dubbo.config.annotation.DubboService;
 
 /**
  * 商品业务操作实现
  *
- * @author Woody
+ * @author liude
  * @date 2023/7/17
  */
-@Service
-public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements GoodsService {
+@DubboService(interfaceClass = com.chelvc.cloud.vehicle.api.service.GoodsService.class)
+public class GoodsServiceImpl extends ServiceImpl<GoodsMapper, Goods> implements GoodsService,
+        com.chelvc.cloud.vehicle.api.service.GoodsService {
+
+    @Override
+    public Pagination<GoodsDTO> getGoodsPaging(@NonNull GoodsPagingParam param) {
+        Page<Goods> page = this.lambdaQuery()
+                .like(StringUtils.nonEmpty(param.getName()), Goods::getName, param.getName())
+                .orderByAsc(Goods::getStatus).page(PagingUtils.convert(param.getPaging()));
+        return PagingUtils.convert(page, GoodsCopier.INSTANCE::copying);
+    }
+    @Override
+    public GoodsDTO getGoods(@NonNull Long id){
+        return GoodsCopier.INSTANCE.copying(this.getById(id));
+    }
 }

+ 20 - 4
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/MerchantServiceImpl.java

@@ -1,22 +1,26 @@
 package com.chelvc.cloud.vehicle.server.service.impl;
-
 import java.util.List;
-
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.chelvc.cloud.vehicle.api.dto.MerchantDTO;
+import com.chelvc.cloud.vehicle.api.param.MerchantPagingParam;
 import com.chelvc.cloud.vehicle.api.param.NearbyQueryParam;
 import com.chelvc.cloud.vehicle.api.param.PointQueryParam;
+import com.chelvc.cloud.vehicle.server.copier.MerchantCopier;
 import com.chelvc.cloud.vehicle.server.dao.MerchantMapper;
 import com.chelvc.cloud.vehicle.server.entity.Merchant;
 import com.chelvc.cloud.vehicle.server.service.MerchantService;
+import com.chelvc.framework.base.model.Pagination;
+import com.chelvc.framework.base.util.StringUtils;
+import com.chelvc.framework.database.util.PagingUtils;
 import lombok.NonNull;
 import org.apache.dubbo.config.annotation.DubboService;
 
 /**
  * 商家业务操作实现
  *
- * @author Woody
- * @date 2023/5/2
+ * @author liude
+ * @date 2023/7/22
  */
 @DubboService(interfaceClass = com.chelvc.cloud.vehicle.api.service.MerchantService.class)
 public class MerchantServiceImpl extends ServiceImpl<MerchantMapper, Merchant> implements MerchantService,
@@ -30,4 +34,16 @@ public class MerchantServiceImpl extends ServiceImpl<MerchantMapper, Merchant> i
     public List<MerchantDTO> listNearbyMerchants(@NonNull NearbyQueryParam param, int size) {
         return this.baseMapper.listNearbyMerchants(param, size);
     }
+
+    @Override
+    public Pagination<MerchantDTO> getMerchantPaging(@NonNull MerchantPagingParam param) {
+        Page<Merchant> page = this.lambdaQuery()
+                .like(StringUtils.nonEmpty(param.getName()), Merchant::getName, param.getName())
+                .orderByAsc(Merchant::getRecommend).page(PagingUtils.convert(param.getPaging()));
+        return PagingUtils.convert(page, MerchantCopier.INSTANCE::copying);
+    }
+    @Override
+    public MerchantDTO getMerchant(@NonNull Long id){
+        return MerchantCopier.INSTANCE.copying(this.getById(id));
+    }
 }