当前位置: 首页 > article >正文

瑞吉外卖项目学习笔记(十一)分页查询订单列表

瑞吉外卖项目学习笔记(一)准备工作、员工登录功能实现
瑞吉外卖项目学习笔记(二)Swagger、logback、表单校验和参数打印功能的实现
瑞吉外卖项目学习笔记(三)过滤器实现登录校验、添加员工、分页查询员工信息
瑞吉外卖项目学习笔记(四)@TableField(fill = FieldFill.INSERT)公共字段填充、启用/禁用/修改员工信息
瑞吉外卖项目学习笔记(五)菜品/套餐分类的增删改查
瑞吉外卖项目学习笔记(六)分页查询菜品列表、实现图片上传和下载
瑞吉外卖项目学习笔记(七)新增菜品、(批量)删除菜品
瑞吉外卖项目学习笔记(八)修改菜品信息、批量启售/停售菜品
瑞吉外卖项目学习笔记(九)套餐列表分页查询、新增套餐、图片上传和下载
瑞吉外卖项目学习笔记(十)修改套餐、删除套餐、起售和停售套餐

文章目录

  • 11 订单管理
    • 11.1 需求分析
    • 11.2 数据准备
      • 11.2.1 创建订单表`t_orders`、订单明细表`t_order_detail`
      • 11.2.2 使用MyBatisPlus插件生成代码
      • 11.2.3 创建订单查询对象`OrderQuery`
    • 11.3 查询订单列表
      • 11.3.1 需求分析
      • 11.3.2 具体实现

11 订单管理

11.1 需求分析

在“订单明细”页面,实现以下功能:

  • 查询订单列表

11.2 数据准备

11.2.1 创建订单表t_orders、订单明细表t_order_detail

DROP TABLE IF EXISTS `t_orders`;
CREATE TABLE `t_orders` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `number` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '订单号',
  `status` int(11) NOT NULL DEFAULT '1' COMMENT '订单状态 1待付款,2待派送,3已派送,4已完成,5已取消',
  `user_id` bigint(20) NOT NULL COMMENT '下单用户',
  `address_book_id` bigint(20) NOT NULL COMMENT '地址id',
  `order_time` datetime NOT NULL COMMENT '下单时间',
  `checkout_time` datetime NOT NULL COMMENT '结账时间',
  `pay_method` int(11) NOT NULL DEFAULT '1' COMMENT '支付方式 1微信,2支付宝',
  `amount` decimal(10,2) NOT NULL COMMENT '实收金额',
  `remark` varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT '备注',
  `phone` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `address` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `user_name` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  `consignee` varchar(255) COLLATE utf8_bin DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='订单表';

INSERT INTO `t_orders` VALUES (1, '1415580119015145474', 1, 1, 1, '2024-07-15 15:52:55', '2024-07-15 15:53:25', 1, 10.23, '玩具', '18922106514', '广东深圳市南山区', '张三', '李四');


DROP TABLE IF EXISTS `t_order_detail`;
CREATE TABLE `t_order_detail` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '名字',
  `image` varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT '图片',
  `order_id` bigint(20) NOT NULL COMMENT '订单id',
  `dish_id` bigint(20) DEFAULT NULL COMMENT '菜品id',
  `setmeal_id` bigint(20) DEFAULT NULL COMMENT '套餐id',
  `dish_flavor` varchar(50) COLLATE utf8_bin DEFAULT NULL COMMENT '口味',
  `number` int(11) NOT NULL DEFAULT '1' COMMENT '数量',
  `amount` decimal(10,2) NOT NULL COMMENT '金额',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='订单明细表';

11.2.2 使用MyBatisPlus插件生成代码

11.2.3 创建订单查询对象OrderQuery

@Data
@EqualsAndHashCode(callSuper=false)
@NoArgsConstructor
@AllArgsConstructor
@ApiModel(value = "OrderQuery对象", description = "订单查询对象")
public class OrderQuery extends BaseQuery {

