码道赋能:MerchantDine 商家点餐系统服务端开发(Spring Boot)

案例简介:本案例依托华为云码道快速完成商家点餐系统服务端项目开发,此项目是一套前后端分离的餐饮门店管理后端实战项目。项目划分普通顾客、商家管理员两类角色,完整覆盖商品管理、订单流转、用户权限管控、营业数据可视化统计全业务链路;后端提供标准化接口供前台点餐页面、商家管理后台(包含数据大屏)前端调用,依托真实订单数据自动聚合经营指标,形成完整餐饮业务数据闭环。

完整案例在线体验地址商家点餐系统

商家点餐系统案例基于 AI 生成搭建,每次生成的项目效果略有不同,如需完整体验该案例可在商家点餐系统源码处下载并体验。

一、概述

1.1 案例介绍

本案例依托华为云码道快速完成商家点餐系统服务端项目开发,此项目是一套前后端分离的餐饮门店管理后端实战项目。项目划分普通顾客、商家管理员两类角色,完整覆盖商品管理、订单流转、用户权限管控、营业数据可视化统计全业务链路;后端提供标准化接口供前台点餐页面、商家管理后台(包含数据大屏)前端调用,依托真实订单数据自动聚合经营指标,形成完整餐饮业务数据闭环。

案例技术选型:

  • 基于 Spring Boot + MyBatis-Plus + MySQL 技术栈搭建一套前后端分离的餐饮门店管理后端实战项目。

  • 华为云码道(CodeArts)代码智能体:一个理解项目需求,懂得编码之道,善用百器的实干派AI研发专家,开启你的编码自动驾驶模式。本案例中作为核心开发工具,通过智能体模式快速构建餐饮门店管理后端项目代码。

1.2 适用对象

  • 企业
  • 个人开发者
  • 高校学生

1.3 案例时间

本案例总时长预计120分钟。

1.4 案例流程

说明:

  1. 开发者安装华为云码道 CodeArts 代码智能体;
  2. JDK 8 安装配置;
  3. Maven 安装配置;
  4. 安装关系型数据库MySQL和数据库客户端管理工具DBeaver;
  5. 使用华为云码道自动生成商家点餐系统服务端项目代码并测试验证;

1.5 资源总览

本案例预计花费0元。

资源名称规格单价(元)
华为云码道(CodeArts)代码智能体体验版免费

二、基础环境与资源准备

2.1 AI IDE 华为云码道安装部署

访问此专属开通链接,免费开通华为云码道(CodeArts)代码智能体体验版,无需复杂配置:一键开通华为云码道体验版!

参考案例《AI IDE华为云码道(CodeArts)代码智能体安装部署》完成Windows版AI IDE华为云码道(CodeArts)代码智能体安装部署。

2.2 JDK 8 安装配置

Spring Boot 运行依赖 Java 环境,配置环境变量 JAVA_HOME。

本案例安装 JDK 8,适配 SpringBoot2。

使用快捷键 Ctrl+Shift+`,新建 AI IDE 终端,输入以下命令查看 Java 环境是否安装?

java -version

如果没有安装,请参考案例《SKILL快速构建你的Java、Python和Node.js开发环境》一键配置Java开发环境。

2.3 Maven 安装配置

Maven 是 Java 项目的依赖管理与项目构建工具,通过 pom.xml 自动下载所需 jar 包。它还能统一项目结构,提供编译、打包、清理等一键构建命令。

使用快捷键 Ctrl+Shift+`,新建 AI IDE 终端,输入以下命令查看 Maven 是否安装?

如果没有安装,请与码道对话,让码道帮助我们下载 Maven 并配置环境变量。

在码道对话框中,输入以下提示词:

请帮忙下载 Maven 并配置环境变量

开发者也可以手动下载 Maven并配置环境变量。

2.4 安装 MySQL 和 DBeaver

MySQL 是一个开源的关系型数据库管理系统(RDBMS),使用 SQL 语言进行数据操作。它以高性能、稳定可靠、易于使用著称,被广泛应用于网站、应用系统等场景。支持跨平台(Windows、Linux、macOS),提供多种存储引擎。

