Parcourir la source

feat(reservation): 添加门店预订信息查询功能

- 在UserReservationController中新增getBookingsByStoreId接口
- 添加StoreBookingSettingsService、StoreBookingTableService和StoreBookingCategoryService依赖注入
- 实现getBookingsByStoreId方法返回门店预订设置、桌位和分类信息
- 更新UserReservationService接口定义预订信息查询方法
- 优化导入包管理,使用通配符导入实体类
- 添加接口文档注解支持API文档生成
fcw il y a 1 mois
Parent
commit
5b6d9b29a8

+ 13 - 0
alien-store/src/main/java/shop/alien/store/controller/UserReservationController.java

@@ -13,6 +13,7 @@ import shop.alien.store.service.UserReservationService;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 用户预约 前端控制器
@@ -136,4 +137,16 @@ public class UserReservationController {
         List<UserReservationVo> list = userReservationService.list(userId, storeId, status);
         return R.data(list);
     }
+
+    @ApiOperation("预订信息")
+    @ApiOperationSupport(order = 7)
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "storeId", value = "门店ID", dataType = "Integer", paramType = "query")
+    })
+    @GetMapping("/getBookingsByStoreId")
+    public R<Map<String, Object>> getBookingsByStoreId(@RequestParam Integer storeId) {
+        log.info("UserReservationController.getBookingsByStoreId?storeId={}", storeId);
+        Map<String, Object> list = userReservationService.getBookingsByStoreId(storeId);
+        return R.data(list);
+    }
 }

+ 3 - 0
alien-store/src/main/java/shop/alien/store/service/UserReservationService.java

@@ -8,6 +8,7 @@ import shop.alien.entity.store.vo.UserReservationVo;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 
 /**
  * 用户预约 服务类
@@ -73,4 +74,6 @@ public interface UserReservationService extends IService<UserReservation> {
      * @return 预约VO列表
      */
     List<UserReservationVo> list(Integer userId, Integer storeId, Integer status);
+
+    Map<String, Object> getBookingsByStoreId(Integer storeId);
 }

+ 25 - 4
alien-store/src/main/java/shop/alien/store/service/impl/UserReservationServiceImpl.java

@@ -9,16 +9,17 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-import shop.alien.entity.store.UserReservation;
-import shop.alien.entity.store.UserReservationTable;
+import shop.alien.entity.store.*;
 import shop.alien.entity.store.dto.UserReservationDTO;
 import shop.alien.entity.store.vo.UserReservationVo;
 import shop.alien.mapper.UserReservationMapper;
 import shop.alien.mapper.UserReservationTableMapper;
+import shop.alien.store.service.StoreBookingCategoryService;
+import shop.alien.store.service.StoreBookingSettingsService;
+import shop.alien.store.service.StoreBookingTableService;
 import shop.alien.store.service.UserReservationService;
 
-import java.util.Date;
-import java.util.List;
+import java.util.*;
 import java.util.concurrent.ThreadLocalRandom;
 import java.util.stream.Collectors;
 
@@ -35,6 +36,12 @@ public class UserReservationServiceImpl extends ServiceImpl<UserReservationMappe
 
     private final UserReservationTableMapper userReservationTableMapper;
 
+    private final StoreBookingSettingsService storeBookingSettingsService;
+
+    private final StoreBookingTableService storeBookingTableService;
+
+    private final StoreBookingCategoryService storeBookingCategoryService;
+
     private static final int STATUS_PENDING = 0;
 
     @Override
@@ -127,6 +134,20 @@ public class UserReservationServiceImpl extends ServiceImpl<UserReservationMappe
         return list.stream().map(this::toVoWithTableIds).collect(Collectors.toList());
     }
 
+    @Override
+    public Map<String, Object> getBookingsByStoreId(Integer storeId) {
+        Map<String, Object> list = new HashMap<>();
+        //通过storeId查询商家预设的预订信息状态
+        LambdaQueryWrapper<StoreBookingSettings> eq = new LambdaQueryWrapper<StoreBookingSettings>().eq(StoreBookingSettings::getStoreId, storeId);
+        List<StoreBookingSettings> storeBookingSettings = storeBookingSettingsService.list(eq);
+        list.put("storeBookingSettings", storeBookingSettings);
+        List<StoreBookingTable> storeBookingTables = storeBookingTableService.list(new LambdaQueryWrapper<StoreBookingTable>().eq(StoreBookingTable::getStoreId, storeId));
+        list.put("storeBookingTables", storeBookingTables);
+        List<StoreBookingCategory> storeBookingCategorys = storeBookingCategoryService.list(new LambdaQueryWrapper<StoreBookingCategory>().eq(StoreBookingCategory::getStoreId, storeId));
+        list.put("storeBookingCategorys", storeBookingCategorys);
+        return list;
+    }
+
     private LambdaQueryWrapper<UserReservation> buildListWrapper(Integer userId, Integer storeId, Integer status,
                                                                   Date dateFrom, Date dateTo) {
         LambdaQueryWrapper<UserReservation> wrapper = new LambdaQueryWrapper<>();