Browse Source

Merge branch 'master' of http://gogs.chelvc.com/wuyongqiang/vehicle

woody 1 năm trước cách đây
mục cha
commit
ea37490acb

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

+ 97 - 0
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/param/MerchantModifyParam.java

@@ -0,0 +1,97 @@
+package com.chelvc.cloud.vehicle.api.param;
+
+import com.chelvc.cloud.vehicle.api.constant.MerchantStatus;
+import com.chelvc.framework.base.model.File;
+import lombok.*;
+import lombok.experimental.SuperBuilder;
+
+import java.util.List;
+
+/**
+ * 商家数据模型
+ *
+ * @author xp
+ * @data 2023/4/10
+ */
+@Data
+@SuperBuilder
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString(callSuper = true)
+public class MerchantModifyParam { /**
+
+    /**
+     * 用户ID
+     */
+    private Long userId;
+
+    /**
+     * 商家名称
+     */
+    private String name;
+
+    /**
+     * 商家Logo
+     */
+    private String logo;
+
+    /**
+     * 轮播图列表
+     */
+    private List<File> banners;
+
+    /**
+     * 联系人
+     */
+    private String liaison;
+
+    /**
+     * 联系电话
+     */
+    private String mobile;
+
+    /**
+     * 营业时间
+     */
+    private String opening;
+
+    /**
+     * 详细地址
+     */
+    private String address;
+
+    /**
+     * 商家评分
+     */
+    private Double score;
+
+    /**
+     * 订单销量
+     */
+    private Integer sale;
+
+    /**
+     * 所属地区
+     */
+    private Integer region;
+
+    /**
+     * 经度
+     */
+    private Double longitude;
+
+    /**
+     * 纬度
+     */
+    private Double latitude;
+
+    /**
+     * 是否推荐
+     */
+    private Boolean recommend;
+
+    /**
+     * 商家状态
+     */
+    private MerchantStatus 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);
+
+
+}

+ 26 - 3
vehicle-api/src/main/java/com/chelvc/cloud/vehicle/api/service/MerchantService.java

@@ -1,11 +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.dto.MerchantDetailDTO;
-import com.chelvc.cloud.vehicle.api.param.LocationQueryParam;
-import com.chelvc.cloud.vehicle.api.param.MerchantQueryParam;
+import com.chelvc.cloud.vehicle.api.param.*;
+import com.chelvc.framework.base.model.Pagination;
 
 /**
  * 商家业务接口
@@ -48,4 +47,28 @@ public interface MerchantService {
      * @return 商家详情
      */
     MerchantDetailDTO getMerchantDetail(Long id);
+
+    /**
+     * 新增商家
+     *
+     * @param param 新增参数
+     * @return 商家主键
+     */
+    Long addMerchant(MerchantModifyParam param);
+
+    /**
+     * 修改商家
+     *
+     * @param id    分类主键
+     * @param param 修改参数
+     */
+    void updateMerchant(Long id, MerchantModifyParam param);
+
+    /**
+     * 查询商家
+     *
+     * @param param 查询参数
+     * @return 分类分页信息
+     */
+    Pagination<MerchantDTO> getMerchantPaging(MerchantPagingParam param);
 }

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

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

@@ -4,7 +4,9 @@ import java.util.Collection;
 import java.util.List;
 
 import com.chelvc.cloud.vehicle.api.dto.MerchantDTO;
+import com.chelvc.cloud.vehicle.api.param.MerchantModifyParam;
 import com.chelvc.cloud.vehicle.server.entity.Merchant;
+import org.mapstruct.MappingTarget;
 import org.mapstruct.factory.Mappers;
 
 /**
@@ -34,4 +36,20 @@ public interface MerchantCopier {
      * @return 商家信息列表
      */
     List<MerchantDTO> copying(Collection<Merchant> merchants);
+
+    /**
+     * 商家信息拷贝
+     *
+     * @param param 商家更新参数
+     * @return 商家信息
+     */
+    Merchant copying(MerchantModifyParam param);
+
+    /**
+     * 商家信息拷贝
+     *
+     * @param param    商家更新参数
+     * @param  merchant 商家信息
+     */
+    void copying( MerchantModifyParam param, @MappingTarget  Merchant merchant);
 }

+ 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;
 
 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.MerchantMapper;
+import com.chelvc.cloud.vehicle.server.entity.Category;
 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.MerchantService;
+import com.chelvc.framework.database.context.DatabaseContextHolder;
+import lombok.NonNull;
 import org.springframework.stereotype.Service;
 
 /**
  * 用户收藏业务操作实现
  *
- * @author Woody
- * @date 2023/7/17
+ * @author liude
+ * @date 2023/7/20
  */
 @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);
+    }
 }

+ 28 - 3
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/MerchantServiceImpl.java

@@ -2,20 +2,22 @@ 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.constant.CategoryType;
 import com.chelvc.cloud.vehicle.api.dto.GoodsDTO;
 import com.chelvc.cloud.vehicle.api.dto.MerchantDTO;
 import com.chelvc.cloud.vehicle.api.dto.MerchantDetailDTO;
-import com.chelvc.cloud.vehicle.api.param.GoodsQueryParam;
-import com.chelvc.cloud.vehicle.api.param.LocationQueryParam;
-import com.chelvc.cloud.vehicle.api.param.MerchantQueryParam;
+import com.chelvc.cloud.vehicle.api.param.*;
 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.GoodsService;
 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.context.DatabaseContextHolder;
+import com.chelvc.framework.database.util.PagingUtils;
 import lombok.NonNull;
 import lombok.RequiredArgsConstructor;
 import org.apache.dubbo.config.annotation.DubboService;
@@ -64,4 +66,27 @@ public class MerchantServiceImpl extends ServiceImpl<MerchantMapper, Merchant> i
         List<CategoryType> types = this.goodsService.listMerchantGoodsCategoryTypes(id);
         return MerchantDetailDTO.builder().merchant(merchant).goods(goods).categories(types).build();
     }
+
+
+    @Override
+    public Long addMerchant(MerchantModifyParam param){
+        Merchant merchant = MerchantCopier.INSTANCE.copying(param);
+        this.save(merchant);
+        return merchant.getId();
+    }
+
+    @Override
+    public void updateMerchant(@NonNull Long id, @NonNull MerchantModifyParam param) {
+        Merchant merchant = DatabaseContextHolder.getRequireEntity(this, id, "分类不存在");
+        MerchantCopier.INSTANCE.copying(param, merchant);
+        this.updateById(merchant);
+    }
+
+    @Override
+    public Pagination<MerchantDTO> getMerchantPaging(@NonNull MerchantPagingParam param) {
+        Page<Merchant> page = this.lambdaQuery()
+                .like(StringUtils.nonEmpty(param.getName()), Merchant::getName, param.getName())
+                .orderByAsc(Merchant::getStatus).page(PagingUtils.convert(param.getPaging()));
+        return PagingUtils.convert(page, MerchantCopier.INSTANCE::copying);
+    }
 }