Просмотр исходного кода

商家端 预约信息列表排序修改 桌号分类 增加分页

qinxuyang 1 месяц назад
Родитель
Сommit
a6f432b8c1

+ 1 - 0
alien-entity/src/main/resources/mapper/StoreReservationMapper.xml

@@ -119,6 +119,7 @@
         GROUP BY
             ur.id
         ORDER BY
+            ur.status DESC,
             ur.reservation_date DESC,
             ur.start_time ASC,
             ur.created_time DESC

+ 19 - 7
alien-store/src/main/java/shop/alien/store/controller/StoreBookingCategoryController.java

@@ -1,5 +1,6 @@
 package shop.alien.store.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import io.swagger.annotations.*;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -12,8 +13,6 @@ import shop.alien.entity.store.dto.StoreBookingCategoryDTO;
 import shop.alien.entity.store.dto.StoreBookingCategorySortDTO;
 import shop.alien.store.service.StoreBookingCategoryService;
 
-import java.util.List;
-
 /**
  * 预订服务分类管理 前端控制器
  *
@@ -32,21 +31,34 @@ public class StoreBookingCategoryController {
     private final StoreBookingCategoryService storeBookingCategoryService;
 
     @ApiOperationSupport(order = 1)
-    @ApiOperation("查询预订服务分类列表")
+    @ApiOperation("查询预订服务分类列表(分页)")
     @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "Integer", paramType = "query", required = false),
+            @ApiImplicitParam(name = "pageSize", value = "页容", dataType = "Integer", paramType = "query", required = false),
             @ApiImplicitParam(name = "storeId", value = "门店ID", dataType = "Integer", paramType = "query", required = true)
     })
     @GetMapping("/list")
-    public R<List<StoreBookingCategory>> getCategoryList(@RequestParam Integer storeId) {
-        log.info("StoreBookingCategoryController.getCategoryList?storeId={}", storeId);
+    public R<IPage<StoreBookingCategory>> getCategoryList(
+            @RequestParam(defaultValue = "1") Integer pageNum,
+            @RequestParam(defaultValue = "10") Integer pageSize,
+            @RequestParam Integer storeId) {
+        log.info("StoreBookingCategoryController.getCategoryList?pageNum={}, pageSize={}, storeId={}", 
+                pageNum, pageSize, storeId);
         
         if (storeId == null) {
             return R.fail("门店ID不能为空");
         }
         
+        if (pageNum == null || pageNum < 1) {
+            pageNum = 1;
+        }
+        if (pageSize == null || pageSize < 1) {
+            pageSize = 10;
+        }
+        
         try {
-            List<StoreBookingCategory> list = storeBookingCategoryService.getCategoryList(storeId);
-            return R.data(list);
+            IPage<StoreBookingCategory> page = storeBookingCategoryService.getCategoryListPage(pageNum, pageSize, storeId);
+            return R.data(page);
         } catch (Exception e) {
             log.error("查询预订服务分类列表失败", e);
             return R.fail("查询失败:" + e.getMessage());

+ 18 - 5
alien-store/src/main/java/shop/alien/store/controller/StoreBookingTableController.java

@@ -1,5 +1,6 @@
 package shop.alien.store.controller;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import io.swagger.annotations.*;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -32,24 +33,36 @@ public class StoreBookingTableController {
     private final StoreBookingTableService storeBookingTableService;
 
     @ApiOperationSupport(order = 1)
-    @ApiOperation("查询预订服务桌号列表")
+    @ApiOperation("查询预订服务桌号列表(分页)")
     @ApiImplicitParams({
+            @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "Integer", paramType = "query", required = false),
+            @ApiImplicitParam(name = "pageSize", value = "页容", dataType = "Integer", paramType = "query", required = false),
             @ApiImplicitParam(name = "storeId", value = "门店ID", dataType = "Integer", paramType = "query", required = true),
             @ApiImplicitParam(name = "categoryId", value = "分类ID(可选,不传则查询全部)", dataType = "Integer", paramType = "query", required = false)
     })
     @GetMapping("/list")
-    public R<List<StoreBookingTableVo>> getTableList(
+    public R<IPage<StoreBookingTableVo>> getTableList(
+            @RequestParam(defaultValue = "1") Integer pageNum,
+            @RequestParam(defaultValue = "10") Integer pageSize,
             @RequestParam Integer storeId,
             @RequestParam(required = false) Integer categoryId) {
-        log.info("StoreBookingTableController.getTableList?storeId={}, categoryId={}", storeId, categoryId);
+        log.info("StoreBookingTableController.getTableList?pageNum={}, pageSize={}, storeId={}, categoryId={}", 
+                pageNum, pageSize, storeId, categoryId);
         
         if (storeId == null) {
             return R.fail("门店ID不能为空");
         }
         
+        if (pageNum == null || pageNum < 1) {
+            pageNum = 1;
+        }
+        if (pageSize == null || pageSize < 1) {
+            pageSize = 10;
+        }
+        
         try {
-            List<StoreBookingTableVo> list = storeBookingTableService.getTableListWithCategoryName(storeId, categoryId);
-            return R.data(list);
+            IPage<StoreBookingTableVo> page = storeBookingTableService.getTableListPage(pageNum, pageSize, storeId, categoryId);
+            return R.data(page);
         } catch (Exception e) {
             log.error("查询预订服务桌号列表失败", e);
             return R.fail("查询失败:" + e.getMessage());

+ 11 - 0
alien-store/src/main/java/shop/alien/store/service/StoreBookingCategoryService.java

@@ -1,5 +1,6 @@
 package shop.alien.store.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import shop.alien.entity.store.StoreBookingCategory;
 
@@ -22,6 +23,16 @@ public interface StoreBookingCategoryService extends IService<StoreBookingCatego
     List<StoreBookingCategory> getCategoryList(Integer storeId);
 
     /**
+     * 分页查询预订服务分类列表(按排序字段排序)
+     *
+     * @param pageNum  页数
+     * @param pageSize 页容
+     * @param storeId  门店ID
+     * @return IPage<StoreBookingCategory>
+     */
+    IPage<StoreBookingCategory> getCategoryListPage(Integer pageNum, Integer pageSize, Integer storeId);
+
+    /**
      * 新增预订服务分类
      *
      * @param category 分类对象

+ 12 - 0
alien-store/src/main/java/shop/alien/store/service/StoreBookingTableService.java

@@ -1,5 +1,6 @@
 package shop.alien.store.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import shop.alien.entity.store.StoreBookingTable;
 import shop.alien.entity.store.vo.StoreBookingTableVo;
@@ -33,6 +34,17 @@ public interface StoreBookingTableService extends IService<StoreBookingTable> {
     List<StoreBookingTableVo> getTableListWithCategoryName(Integer storeId, Integer categoryId);
 
     /**
+     * 分页查询预订服务桌号列表(包含分类名称)
+     *
+     * @param pageNum   页数
+     * @param pageSize  页容
+     * @param storeId   门店ID
+     * @param categoryId 分类ID(可选,null表示查询全部)
+     * @return IPage<StoreBookingTableVo>
+     */
+    IPage<StoreBookingTableVo> getTableListPage(Integer pageNum, Integer pageSize, Integer storeId, Integer categoryId);
+
+    /**
      * 新增预订服务桌号
      *
      * @param table 桌号对象

+ 20 - 0
alien-store/src/main/java/shop/alien/store/service/impl/StoreBookingCategoryServiceImpl.java

@@ -3,6 +3,8 @@ package shop.alien.store.service.impl;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
@@ -45,6 +47,24 @@ public class StoreBookingCategoryServiceImpl extends ServiceImpl<StoreBookingCat
     }
 
     @Override
+    public IPage<StoreBookingCategory> getCategoryListPage(Integer pageNum, Integer pageSize, Integer storeId) {
+        log.info("StoreBookingCategoryServiceImpl.getCategoryListPage?pageNum={}, pageSize={}, storeId={}", 
+                pageNum, pageSize, storeId);
+        
+        // 构建分页对象
+        Page<StoreBookingCategory> page = new Page<>(pageNum, pageSize);
+        
+        // 构建查询条件
+        LambdaQueryWrapper<StoreBookingCategory> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(StoreBookingCategory::getStoreId, storeId)
+                .orderByAsc(StoreBookingCategory::getSort) // 按排序字段升序
+                .orderByDesc(StoreBookingCategory::getCreatedTime); // 如果排序字段相同,按创建时间倒序
+        
+        // 执行分页查询
+        return this.page(page, wrapper);
+    }
+
+    @Override
     public boolean addCategory(StoreBookingCategory category) {
         log.info("StoreBookingCategoryServiceImpl.addCategory?category={}", category);
         

+ 30 - 0
alien-store/src/main/java/shop/alien/store/service/impl/StoreBookingTableServiceImpl.java

@@ -3,6 +3,8 @@ package shop.alien.store.service.impl;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.context.annotation.Lazy;
@@ -96,6 +98,34 @@ public class StoreBookingTableServiceImpl extends ServiceImpl<StoreBookingTableM
                 })
                 .collect(Collectors.toList());
     }
+
+    @Override
+    public IPage<StoreBookingTableVo> getTableListPage(Integer pageNum, Integer pageSize, Integer storeId, Integer categoryId) {
+        log.info("StoreBookingTableServiceImpl.getTableListPage?pageNum={}, pageSize={}, storeId={}, categoryId={}", 
+                pageNum, pageSize, storeId, categoryId);
+        
+        // 先查询所有数据(因为需要自定义排序)
+        List<StoreBookingTableVo> allList = getTableListWithCategoryName(storeId, categoryId);
+        
+        // 计算分页信息
+        int total = allList.size();
+        int start = (pageNum - 1) * pageSize;
+        int end = Math.min(start + pageSize, total);
+        
+        // 手动分页
+        List<StoreBookingTableVo> pageList;
+        if (start >= total) {
+            pageList = java.util.Collections.emptyList();
+        } else {
+            pageList = allList.subList(start, end);
+        }
+        
+        // 构建分页对象
+        IPage<StoreBookingTableVo> page = new Page<>(pageNum, pageSize, total);
+        page.setRecords(pageList);
+        
+        return page;
+    }
     
     /**
      * 解析桌号用于排序