DBeaver 是一个通用的数据库客户端管理工具和 SQL 客户端。它支持几乎所有主流数据库(包括 MySQL、PostgreSQL、Oracle、SQL Server 等),提供图形化界面,方便用户进行连接管理、数据浏览、SQL 编辑、导入导出等操作。

参考案例《码道·印记:轻量级前后端分离的个人博客管理系统开发与云端部署》中的“二、基础环境与资源准备”,完成“2.4 安装关系型数据库 MySQL、2.5 安装数据库客户端管理工具 DBeaver”章节步骤。

备注:记录MySQL的安装路径、用户名和密码,留作后面步骤使用。

三、MerchantDine 商家点餐系统需求分析

3.1 项目概述

本项目是一套基于前后端分离架构的线上点餐营业与数据可视化管理系统,采用 Vue + SpringBoot 技术栈开发。系统整体业务闭环完整,包含普通用户消费端与管理员商家管理端两大体系。

普通用户可以查看分类、浏览商品、加入购物车、下单消费、查看自己的订单,自主产生真实业务数据。

管理员除了具备普通用户的基础权限外,还可以对商品、分类、订单进行后台管理,并通过数据可视化大屏实时查看门店经营数据,实现营业数据的自动化统计与可视化展示。

3.2 功能性需求分析

根据系统使用者身份,将需求分为普通用户需求管理员需求两大模块。

3.2.1 普通用户功能需求

普通用户作为系统数据的产生源头,主要负责完成前端消费行为,为后台统计与大屏展示提供真实数据支撑。具体需求如下:

  • 账号注册与登录:用户可自主注册账号、密码登录系统,系统默认分配普通用户权限。登录成功后可获取用户信息。

  • 商品浏览:支持查看全部上架商品,可按商品分类筛选,查看商品名称、单价、展示图等详情信息。

  • 购物车管理:支持将商品加入购物车,可修改购买数量、删除购物车商品,实时计算选购商品总价。

  • 在线下单结算:用户确认购物车商品后可提交订单,系统自动生成订单编号、计算订单总金额,完成下单操作。

  • 个人订单查询:用户可查看自己的全部历史订单,查看订单状态、消费金额、下单时间、购买商品明细。

3.2.2 管理员功能需求

管理员除了具备普通用户的基础权限外,还可以对商品、分类、订单进行后台管理,并通过数据可视化大屏实时查看门店经营数据,实现营业数据的自动化统计与可视化展示。具体需求如下:

  • 后台登录鉴权:管理员通过专属账号登录后台,拥有系统最高操作权限。

  • 分类管理:支持对商品分类进行新增、删除、查询,为商品归类提供基础数据。

  • 商品管理:可新增、编辑、删除商品,维护门店在售商品数据。可对商品进行分类筛选和商品搜索。

  • 订单管理:可查看系统所有用户产生的订单数据,支持订单查询筛选和订单删除,掌握门店全部营业订单情况。

  • 营业数据统计:系统自动聚合用户下单数据,完成今日营业额、今日订单量、本月营业额及商品总数。

  • 数据可视化大屏展示:通过 ECharts 实现营业数据可视化,包含当日24小时营业额趋势、各商品分类销量占比饼图、销量排行柱状图、最新订单列表,直观展示门店经营状况。

四、MerchantDine 商家点餐系统服务端需求文档

4.1 服务端技术栈要求

  • 核心框架
技术版本说明
Java1.8编程语言
Spring Boot2.7.18应用框架
  • Web开发
技术版本说明
Spring Boot Starter Web2.7.18Web 开发支持(Spring MVC)
  • 数据库访问
技术版本说明
MyBatis-Plus3.5.3.2ORM 框架,简化 MyBatis 开发
MyBatis-Plus Generator3.5.5代码生成器
MySQL Connector8.0.32MySQL 数据库驱动
Druid1.2.20数据库连接池
  • 代码工具
技术版本说明
Lombok/简化 Java 代码(自动生成 getter/setter 等)
Spring Boot Starter Test2.7.18代码测试

