ソースを参照

开发首页美食推荐

lutong 2 ヶ月 前
コミット
07c2f29da4

+ 17 - 0
alien-dining/src/main/java/shop/alien/dining/controller/StoreInfoController.java

@@ -8,6 +8,7 @@ import shop.alien.entity.result.R;
 import shop.alien.entity.store.StoreCuisine;
 import shop.alien.entity.store.StoreCuisineCategory;
 import shop.alien.entity.store.StoreTable;
+import shop.alien.entity.store.dto.StoreInfoWithHomepageCuisinesDTO;
 import shop.alien.dining.service.StoreInfoService;
 
 import java.util.List;
@@ -75,4 +76,20 @@ public class StoreInfoController {
             return R.fail("查询菜品信息列表失败: " + e.getMessage());
         }
     }
+
+    @ApiOperation(value = "根据商铺ID查询店铺信息和首页展示美食价目表", notes = "查询店铺信息和当前店铺绑定的首页展示美食价目表信息")
+    @GetMapping("/detail/{storeId}")
+    public R<StoreInfoWithHomepageCuisinesDTO> getStoreInfoWithHomepageCuisines(
+            @ApiParam(value = "商铺ID", required = true) @PathVariable Integer storeId) {
+        try {
+            if (storeId == null) {
+                return R.fail("商铺ID不能为空");
+            }
+            StoreInfoWithHomepageCuisinesDTO result = storeInfoService.getStoreInfoWithHomepageCuisines(storeId);
+            return R.data(result);
+        } catch (Exception e) {
+            log.error("查询店铺信息和首页展示美食价目表失败: {}", e.getMessage(), e);
+            return R.fail("查询店铺信息和首页展示美食价目表失败: " + e.getMessage());
+        }
+    }
 }

+ 9 - 0
alien-dining/src/main/java/shop/alien/dining/service/StoreInfoService.java

@@ -3,6 +3,7 @@ package shop.alien.dining.service;
 import shop.alien.entity.store.StoreCuisine;
 import shop.alien.entity.store.StoreCuisineCategory;
 import shop.alien.entity.store.StoreTable;
+import shop.alien.entity.store.dto.StoreInfoWithHomepageCuisinesDTO;
 
 import java.util.List;
 
@@ -37,4 +38,12 @@ public interface StoreInfoService {
      * @return 菜品信息列表
      */
     List<StoreCuisine> getCuisinesByCategoryId(Integer categoryId);
+
+    /**
+     * 根据商铺ID查询店铺信息和首页展示美食价目表信息
+     *
+     * @param storeId 商铺ID
+     * @return 店铺信息和首页展示美食价目表信息
+     */
+    StoreInfoWithHomepageCuisinesDTO getStoreInfoWithHomepageCuisines(Integer storeId);
 }

+ 38 - 0
alien-dining/src/main/java/shop/alien/dining/service/impl/StoreInfoServiceImpl.java

@@ -7,13 +7,17 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import shop.alien.entity.store.StoreCuisine;
 import shop.alien.entity.store.StoreCuisineCategory;
+import shop.alien.entity.store.StoreInfo;
 import shop.alien.entity.store.StoreTable;
+import shop.alien.entity.store.dto.StoreInfoWithHomepageCuisinesDTO;
 import shop.alien.mapper.StoreCuisineCategoryMapper;
 import shop.alien.mapper.StoreCuisineMapper;
+import shop.alien.mapper.StoreInfoMapper;
 import shop.alien.mapper.StoreTableMapper;
 import shop.alien.dining.service.StoreInfoService;
 import org.apache.commons.lang3.StringUtils;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -30,6 +34,7 @@ public class StoreInfoServiceImpl implements StoreInfoService {
     private final StoreTableMapper storeTableMapper;
     private final StoreCuisineCategoryMapper storeCuisineCategoryMapper;
     private final StoreCuisineMapper storeCuisineMapper;
+    private final StoreInfoMapper storeInfoMapper;
 
     @Override
     public List<StoreTable> getTablesByStoreId(Integer storeId) {
@@ -96,4 +101,37 @@ public class StoreInfoServiceImpl implements StoreInfoService {
                 })
                 .collect(java.util.stream.Collectors.toList());
     }
+
+    @Override
+    public StoreInfoWithHomepageCuisinesDTO getStoreInfoWithHomepageCuisines(Integer storeId) {
+        log.info("根据商铺ID查询店铺信息和首页展示美食价目表, storeId={}", storeId);
+        
+        // 1. 查询店铺信息
+        StoreInfo storeInfo = storeInfoMapper.selectById(storeId);
+        if (storeInfo == null) {
+            throw new RuntimeException("店铺不存在");
+        }
+        
+        // 2. 查询首页展示的美食价目表(is_homepage_display = 1,上架状态 = 1,审核通过 = 1)
+        LambdaQueryWrapper<StoreCuisine> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(StoreCuisine::getStoreId, storeId);
+        wrapper.eq(StoreCuisine::getDeleteFlag, 0);
+        wrapper.eq(StoreCuisine::getIsHomepageDisplay, 1); // 首页展示
+        wrapper.eq(StoreCuisine::getShelfStatus, 1); // 上架状态
+        wrapper.eq(StoreCuisine::getStatus, 1); // 审核通过
+        wrapper.orderByDesc(StoreCuisine::getCreatedTime); // 按创建时间倒序
+        
+        List<StoreCuisine> homepageCuisines = storeCuisineMapper.selectList(wrapper);
+        if (homepageCuisines == null) {
+            homepageCuisines = new ArrayList<>();
+        }
+        
+        // 3. 构建返回DTO
+        StoreInfoWithHomepageCuisinesDTO dto = new StoreInfoWithHomepageCuisinesDTO();
+        dto.setStoreInfo(storeInfo);
+        dto.setHomepageCuisines(homepageCuisines);
+        
+        log.info("查询完成, storeId={}, 首页展示美食数量={}", storeId, homepageCuisines.size());
+        return dto;
+    }
 }

+ 26 - 0
alien-entity/src/main/java/shop/alien/entity/store/dto/StoreInfoWithHomepageCuisinesDTO.java

@@ -0,0 +1,26 @@
+package shop.alien.entity.store.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import shop.alien.entity.store.StoreCuisine;
+import shop.alien.entity.store.StoreInfo;
+
+import java.util.List;
+
+/**
+ * 店铺信息和首页展示美食价目表DTO
+ *
+ * @author system
+ * @since 2025-02-02
+ */
+@Data
+@ApiModel(value = "StoreInfoWithHomepageCuisinesDTO对象", description = "店铺信息和首页展示美食价目表")
+public class StoreInfoWithHomepageCuisinesDTO {
+
+    @ApiModelProperty(value = "店铺信息")
+    private StoreInfo storeInfo;
+
+    @ApiModelProperty(value = "首页展示的美食价目表列表")
+    private List<StoreCuisine> homepageCuisines;
+}