Преглед на файлове

mapper及xml 提取,商品搜索页推荐列表接口

wxd преди 1 месец
родител
ревизия
4a5cf4fc4c

+ 7 - 2
alien-entity/src/main/java/shop/alien/entity/second/SecondGoods.java

@@ -80,6 +80,11 @@ public class SecondGoods implements Serializable {
     @ApiModelProperty(value = "审核失败原因")
     private String failedReason;
 
+    @TableField(value = "created_time", fill = FieldFill.INSERT)
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "创建时间")
+    private Date createdTime;
+
     @TableField("delete_flag")
     @ApiModelProperty(value = "删除标记 0:未删除 1:已删除")
     @TableLogic
@@ -87,8 +92,8 @@ public class SecondGoods implements Serializable {
 
     @TableField(value = "created_time", fill = FieldFill.INSERT)
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
-    @ApiModelProperty(value = "创建时间")
-    private Date createdTime;
+    @ApiModelProperty(value = "发布时间")
+    private Date releaseTime;
 
     @TableField("created_user_id")
     @ApiModelProperty(value = "创建人ID")

+ 20 - 2
alien-second/src/main/java/shop/alien/second/mapper/SecondGoodsMapper.java → alien-entity/src/main/java/shop/alien/mapper/second/SecondGoodsMapper.java

@@ -1,4 +1,4 @@
-package shop.alien.second.mapper;
+package shop.alien.mapper.second;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper; // 引入 Mapper 注解
@@ -10,7 +10,6 @@ import java.util.List;
 /**
  * 二手商品映射器
  */
-@Mapper  // 添加 @Mapper 注解,使该接口成为 Spring 管理的 Bean
 public interface SecondGoodsMapper extends BaseMapper<SecondGoods> {
     /**
      * 自定义分页查询
@@ -49,4 +48,23 @@ public interface SecondGoodsMapper extends BaseMapper<SecondGoods> {
      * @return 屏蔽的商品列表
      */
     List<SecondGoods> getShieldedGoodsList(@Param("userId") Integer userId);
+
+    /**
+     * 查询商品热卖排行榜
+     * @param page 分页参数
+     * @return 商品热卖排行榜列表
+     */
+    IPage<SecondGoods> getHotSellingRanking(IPage<SecondGoods> page);
+
+    /**
+     * 查询商品热卖排行榜(前10名),按标签聚合计算总点赞量
+     * @return 热卖排行榜列表
+     */
+    List<SecondGoods> getHotSellingRankingTop10();
+
+    /**
+     * 获取商品收藏排行榜(前10名),按标签聚合计算总收藏量
+     * @return 收藏排行榜列表
+     */
+    List<SecondGoods> getCollectTop10();
 }

+ 28 - 1
alien-second/src/main/resources/mapper/SecondGoodsMapper.xml → alien-entity/src/main/resources/mapper/second/SecondGoodsMapper.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="shop.alien.second.mapper.SecondGoodsMapper">
+<mapper namespace="shop.alien.mapper.second.SecondGoodsMapper">
     <resultMap id="BaseResultMap" type="shop.alien.entity.second.SecondGoods">
         <!--@mbggenerated-->
         <id column="id" property="id" jdbcType="INTEGER"/>
@@ -41,6 +41,33 @@
         ORDER BY distance ASC
     </select>
 
+    <!-- 查询商品热卖排行榜 -->
+    <select id="getHotSellingRanking" resultType="shop.alien.entity.second.SecondGoods">
+        SELECT sg.*
+        FROM second_goods sg
+        WHERE sg.delete_flag = 0
+        ORDER BY sg.like_count DESC
+    </select>
+
+    <!-- 查询商品热卖排行榜(前10名),按标签聚合计算总点赞量 -->
+    <select id="getHotSellingRankingTop10" resultType="shop.alien.entity.second.SecondGoods">
+        SELECT sg.label, SUM(sg.like_count) AS like_count
+        FROM second_goods sg
+        WHERE sg.delete_flag = 0
+        GROUP BY sg.label
+        ORDER BY like_count DESC
+        LIMIT 10
+    </select>
+
+    <!-- 获取商品收藏排行榜(前10名),按标签聚合计算总收藏量 -->
+    <select id="getCollectTop10" resultType="shop.alien.entity.second.SecondGoods">
+        SELECT sg.label, SUM(sg.collect_count) AS collect_count
+        FROM second_goods sg
+        WHERE sg.delete_flag = 0
+        GROUP BY sg.label
+        ORDER BY collect_count DESC
+            LIMIT 10
+    </select>
     <!-- 带图片信息的商品查询 支持分类和状态筛选 -->
     <select id="selectGoodsWithImages" resultType="shop.alien.entity.second.SecondGoods">
         SELECT *

+ 19 - 1
alien-second/src/main/java/shop/alien/second/controller/SecondGoodsController.java

@@ -83,7 +83,7 @@ public class SecondGoodsController {
     /**
      * 获取用户屏蔽的商品列表(分页)
      */
-    @GetMapping("/shielded-list")
+    @GetMapping("/shieldedList")
     @ApiOperation("获取用户屏蔽的商品列表(分页)")
     public R<IPage<SecondGoods>> getShieldedGoodsList(
             @ApiParam("当前页码") @RequestParam Integer pageNum,
@@ -95,6 +95,24 @@ public class SecondGoodsController {
     }
 
     /**
+     * 获取商品热卖排行榜(前10名)
+     */
+    @GetMapping("/getHotSellingRanking")
+    @ApiOperation("推荐 - 获取商品点赞热卖排行榜(前10名)")
+    public R<List<SecondGoods>> getHotSellingRanking() {
+        return R.data(secondGoodsService.getHotSellingRankingTop10(), "获取成功");
+    }
+
+    /**
+     * 大家都在看(前10名)
+     */
+    @GetMapping("/getCollectTop10")
+    @ApiOperation("大家都在看 - 获取商品收藏排行榜(前10名)")
+    public R<List<SecondGoods>> getCollectTop10() {
+        return R.data(secondGoodsService.getCollectTop10(), "获取成功");
+    }
+
+    /**
      * 添加二手商品
      */
     @PostMapping("/save")

+ 20 - 1
alien-second/src/main/java/shop/alien/second/service/SecondGoodsService.java

@@ -24,7 +24,7 @@ public interface SecondGoodsService extends IService<SecondGoods> {
      * @param goods 二手商品实体
      * @return 是否成功保存
      */
-    boolean saveAsDraft(SecondGoods goods);
+    boolean saveAsDraft(SecondGoodsVo goods);
 
     /**
      * 获取所有二手商品
@@ -52,4 +52,23 @@ public interface SecondGoodsService extends IService<SecondGoods> {
      * @return 分页后的屏蔽商品列表
      */
     IPage<SecondGoods> getShieldedGoodsListByType(IPage<SecondGoods> page, Integer userId, Integer shieldType);
+
+    /**
+     * 获取商品热卖排行榜
+     * @param page 分页参数
+     * @return 商品热卖排行榜列表
+     */
+    IPage<SecondGoods> getHotSellingRanking(IPage<SecondGoods> page);
+
+    /**
+     * 获取商品热卖排行榜(前10名),按标签聚合计算总点赞量
+     * @return 热卖排行榜列表
+     */
+    List<SecondGoods> getHotSellingRankingTop10();
+
+    /**
+     * 获取商品收藏排行榜(前10名)
+     * @return 商品收藏排行榜列表
+     */
+    List<SecondGoods> getCollectTop10();
 }

+ 37 - 6
alien-second/src/main/java/shop/alien/second/service/impl/SecondGoodsServiceImpl.java

@@ -9,7 +9,7 @@ import org.springframework.stereotype.Service;
 import shop.alien.entity.second.SecondGoods;
 import shop.alien.entity.store.StoreImg;
 import shop.alien.entity.second.vo.SecondGoodsVo;
-import shop.alien.second.mapper.SecondGoodsMapper;
+import shop.alien.mapper.second.SecondGoodsMapper;
 import shop.alien.second.service.SecondGoodsService;
 import shop.alien.util.common.netease.ImageCheckUtil;
 import shop.alien.util.common.netease.TextCheckUtil;
@@ -33,16 +33,23 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
      * @return 是否成功保存
      */
     @Override
-    public boolean saveAsDraft(SecondGoods goods) {
+    public boolean saveAsDraft(SecondGoodsVo goods) {
         // 设置商品状态为草稿
         goods.setUserId(1);
         goods.setGoodsStatus(0); // TODO: 使用常量或枚举代替硬编码
-        goods.setCreatedTime(new Date());
-        goods.setUpdatedTime(new Date());
-        goods.setDeleteFlag(0);
         goods.setCreatedUserId(1);
         goods.setUpdatedUserId(1);
-        return save(goods);
+        // 保存商品基本信息
+        if (!save(goods)) {
+            return false; // 保存失败直接返回
+        }
+        // 获取保存后的商品ID,用于后续业务处理
+        Integer savedGoodsId = goods.getId();
+        if (savedGoodsId == null) {
+            return false; // 如果获取不到ID,视为操作失败
+        }
+        // 保存商品图片信息
+        return saveStoreImages(savedGoodsId, goods.getImgUrl());
     }
 
 
@@ -75,6 +82,7 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
 
         // 如果所有审核都通过,设置为上架状态
         goods.setGoodsStatus(3); // 上架
+        goods.setReleaseTime(new Date()); // 上架时间
         updateById(goods);
 
         // 发送消息
@@ -237,6 +245,29 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
     }
 
     /**
+     * 获取热销商品列表(前10)
+     * @return 热销商品列表
+     */
+    @Override
+    public List<SecondGoods> getHotSellingRankingTop10() {
+        return secondGoodsMapper.getHotSellingRankingTop10();
+    }
+
+    /**
+     * 获取热销商品列表(前10)
+     * @return 热销商品列表
+     */
+    @Override
+    public List<SecondGoods> getCollectTop10() {
+        return secondGoodsMapper.getCollectTop10();
+    }
+
+    @Override
+    public IPage<SecondGoods> getHotSellingRanking(IPage<SecondGoods> page) {
+        return secondGoodsMapper.getHotSellingRanking(page);
+    }
+
+    /**
      * 获取用户屏蔽的商品列表
      * @param userId 用户ID
      * @return 屏蔽的商品列表