Browse Source

Merge branch 'forever'

# Conflicts:
#	vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/MerchantService.java
#	vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/copier/MerchantCopier.java
#	vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/GoodsServiceImpl.java
#	vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/MerchantServiceImpl.java
liude 1 year ago
parent
commit
6ba88b132a

+ 45 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/dto/FavoriteDTO.java

@@ -0,0 +1,45 @@
+package com.chelvc.cloud.vehicle.api.dto;
+import com.chelvc.cloud.vehicle.api.constant.FavoriteType;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.util.Date;
+
+/**
+ * 用户收藏数据模型
+ *
+ * @author liude
+ * @date 2023/7/19
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class FavoriteDTO{
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 用户ID
+     */
+    private Long userId;
+
+    /**
+     * 收藏类型
+     */
+    private FavoriteType type;
+
+    /**
+     * 收藏内容ID
+     */
+    private Long contentId;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+}

+ 41 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/FavoriteModifyParam.java

@@ -0,0 +1,41 @@
+package com.chelvc.cloud.vehicle.api.param;
+import com.chelvc.cloud.vehicle.api.constant.FavoriteType;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+
+import java.util.Date;
+
+/**
+ * 用户收藏数据模型
+ *
+ * @author liude
+ * @date 2023/7/19
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+public class FavoriteModifyParam {
+
+    /**
+     * 用户ID
+     */
+    private Long userId;
+
+    /**
+     * 收藏类型
+     */
+    private FavoriteType type;
+
+    /**
+     * 收藏内容ID
+     */
+    private Long contentId;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+}

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

+ 31 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/FavoriteService.java

@@ -0,0 +1,31 @@
+package com.chelvc.cloud.vehicle.api.service;
+import com.chelvc.cloud.vehicle.api.dto.FavoriteDTO;
+import com.chelvc.cloud.vehicle.api.param.FavoriteModifyParam;
+
+/**
+ * 商品收藏接口
+ *
+ * @author liude
+ * @date 2023/7/18
+ */
+public interface FavoriteService {
+    /**
+     * 收藏
+     * @param param 收藏信息
+     */
+    Long addFavorite(FavoriteModifyParam param);
+    /**
+     * 取消收藏
+     * @param id
+     */
+    void deleteFavorite(Long id);
+
+    /**
+     * 查询是否收藏
+     * @param id
+     * @return
+     */
+    FavoriteDTO getFavorite(Long id);
+
+
+}

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

+ 62 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/copier/FavoriteCopier.java

@@ -0,0 +1,62 @@
+package com.chelvc.cloud.vehicle.server.copier;
+
+import com.chelvc.cloud.vehicle.api.constant.FavoriteType;
+import com.chelvc.cloud.vehicle.api.dto.CategoryDTO;
+import com.chelvc.cloud.vehicle.api.dto.FavoriteDTO;
+import com.chelvc.cloud.vehicle.api.param.CategoryModifyParam;
+import com.chelvc.cloud.vehicle.api.param.FavoriteModifyParam;
+import com.chelvc.cloud.vehicle.server.entity.Category;
+import com.chelvc.cloud.vehicle.server.entity.Favorite;
+import org.mapstruct.*;
+import org.mapstruct.factory.Mappers;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * 收藏信息拷贝接口
+ *
+ * @author Woody
+ * @date 2023/5/2
+ */
+@Mapper(builder = @Builder(disableBuilder = true))
+public interface FavoriteCopier {
+    /**
+     * 对象拷贝接口实例
+     */
+    FavoriteCopier INSTANCE = Mappers.getMapper(FavoriteCopier.class);
+
+    /**
+     * 收藏信息拷贝
+     *
+     * @param favorite 收藏信息
+     * @return 收藏信息
+     */
+    @Named("entity2dto")
+    FavoriteDTO copying(Favorite favorite);
+
+    /**
+     * 收藏信息拷贝
+     *
+     * @param favorites 收藏信息集合
+     * @return 收藏信息列表
+     */
+    @IterableMapping(qualifiedByName = "entity2dto")
+    List<FavoriteDTO> copying(Collection<Favorite> favorites);
+
+    /**
+     * 收藏信息拷贝
+     *
+     * @param param 收藏更新参数
+     * @return 收藏信息
+     */
+    Favorite copying(FavoriteModifyParam param);
+
+    /**
+     * 收藏信息拷贝
+     *
+     * @param param    收藏更新参数
+     * @param favorite 收藏信息
+     */
+    void copying(FavoriteModifyParam param, @MappingTarget Favorite favorite);
+}

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