4.2 服务端项目技术架构

4.2.1 Entity / PO 实体(数据库映射对象)

含义:

PO = Persistent Object,持久化对象,和数据库表一一对应。

  • 一张表对应一个实体类;
  • 字段名、类型和表字段匹配;
  • 包含主键、普通字段、get/set、toString;
  • MyBatis/MyBatis-Plus 直接用它接收数据库查询结果。

作用:

承载数据库原始数据,只存数据库字段,不做业务加工。
示例:User.java 对应 user 用户表。

4.2.2 Mapper / DAO 数据访问层

含义:

DAO = Data Access Object,专门负责和数据库交互。

  • Mapper 接口:定义增删改查方法 selectById、insert、update;
  • Mapper.xml/ 注解:写 SQL;
  • 只做数据库操作,不能写业务逻辑、不能调用 Service。

作用:

封装所有 SQL,隔离数据库,上层不用关心数据库语法。

4.2.3 Service 业务逻辑层(核心)

分两层:Service 接口 + ServiceImpl 实现类。

含义:

处理项目所有业务规则、计算、校验、多表联动。

职责:

  • 调用 Mapper 操作数据库;
  • 复杂逻辑:事务、参数校验、数据转换、多表查询组装;
  • 统一事务控制(@Transactional);
  • 不能直接操作 Http 请求、不能接收前端参数。

分工:

  • Service 接口:定义对外提供的业务方法;
  • ServiceImpl:实现接口,注入 Mapper 写逻辑。

4.2.4 Controller 控制层(接口入口)

含义:

接收前端请求、响应数据,前后端交互桥梁。

职责:

  • 接收 GET/POST 请求参数(@RequestParam、@RequestBody);
  • 参数简单校验、封装请求 DTO;
  • 调用 Service 获取业务数据;
  • 封装返回 VO,统一格式返回给前端;
  • 处理 Http 状态码、请求头。

4.3 数据库设计(5张表)

4.3.1 用户表 user

存储系统所有账号,区分普通用户与管理员。

创建用户表 user 的SQL语句:

