瀏覽代碼

二手商品初始流程检验

wxd 1 月之前
父節點
當前提交
722c2ed22e

+ 31 - 3
alien-second/src/main/java/shop/alien/second/controller/SecondGoodsController.java

@@ -1,5 +1,7 @@
 package shop.alien.second.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -10,8 +12,6 @@ import shop.alien.entity.second.SecondGoods;
 import shop.alien.second.entity.SecondGoodsDTO;
 import shop.alien.second.service.SecondGoodsService;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import java.util.List;
 
 /**
@@ -35,6 +35,34 @@ public class SecondGoodsController {
     }
 
     /**
+     * 分页查询二手商品列表
+     */
+    @GetMapping("/list")
+    @ApiOperation("分页查询二手商品列表")
+    public R<IPage<SecondGoods>> getSecondGoodsList(
+            @ApiParam("当前页码") @RequestParam Integer pageNum,
+            @ApiParam("每页数量") @RequestParam Integer pageSize) {
+        IPage<SecondGoods> page = new Page<>(pageNum, pageSize);
+        IPage<SecondGoods> result = secondGoodsService.page(page);
+        return R.data(result, "查询成功");
+    }
+
+    /**
+     * 分页查询二手商品列表(包含图片信息)并支持筛选条件
+     */
+    @GetMapping("/list-with-images")
+    @ApiOperation("分页查询二手商品列表并包含图片信息,支持筛选")
+    public R<IPage<SecondGoods>> getSecondGoodsListWithImages(
+            @ApiParam("当前页码") @RequestParam Integer pageNum,
+            @ApiParam("每页数量") @RequestParam Integer pageSize,
+            @ApiParam("一级分类ID") @RequestParam(required = false) Integer categoryId,
+            @ApiParam("商品状态") @RequestParam(required = false) Integer status) {
+        IPage<SecondGoods> page = new Page<>(pageNum, pageSize);
+        IPage<SecondGoods> result = secondGoodsService.getGoodsWithImages(page, categoryId, status);
+        return R.data(result, "查询成功");
+    }
+
+    /**
      * 根据ID获取二手商品
      */
     @GetMapping("/{id}")
@@ -46,7 +74,7 @@ public class SecondGoodsController {
     /**
      * 添加二手商品
      */
-    @PostMapping
+    @PostMapping("/save")
     @ApiOperation("添加二手商品")
     public R<Void> addSecondGoods(@ApiParam("二手商品信息") @RequestBody SecondGoodsDTO secondGoods) {
         if (!secondGoodsService.createBasicInfo(secondGoods)) {

+ 11 - 1
alien-second/src/main/java/shop/alien/second/mapper/SecondGoodsMapper.java

@@ -3,6 +3,7 @@ package shop.alien.second.mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper; // 引入 Mapper 注解
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import org.apache.ibatis.annotations.Param;
 import shop.alien.entity.second.SecondGoods;
 import java.util.List;
 
@@ -23,5 +24,14 @@ public interface SecondGoodsMapper extends BaseMapper<SecondGoods> {
      * @param currentLongitude 当前位置经度
      * @return 分页后的二手商品列表
      */
-    List<SecondGoods> getSecondGoodsByPageAndDistance(IPage<SecondGoods> page, Double currentLatitude, Double currentLongitude);
+    List<SecondGoods> getSecondGoodsByPageAndDistance(IPage<SecondGoods> page, @Param("currentLatitude") Double currentLatitude, @Param("currentLongitude") Double currentLongitude);
+
+    /**
+     * 自定义查询方法,返回包含图片信息的二手商品列表
+     * @param page 分页信息
+     * @param categoryId 分类ID
+     * @param status 商品状态
+     * @return 包含图片信息的二手商品列表
+     */
+    IPage<SecondGoods> selectGoodsWithImages(IPage<SecondGoods> page, @Param("categoryId") Integer categoryId, @Param("status") Integer status);
 }

+ 11 - 0
alien-second/src/main/java/shop/alien/second/service/SecondGoodsService.java

@@ -24,4 +24,15 @@ public interface SecondGoodsService extends IService<SecondGoods> {
      * @return 是否成功保存
      */
     boolean saveAsDraft(SecondGoods goods);
+
+    /**
+     * 获取所有二手商品
+     * @param page 分页参数
+     *             pageNum 当前页码
+     *             pageSize 每页数量
+     *             categoryId 分类ID
+     *             status 商品状态 0:草稿 1:审核中 2:审核失败 3:已上架 4:已下架 5:已售出
+     * @return 二手商品列表
+     */
+    IPage<SecondGoods> getGoodsWithImages(IPage<SecondGoods> page, Integer categoryId, Integer status);
 }

+ 33 - 1
alien-second/src/main/java/shop/alien/second/service/impl/SecondGoodsServiceImpl.java

@@ -1,10 +1,11 @@
 package shop.alien.second.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import shop.alien.entity.second.SecondGoods;
 import shop.alien.entity.store.StoreImg;
@@ -17,6 +18,7 @@ import shop.alien.util.common.netease.TextCheckUtil;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * 二手商品服务实现类
@@ -24,6 +26,8 @@ import java.util.Map;
 @Service
 public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, SecondGoods> implements SecondGoodsService {
 
+    @Autowired
+    private SecondGoodsMapper secondGoodsMapper;
     /**
      * 保存商品为草稿状态
      * @param goods 商品实体
@@ -32,7 +36,13 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
     @Override
     public boolean saveAsDraft(SecondGoods 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);
     }
 
@@ -152,5 +162,27 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
 //        message.setUpdatedTime(new Date());
 //        messageMapper.insert(message);
     }
+
+    @Override
+    public IPage<SecondGoods> getGoodsWithImages(IPage<SecondGoods> page, Integer categoryId, Integer status) {
+        // 调用 Mapper 层分页查询方法
+        IPage<SecondGoods> goodsPage = secondGoodsMapper.selectGoodsWithImages(page, categoryId, status);
+
+        if (CollectionUtil.isNotEmpty(goodsPage.getRecords())) {
+            List<Integer> goodsIds = goodsPage.getRecords().stream()
+                    .map(SecondGoods::getId)
+                    .collect(Collectors.toList());
+
+//            // 批量获取图片信息
+//            Map<Integer, List<String>> imagesMap = storeImgService.getImgsByGoodsIds(goodsIds);
+//
+//            // 设置图片信息
+//            for (SecondGoods goods : goodsPage.getRecords()) {
+//                goods.setImgUrl(imagesMap.getOrDefault(goods.getId(), Collections.emptyList()));
+//            }
+        }
+
+        return goodsPage;
+    }
     
 }

+ 14 - 0
alien-second/src/main/resources/mapper/SecondGoodsMapper.xml

@@ -40,4 +40,18 @@
         WHERE delete_flag = 0
         ORDER BY distance ASC
     </select>
+
+    <!-- 带图片信息的商品查询 支持分类和状态筛选 -->
+    <select id="selectGoodsWithImages" resultType="shop.alien.entity.second.SecondGoods">
+        SELECT *
+        FROM second_goods
+        <where>
+            <if test="categoryId != null">
+                AND category_one_id = #{categoryId}
+            </if>
+            <if test="status != null">
+                AND goods_status = #{status}
+            </if>
+        </where>
+    </select>
 </mapper>