+ 32 - 3
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/FavoriteServiceImpl.java

@@ -1,17 +1,46 @@
 package com.chelvc.cloud.vehicle.server.service.impl;
 package com.chelvc.cloud.vehicle.server.service.impl;
 
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.chelvc.cloud.vehicle.api.dto.FavoriteDTO;
+import com.chelvc.cloud.vehicle.api.param.CategoryModifyParam;
+import com.chelvc.cloud.vehicle.api.param.FavoriteModifyParam;
+import com.chelvc.cloud.vehicle.server.copier.CategoryCopier;
+import com.chelvc.cloud.vehicle.server.copier.FavoriteCopier;
 import com.chelvc.cloud.vehicle.server.dao.FavoriteMapper;
 import com.chelvc.cloud.vehicle.server.dao.FavoriteMapper;
+import com.chelvc.cloud.vehicle.server.dao.MerchantMapper;
+import com.chelvc.cloud.vehicle.server.entity.Category;
 import com.chelvc.cloud.vehicle.server.entity.Favorite;
 import com.chelvc.cloud.vehicle.server.entity.Favorite;
+import com.chelvc.cloud.vehicle.server.entity.Merchant;
 import com.chelvc.cloud.vehicle.server.service.FavoriteService;
 import com.chelvc.cloud.vehicle.server.service.FavoriteService;
+import com.chelvc.cloud.vehicle.server.service.MerchantService;
+import com.chelvc.framework.database.context.DatabaseContextHolder;
+import lombok.NonNull;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
 /**
 /**
  * 用户收藏业务操作实现
  * 用户收藏业务操作实现
  *
  *
- * @author Woody
- * @date 2023/7/17
+ * @author liude
+ * @date 2023/7/20
  */
  */
 @Service
 @Service
-public class FavoriteServiceImpl extends ServiceImpl<FavoriteMapper, Favorite> implements FavoriteService {
+public class FavoriteServiceImpl extends ServiceImpl<FavoriteMapper, Favorite> implements FavoriteService,
+        com.chelvc.cloud.vehicle.api.service.FavoriteService {
+
+    @Override
+    public Long addFavorite(@NonNull FavoriteModifyParam param){
+        Favorite favorite = FavoriteCopier.INSTANCE.copying(param);
+        this.save(favorite);
+        return  favorite.getId();
+    }
+    @Override
+    public void deleteFavorite(@NonNull Long id) {
+        Favorite favorite = DatabaseContextHolder.getRequireEntity(this, id, "收藏不存在");
+        this.deleteFavorite(id);
+    }
+    @Override
+    public FavoriteDTO getFavorite(@NonNull Long id){
+        Favorite favorite = this.getById(id);
+        return FavoriteCopier.INSTANCE.copying(favorite);
+    }
 }
 }

+ 22 - 8
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/GoodsServiceImpl.java

@@ -1,24 +1,38 @@
 package com.chelvc.cloud.vehicle.server.service.impl;
 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.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.dao.GoodsMapper;
 import com.chelvc.cloud.vehicle.server.entity.Goods;
 import com.chelvc.cloud.vehicle.server.entity.Goods;
 import com.chelvc.cloud.vehicle.server.service.GoodsService;
 import com.chelvc.cloud.vehicle.server.service.GoodsService;
+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 lombok.NonNull;
-import org.springframework.stereotype.Service;
+import org.apache.dubbo.config.annotation.DubboService;
 
 
 /**
 /**
  * 商品业务操作实现
  * 商品业务操作实现
  *
  *
- * @author Woody
+ * @author liude
  * @date 2023/7/17
  * @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
     @Override
-    public List<Long> listMerchantGoodsCategoryIdentities(@NonNull Long merchantId) {
-        return this.baseMapper.listMerchantGoodsCategoryIdentities(merchantId);
+    public GoodsDTO getGoods(@NonNull Long id){
+        return GoodsCopier.INSTANCE.copying(this.getById(id));
     }
     }
 }
 }