    @ApiModelProperty(value = "订单号")
    private String number;

    @ApiModelProperty(value = "订单开始时间")
    private String beginTime;

    @ApiModelProperty(value = "订单结束时间")
    private String endTime;

}

11.3 查询订单列表

11.3.1 需求分析

支持根据订单号、下单时间段进行分页查询:

功能请求方法请求路径请求参数
查询订单列表GET/orders/page?page=1&pageSize=10&number=123456&orderTimeStart=2025-01-04 06:00:00&orderTimeEnd=2025-01-04 12:00:00

11.3.2 具体实现

  • 1)在OrdersController类中添加page方法
// com.itweid.takeout.controller.OrdersController

@ApiOperation("分页查询订单")
@GetMapping("/page")
public BaseResult<Page<Orders>> page(OrderQuery orderQuery) {
    return ordersService.pageQueryOrders(orderQuery);
}
  • 2)在OrdersServiceImpl类中具体实现pageQueryOrders方法
// com.itweid.takeout.service.impl.OrdersServiceImpl

@Override
public BaseResult<Page<Orders>> pageQueryOrders(OrderQuery orderQuery) {
    // 处理时间参数
    LocalDateTime start = null;
    LocalDateTime end = null;
    if(StringUtils.isNotBlank(orderQuery.getBeginTime())) {
        start = LocalDateTime.parse(orderQuery.getBeginTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
    }
    if(StringUtils.isNotBlank(orderQuery.getEndTime())) {
        end = LocalDateTime.parse(orderQuery.getEndTime(), DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
    }
    // 分页查询订单
    Page<Orders> page = new Page<>(orderQuery.getPage(), orderQuery.getPageSize());
    lambdaQuery().eq(StringUtils.isNotBlank(orderQuery.getNumber()), Orders::getNumber, orderQuery.getNumber())
            .ge(start != null, Orders::getOrderTime, start)
            .le(end != null, Orders::getOrderTime, end)
            .page(page);
    return BaseResult.success(page);
}
  • 3)功能测试

至此,该项目的后台管理页面已经开发完了。接下来是手机端的开发。

本节完,更多内容查阅:瑞吉外卖项目实战


http://www.kler.cn/a/467487.html

相关文章:

  • vite6+vue3+ts+prettier+eslint9配置前端项目(后台管理系统、移动端H5项目通用配置)
  • Java 关键字【synchronized】
  • springboot远程链接spark
  • 东京大学联合Adobe提出基于指令的图像编辑模型InstructMove,可通过观察视频中的动作来实现基于指令的图像编辑。
  • 解决Linux切换用户后的命令提示符为-bashxx$的问题
  • 『SQLite』详解运算符
  • 学习随笔:word2vec在win11 vs2022下编译、测试运行
  • CSP初赛知识学习计划
  • Spring Cloud Security集成JWT 快速入门Demo
  • kafka使用以及基于zookeeper集群搭建集群环境
  • 投稿指南【NO.12_14】【极易投中】期刊投稿(毛纺科技)
  • 敏捷开发中,每日站会应该怎么开?
  • 公共数据授权运营系统建设手册(附下载)
  • R 语言科研绘图第 13 期 --- 柱状图-堆叠
  • 使用 TensorFlow 打造企业智能数据分析平台
  • 【Leetcode】732. 我的日程安排表 III
  • Qlib量化回测安装以及使用
  • TIM的中断
  • 通往O1开源之路
  • 基于Spring Boot智能无人仓库管理系统【附源码】
  • PADS Logic原理图中有很多页原理图,如何(怎样)删除其中一页或者多页
  • Linux之ARM(MX6U)裸机篇----8.主频和时钟配置实验
  • AWS EMR基础知识
  • 【ArcGISPro/GeoScenePro】裁剪和打包栅格数据
  • 1、数据结构之:树的相关定义和二叉树
  • Java接入阿里云日志服务