CREATE TABLE IF NOT EXISTS `user` (
    `id` BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID',
    `username` VARCHAR(50) NOT NULL UNIQUE COMMENT '用户名',
    `password` VARCHAR(255) NOT NULL COMMENT '密码(MD5加密)',
    `nickname` VARCHAR(50) COMMENT '昵称',
    `phone` VARCHAR(20) COMMENT '手机号',
    `role` INT NOT NULL DEFAULT 0 COMMENT '角色:0-普通用户,1-管理员',
    `status` INT NOT NULL DEFAULT 1 COMMENT '状态:0-禁用,1-启用',
    `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    INDEX idx_username (username)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';

4.3.2 商品分类表 category

统一管理商品品类,用于商品归类及数据统计。

创建商品分类表 category 的SQL语句:

CREATE TABLE IF NOT EXISTS `category` (
    `id` BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '分类ID',
    `name` VARCHAR(50) NOT NULL COMMENT '分类名称',
    `sort_order` INT NOT NULL DEFAULT 0 COMMENT '排序号',
    `status` INT NOT NULL DEFAULT 1 COMMENT '状态:0-禁用,1-启用',
    `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    INDEX idx_status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品分类表';

4.3.3 商品表 product

门店售卖商品,用户下单的基础数据源。

创建商品表 product 的SQL语句:

CREATE TABLE IF NOT EXISTS `product` (
    `id` BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '商品ID',
    `category_id` BIGINT NOT NULL COMMENT '分类ID',
    `name` VARCHAR(100) NOT NULL COMMENT '商品名称',
    `description` TEXT COMMENT '商品描述',
    `price` DECIMAL(10,2) NOT NULL COMMENT '商品价格',
    `image` VARCHAR(255) COMMENT '商品图片',
    `stock` INT NOT NULL DEFAULT 0 COMMENT '库存数量',
    `sales` INT NOT NULL DEFAULT 0 COMMENT '销量',
    `status` INT NOT NULL DEFAULT 1 COMMENT '状态:0-禁用,1-启用',
    `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    INDEX idx_category (category_id),
    INDEX idx_status (status),
    CONSTRAINT fk_product_category FOREIGN KEY (category_id) REFERENCES category(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表';

4.3.4 订单表 orders

订单主表,存储订单整体信息,大屏核心统计数据源。

创建订单表 orders 的SQL语句:

CREATE TABLE IF NOT EXISTS `orders` (
    `id` BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '订单ID',
    `order_no` VARCHAR(32) NOT NULL UNIQUE COMMENT '订单编号',
    `user_id` BIGINT NOT NULL COMMENT '用户ID',
    `total_amount` DECIMAL(10,2) NOT NULL COMMENT '订单金额',
    `status` INT NOT NULL DEFAULT 0 COMMENT '状态:0-待支付,1-已支付,2-已完成,3-已取消',
    `pay_time` DATETIME COMMENT '支付时间',
    `remark` VARCHAR(500) COMMENT '备注',
    `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    INDEX idx_user (user_id),
    INDEX idx_status (status),
    INDEX idx_order_no (order_no),
    CONSTRAINT fk_order_user FOREIGN KEY (user_id) REFERENCES user(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单表';

4.3.5 订单明细表 order_item

存储订单内具体商品,用于统计单品销量、商品排行。

创建订单明细表 order_item 的SQL语句:

CREATE TABLE IF NOT EXISTS `order_item` (
    `id` BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '订单项ID',
    `order_id` BIGINT NOT NULL COMMENT '订单ID',
    `product_id` BIGINT NOT NULL COMMENT '商品ID',
    `product_name` VARCHAR(100) NOT NULL COMMENT '商品名称',
    `product_price` DECIMAL(10,2) NOT NULL COMMENT '商品单价',
    `quantity` INT NOT NULL DEFAULT 1 COMMENT '数量',
    `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    INDEX idx_order (order_id),
    INDEX idx_product (product_id),
    CONSTRAINT fk_order_item_order FOREIGN KEY (order_id) REFERENCES orders(id),
    CONSTRAINT fk_order_item_product FOREIGN KEY (product_id) REFERENCES product(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单明细表';

4.3 核心功能模块需求

4.3.1 用户模块(2个API接口)

面向所有系统用户,实现用户登录、注册及获取用户信息等基础功能。密码密文存储(MD5 加密)。

  • 用户登录

URL: POST /api/user/login

描述:用户登录获取用户信息

请求体:

{
  "username": "string (用户名)",
  "password": "string (密码)"
}

响应体:

{
  "code": 200,
  "message": "登录成功",
  "data": {
    "id": 1,
    "username": "admin",
    "nickname": "管理员",
    "phone": "13800138000",
    "role": 1,
    "status": 1
  }
}
  • 用户注册

URL: POST /api/user/register

描述:用户注册

请求体:

{
  "username": "string (用户名)",
  "password": "string (密码)",
  "nickname": "string (昵称)",
  "phone": "string (手机号)"
}

响应体:

{
  "code": 200,
  "message": "注册成功",
  "data": {
    "id": 3,
    "username": "testuser",
    "nickname": "测试用户",
    "phone": "13800138000",
    "role": 0,
    "status": 1
  }
}

4.3.2 商品模块(4个API接口)

  • 获取所有商品

URL: GET /api/product

描述:获取所有商品列表

响应体:

{
    "code": 200,
    "message": "success",
    "data": [
        {
            "id": 1,
            "categoryId": 1,
            "categoryName": "热菜",
            "name": "麻辣牛肉",
            "description": "精选牛肉,麻辣鲜香",
            "price": 58.00,
            "image": "https://img0.baidu.com/it/u=4166123889,2287736904&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500",
            "stock": 100,
            "sales": 200,
            "status": 1,
            "createTime": "2026-06-17T11:22:15",
            "updateTime": "2026-06-17T11:22:15"
        }
    ]
}
  • 创建商品(仅管理员)

URL:POST /api/product

描述:创建新商品(管理员)

请求体:

{
  "name": "测试商品",
  "categoryId": 1,
  "price": 23,
  "description": "测试",
  "image": "https://img2.baidu.com/it3=500&h=500",
  "stock": 5,
  "status": 1
}

响应体:

{
  "id": 11,
  "categoryId": 1,
  "categoryName": null,
  "name": "测试商品",
  "description": "测试",
  "price": 23,
  "image": "https://img2.baidu.com/it3=500&h=500",
  "stock": 5,
  "sales": null,
  "status": 1,
  "createTime": null,
  "updateTime": null
}
  • 更新商品(仅管理员)

URL:PUT /api/product/{id}

描述:更新商品信息(管理员)

请求体:与创建商品接口的请求体一致

响应体:与创建商品接口的响应体一致

  • 删除商品(仅管理员)

URL:DELETE /api/product/{id}

描述:删除商品(管理员)

响应体:

{
  "code": 200,
  "message": "success",
  "data": "删除成功"
}

4.3.3 分类模块(3个API接口)

  • 获取所有分类

URL:GET /api/category

描述:获取所有分类列表

响应体:

{
  "code": 200,
  "message": "success",
  "data": [
    {
      "id": 1,
      "name": "热菜",
      "sortOrder": 1,
      "status": 1,
      "createTime": "2026-06-17T11:22:15",
      "updateTime": "2026-06-17T11:22:15"
    },
    {
      "id": 2,
      "name": "火锅",
      "sortOrder": 2,
      "status": 1,
      "createTime": "2026-06-17T11:22:15",
      "updateTime": "2026-06-17T11:22:15"
    },
    {
      "id": 3,
      "name": "烧烤",
      "sortOrder": 3,
      "status": 1,
      "createTime": "2026-06-17T11:22:15",
      "updateTime": "2026-06-17T11:22:15"
    },
    {
      "id": 4,
      "name": "主食",
      "sortOrder": 4,
      "status": 1,
      "createTime": "2026-06-17T11:22:15",
      "updateTime": "2026-06-17T11:22:15"
    },
    {
      "id": 5,
      "name": "饮品",
      "sortOrder": 5,
      "status": 1,
      "createTime": "2026-06-17T11:22:15",
      "updateTime": "2026-06-17T11:22:15"
    }
  ]
}
  • 创建分类

URL:POST /api/category

描述:创建新分类(管理员)

请求体:

{
  "name": "string (分类名称)",
  "sortOrder": "integer (排序号,可选,默认0)",
  "status": "integer (状态,可选,默认1)"
}

响应体:

{
  "code": 200,
  "message": "创建成功",
  "data": {
    "id": 6,
    "name": "新分类",
    "sortOrder": 0,
    "status": 1,
    "createTime": "2026-06-18T10:30:00",
    "updateTime": "2026-06-18T10:30:00"
  }
}
  • 删除分类

URL:DELETE /api/category/{id}

描述:删除分类(管理员)

响应体:

{
  "code": 200,
  "message": "success",
  "data": "删除成功"
}

4.3.4 订单模块(5个API接口)

  • 创建新订单

URL:POST /api/order

描述:创建新订单

请求体:

{
  "userId": "long (用户ID)",
  "totalAmount": "decimal (订单总金额)",
  "remark": "string (备注,可选)",
  "items": [
    {
      "productId": "long (商品ID)",
      "productName": "string (商品名称)",
      "productPrice": "decimal (商品单价)",
      "quantity": "integer (数量)"
    }
  ]
}

响应体:

{
  "code": 200,
  "message": "下单成功",
  "data": {
    "id": 1,
    "orderNo": "ORD2026061800001",
    "totalAmount": 156.00,
    "status": 0,
    "remark": "请尽快取餐",
    "createTime": "2026-06-18T10:30:00",
    "items": [
      {
        "productName": "麻辣牛肉",
        "productPrice": 58.00,
        "quantity": 2,
        "productImage": "https://example.com/image.jpg"
      }
    ]
  }
}
  • 获取用户订单列表

URL:GET /api/order/user/{userId}

描述:根据用户ID获取订单列表

响应体:

{
  "code": 200,
  "message": "success",
  "data": [
    {
      "id": 1,
      "orderNo": "ORD2026061800001",
      "userId": 1,
      "userName": "admin",
      "totalAmount": 156.00,
      "status": 1,
      "payTime": "2026-06-18T10:35:00",
      "remark": "请尽快取餐",
      "createTime": "2026-06-18T10:30:00",
      "updateTime": "2026-06-18T10:35:00",
      "items": [
        {
          "id": 1,
          "orderId": 1,
          "productId": 1,
          "productName": "麻辣牛肉",
          "productPrice": 58.00,
          "quantity": 2,
          "productImage": "https://example.com/image.jpg"
        }
      ]
    }
  ]
}
  • 获取订单详情

URL:GET /api/order/{orderId}

描述:根据订单ID获取订单详情

响应体:

{
  "code": 200,
  "message": "success",
  "data": {
    "id": 1,
    "orderNo": "ORD2026061800001",
    "totalAmount": 156.00,
    "status": 1,
    "remark": "请尽快取餐",
    "createTime": "2026-06-18T10:30:00",
    "items": [
      {
        "productName": "麻辣牛肉",
        "productPrice": 58.00,
        "quantity": 2,
        "productImage": "https://example.com/image.jpg"
      },
      {
        "productName": "可乐",
        "productPrice": 6.00,
        "quantity": 4,
        "productImage": "https://example.com/cola.jpg"
      }
    ]
  }
}
  • 获取所有订单

URL:GET /api/order

描述:获取所有订单列表(管理员)

响应体:

{
  "code": 200,
  "message": "success",
  "data": [
    {
      "id": 1,
      "orderNo": "ORD2026061800001",
      "userId": 1,
      "userName": "admin",
      "totalAmount": 156.00,
      "status": 1,
      "payTime": "2026-06-18T10:35:00",
      "remark": "请尽快取餐",
      "createTime": "2026-06-18T10:30:00",
      "updateTime": "2026-06-18T10:35:00",
      "items": [
        {
          "id": 1,
          "orderId": 1,
          "productId": 1,
          "productName": "麻辣牛肉",
          "productPrice": 58.00,
          "quantity": 2,
          "productImage": "https://example.com/image.jpg"
        },
        {
          "id": 2,
          "orderId": 1,
          "productId": 9,
          "productName": "可乐",
          "productPrice": 6.00,
          "quantity": 4,
          "productImage": "https://example.com/cola.jpg"
        }
      ]
    },
    {
      "id": 2,
      "orderNo": "ORD2026061800002",
      "userId": 2,
      "userName": "user",
      "totalAmount": 86.00,
      "status": 0,
      "payTime": null,
      "remark": "",
      "createTime": "2026-06-18T11:00:00",
      "updateTime": "2026-06-18T11:00:00",
      "items": [
        {
          "id": 3,
          "orderId": 2,
          "productId": 5,
          "productName": "羊肉串",
          "productPrice": 3.00,
          "quantity": 10,
          "productImage": "https://example.com/lamb.jpg"
        },
        {
          "id": 4,
          "orderId": 2,
          "productId": 7,
          "productName": "白米饭",
          "productPrice": 3.00,
          "quantity": 6,
          "productImage": "https://example.com/rice.jpg"
        }
      ]
    }
  ]
}
  • 删除订单

URL:DELETE /api/order/{orderId}

描述:删除订单(管理员)

响应体:

{
  "code": 200,
  "message": "success",
  "data": "删除成功"
}

4.3.5 数据大屏模块(1个API接口)

  • 获取大屏数据

基于订单、商品数据聚合统计,为前端ECharts大屏提供所有数据源,所有数据自动实时统计,无需人工录入。

需提供以下固定统计接口:

顶部指标数据:今日营业额、今日订单数、本月总营业额和商品数量。

24小时营业额趋势:按小时分组,返回当日每小时营业额,供折线图展示。

分类销量占比:按商品分类汇总销售额,供饼图展示。

商品销量TOP排行:统计单品销量,供柱状图展示。

最新订单列表:返回最新10条订单数据,供大屏滚动展示。

URL:GET /api/dashboard

描述:获取数据大屏所需的统计数据

响应体:

{
  "code": 200,
  "message": "success",
  "data": {
    "todayAmount": 1258.50,
    "todayOrders": 15,
    "monthAmount": 38650.00,
    "productCount": 10,
    "hourAmountList": [
      {
        "hour": 9,
        "amount": 120.00
      },
      {
        "hour": 10,
        "amount": 350.00
      },
      {
        "hour": 11,
        "amount": 580.00
      },
      {
        "hour": 12,
        "amount": 890.00
      },
      {
        "hour": 13,
        "amount": 720.00
      },
      {
        "hour": 14,
        "amount": 280.00
      },
      {
        "hour": 15,
        "amount": 320.00
      },
      {
        "hour": 16,
        "amount": 450.00
      },
      {
        "hour": 17,
        "amount": 680.00
      },
      {
        "hour": 18,
        "amount": 950.00
      },
      {
        "hour": 19,
        "amount": 1100.00
      },
      {
        "hour": 20,
        "amount": 850.00
      }
    ],
    "categorySalesList": [
      {
        "categoryName": "热菜",
        "quantity": 380
      },
      {
        "categoryName": "火锅",
        "quantity": 350
      },
      {
        "categoryName": "烧烤",
        "quantity": 815
      },
      {
        "categoryName": "主食",
        "quantity": 1201
      },
      {
        "categoryName": "饮品",
        "quantity": 1153
      }
    ],
    "productSalesList": [
      {
        "productName": "白米饭",
        "quantity": 801
      },
      {
        "productName": "可乐",
        "quantity": 603
      },
      {
        "productName": "雪碧",
        "quantity": 550
      },
      {
        "productName": "羊肉串",
        "quantity": 515
      },
      {
        "productName": "蛋炒饭",
        "quantity": 400
      }
    ],
    "latestOrderList": [
      {
        "orderNo": "ORD2026061800015",
        "totalAmount": 156.00,
        "createTime": "2026-06-18 19:30:00",
        "nickname": "张三",
        "status": 1
      },
      {
        "orderNo": "ORD2026061800014",
        "totalAmount": 86.00,
        "createTime": "2026-06-18 19:25:00",
        "nickname": "李四",
        "status": 0
      },
      {
        "orderNo": "ORD2026061800013",
        "totalAmount": 234.00,
        "createTime": "2026-06-18 19:20:00",
        "nickname": "王五",
        "status": 2
      }
    ]
  }
}

根据以上项目需求文档生成接口文档: 商家点餐可视化系统-API接口文档

五、MerchantDine 商家点餐系统服务端代码实战

5.1 码道生成基础架构代码

在码道对话框中,输入以下提示词:

在当前目录下,基于Spring Boot 2.7.18 +MySQL 8.0+ Java 1.8 + MyBatis-Plus 构建商家点餐系统的基础项目代码。

根据项目目录下的BuildingDatabasesAndTables.sql文件,完成建表建库。

本地MySQL安装路径:D:\Program Files\mysql-8.0.46-winx64\mysql-8.0.46-winx64\bin
用户名:mysql_username
密码:mysql_password

建库建表完成后,根据SQL文件中的建表语句,完成用户表 user、商品分类表 category、商品表 product、订单表 orders、订单明细表 order_item 对应实体类的封装,以及相应Mapper层、Service层、Controller层的代码编写。

注意:

  • 建库建表文件请参考: BuildingDatabasesAndTables.sql 文件。
  • MySQL安装路径:替换成您本地MySQL安装路径。
  • mysql_username:替换成步骤“2.4 安装 MySQL 和 DBeaver”中获取的MySQL的用户名。
  • mysql_password:替换成步骤“2.4 安装 MySQL 和 DBeaver”中获取的MySQL的密码。

几分钟后,华为云码道帮助我们生成了基础架构代码。

5.2 MySQL 数据库配置

在application.yml文件中配置MySQL数据库:

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/merchantdine_db?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    username: mysql_username
    password: mysql_password

注意:

  • mysql_username:替换成步骤“2.4 安装 MySQL 和 DBeaver”中获取的MySQL的用户名。
  • mysql_password:替换成步骤“2.4 安装 MySQL 和 DBeaver”中获取的MySQL的密码。

配置完成后,重新启动spring boot项目:

打开 DBeaver 验证数据库是否连接成功?

数据库已连接,数据库和表已创建完成。

下面进行数据初始化。

在码道对话框中,输入以下提示词:

数据库和表已经创建完成,请根据initData.sql文件进行数据初始化

注意:

打开 DBeaver 验证数据是否初始化成功?

数据初始化完成:用户表2条、分类表5条、商品表10条,均已成功插入。

5.3 核心功能代码开发

将生成的 商家点餐可视化系统-API接口文档拷贝至项目目录下。

5.3.1 用户模块功能开发

在码道对话框中,输入以下提示词:

请根据当前项目目录下的商家点餐可视化系统-API接口文档中的“二、用户接口 /api/user”完成用户模块功能开发。
用户输入的密码需MD5加密存入数据库。

测试验证登录注册功能。

在码道对话框中,输入以下提示词:

测试注册登录接口API功能,用户名:user1,密码:123456

5.3.2 商品模块功能开发

在码道对话框中,输入以下提示词:

请根据当前项目目录下的商家点餐可视化系统-API接口文档中的“三、商品接口 /api/product”,完成获取所有商品、创建商品、更新商品及删除商品功能开发。

测试验证获取所有商品、创建商品、更新商品及删除商品功能。

在码道对话框中,输入以下提示词:

请帮忙测试验证获取所有商品、创建商品、更新商品及删除商品接口功能。

注意:创建商品、更新商品及删除商品功能,仅管理员可以调用。

5.3.3 分类模块功能开发

在码道对话框中,输入以下提示词:

请根据当前项目目录下的商家点餐可视化系统-API接口文档中的“四、分类接口 /api/category”,完成获取所有分类、创建分类、及删除分类功能开发。

测试验证获取所有分类、创建分类、及删除分类功能。

在码道对话框中,输入以下提示词:

请帮忙测试验证获取所有分类、创建分类、及删除分类功能。

注意:创建分类、删除分类功能,仅管理员可以调用。

5.3.4 订单模块功能开发

在码道对话框中,输入以下提示词:

请根据当前项目目录下的商家点餐可视化系统-API接口文档中的“五、订单接口 /api/order”,完成创建订单、获取用户订单列表、获取订单详情、获取所有订单、删除订单功能开发。

测试验证创建订单、获取用户订单列表、获取订单详情、获取所有订单、删除订单功能。

在码道对话框中,输入以下提示词:

请帮忙测试验证创建订单、获取用户订单列表、获取订单详情、获取所有订单、删除订单功能。

注意:获取所有订单、删除订单功能,仅管理员可以调用。

备注:创建订单返回 status 默认为1(已支付状态)。

5.3.5 数据大屏模块功能开发

在码道对话框中,输入以下提示词:

请根据当前项目目录下的商家点餐可视化系统-API接口文档中的“六、数据大屏接口 /api/dashboard”,完成获取大屏数据功能开发。

测试验证获取大屏数据功能。

在码道对话框中,输入以下提示词:

请帮忙测试验证获取大屏数据功能。

注意:获取大屏数据仅管理员可以调用。

MerchantDine 商家点餐系统服务端代码已全部开发完成。

为了更好的区分后端和前端,我们将已完成的服务端代码存至MerchantDineServer文件夹中,并创建前端文件夹MerchantDineWeb

至此,码道赋能:MerchantDine 商家点餐系统服务端开发(Spring Boot)的案例已全部完成。

商家点餐系统前端开发,请参考案例《码道赋能:MerchantDine 商家点餐系统前端开发(Vue)》

六、反馈改进建议

如您在案例实操过程中遇到问题或有改进建议,可以到论坛帖评论区反馈即可,我们会及时响应处理,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值