Browse Source

收藏相关业务

liude 1 year ago
parent
commit
a4f959b776

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

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

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

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