苍穹外卖——准备工作

模块介绍

后端的工程基于Maven进行项目构建,并且进行分模块开发,我们创建四个模块:

  • sky-take-out:maven父工程,统一管理依赖版本,聚合其他子模块
  • sky-common:子模块,存放公共类,例如:工具类、常量类、异常类等
  • sky-pojo:子模块,存放实体类、VO、DTO等
    • Entity: 实体,通常和数据库中的表对应
    • DTO: 数据传输对象,通常用于程序中各层之间传递数据
    • VO: 视图对象,为前端展示数据提供的对象
    • POJO: 普通Java对象,只有属性和对应的getter和setter
  • sky-server:子模块,后端服务,存放配置文件、Controller、Service、Mapper等

后端基础工程http://通过网盘分享的文件:sky-take-out 链接: https://pan.baidu.com/s/1F-iz8Oh6P1h8v_GF0tRO-w 提取码: null

Git环境搭建

首先使用Git进行项目代码的控制。不需要Git管理的文件需要在.gitignore文件中标识:

**/target/
.idea
*.iml
*.class
*Test.java
**/test/

创建本地仓库

点击VCS-Create Git Repository-选中根目录

点击左侧的commit-全选,在下方的Amend框添加描述信息,点击commit提交到本地仓库。

创建远程仓库

我们选择Gitee上创建仓库并复制地址:

回到idea点击Git-push,并将地址粘贴到对应位置,点击push即可。

如果代码出现在Gitee仓库则创建完成。

数据库环境搭建

sql 复制代码
CREATE DATABASE IF NOT EXISTS `sky_take_out`;
USE `sky_take_out`;

DROP TABLE IF EXISTS `address_book`;
CREATE TABLE `address_book`
(
    `id`            bigint                       NOT NULL AUTO_INCREMENT COMMENT '主键',
    `user_id`       bigint                       NOT NULL COMMENT '用户id',
    `consignee`     varchar(50) COLLATE utf8_bin          DEFAULT NULL COMMENT '收货人',
    `sex`           varchar(2) COLLATE utf8_bin           DEFAULT NULL COMMENT '性别',
    `phone`         varchar(11) COLLATE utf8_bin NOT NULL COMMENT '手机号',
    `province_code` varchar(12) CHARACTER SET utf8mb4     DEFAULT NULL COMMENT '省级区划编号',
    `province_name` varchar(32) CHARACTER SET utf8mb4     DEFAULT NULL COMMENT '省级名称',
    `city_code`     varchar(12) CHARACTER SET utf8mb4     DEFAULT NULL COMMENT '市级区划编号',
    `city_name`     varchar(32) CHARACTER SET utf8mb4     DEFAULT NULL COMMENT '市级名称',
    `district_code` varchar(12) CHARACTER SET utf8mb4     DEFAULT NULL COMMENT '区级区划编号',
    `district_name` varchar(32) CHARACTER SET utf8mb4     DEFAULT NULL COMMENT '区级名称',
    `detail`        varchar(200) CHARACTER SET utf8mb4    DEFAULT NULL COMMENT '详细地址',
    `label`         varchar(100) CHARACTER SET utf8mb4    DEFAULT NULL COMMENT '标签',
    `is_default`    tinyint(1)                   NOT NULL DEFAULT '0' COMMENT '默认 0 否 1是',
    PRIMARY KEY (`id`)
) ENGINE = InnoDB
  AUTO_INCREMENT = 2
  DEFAULT CHARSET = utf8mb3
  COLLATE = utf8_bin COMMENT ='地址簿';

DROP TABLE IF EXISTS `category`;
CREATE TABLE `category`
(
    `id`          bigint                       NOT NULL AUTO_INCREMENT COMMENT '主键',
    `type`        int                                   DEFAULT NULL COMMENT '类型   1 菜品分类 2 套餐分类',
    `name`        varchar(32) COLLATE utf8_bin NOT NULL COMMENT '分类名称',
    `sort`        int                          NOT NULL DEFAULT '0' COMMENT '顺序',
    `status`      int                                   DEFAULT NULL COMMENT '分类状态 0:禁用,1:启用',
    `create_time` datetime                              DEFAULT NULL COMMENT '创建时间',
    `update_time` datetime                              DEFAULT NULL COMMENT '更新时间',
    `create_user` bigint                                DEFAULT NULL COMMENT '创建人',
    `update_user` bigint                                DEFAULT NULL COMMENT '修改人',
    PRIMARY KEY (`id`),
    UNIQUE KEY `idx_category_name` (`name`)
) ENGINE = InnoDB
  AUTO_INCREMENT = 23
  DEFAULT CHARSET = utf8mb3
  COLLATE = utf8_bin COMMENT ='菜品及套餐分类';

INSERT INTO `category`
VALUES (11, 1, '酒水饮料', 10, 1, '2022-06-09 22:09:18', '2022-06-09 22:09:18', 1, 1);
INSERT INTO `category`
VALUES (12, 1, '传统主食', 9, 1, '2022-06-09 22:09:32', '2022-06-09 22:18:53', 1, 1);
INSERT INTO `category`
VALUES (13, 2, '人气套餐', 12, 1, '2022-06-09 22:11:38', '2022-06-10 11:04:40', 1, 1);
INSERT INTO `category`
VALUES (15, 2, '商务套餐', 13, 1, '2022-06-09 22:14:10', '2022-06-10 11:04:48', 1, 1);
INSERT INTO `category`
VALUES (16, 1, '蜀味烤鱼', 4, 1, '2022-06-09 22:15:37', '2022-08-31 14:27:25', 1, 1);
INSERT INTO `category`
VALUES (17, 1, '蜀味牛蛙', 5, 1, '2022-06-09 22:16:14', '2022-08-31 14:39:44', 1, 1);
INSERT INTO `category`
VALUES (18, 1, '特色蒸菜', 6, 1, '2022-06-09 22:17:42', '2022-06-09 22:17:42', 1, 1);
INSERT INTO `category`
VALUES (19, 1, '新鲜时蔬', 7, 1, '2022-06-09 22:18:12', '2022-06-09 22:18:28', 1, 1);
INSERT INTO `category`
VALUES (20, 1, '水煮鱼', 8, 1, '2022-06-09 22:22:29', '2022-06-09 22:23:45', 1, 1);
INSERT INTO `category`
VALUES (21, 1, '汤类', 11, 1, '2022-06-10 10:51:47', '2022-06-10 10:51:47', 1, 1);

DROP TABLE IF EXISTS `dish`;
CREATE TABLE `dish`
(
    `id`          bigint                       NOT NULL AUTO_INCREMENT COMMENT '主键',
    `name`        varchar(32) COLLATE utf8_bin NOT NULL COMMENT '菜品名称',
    `category_id` bigint                       NOT NULL COMMENT '菜品分类id',
    `price`       decimal(10, 2)                DEFAULT NULL COMMENT '菜品价格',
    `image`       varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '图片',
    `description` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '描述信息',
    `status`      int                           DEFAULT '1' COMMENT '0 停售 1 起售',
    `create_time` datetime                      DEFAULT NULL COMMENT '创建时间',
    `update_time` datetime                      DEFAULT NULL COMMENT '更新时间',
    `create_user` bigint                        DEFAULT NULL COMMENT '创建人',
    `update_user` bigint                        DEFAULT NULL COMMENT '修改人',
    PRIMARY KEY (`id`),
    UNIQUE KEY `idx_dish_name` (`name`)
) ENGINE = InnoDB
  AUTO_INCREMENT = 70
  DEFAULT CHARSET = utf8mb3
  COLLATE = utf8_bin COMMENT ='菜品';

INSERT INTO `dish`
VALUES (46, '王老吉', 11, 6.00,
        'https://sky-itcast.oss-cn-beijing.aliyuncs.com/41bfcacf-7ad4-4927-8b26-df366553a94c.png', '', 1,
        '2022-06-09 22:40:47', '2022-06-09 22:40:47', 1, 1);
INSERT INTO `dish`
VALUES (47, '北冰洋', 11, 4.00,
        'https://sky-itcast.oss-cn-beijing.aliyuncs.com/4451d4be-89a2-4939-9c69-3a87151cb979.png', '还是小时候的味道',
        1, '2022-06-10 09:18:49', '2022-06-10 09:18:49', 1, 1);
INSERT INTO `dish`
VALUES (48, '雪花啤酒', 11, 4.00,
        'https://sky-itcast.oss-cn-beijing.aliyuncs.com/bf8cbfc1-04d2-40e8-9826-061ee41ab87c.png', '', 1,
        '2022-06-10 09:22:54', '2022-06-10 09:22:54', 1, 1);
INSERT INTO `dish`
VALUES (49, '米饭', 12, 2.00, 'https://sky-itcast.oss-cn-beijing.aliyuncs.com/76752350-2121-44d2-b477-10791c23a8ec.png',
        '精选五常大米', 1, '2022-06-10 09:30:17', '2022-06-10 09:30:17', 1, 1);
INSERT INTO `dish`
VALUES (50, '馒头', 12, 1.00, 'https://sky-itcast.oss-cn-beijing.aliyuncs.com/475cc599-8661-4899-8f9e-121dd8ef7d02.png',
        '优质面粉', 1, '2022-06-10 09:34:28', '2022-06-10 09:34:28', 1, 1);
INSERT INTO `dish`
VALUES (51, '老坛酸菜鱼', 20, 56.00,
        'https://sky-itcast.oss-cn-beijing.aliyuncs.com/4a9cefba-6a74-467e-9fde-6e687ea725d7.png', '原料:汤,草鱼,酸菜',
        1, '2022-06-10 09:40:51', '2022-06-10 09:40:51', 1, 1);
INSERT INTO `dish`
VALUES (52, '经典酸菜鮰鱼', 20, 66.00,
        'https://sky-itcast.oss-cn-beijing.aliyuncs.com/5260ff39-986c-4a97-8850-2ec8c7583efc.png',
        '原料:酸菜,江团,鮰鱼', 1, '2022-06-10 09:46:02', '2022-06-10 09:46:02', 1, 1);
INSERT INTO `dish`
VALUES (53, '蜀味水煮草鱼', 20, 38.00,
        'https://sky-itcast.oss-cn-beijing.aliyuncs.com/a6953d5a-4c18-4b30-9319-4926ee77261f.png', '原料:草鱼,汤', 1,
        '2022-06-10 09:48:37', '2022-06-10 09:48:37', 1, 1);
INSERT INTO `dish`
VALUES (54, '清炒小油菜', 19, 18.00,
        'https://sky-itcast.oss-cn-beijing.aliyuncs.com/3613d38e-5614-41c2-90ed-ff175bf50716.png', '原料:小油菜', 1,
        '2022-06-10 09:51:46', '2022-06-10 09:51:46', 1, 1);
INSERT INTO `dish`
VALUES (55, '蒜蓉娃娃菜', 19, 18.00,
        'https://sky-itcast.oss-cn-beijing.aliyuncs.com/4879ed66-3860-4b28-ba14-306ac025fdec.png', '原料:蒜,娃娃菜', 1,
        '2022-06-10 09:53:37', '2022-06-10 09:53:37', 1, 1);
INSERT INTO `dish`
VALUES (56, '清炒西兰花', 19, 18.00,
        'https://sky-itcast.oss-cn-beijing.aliyuncs.com/e9ec4ba4-4b22-4fc8-9be0-4946e6aeb937.png', '原料:西兰花', 1,
        '2022-06-10 09:55:44', '2022-06-10 09:55:44', 1, 1);
INSERT INTO `dish`
VALUES (57, '炝炒圆白菜', 19, 18.00,
        'https://sky-itcast.oss-cn-beijing.aliyuncs.com/22f59feb-0d44-430e-a6cd-6a49f27453ca.png', '原料:圆白菜', 1,
        '2022-06-10 09:58:35', '2022-06-10 09:58:35', 1, 1);
INSERT INTO `dish`
VALUES (58, '清蒸鲈鱼', 18, 98.00,
        'https://sky-itcast.oss-cn-beijing.aliyuncs.com/c18b5c67-3b71-466c-a75a-e63c6449f21c.png', '原料:鲈鱼', 1,
        '2022-06-10 10:12:28', '2022-06-10 10:12:28', 1, 1);
INSERT INTO `dish`
VALUES (59, '东坡肘子', 18, 138.00,
        'https://sky-itcast.oss-cn-beijing.aliyuncs.com/a80a4b8c-c93e-4f43-ac8a-856b0d5cc451.png', '原料:猪肘棒', 1,
        '2022-06-10 10:24:03', '2022-06-10 10:24:03', 1, 1);
INSERT INTO `dish`
VALUES (60, '梅菜扣肉', 18, 58.00,
        'https://sky-itcast.oss-cn-beijing.aliyuncs.com/6080b118-e30a-4577-aab4-45042e3f88be.png', '原料:猪肉,梅菜', 1,
        '2022-06-10 10:26:03', '2022-06-10 10:26:03', 1, 1);
INSERT INTO `dish`
VALUES (61, '剁椒鱼头', 18, 66.00,
        'https://sky-itcast.oss-cn-beijing.aliyuncs.com/13da832f-ef2c-484d-8370-5934a1045a06.png', '原料:鲢鱼,剁椒', 1,
        '2022-06-10 10:28:54', '2022-06-10 10:28:54', 1, 1);
INSERT INTO `dish`
VALUES (62, '金汤酸菜牛蛙', 17, 88.00,
        'https://sky-itcast.oss-cn-beijing.aliyuncs.com/7694a5d8-7938-4e9d-8b9e-2075983a2e38.png', '原料:鲜活牛蛙,酸菜',
        1, '2022-06-10 10:33:05', '2022-06-10 10:33:05', 1, 1);
INSERT INTO `dish`
VALUES (63, '香锅牛蛙', 17, 88.00,
        'https://sky-itcast.oss-cn-beijing.aliyuncs.com/f5ac8455-4793-450c-97ba-173795c34626.png',
        '配料:鲜活牛蛙,莲藕,青笋', 1, '2022-06-10 10:35:40', '2022-06-10 10:35:40', 1, 1);
INSERT INTO `dish`
VALUES (64, '馋嘴牛蛙', 17, 88.00,
        'https://sky-itcast.oss-cn-beijing.aliyuncs.com/7a55b845-1f2b-41fa-9486-76d187ee9ee1.png',
        '配料:鲜活牛蛙,丝瓜,黄豆芽', 1, '2022-06-10 10:37:52', '2022-06-10 10:37:52', 1, 1);
INSERT INTO `dish`
VALUES (65, '草鱼2斤', 16, 68.00,
        'https://sky-itcast.oss-cn-beijing.aliyuncs.com/b544d3ba-a1ae-4d20-a860-81cb5dec9e03.png',
        '原料:草鱼,黄豆芽,莲藕', 1, '2022-06-10 10:41:08', '2022-06-10 10:41:08', 1, 1);
INSERT INTO `dish`
VALUES (66, '江团鱼2斤', 16, 119.00,
        'https://sky-itcast.oss-cn-beijing.aliyuncs.com/a101a1e9-8f8b-47b2-afa4-1abd47ea0a87.png',
        '配料:江团鱼,黄豆芽,莲藕', 1, '2022-06-10 10:42:42', '2022-06-10 10:42:42', 1, 1);
INSERT INTO `dish`
VALUES (67, '鮰鱼2斤', 16, 72.00,
        'https://sky-itcast.oss-cn-beijing.aliyuncs.com/8cfcc576-4b66-4a09-ac68-ad5b273c2590.png',
        '原料:鮰鱼,黄豆芽,莲藕', 1, '2022-06-10 10:43:56', '2022-06-10 10:43:56', 1, 1);
INSERT INTO `dish`
VALUES (68, '鸡蛋汤', 21, 4.00,
        'https://sky-itcast.oss-cn-beijing.aliyuncs.com/c09a0ee8-9d19-428d-81b9-746221824113.png', '配料:鸡蛋,紫菜', 1,
        '2022-06-10 10:54:25', '2022-06-10 10:54:25', 1, 1);
INSERT INTO `dish`
VALUES (69, '平菇豆腐汤', 21, 6.00,
        'https://sky-itcast.oss-cn-beijing.aliyuncs.com/16d0a3d6-2253-4cfc-9b49-bf7bd9eb2ad2.png', '配料:豆腐,平菇', 1,
        '2022-06-10 10:55:02', '2022-06-10 10:55:02', 1, 1);

DROP TABLE IF EXISTS `dish_flavor`;
CREATE TABLE `dish_flavor`
(
    `id`      bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
    `dish_id` bigint NOT NULL COMMENT '菜品',
    `name`    varchar(32) COLLATE utf8_bin  DEFAULT NULL COMMENT '口味名称',
    `value`   varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '口味数据list',
    PRIMARY KEY (`id`)
) ENGINE = InnoDB
  AUTO_INCREMENT = 104
  DEFAULT CHARSET = utf8mb3
  COLLATE = utf8_bin COMMENT ='菜品口味关系表';

INSERT INTO `dish_flavor`
VALUES (40, 10, '甜味', '[\"无糖\",\"少糖\",\"半糖\",\"多糖\",\"全糖\"]');
INSERT INTO `dish_flavor`
VALUES (41, 7, '忌口', '[\"不要葱\",\"不要蒜\",\"不要香菜\",\"不要辣\"]');
INSERT INTO `dish_flavor`
VALUES (42, 7, '温度', '[\"热饮\",\"常温\",\"去冰\",\"少冰\",\"多冰\"]');
INSERT INTO `dish_flavor`
VALUES (45, 6, '忌口', '[\"不要葱\",\"不要蒜\",\"不要香菜\",\"不要辣\"]');
INSERT INTO `dish_flavor`
VALUES (46, 6, '辣度', '[\"不辣\",\"微辣\",\"中辣\",\"重辣\"]');
INSERT INTO `dish_flavor`
VALUES (47, 5, '辣度', '[\"不辣\",\"微辣\",\"中辣\",\"重辣\"]');
INSERT INTO `dish_flavor`
VALUES (48, 5, '甜味', '[\"无糖\",\"少糖\",\"半糖\",\"多糖\",\"全糖\"]');
INSERT INTO `dish_flavor`
VALUES (49, 2, '甜味', '[\"无糖\",\"少糖\",\"半糖\",\"多糖\",\"全糖\"]');
INSERT INTO `dish_flavor`
VALUES (50, 4, '甜味', '[\"无糖\",\"少糖\",\"半糖\",\"多糖\",\"全糖\"]');
INSERT INTO `dish_flavor`
VALUES (51, 3, '甜味', '[\"无糖\",\"少糖\",\"半糖\",\"多糖\",\"全糖\"]');
INSERT INTO `dish_flavor`
VALUES (52, 3, '忌口', '[\"不要葱\",\"不要蒜\",\"不要香菜\",\"不要辣\"]');
INSERT INTO `dish_flavor`
VALUES (86, 52, '忌口', '[\"不要葱\",\"不要蒜\",\"不要香菜\",\"不要辣\"]');
INSERT INTO `dish_flavor`
VALUES (87, 52, '辣度', '[\"不辣\",\"微辣\",\"中辣\",\"重辣\"]');
INSERT INTO `dish_flavor`
VALUES (88, 51, '忌口', '[\"不要葱\",\"不要蒜\",\"不要香菜\",\"不要辣\"]');
INSERT INTO `dish_flavor`
VALUES (89, 51, '辣度', '[\"不辣\",\"微辣\",\"中辣\",\"重辣\"]');
INSERT INTO `dish_flavor`
VALUES (92, 53, '忌口', '[\"不要葱\",\"不要蒜\",\"不要香菜\",\"不要辣\"]');
INSERT INTO `dish_flavor`
VALUES (93, 53, '辣度', '[\"不辣\",\"微辣\",\"中辣\",\"重辣\"]');
INSERT INTO `dish_flavor`
VALUES (94, 54, '忌口', '[\"不要葱\",\"不要蒜\",\"不要香菜\"]');
INSERT INTO `dish_flavor`
VALUES (95, 56, '忌口', '[\"不要葱\",\"不要蒜\",\"不要香菜\",\"不要辣\"]');
INSERT INTO `dish_flavor`
VALUES (96, 57, '忌口', '[\"不要葱\",\"不要蒜\",\"不要香菜\",\"不要辣\"]');
INSERT INTO `dish_flavor`
VALUES (97, 60, '忌口', '[\"不要葱\",\"不要蒜\",\"不要香菜\",\"不要辣\"]');
INSERT INTO `dish_flavor`
VALUES (101, 66, '辣度', '[\"不辣\",\"微辣\",\"中辣\",\"重辣\"]');
INSERT INTO `dish_flavor`
VALUES (102, 67, '辣度', '[\"不辣\",\"微辣\",\"中辣\",\"重辣\"]');
INSERT INTO `dish_flavor`
VALUES (103, 65, '辣度', '[\"不辣\",\"微辣\",\"中辣\",\"重辣\"]');

DROP TABLE IF EXISTS `employee`;
CREATE TABLE `employee`
(
    `id`          bigint                       NOT NULL AUTO_INCREMENT COMMENT '主键',
    `name`        varchar(32) COLLATE utf8_bin NOT NULL COMMENT '姓名',
    `username`    varchar(32) COLLATE utf8_bin NOT NULL COMMENT '用户名',
    `password`    varchar(64) COLLATE utf8_bin NOT NULL COMMENT '密码',
    `phone`       varchar(11) COLLATE utf8_bin NOT NULL COMMENT '手机号',
    `sex`         varchar(2) COLLATE utf8_bin  NOT NULL COMMENT '性别',
    `id_number`   varchar(18) COLLATE utf8_bin NOT NULL COMMENT '身份证号',
    `status`      int                          NOT NULL DEFAULT '1' COMMENT '状态 0:禁用,1:启用',
    `create_time` datetime                              DEFAULT NULL COMMENT '创建时间',
    `update_time` datetime                              DEFAULT NULL COMMENT '更新时间',
    `create_user` bigint                                DEFAULT NULL COMMENT '创建人',
    `update_user` bigint                                DEFAULT NULL COMMENT '修改人',
    PRIMARY KEY (`id`),
    UNIQUE KEY `idx_username` (`username`)
) ENGINE = InnoDB
  AUTO_INCREMENT = 2
  DEFAULT CHARSET = utf8mb3
  COLLATE = utf8_bin COMMENT ='员工信息';

INSERT INTO `employee`
VALUES (1, '管理员', 'admin', '123456', '13812312312', '1', '110101199001010047', 1, '2022-02-15 15:51:20',
        '2022-02-17 09:16:20', 10, 1);

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

DROP TABLE IF EXISTS `orders`;
CREATE TABLE `orders`
(
    `id`                      bigint         NOT NULL AUTO_INCREMENT COMMENT '主键',
    `number`                  varchar(50) COLLATE utf8_bin  DEFAULT NULL COMMENT '订单号',
    `status`                  int            NOT NULL       DEFAULT '1' COMMENT '订单状态 1待付款 2待接单 3已接单 4派送中 5已完成 6已取消 7退款',
    `user_id`                 bigint         NOT NULL COMMENT '下单用户',
    `address_book_id`         bigint         NOT NULL COMMENT '地址id',
    `order_time`              datetime       NOT NULL COMMENT '下单时间',
    `checkout_time`           datetime                      DEFAULT NULL COMMENT '结账时间',
    `pay_method`              int            NOT NULL       DEFAULT '1' COMMENT '支付方式 1微信,2支付宝',
    `pay_status`              tinyint        NOT NULL       DEFAULT '0' COMMENT '支付状态 0未支付 1已支付 2退款',
    `amount`                  decimal(10, 2) NOT NULL COMMENT '实收金额',
    `remark`                  varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT '备注',
    `phone`                   varchar(11) COLLATE utf8_bin  DEFAULT NULL COMMENT '手机号',
    `address`                 varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '地址',
    `user_name`               varchar(32) COLLATE utf8_bin  DEFAULT NULL COMMENT '用户名称',
    `consignee`               varchar(32) COLLATE utf8_bin  DEFAULT NULL COMMENT '收货人',
    `cancel_reason`           varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '订单取消原因',
    `rejection_reason`        varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '订单拒绝原因',
    `cancel_time`             datetime                      DEFAULT NULL COMMENT '订单取消时间',
    `estimated_delivery_time` datetime                      DEFAULT NULL COMMENT '预计送达时间',
    `delivery_status`         tinyint(1)     NOT NULL       DEFAULT '1' COMMENT '配送状态  1立即送出  0选择具体时间',
    `delivery_time`           datetime                      DEFAULT NULL COMMENT '送达时间',
    `pack_amount`             int                           DEFAULT NULL COMMENT '打包费',
    `tableware_number`        int                           DEFAULT NULL COMMENT '餐具数量',
    `tableware_status`        tinyint(1)     NOT NULL       DEFAULT '1' COMMENT '餐具数量状态  1按餐量提供  0选择具体数量',
    PRIMARY KEY (`id`)
) ENGINE = InnoDB
  AUTO_INCREMENT = 4
  DEFAULT CHARSET = utf8mb3
  COLLATE = utf8_bin COMMENT ='订单表';

DROP TABLE IF EXISTS `setmeal`;
CREATE TABLE `setmeal`
(
    `id`          bigint                       NOT NULL AUTO_INCREMENT COMMENT '主键',
    `category_id` bigint                       NOT NULL COMMENT '菜品分类id',
    `name`        varchar(32) COLLATE utf8_bin NOT NULL COMMENT '套餐名称',
    `price`       decimal(10, 2)               NOT NULL COMMENT '套餐价格',
    `status`      int                           DEFAULT '1' COMMENT '售卖状态 0:停售 1:起售',
    `description` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '描述信息',
    `image`       varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '图片',
    `create_time` datetime                      DEFAULT NULL COMMENT '创建时间',
    `update_time` datetime                      DEFAULT NULL COMMENT '更新时间',
    `create_user` bigint                        DEFAULT NULL COMMENT '创建人',
    `update_user` bigint                        DEFAULT NULL COMMENT '修改人',
    PRIMARY KEY (`id`),
    UNIQUE KEY `idx_setmeal_name` (`name`)
) ENGINE = InnoDB
  AUTO_INCREMENT = 32
  DEFAULT CHARSET = utf8mb3
  COLLATE = utf8_bin COMMENT ='套餐';

DROP TABLE IF EXISTS `setmeal_dish`;
CREATE TABLE `setmeal_dish`
(
    `id`         bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
    `setmeal_id` bigint                       DEFAULT NULL COMMENT '套餐id',
    `dish_id`    bigint                       DEFAULT NULL COMMENT '菜品id',
    `name`       varchar(32) COLLATE utf8_bin DEFAULT NULL COMMENT '菜品名称 (冗余字段)',
    `price`      decimal(10, 2)               DEFAULT NULL COMMENT '菜品单价(冗余字段)',
    `copies`     int                          DEFAULT NULL COMMENT '菜品份数',
    PRIMARY KEY (`id`)
) ENGINE = InnoDB
  AUTO_INCREMENT = 47
  DEFAULT CHARSET = utf8mb3
  COLLATE = utf8_bin COMMENT ='套餐菜品关系';

DROP TABLE IF EXISTS `shopping_cart`;
CREATE TABLE `shopping_cart`
(
    `id`          bigint         NOT NULL AUTO_INCREMENT COMMENT '主键',
    `name`        varchar(32) COLLATE utf8_bin  DEFAULT NULL COMMENT '商品名称',
    `image`       varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '图片',
    `user_id`     bigint         NOT NULL COMMENT '主键',
    `dish_id`     bigint                        DEFAULT NULL COMMENT '菜品id',
    `setmeal_id`  bigint                        DEFAULT NULL COMMENT '套餐id',
    `dish_flavor` varchar(50) COLLATE utf8_bin  DEFAULT NULL COMMENT '口味',
    `number`      int            NOT NULL       DEFAULT '1' COMMENT '数量',
    `amount`      decimal(10, 2) NOT NULL COMMENT '金额',
    `create_time` datetime                      DEFAULT NULL COMMENT '创建时间',
    PRIMARY KEY (`id`)
) ENGINE = InnoDB
  AUTO_INCREMENT = 9
  DEFAULT CHARSET = utf8mb3
  COLLATE = utf8_bin COMMENT ='购物车';

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`
(
    `id`          bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
    `openid`      varchar(45) COLLATE utf8_bin  DEFAULT NULL COMMENT '微信用户唯一标识',
    `name`        varchar(32) COLLATE utf8_bin  DEFAULT NULL COMMENT '姓名',
    `phone`       varchar(11) COLLATE utf8_bin  DEFAULT NULL COMMENT '手机号',
    `sex`         varchar(2) COLLATE utf8_bin   DEFAULT NULL COMMENT '性别',
    `id_number`   varchar(18) COLLATE utf8_bin  DEFAULT NULL COMMENT '身份证号',
    `avatar`      varchar(500) COLLATE utf8_bin DEFAULT NULL COMMENT '头像',
    `create_time` datetime                      DEFAULT NULL,
    PRIMARY KEY (`id`)
) ENGINE = InnoDB
  AUTO_INCREMENT = 4
  DEFAULT CHARSET = utf8mb3
  COLLATE = utf8_bin COMMENT ='用户信息';

然后修改application-dev.yml文件中的账户和密码:

sky:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    host: localhost
    port: 3306
    database: sky_take_out
    username: root
    password: 1234

前后端联调

将前端和后端分别运行起来,可以发现前端请求地址:http://localhost/api/employee/login

但后端的接口地址:http://localhost:8080/admin/employee/login,两者并不一样但却可以请求成功,这是因为nginx的反向代理功能。

Nginx反向代理

nginx反向代理就是将前端发送的请求由nginx转发到后端服务器。也就是说刚刚的登录请求并不是直接由前端直接请求到后端服务器,而是由nginx做了转发。这样的做法有以下几点好处:

  • 负载均衡:Nginx 可以将客户端请求分发到多个后端服务器,从而平衡负载,提高网站的吞吐量和可用性。
  • 保护后端安全:Nginx 可以作为防火墙,隐藏后端服务器的真实IP地址,减少直接暴露给外界的风险。它可以限制请求频率,防止DDoS攻击。
  • 提高访问速度:Nginx 利用缓存机制可以缓存上次静态内容和动态内容,再起发起同样请求无需访问后端,直接将缓存响应给前端。减少后端服务器的请求次数从而提高响应速度。

实现反向代理则需在nginx.conf修改代码:

    server {
        ......
        # 反向代理,处理管理端发送的请求
        location /api/ {
			proxy_pass   http://localhost:8080/admin/;
        }

location部分代表处理特定的请求,/api/代表接收请求路径中包含api这种字符串的请求,内部的proxy_pass代表将请求转发到后端指定的地址:http://localhost:8080/admin/,其他部分则不变。

前端请求路径:http://localhost/api/employee/login

后端响应路径:http://localhost:8080/admin/employee/login

红色部分替换为预设的路径,蓝色部分则保持不变。

Nginx负载均衡

其与反向代理写法相似,当路径中包含/user/时,路径会自动改为webservers,其通过上方的upstream自行定义,不是固定的,但上下文要保持一致。在本例中声明了两个服务器,如果不加限制,系统会将前端发送的请求平均的转发到这两台后端服务器上。

如果两处理器处理能力不一致,我们希望A处理器多负载一些,可以为其更换不同的策略:

  • 轮询:这是 Nginx 的默认负载均衡方法,即多台服务器轮流处理请求。
  • 权重(weight):为每个服务器设置权重,默认为1,权重越高被分配的请求越多。如果有两个服务器,权重分别为20和10,则第一台负责2/3的请求,第二台负责1/3的请求。
  • 结合轮询使用,可以实现更精细的负载控制。
  • IP哈希(ip_hash):根据IP 地址分配服务器。保证同一个客户端的请求总是被分配到同一个服务器,适用于需要保持用户会话的场景。
  • 依据最少连接(least_conn):将请求优先分配到当前连接数最少的后端服务器。
  • 依据url分配(url_hash):相同的url会被分配到同一个后端服务。
  • 依据响应时间分配(fair):响应时间短的服务器优先分配。

这个方法需要安装第三方模块 ngx_http_upstream_fair_module。

upstream webservers{
	  server 127.0.0.1:8080 weight=20 ;
	  server 127.0.0.1:4399 weight=10 ;
	}

server {
        ......
		# 反向代理,处理用户端发送的请求
        location /user/ {
            proxy_pass   http://webservers/user/;
        }
}

完善登录功能

首先是员工表中的密码为明文存储,安全性较低。我们需要对其进行加密,这里采用MD5的加密方式。

MD5信息摘要算法(Message Digest Algorithm 5)是一种广泛使用的密码散列函数,可以产生一个128位(16字节)的散列值(hash value),通常用一个32位的十六进制数字表示。MD5被设计用来确保数据的完整性,在数字签名领域中,它可以用来验证传输的文件是否被修改。

其是不可逆的,也就是说只能从明文加密成密文,不能从密文得出原来的明文。

接下来我们对其进行加密:在server模块下的service-impl下修改EmployeeServiceImpl文件,找到"// TODO 后期需要进行md5加密,然后再进行比对"修改下面的代码。

利用spring提供的工具类DigestUtils,调用其中的方法 md5DigestAsHex(),并将参数password.getBytes()传入其中,然后再使用password接收返回结果

java 复制代码
        //密码比对
        //对前端传入的密码进行MD5加密处理
        password = DigestUtils.md5DigestAsHex(password.getBytes());
        if (!password.equals(employee.getPassword())) {
            //密码错误
            throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR);
        }

修改完成后删除//TODO表示此处任务已完成,再来进行前后端联调。

// TODO 是一种常见的注释用法,用于标记代码中需要后续完成或改进的地方。可以在View-Tools Windows中显示TODO列表

将数据表employee中的密码从123456改为e10adc3949ba59abbe56e057f20f883e,

如果密码错误就会抛出异常,并输出common中的MessageConstant类中的常量String PASSWORD_ERROR = "密码错误";

导入接口文档

因为本项目采用前后端分离开发模式,为保证前后端顺利对接,需将接口文档导入到接口管理平台,为后续的业务开发做好准备。(实际开发中接口设计需要大量时间,甚至在开发过程中仍需不断修改。但本项目为快速学习选择一次性导入所有的接口)

为方便区分,定义了两个接口文档,一个为管理端接口,一个为用户端接口:

java 复制代码
//管理端接口
[{"index":0,"name":"分类相关接口","desc":"Category Controller","add_time":1656056920,"up_time":1656056920,"list":[{"query_path":{"path":"/admin/category","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["分类相关接口"],"_id":323246,"method":"PUT","title":"修改分类","path":"/admin/category","req_params":[],"req_body_form":[],"req_headers":[{"required":"1","_id":"62b571353e1263907bf1feff","name":"Content-Type","value":"application/json"}],"req_query":[],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"string\"},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<string>>\",\"$$ref\":\"#/definitions/R<<string>>\",\"required\":[\"code\"]}","req_body_other":"{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"int64\",\"description\":\"分类id\"},\"name\":{\"type\":\"string\",\"description\":\"分类名称\"},\"sort\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"排序\"},\"type\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"分类类型\"}},\"title\":\"CategoryDTO\",\"$$ref\":\"#/definitions/CategoryDTO\",\"required\":[\"id\",\"name\",\"sort\",\"type\"]}","project_id":10518,"catid":105908,"uid":12769,"add_time":1656056920,"up_time":1656058165,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/category/page","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["分类相关接口"],"_id":323252,"method":"GET","title":"分类分页查询","path":"/admin/category/page","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[{"required":"0","_id":"62b5734b3e12637221f1ff20","name":"name","example":"传统主食","desc":"分类名称"},{"required":"1","_id":"62b5734b3e1263549af1ff1f","name":"page","example":"1","desc":"页码"},{"required":"1","_id":"62b5734b3e1263289cf1ff1e","name":"pageSize","example":"10","desc":"每页记录数"},{"required":"0","_id":"62b5734b3e12630237f1ff1d","name":"type","example":"1","desc":"分类类型:1为菜品分类,2为套餐分类"}],"req_body_type":"raw","res_body_type":"json","res_body":"{\"$schema\":\"http://json-schema.org/draft-04/schema#\",\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"msg\":{\"type\":\"null\"},\"data\":{\"type\":\"object\",\"properties\":{\"total\":{\"type\":\"number\"},\"records\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"number\"},\"type\":{\"type\":\"number\"},\"name\":{\"type\":\"string\"},\"sort\":{\"type\":\"number\"},\"status\":{\"type\":\"number\"},\"createTime\":{\"type\":\"string\"},\"updateTime\":{\"type\":\"string\"},\"createUser\":{\"type\":\"number\"},\"updateUser\":{\"type\":\"number\"}},\"required\":[\"id\",\"type\",\"name\",\"sort\",\"status\",\"createTime\",\"updateTime\",\"createUser\",\"updateUser\"]}}},\"required\":[\"total\",\"records\"]}},\"required\":[\"code\",\"data\"]}","project_id":10518,"catid":105908,"uid":12769,"add_time":1656056921,"up_time":1656058699,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/category/status/{status}","params":[]},"edit_uid":0,"status":"undone","type":"var","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["分类相关接口"],"_id":323254,"method":"POST","title":"启用、禁用分类","path":"/admin/category/status/{status}","req_params":[{"_id":"62b577403e126381baf1ff68","name":"status","example":"1","desc":"1为启用,0为禁用"}],"req_body_form":[],"req_headers":[{"required":"1","_id":"62b577403e126329e1f1ff6a","name":"Content-Type","value":"application/json"}],"req_query":[{"required":"1","_id":"62b577403e1263dec6f1ff69","name":"id","example":"100","desc":"分类id"}],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"string\"},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<string>>\",\"$$ref\":\"#/definitions/R<<string>>\",\"required\":[\"code\"]}","project_id":10518,"catid":105908,"uid":12769,"add_time":1656056921,"up_time":1656059712,"__v":0,"desc":"","markdown":"","req_body_other":""},{"query_path":{"path":"/admin/category","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["分类相关接口"],"_id":323244,"method":"POST","title":"新增分类","path":"/admin/category","req_params":[],"req_body_form":[],"req_headers":[{"required":"1","_id":"62b570fb3e1263f42df1fefe","name":"Content-Type","value":"application/json"}],"req_query":[],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"string\"},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<string>>\",\"$$ref\":\"#/definitions/R<<string>>\",\"required\":[\"code\"]}","req_body_other":"{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"int64\"},\"name\":{\"type\":\"string\",\"description\":\"分类名称\"},\"sort\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"排序,按照升序排序\"},\"type\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"分类类型:1为菜品分类,2为套餐分类\"}},\"title\":\"CategoryDTO\",\"$$ref\":\"#/definitions/CategoryDTO\",\"required\":[\"name\",\"sort\",\"type\"]}","project_id":10518,"catid":105908,"uid":12769,"add_time":1656056920,"up_time":1656058107,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/category","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["分类相关接口"],"_id":323248,"method":"DELETE","title":"根据id删除分类","path":"/admin/category","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[{"required":"1","_id":"62b571bb3e1263ab86f1ff06","name":"id","example":"100","desc":"分类id"}],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"string\"},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<string>>\",\"$$ref\":\"#/definitions/R<<string>>\",\"required\":[\"code\"]}","project_id":10518,"catid":105908,"uid":12769,"add_time":1656056920,"up_time":1656058299,"__v":0,"desc":"","markdown":"","req_body_other":""},{"query_path":{"path":"/admin/category/list","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["分类相关接口"],"_id":323250,"method":"GET","title":"根据类型查询分类","path":"/admin/category/list","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[{"required":"0","_id":"62b572323e12631e94f1ff0a","name":"type","example":"2","desc":"分类类型:1为菜品分类,2为套餐分类"}],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"createTime\":{\"type\":\"string\",\"format\":\"date-time\"},\"createUser\":{\"type\":\"integer\",\"format\":\"int64\"},\"id\":{\"type\":\"integer\",\"format\":\"int64\"},\"name\":{\"type\":\"string\"},\"sort\":{\"type\":\"integer\",\"format\":\"int32\"},\"status\":{\"type\":\"integer\",\"format\":\"int32\"},\"type\":{\"type\":\"integer\",\"format\":\"int32\"},\"updateTime\":{\"type\":\"string\",\"format\":\"date-time\"},\"updateUser\":{\"type\":\"integer\",\"format\":\"int64\"}},\"title\":\"Category\",\"$$ref\":\"#/definitions/Category\"}},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<List<<Category>>>>\",\"$$ref\":\"#/definitions/R<<List<<Category>>>>\",\"required\":[\"code\"]}","project_id":10518,"catid":105908,"uid":12769,"add_time":1656056921,"up_time":1656058418,"__v":0,"desc":"","markdown":""}]},{"index":0,"name":"员工相关接口","desc":"Employee Controller","add_time":1656056920,"up_time":1656056920,"list":[{"query_path":{"path":"/admin/employee/editPassword","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["员工相关接口"],"_id":323276,"method":"PUT","title":"修改密码","path":"/admin/employee/editPassword","req_params":[],"req_body_form":[],"req_headers":[{"required":"1","_id":"62b575263e1263d67ef1ff41","name":"Content-Type","value":"application/json"}],"req_query":[],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"string\"},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<string>>\",\"$$ref\":\"#/definitions/R<<string>>\",\"required\":[\"code\"]}","req_body_other":"{\"type\":\"object\",\"properties\":{\"empId\":{\"type\":\"integer\",\"format\":\"int64\",\"description\":\"员工id\"},\"newPassword\":{\"type\":\"string\",\"description\":\"新密码\"},\"oldPassword\":{\"type\":\"string\",\"description\":\"旧密码\"}},\"title\":\"PasswordEditDTO\",\"$$ref\":\"#/definitions/PasswordEditDTO\",\"required\":[\"empId\",\"newPassword\",\"oldPassword\"]}","project_id":10518,"catid":105911,"uid":12769,"add_time":1656056922,"up_time":1656059174,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/employee/status/{status}","params":[]},"edit_uid":0,"status":"undone","type":"var","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["员工相关接口"],"_id":323284,"method":"POST","title":"启用、禁用员工账号","path":"/admin/employee/status/{status}","req_params":[{"_id":"62b5772b3e12638732f1ff63","name":"status","example":"1","desc":"状态,1为启用0为禁用"}],"req_body_form":[],"req_headers":[{"required":"1","_id":"62b5772b3e126300d3f1ff65","name":"Content-Type","value":"application/json"}],"req_query":[{"required":"1","_id":"62b5772b3e1263e3faf1ff64","name":"id","desc":"员工id"}],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"string\"},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<string>>\",\"$$ref\":\"#/definitions/R<<string>>\",\"required\":[\"code\"]}","project_id":10518,"catid":105911,"uid":12769,"add_time":1656056922,"up_time":1656059691,"__v":0,"desc":"","markdown":"","req_body_other":""},{"query_path":{"path":"/admin/employee/page","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["员工相关接口"],"_id":323282,"method":"GET","title":"员工分页查询","path":"/admin/employee/page","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[{"required":"0","_id":"62b576b23e1263e7d0f1ff5d","name":"name","example":"张三","desc":"员工姓名"},{"required":"1","_id":"62b576b23e126333dcf1ff5c","name":"page","example":"1","desc":"页码"},{"required":"1","_id":"62b576b23e12637ea6f1ff5b","name":"pageSize","example":"10","desc":"每页记录数"}],"req_body_type":"raw","res_body_type":"json","res_body":"{\"$schema\":\"http://json-schema.org/draft-04/schema#\",\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"msg\":{\"type\":\"null\"},\"data\":{\"type\":\"object\",\"properties\":{\"total\":{\"type\":\"number\"},\"records\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"number\"},\"username\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"password\":{\"type\":\"string\"},\"phone\":{\"type\":\"string\"},\"sex\":{\"type\":\"string\"},\"idNumber\":{\"type\":\"string\"},\"status\":{\"type\":\"number\"},\"createTime\":{\"type\":[\"string\",\"null\"]},\"updateTime\":{\"type\":\"string\"},\"createUser\":{\"type\":[\"number\",\"null\"]},\"updateUser\":{\"type\":\"number\"}},\"required\":[\"id\",\"username\",\"name\",\"password\",\"phone\",\"sex\",\"idNumber\",\"status\",\"createTime\",\"updateTime\",\"createUser\",\"updateUser\"]}}},\"required\":[\"total\",\"records\"]}},\"required\":[\"code\",\"data\"]}","project_id":10518,"catid":105911,"uid":12769,"add_time":1656056922,"up_time":1656059570,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/employee/login","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["员工相关接口"],"_id":323278,"method":"POST","title":"员工登录","path":"/admin/employee/login","req_params":[],"req_body_form":[],"req_headers":[{"required":"1","_id":"62b575523e1263d4b8f1ff48","name":"Content-Type","value":"application/json"}],"req_query":[],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"int64\",\"description\":\"主键值\"},\"name\":{\"type\":\"string\",\"description\":\"姓名\"},\"token\":{\"type\":\"string\",\"description\":\"jwt令牌\"},\"userName\":{\"type\":\"string\",\"description\":\"用户名\"}},\"title\":\"EmployeeLoginVO\",\"description\":\"员工登录返回的数据格式\",\"$$ref\":\"#/definitions/EmployeeLoginVO\"},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<EmployeeLoginVO>>\",\"$$ref\":\"#/definitions/R<<EmployeeLoginVO>>\",\"required\":[\"code\"]}","req_body_other":"{\"type\":\"object\",\"properties\":{\"password\":{\"type\":\"string\",\"description\":\"密码\"},\"username\":{\"type\":\"string\",\"description\":\"用户名\"}},\"title\":\"EmployeeLoginDTO\",\"description\":\"员工登录时传递的数据模型\",\"$$ref\":\"#/definitions/EmployeeLoginDTO\",\"required\":[\"password\",\"username\"]}","project_id":10518,"catid":105911,"uid":12769,"add_time":1656056922,"up_time":1656059218,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/employee","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["员工相关接口"],"_id":323272,"method":"POST","title":"新增员工","path":"/admin/employee","req_params":[],"req_body_form":[],"req_headers":[{"required":"1","_id":"62b574b33e12632a54f1ff39","name":"Content-Type","value":"application/json"}],"req_query":[],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{}},\"msg\":{\"type\":\"string\"}},\"title\":\"R\",\"$$ref\":\"#/definitions/R\",\"required\":[\"code\"]}","req_body_other":"{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"int64\",\"description\":\"员工id\"},\"idNumber\":{\"type\":\"string\",\"description\":\"身份证\"},\"name\":{\"type\":\"string\",\"description\":\"姓名\"},\"phone\":{\"type\":\"string\",\"description\":\"手机号\"},\"sex\":{\"type\":\"string\",\"description\":\"性别\"},\"username\":{\"type\":\"string\",\"description\":\"用户名\"}},\"title\":\"EmployeeDTO\",\"$$ref\":\"#/definitions/EmployeeDTO\",\"required\":[\"idNumber\",\"name\",\"phone\",\"sex\",\"username\"]}","project_id":10518,"catid":105911,"uid":12769,"add_time":1656056921,"up_time":1656059059,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/employee/{id}","params":[]},"edit_uid":0,"status":"undone","type":"var","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["员工相关接口"],"_id":323290,"method":"GET","title":"根据id查询员工","path":"/admin/employee/{id}","req_params":[{"_id":"62b577843e1263c081f1ff75","name":"id","example":"100","desc":"员工id"}],"req_body_form":[],"req_headers":[],"req_query":[],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{\"createTime\":{\"type\":\"string\",\"format\":\"date-time\"},\"createUser\":{\"type\":\"integer\",\"format\":\"int64\"},\"id\":{\"type\":\"integer\",\"format\":\"int64\"},\"idNumber\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"password\":{\"type\":\"string\"},\"phone\":{\"type\":\"string\"},\"sex\":{\"type\":\"string\"},\"status\":{\"type\":\"integer\",\"format\":\"int32\"},\"updateTime\":{\"type\":\"string\",\"format\":\"date-time\"},\"updateUser\":{\"type\":\"integer\",\"format\":\"int64\"},\"username\":{\"type\":\"string\"}},\"title\":\"Employee\",\"$$ref\":\"#/definitions/Employee\"},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<Employee>>\",\"$$ref\":\"#/definitions/R<<Employee>>\",\"required\":[\"code\",\"data\"]}","project_id":10518,"catid":105911,"uid":12769,"add_time":1656056922,"up_time":1656059780,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/employee","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["员工相关接口"],"_id":323274,"method":"PUT","title":"编辑员工信息","path":"/admin/employee","req_params":[],"req_body_form":[],"req_headers":[{"required":"1","_id":"62b574e53e126323b1f1ff3e","name":"Content-Type","value":"application/json"}],"req_query":[],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"string\"},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<string>>\",\"$$ref\":\"#/definitions/R<<string>>\",\"required\":[\"code\"]}","req_body_other":"{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"int64\"},\"idNumber\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"phone\":{\"type\":\"string\"},\"sex\":{\"type\":\"string\"},\"username\":{\"type\":\"string\"}},\"title\":\"EmployeeDTO\",\"$$ref\":\"#/definitions/EmployeeDTO\",\"required\":[\"id\",\"idNumber\",\"name\",\"phone\",\"sex\",\"username\"]}","project_id":10518,"catid":105911,"uid":12769,"add_time":1656056922,"up_time":1656059109,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/employee/logout","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["员工相关接口"],"_id":323280,"method":"POST","title":"退出登录","path":"/admin/employee/logout","req_params":[],"req_body_form":[],"req_headers":[{"required":"1","_id":"62b56cab3e1263164ef1fe63","name":"Content-Type","value":"application/json"}],"req_query":[],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"string\"},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<string>>\",\"$$ref\":\"#/definitions/R<<string>>\",\"required\":[\"code\"]}","project_id":10518,"catid":105911,"uid":12769,"add_time":1656056922,"up_time":1656057003,"__v":0,"desc":"","markdown":"","req_body_other":"{\"type\":\"object\",\"title\":\"empty object\",\"properties\":{}}"}]},{"index":0,"name":"套餐相关接口","desc":"Setmeal Controller","add_time":1656056920,"up_time":1656056920,"list":[{"query_path":{"path":"/admin/setmeal","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["套餐相关接口"],"_id":323320,"method":"PUT","title":"修改套餐","path":"/admin/setmeal","req_params":[],"req_body_form":[],"req_headers":[{"required":"1","_id":"62bbe10a3e1263f338f24c58","name":"Content-Type","value":"application/json"}],"req_query":[],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{}},\"msg\":{\"type\":\"string\"}},\"title\":\"R\",\"$$ref\":\"#/definitions/R\",\"required\":[\"code\",\"data\"]}","req_body_other":"{\"type\":\"object\",\"properties\":{\"categoryId\":{\"type\":\"integer\",\"format\":\"int64\",\"description\":\"分类id\"},\"description\":{\"type\":\"string\",\"description\":\"套餐描述\"},\"id\":{\"type\":\"integer\",\"format\":\"int64\",\"description\":\"套餐id\"},\"image\":{\"type\":\"string\",\"description\":\"套餐图片路径\"},\"name\":{\"type\":\"string\",\"description\":\"套餐名称\"},\"price\":{\"type\":\"number\",\"description\":\"套餐价格\"},\"setmealDishes\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"copies\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"菜品份数\"},\"dishId\":{\"type\":\"integer\",\"format\":\"int64\",\"description\":\"菜品id\"},\"id\":{\"type\":\"integer\",\"format\":\"int64\",\"description\":\"关系表主键值\"},\"name\":{\"type\":\"string\",\"description\":\"菜品名称\"},\"price\":{\"type\":\"number\",\"description\":\"菜品价格\"},\"setmealId\":{\"type\":\"integer\",\"format\":\"int64\",\"description\":\"套餐id\"}},\"title\":\"SetmealDish\",\"$$ref\":\"#/definitions/SetmealDish\",\"required\":[\"copies\",\"dishId\",\"name\",\"price\"]},\"description\":\"套餐和菜品关联关系\"},\"status\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"套餐起售状态\"}},\"title\":\"SetmealDTO\",\"$$ref\":\"#/definitions/SetmealDTO\",\"required\":[\"categoryId\",\"id\",\"image\",\"name\",\"price\",\"setmealDishes\"]}","project_id":10518,"catid":105914,"uid":12769,"add_time":1656056923,"up_time":1656480010,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/setmeal/page","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["套餐相关接口"],"_id":323324,"method":"GET","title":"分页查询","path":"/admin/setmeal/page","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[{"required":"0","_id":"62bbe2513e12633587f24c72","name":"categoryId","desc":"分类id"},{"required":"0","_id":"62bbe2513e1263a0cef24c71","name":"name","desc":"套餐名称"},{"required":"1","_id":"62bbe2513e12633fa5f24c70","name":"page","desc":"页码"},{"required":"1","_id":"62bbe2513e12636036f24c6f","name":"pageSize","desc":"每页记录数"},{"required":"0","_id":"62bbe2513e126374aef24c6e","name":"status","desc":"套餐起售状态"}],"req_body_type":"raw","res_body_type":"json","res_body":"{\"$schema\":\"http://json-schema.org/draft-04/schema#\",\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"msg\":{\"type\":\"null\"},\"data\":{\"type\":\"object\",\"properties\":{\"total\":{\"type\":\"number\"},\"records\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"number\"},\"categoryId\":{\"type\":\"number\"},\"name\":{\"type\":\"string\"},\"price\":{\"type\":\"number\"},\"status\":{\"type\":\"number\"},\"description\":{\"type\":\"string\"},\"image\":{\"type\":\"string\"},\"updateTime\":{\"type\":\"string\"},\"categoryName\":{\"type\":\"string\"}},\"required\":[\"id\",\"categoryId\",\"name\",\"price\",\"status\",\"description\",\"image\",\"updateTime\",\"categoryName\"]}}}}},\"required\":[\"code\"]}","project_id":10518,"catid":105914,"uid":12769,"add_time":1656056923,"up_time":1656480337,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/setmeal/status/{status}","params":[]},"edit_uid":0,"status":"undone","type":"var","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["套餐相关接口"],"_id":323326,"method":"POST","title":"套餐起售、停售","path":"/admin/setmeal/status/{status}","req_params":[{"_id":"62bbe4263e12638465f24db9","name":"status","example":"1","desc":"套餐状态,1表示起售,0表示停售"}],"req_body_form":[],"req_headers":[{"required":"1","_id":"62bbe4263e12630d71f24dbb","name":"Content-Type","value":"application/json"}],"req_query":[{"required":"1","_id":"62bbe4263e126358d6f24dba","name":"id","example":"101","desc":"套餐id"}],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{}},\"msg\":{\"type\":\"string\"}},\"title\":\"R\",\"$$ref\":\"#/definitions/R\",\"required\":[\"code\"]}","project_id":10518,"catid":105914,"uid":12769,"add_time":1656056923,"up_time":1656480806,"__v":0,"desc":"","markdown":"","req_body_other":""},{"query_path":{"path":"/admin/setmeal","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":false,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["套餐相关接口"],"_id":323322,"method":"DELETE","title":"批量删除套餐","path":"/admin/setmeal","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[{"required":"1","_id":"62b56c5b3e1263583ff1fe53","name":"ids","desc":"ids"}],"req_body_type":"raw","res_body_type":"json","res_body":"{\n\"type\":\"object\",\n\"properties\":{\n\"code\":{\n\"type\":\"integer\",\n\"format\":\"int32\"\n},\n\"data\":{\n\"type\":\"object\"\n},\n\"msg\":{\n\"type\":\"string\"\n}\n},\n\"title\":\"R\",\n\"$$ref\":\"#/definitions/R\"\n}","project_id":10518,"catid":105914,"uid":12769,"add_time":1656056923,"up_time":1656056923,"__v":0},{"query_path":{"path":"/admin/setmeal","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["套餐相关接口"],"_id":323318,"method":"POST","title":"新增套餐","path":"/admin/setmeal","req_params":[],"req_body_form":[],"req_headers":[{"required":"1","_id":"62b579263e12635d4af1ff86","name":"Content-Type","value":"application/json"}],"req_query":[],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{}},\"msg\":{\"type\":\"string\"}},\"title\":\"R\",\"$$ref\":\"#/definitions/R\",\"required\":[\"code\"]}","req_body_other":"{\"type\":\"object\",\"properties\":{\"categoryId\":{\"type\":\"integer\",\"format\":\"int64\",\"description\":\"分类id\"},\"description\":{\"type\":\"string\",\"description\":\"套餐描述\"},\"id\":{\"type\":\"integer\",\"format\":\"int64\",\"description\":\"套餐id\"},\"image\":{\"type\":\"string\",\"description\":\"套餐图片\"},\"name\":{\"type\":\"string\",\"description\":\"套餐名称\"},\"price\":{\"type\":\"number\",\"description\":\"套餐价格\"},\"setmealDishes\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"copies\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"份数\"},\"dishId\":{\"type\":\"integer\",\"format\":\"int64\",\"description\":\"菜品id\"},\"id\":{\"type\":\"integer\",\"format\":\"int64\",\"description\":\"套餐和菜品关系id\"},\"name\":{\"type\":\"string\",\"description\":\"菜品名称\"},\"price\":{\"type\":\"number\",\"description\":\"菜品价格\"},\"setmealId\":{\"type\":\"integer\",\"format\":\"int64\",\"description\":\"套餐id\"}},\"title\":\"SetmealDish\",\"$$ref\":\"#/definitions/SetmealDish\",\"required\":[\"copies\",\"dishId\",\"name\",\"price\",\"setmealId\"]},\"description\":\"套餐包含的菜品\"},\"status\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"套餐状态:1位起售0为停售\"}},\"title\":\"SetmealDTO\",\"$$ref\":\"#/definitions/SetmealDTO\",\"required\":[\"categoryId\",\"image\",\"name\",\"price\",\"setmealDishes\",\"status\"]}","project_id":10518,"catid":105914,"uid":12769,"add_time":1656056923,"up_time":1656060198,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/setmeal/{id}","params":[]},"edit_uid":0,"status":"undone","type":"var","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["套餐相关接口"],"_id":323328,"method":"GET","title":"根据id查询套餐","path":"/admin/setmeal/{id}","req_params":[{"_id":"62bbe5503e126344b4f24dc0","name":"id","example":"101","desc":"套餐id"}],"req_body_form":[],"req_headers":[],"req_query":[],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{\"categoryId\":{\"type\":\"integer\",\"format\":\"int64\"},\"categoryName\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"id\":{\"type\":\"integer\",\"format\":\"int64\"},\"image\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"price\":{\"type\":\"number\"},\"setmealDishes\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"copies\":{\"type\":\"integer\",\"format\":\"int32\"},\"dishId\":{\"type\":\"integer\",\"format\":\"int64\"},\"id\":{\"type\":\"integer\",\"format\":\"int64\"},\"name\":{\"type\":\"string\"},\"price\":{\"type\":\"number\"},\"setmealId\":{\"type\":\"integer\",\"format\":\"int64\"}},\"title\":\"SetmealDish\",\"$$ref\":\"#/definitions/SetmealDish\",\"required\":[\"copies\",\"dishId\",\"id\",\"name\",\"price\",\"setmealId\"]}},\"status\":{\"type\":\"integer\",\"format\":\"int32\"},\"updateTime\":{\"type\":\"string\",\"format\":\"date-time\"}},\"title\":\"SetmealVO\",\"$$ref\":\"#/definitions/SetmealVO\",\"required\":[\"categoryId\",\"categoryName\",\"description\",\"id\",\"image\",\"name\",\"price\",\"setmealDishes\",\"status\",\"updateTime\"]},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<SetmealVO>>\",\"$$ref\":\"#/definitions/R<<SetmealVO>>\",\"required\":[\"code\",\"data\"]}","project_id":10518,"catid":105914,"uid":12769,"add_time":1656056923,"up_time":1656481104,"__v":0,"desc":"","markdown":""}]},{"index":0,"name":"工作台接口","desc":"Work Space Controller","add_time":1656056920,"up_time":1656056920,"list":[{"query_path":{"path":"/admin/workspace/businessData","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["工作台接口"],"_id":323334,"method":"GET","title":"查询今日运营数据","path":"/admin/workspace/businessData","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{\"newUsers\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"新增用户数\"},\"orderCompletionRate\":{\"type\":\"number\",\"format\":\"double\",\"description\":\"订单完成率\"},\"turnover\":{\"type\":\"number\",\"format\":\"double\",\"description\":\"营业额\"},\"unitPrice\":{\"type\":\"number\",\"format\":\"double\",\"description\":\"平均客单价\"},\"validOrderCount\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"有效订单数\"}},\"title\":\"BusinessDataVO\",\"$$ref\":\"#/definitions/BusinessDataVO\",\"required\":[\"newUsers\",\"orderCompletionRate\",\"turnover\",\"unitPrice\",\"validOrderCount\"]},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<BusinessDataVO>>\",\"$$ref\":\"#/definitions/R<<BusinessDataVO>>\",\"required\":[\"code\",\"data\"]}","project_id":10518,"catid":105917,"uid":12769,"add_time":1656056924,"up_time":1656481219,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/workspace/overviewSetmeals","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["工作台接口"],"_id":323340,"method":"GET","title":"查询套餐总览","path":"/admin/workspace/overviewSetmeals","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{\"discontinued\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"已停售套餐数量\"},\"sold\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"已启售套餐数量\"}},\"title\":\"SetmealOverViewVO\",\"$$ref\":\"#/definitions/SetmealOverViewVO\",\"required\":[\"discontinued\",\"sold\"]},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<SetmealOverViewVO>>\",\"$$ref\":\"#/definitions/R<<SetmealOverViewVO>>\",\"required\":[\"code\",\"data\"]}","project_id":10518,"catid":105917,"uid":12769,"add_time":1656056924,"up_time":1656481429,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/workspace/overviewDishes","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["工作台接口"],"_id":323336,"method":"GET","title":"查询菜品总览","path":"/admin/workspace/overviewDishes","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{\"discontinued\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"已停售菜品数量\"},\"sold\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"已启售菜品数量\"}},\"title\":\"DishOverViewVO\",\"$$ref\":\"#/definitions/DishOverViewVO\",\"required\":[\"discontinued\",\"sold\"]},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<DishOverViewVO>>\",\"$$ref\":\"#/definitions/R<<DishOverViewVO>>\",\"required\":[\"code\",\"data\"]}","project_id":10518,"catid":105917,"uid":12769,"add_time":1656056924,"up_time":1656481300,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/workspace/overviewOrders","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["工作台接口"],"_id":323338,"method":"GET","title":"查询订单管理数据","path":"/admin/workspace/overviewOrders","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{\"allOrders\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"全部订单\"},\"cancelledOrders\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"已取消数量\"},\"completedOrders\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"已完成数量\"},\"deliveredOrders\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"待派送数量\"},\"waitingOrders\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"待接单数量\"}},\"title\":\"OrderOverViewVO\",\"$$ref\":\"#/definitions/OrderOverViewVO\",\"required\":[\"allOrders\",\"cancelledOrders\",\"completedOrders\",\"deliveredOrders\",\"waitingOrders\"]},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<OrderOverViewVO>>\",\"$$ref\":\"#/definitions/R<<OrderOverViewVO>>\",\"required\":[\"code\",\"data\"]}","project_id":10518,"catid":105917,"uid":12769,"add_time":1656056924,"up_time":1656481379,"__v":0,"desc":"","markdown":""}]},{"index":0,"name":"店铺操作接口","desc":"Shop Controller","add_time":1656056920,"up_time":1656056920,"list":[{"query_path":{"path":"/admin/shop/status","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["店铺操作接口"],"_id":323330,"method":"GET","title":"获取营业状态","path":"/admin/shop/status","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"店铺营业状态:1为营业,0为打烊\"},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<int>>\",\"$$ref\":\"#/definitions/R<<int>>\",\"required\":[\"code\",\"data\"]}","project_id":10518,"catid":105920,"uid":12769,"add_time":1656056923,"up_time":1656481512,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/shop/{status}","params":[]},"edit_uid":0,"status":"undone","type":"var","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["店铺操作接口"],"_id":323332,"method":"PUT","title":"设置营业状态","path":"/admin/shop/{status}","req_params":[{"_id":"62bbe7133e1263569df24dc3","name":"status","example":"1","desc":"店铺营业状态:1为营业,0为打烊"}],"req_body_form":[],"req_headers":[{"required":"1","_id":"62bbe7133e12631856f24dc4","name":"Content-Type","value":"application/json"}],"req_query":[],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"string\"},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<string>>\",\"$$ref\":\"#/definitions/R<<string>>\",\"required\":[\"code\"]}","project_id":10518,"catid":105920,"uid":12769,"add_time":1656056923,"up_time":1656481555,"__v":0,"desc":"","markdown":"","req_body_other":""}]},{"index":0,"name":"数据统计相关接口","desc":"Report Controller","add_time":1656056920,"up_time":1656056920,"list":[{"query_path":{"path":"/admin/report/export","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":false,"res_body_is_json_schema":false,"api_opened":false,"index":0,"tag":["数据统计相关接口"],"_id":323308,"method":"GET","title":"导出Excel报表接口","path":"/admin/report/export","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[],"req_body_type":"raw","res_body_type":"raw","res_body":"OK","project_id":10518,"catid":105923,"uid":12769,"add_time":1656056923,"up_time":1656056923,"__v":0},{"query_path":{"path":"/admin/report/top10","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["数据统计相关接口"],"_id":323312,"method":"GET","title":"查询销量排名top10接口","path":"/admin/report/top10","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[{"required":"1","_id":"62b971423e126370e6f22f16","name":"begin","example":"2022-05-01","desc":"开始日期"},{"required":"1","_id":"62b971423e1263f73af22f15","name":"end","example":"2022-05-31","desc":"结束日期"}],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{\"nameList\":{\"type\":\"string\",\"description\":\"商品名称列表,以逗号分隔\"},\"numberList\":{\"type\":\"string\",\"description\":\"销量列表,以逗号分隔\"}},\"title\":\"SalesTop10ReportVO\",\"$$ref\":\"#/definitions/SalesTop10ReportVO\",\"required\":[\"nameList\",\"numberList\"]},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<SalesTop10ReportVO>>\",\"$$ref\":\"#/definitions/R<<SalesTop10ReportVO>>\",\"required\":[\"code\",\"data\"]}","project_id":10518,"catid":105923,"uid":12769,"add_time":1656056923,"up_time":1656320322,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/report/userStatistics","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["数据统计相关接口"],"_id":323316,"method":"GET","title":"用户统计接口","path":"/admin/report/userStatistics","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[{"required":"1","_id":"62b9646b3e12636be9f22f0a","name":"begin","example":"2022-05-01","desc":"开始日期"},{"required":"1","_id":"62b9646b3e12633e52f22f09","name":"end","example":"2022-05-31","desc":"结束日期"}],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{\"dateList\":{\"type\":\"string\",\"description\":\"日期列表,以逗号分隔\"},\"newUserList\":{\"type\":\"string\",\"description\":\"新增用户数列表,以逗号分隔\"},\"totalUserList\":{\"type\":\"string\",\"description\":\"总用户量列表,以逗号分隔\"}},\"title\":\"UserReportVO\",\"$$ref\":\"#/definitions/UserReportVO\",\"required\":[\"dateList\",\"newUserList\",\"totalUserList\"]},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<UserReportVO>>\",\"$$ref\":\"#/definitions/R<<UserReportVO>>\",\"required\":[\"code\",\"data\"]}","project_id":10518,"catid":105923,"uid":12769,"add_time":1656056923,"up_time":1656317035,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/report/turnoverStatistics","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["数据统计相关接口"],"_id":323314,"method":"GET","title":"营业额统计接口","path":"/admin/report/turnoverStatistics","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[{"required":"1","_id":"62b9518c3e1263b08ff22f06","name":"begin","example":"2022-05-01","desc":"开始日期"},{"required":"1","_id":"62b9518c3e1263015bf22f05","name":"end","example":"2022-05-31","desc":"结束日期"}],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{\"dateList\":{\"type\":\"string\",\"description\":\"日期列表,日期之间以逗号分隔\"},\"turnoverList\":{\"type\":\"string\",\"description\":\"营业额列表,营业额之间以逗号分隔\"}},\"title\":\"TurnoverReportVO\",\"$$ref\":\"#/definitions/TurnoverReportVO\",\"required\":[\"dateList\",\"turnoverList\"]},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<TurnoverReportVO>>\",\"$$ref\":\"#/definitions/R<<TurnoverReportVO>>\",\"required\":[\"code\",\"data\"]}","project_id":10518,"catid":105923,"uid":12769,"add_time":1656056923,"up_time":1656312204,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/report/ordersStatistics","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["数据统计相关接口"],"_id":323310,"method":"GET","title":"订单统计接口","path":"/admin/report/ordersStatistics","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[{"required":"1","_id":"62b96be93e12633d4af22f12","name":"begin","example":"2022-05-01","desc":"开始日期"},{"required":"1","_id":"62b96be93e1263febef22f11","name":"end","example":"2022-05-31","desc":"结束日期"}],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{\"dateList\":{\"type\":\"string\",\"description\":\"日期列表,以逗号分隔\"},\"orderCompletionRate\":{\"type\":\"number\",\"format\":\"double\",\"description\":\"订单完成率\"},\"orderCountList\":{\"type\":\"string\",\"description\":\"订单数列表,以逗号分隔\"},\"totalOrderCount\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"订单总数\"},\"validOrderCount\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"有效订单数\"},\"validOrderCountList\":{\"type\":\"string\",\"description\":\"有效订单数列表,以逗号分隔\"}},\"title\":\"OrderReportVO\",\"$$ref\":\"#/definitions/OrderReportVO\",\"required\":[\"dateList\",\"orderCompletionRate\",\"orderCountList\",\"totalOrderCount\",\"validOrderCount\",\"validOrderCountList\"]},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<OrderReportVO>>\",\"$$ref\":\"#/definitions/R<<OrderReportVO>>\",\"required\":[\"code\",\"data\"]}","project_id":10518,"catid":105923,"uid":12769,"add_time":1656056923,"up_time":1656318953,"__v":0,"desc":"","markdown":""}]},{"index":0,"name":"菜品相关接口","desc":"Dish Controller","add_time":1656056920,"up_time":1656056920,"list":[{"query_path":{"path":"/admin/dish","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["菜品相关接口"],"_id":323260,"method":"PUT","title":"修改菜品","path":"/admin/dish","req_params":[],"req_body_form":[],"req_headers":[{"required":"1","_id":"62bbe9903e12632192f24dc9","name":"Content-Type","value":"application/json"}],"req_query":[],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"string\"},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<string>>\",\"$$ref\":\"#/definitions/R<<string>>\",\"required\":[\"code\"]}","req_body_other":"{\"type\":\"object\",\"properties\":{\"categoryId\":{\"type\":\"integer\",\"format\":\"int64\"},\"description\":{\"type\":\"string\"},\"flavors\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"dishId\":{\"type\":\"integer\",\"format\":\"int64\"},\"id\":{\"type\":\"integer\",\"format\":\"int64\"},\"name\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"}},\"title\":\"DishFlavor\",\"$$ref\":\"#/definitions/DishFlavor\",\"required\":[\"name\",\"value\"]}},\"id\":{\"type\":\"integer\",\"format\":\"int64\"},\"image\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"price\":{\"type\":\"number\"},\"status\":{\"type\":\"integer\",\"format\":\"int32\"}},\"title\":\"DishDTO\",\"$$ref\":\"#/definitions/DishDTO\",\"required\":[\"categoryId\",\"id\",\"image\",\"name\",\"price\"]}","project_id":10518,"catid":105926,"uid":12769,"add_time":1656056921,"up_time":1656482192,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/dish","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["菜品相关接口"],"_id":323262,"method":"DELETE","title":"批量删除菜品","path":"/admin/dish","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[{"required":"1","_id":"62bbea4d3e126367f2f24dcc","name":"ids","example":"1,2,3","desc":"菜品id,之间用逗号分隔"}],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"string\"},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<string>>\",\"$$ref\":\"#/definitions/R<<string>>\",\"required\":[\"code\"]}","project_id":10518,"catid":105926,"uid":12769,"add_time":1656056921,"up_time":1656482381,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/dish","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["菜品相关接口"],"_id":323258,"method":"POST","title":"新增菜品","path":"/admin/dish","req_params":[],"req_body_form":[],"req_headers":[{"required":"1","_id":"62bbe90b3e126345bbf24dc6","name":"Content-Type","value":"application/json"}],"req_query":[],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"string\"},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<string>>\",\"$$ref\":\"#/definitions/R<<string>>\",\"required\":[\"code\"]}","req_body_other":"{\"type\":\"object\",\"properties\":{\"categoryId\":{\"type\":\"integer\",\"format\":\"int64\",\"description\":\"分类id\"},\"description\":{\"type\":\"string\",\"description\":\"菜品描述\"},\"flavors\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"dishId\":{\"type\":\"integer\",\"format\":\"int64\",\"description\":\"菜品id\"},\"id\":{\"type\":\"integer\",\"format\":\"int64\",\"description\":\"口味id\"},\"name\":{\"type\":\"string\",\"description\":\"口味名称\"},\"value\":{\"type\":\"string\",\"description\":\"口味值\"}},\"title\":\"DishFlavor\",\"$$ref\":\"#/definitions/DishFlavor\",\"required\":[\"name\",\"value\"]},\"description\":\"口味\"},\"id\":{\"type\":\"integer\",\"format\":\"int64\",\"description\":\"菜品id\"},\"image\":{\"type\":\"string\",\"description\":\"菜品图片路径\"},\"name\":{\"type\":\"string\",\"description\":\"菜品名称\"},\"price\":{\"type\":\"number\",\"description\":\"菜品价格\"},\"status\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"菜品状态:1为起售,0为停售\"}},\"title\":\"DishDTO\",\"$$ref\":\"#/definitions/DishDTO\",\"required\":[\"categoryId\",\"image\",\"name\",\"price\"]}","project_id":10518,"catid":105926,"uid":12769,"add_time":1656056921,"up_time":1656482059,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/dish/{id}","params":[]},"edit_uid":0,"status":"undone","type":"var","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["菜品相关接口"],"_id":323270,"method":"GET","title":"根据id查询菜品","path":"/admin/dish/{id}","req_params":[{"_id":"62bbee1b3e12636721f24e12","name":"id","example":"101","desc":"菜品id"}],"req_body_form":[],"req_headers":[],"req_query":[],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{\"categoryId\":{\"type\":\"integer\",\"format\":\"int64\"},\"categoryName\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"flavors\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"dishId\":{\"type\":\"integer\",\"format\":\"int64\"},\"id\":{\"type\":\"integer\",\"format\":\"int64\"},\"name\":{\"type\":\"string\"},\"value\":{\"type\":\"string\"}},\"title\":\"DishFlavor\",\"$$ref\":\"#/definitions/DishFlavor\",\"required\":[\"dishId\",\"id\",\"name\",\"value\"]}},\"id\":{\"type\":\"integer\",\"format\":\"int64\"},\"image\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"price\":{\"type\":\"number\"},\"status\":{\"type\":\"integer\",\"format\":\"int32\"},\"updateTime\":{\"type\":\"string\",\"format\":\"date-time\"}},\"title\":\"DishVO\",\"$$ref\":\"#/definitions/DishVO\",\"required\":[\"categoryId\",\"categoryName\",\"flavors\",\"description\",\"id\",\"image\",\"name\",\"price\",\"status\",\"updateTime\"]},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<DishVO>>\",\"$$ref\":\"#/definitions/R<<DishVO>>\",\"required\":[\"code\",\"data\"]}","project_id":10518,"catid":105926,"uid":12769,"add_time":1656056921,"up_time":1656483355,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/dish/list","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["菜品相关接口"],"_id":323264,"method":"GET","title":"根据分类id查询菜品","path":"/admin/dish/list","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[{"required":"1","_id":"62bbeaa23e126331ddf24dce","name":"categoryId","example":"101","desc":"分类id"}],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"categoryId\":{\"type\":\"integer\",\"format\":\"int64\"},\"createTime\":{\"type\":\"string\",\"format\":\"date-time\"},\"createUser\":{\"type\":\"integer\",\"format\":\"int64\"},\"description\":{\"type\":\"string\"},\"id\":{\"type\":\"integer\",\"format\":\"int64\"},\"image\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"price\":{\"type\":\"number\"},\"status\":{\"type\":\"integer\",\"format\":\"int32\"},\"updateTime\":{\"type\":\"string\",\"format\":\"date-time\"},\"updateUser\":{\"type\":\"integer\",\"format\":\"int64\"}},\"title\":\"Dish\",\"$$ref\":\"#/definitions/Dish\"}},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<List<<Dish>>>>\",\"$$ref\":\"#/definitions/R<<List<<Dish>>>>\",\"required\":[\"code\"]}","project_id":10518,"catid":105926,"uid":12769,"add_time":1656056921,"up_time":1656482466,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/dish/page","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["菜品相关接口"],"_id":323266,"method":"GET","title":"菜品分页查询","path":"/admin/dish/page","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[{"required":"0","_id":"62bbebff3e1263cea1f24e05","name":"categoryId","example":"101","desc":"分类id"},{"required":"0","_id":"62bbebff3e12634db8f24e04","name":"name","example":"宫保鸡丁","desc":"菜品名称"},{"required":"1","_id":"62bbebff3e12630b6cf24e03","name":"page","example":"1","desc":"页码"},{"required":"1","_id":"62bbebff3e12634976f24e02","name":"pageSize","example":"10","desc":"每页记录数"},{"required":"0","_id":"62bbebff3e1263b91ef24e01","name":"status","example":"1","desc":"分类状态"}],"req_body_type":"raw","res_body_type":"json","res_body":"{\"$schema\":\"http://json-schema.org/draft-04/schema#\",\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"msg\":{\"type\":\"null\"},\"data\":{\"type\":\"object\",\"properties\":{\"total\":{\"type\":\"number\",\"description\":\"总记录数\"},\"records\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"number\"},\"name\":{\"type\":\"string\"},\"categoryId\":{\"type\":\"number\"},\"price\":{\"type\":\"number\"},\"image\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"status\":{\"type\":\"number\"},\"updateTime\":{\"type\":\"string\"},\"categoryName\":{\"type\":\"string\",\"description\":\"分类名称\"}},\"required\":[\"id\",\"name\",\"categoryId\",\"price\",\"image\",\"description\",\"status\",\"updateTime\",\"categoryName\"]},\"description\":\"当前页数据\"}},\"required\":[\"total\",\"records\"]}},\"required\":[\"code\"]}","project_id":10518,"catid":105926,"uid":12769,"add_time":1656056921,"up_time":1656482815,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/dish/status/{status}","params":[]},"edit_uid":0,"status":"undone","type":"var","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["菜品相关接口"],"_id":323268,"method":"POST","title":"菜品起售、停售","path":"/admin/dish/status/{status}","req_params":[{"_id":"62bbedc23e12631123f24e0c","name":"status","example":"1","desc":"菜品状态:1为起售,0为停售"}],"req_body_form":[],"req_headers":[{"required":"1","_id":"62bbedc23e12636a44f24e0e","name":"Content-Type","value":"application/json"}],"req_query":[{"required":"1","_id":"62bbedc23e12630a1af24e0d","name":"id","example":"101","desc":"菜品id"}],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"string\"},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<string>>\",\"$$ref\":\"#/definitions/R<<string>>\",\"required\":[\"code\"]}","project_id":10518,"catid":105926,"uid":12769,"add_time":1656056921,"up_time":1656483266,"__v":0,"desc":"","markdown":"","req_body_other":""}]},{"index":0,"name":"订单管理接口","desc":"Order Controller","add_time":1656056920,"up_time":1656056920,"list":[{"query_path":{"path":"/admin/order/cancel","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["订单管理接口"],"_id":323292,"method":"PUT","title":"取消订单","path":"/admin/order/cancel","req_params":[],"req_body_form":[],"req_headers":[{"required":"1","_id":"62bbee683e12632147f24e13","name":"Content-Type","value":"application/json"}],"req_query":[],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{}},\"msg\":{\"type\":\"string\"}},\"title\":\"R\",\"$$ref\":\"#/definitions/R\",\"required\":[\"code\"]}","req_body_other":"{\"type\":\"object\",\"properties\":{\"cancelReason\":{\"type\":\"string\",\"description\":\"订单取消原因\"},\"id\":{\"type\":\"integer\",\"format\":\"int64\",\"description\":\"订单id\"}},\"title\":\"OrdersCancelDTO\",\"$$ref\":\"#/definitions/OrdersCancelDTO\",\"required\":[\"cancelReason\",\"id\"]}","project_id":10518,"catid":105929,"uid":12769,"add_time":1656056922,"up_time":1656483432,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/order/statistics","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["订单管理接口"],"_id":323306,"method":"GET","title":"各个状态的订单数量统计","path":"/admin/order/statistics","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{\"confirmed\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"待派送数量\"},\"deliveryInProgress\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"派送中数量\"},\"toBeConfirmed\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"待接单数量\"}},\"title\":\"OrderStatisticsVO\",\"$$ref\":\"#/definitions/OrderStatisticsVO\",\"required\":[\"confirmed\",\"deliveryInProgress\",\"toBeConfirmed\"]},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<OrderStatisticsVO>>\",\"$$ref\":\"#/definitions/R<<OrderStatisticsVO>>\",\"required\":[\"code\",\"data\"]}","project_id":10518,"catid":105929,"uid":12769,"add_time":1656056923,"up_time":1656485725,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/order/complete/{id}","params":[]},"edit_uid":0,"status":"undone","type":"var","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["订单管理接口"],"_id":323294,"method":"PUT","title":"完成订单","path":"/admin/order/complete/{id}","req_params":[{"_id":"62bbeed93e12634a8cf24e1a","name":"id","example":"101","desc":"订单id"}],"req_body_form":[],"req_headers":[{"required":"1","_id":"62bbeed93e12636f71f24e1b","name":"Content-Type","value":"application/json"}],"req_query":[],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{}},\"msg\":{\"type\":\"string\"}},\"title\":\"R\",\"$$ref\":\"#/definitions/R\",\"required\":[\"code\"]}","project_id":10518,"catid":105929,"uid":12769,"add_time":1656056922,"up_time":1656483545,"__v":0,"desc":"","markdown":"","req_body_other":""},{"query_path":{"path":"/admin/order/rejection","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["订单管理接口"],"_id":323304,"method":"PUT","title":"拒单","path":"/admin/order/rejection","req_params":[],"req_body_form":[],"req_headers":[{"required":"1","_id":"62bbf7223e12638a98f24e60","name":"Content-Type","value":"application/json"}],"req_query":[],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{}},\"msg\":{\"type\":\"string\"}},\"title\":\"R\",\"$$ref\":\"#/definitions/R\",\"required\":[\"code\"]}","req_body_other":"{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"int64\",\"description\":\"订单id\"},\"rejectionReason\":{\"type\":\"string\",\"description\":\"拒单原因\"}},\"title\":\"OrdersRejectionDTO\",\"$$ref\":\"#/definitions/OrdersRejectionDTO\",\"required\":[\"id\",\"rejectionReason\"]}","project_id":10518,"catid":105929,"uid":12769,"add_time":1656056923,"up_time":1656485666,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/order/confirm","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["订单管理接口"],"_id":323298,"method":"PUT","title":"接单","path":"/admin/order/confirm","req_params":[],"req_body_form":[],"req_headers":[{"required":"1","_id":"62bbf1a63e12630d14f24e51","name":"Content-Type","value":"application/json"}],"req_query":[],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{}},\"msg\":{\"type\":\"string\"}},\"title\":\"R\",\"$$ref\":\"#/definitions/R\",\"required\":[\"code\"]}","req_body_other":"{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"int64\",\"description\":\"订单id\"}},\"title\":\"OrdersConfirmDTO\",\"$$ref\":\"#/definitions/OrdersConfirmDTO\",\"required\":[\"id\"]}","project_id":10518,"catid":105929,"uid":12769,"add_time":1656056922,"up_time":1656484262,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/order/details/{id}","params":[]},"edit_uid":0,"status":"undone","type":"var","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["订单管理接口"],"_id":323302,"method":"GET","title":"查询订单详情","path":"/admin/order/details/{id}","req_params":[{"_id":"62bbf2403e12639fc7f24e5e","name":"id","example":"101","desc":"订单id"}],"req_body_form":[],"req_headers":[],"req_query":[],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{\"address\":{\"type\":\"string\"},\"addressBookId\":{\"type\":\"integer\",\"format\":\"int64\"},\"amount\":{\"type\":\"number\"},\"cancelReason\":{\"type\":\"string\"},\"cancelTime\":{\"type\":\"string\",\"format\":\"date-time\"},\"checkoutTime\":{\"type\":\"string\",\"format\":\"date-time\"},\"consignee\":{\"type\":\"string\"},\"deliveryStatus\":{\"type\":\"integer\",\"format\":\"int32\"},\"deliveryTime\":{\"type\":\"string\",\"format\":\"date-time\"},\"estimatedDeliveryTime\":{\"type\":\"string\",\"format\":\"date-time\"},\"id\":{\"type\":\"integer\",\"format\":\"int64\"},\"number\":{\"type\":\"string\"},\"orderDetailList\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\"},\"dishFlavor\":{\"type\":\"string\"},\"dishId\":{\"type\":\"integer\",\"format\":\"int64\"},\"id\":{\"type\":\"integer\",\"format\":\"int64\"},\"image\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"number\":{\"type\":\"integer\",\"format\":\"int32\"},\"orderId\":{\"type\":\"integer\",\"format\":\"int64\"},\"setmealId\":{\"type\":\"integer\",\"format\":\"int64\"}},\"title\":\"OrderDetail\",\"$$ref\":\"#/definitions/OrderDetail\"}},\"orderDishes\":{\"type\":\"string\"},\"orderTime\":{\"type\":\"string\",\"format\":\"date-time\"},\"packAmount\":{\"type\":\"integer\",\"format\":\"int32\"},\"payMethod\":{\"type\":\"integer\",\"format\":\"int32\"},\"payStatus\":{\"type\":\"integer\",\"format\":\"int32\"},\"phone\":{\"type\":\"string\"},\"rejectionReason\":{\"type\":\"string\"},\"remark\":{\"type\":\"string\"},\"status\":{\"type\":\"integer\",\"format\":\"int32\"},\"tablewareNumber\":{\"type\":\"integer\",\"format\":\"int32\"},\"tablewareStatus\":{\"type\":\"integer\",\"format\":\"int32\"},\"userId\":{\"type\":\"integer\",\"format\":\"int64\"},\"userName\":{\"type\":\"string\"}},\"title\":\"OrderVO\",\"$$ref\":\"#/definitions/OrderVO\"},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<OrderVO>>\",\"$$ref\":\"#/definitions/R<<OrderVO>>\",\"required\":[\"code\"]}","project_id":10518,"catid":105929,"uid":12769,"add_time":1656056922,"up_time":1656484416,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/admin/order/delivery/{id}","params":[]},"edit_uid":0,"status":"undone","type":"var","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["订单管理接口"],"_id":323300,"method":"PUT","title":"派送订单","path":"/admin/order/delivery/{id}","req_params":[{"_id":"62bbf20a3e126313f0f24e5a","name":"id","example":"101","desc":"订单id"}],"req_body_form":[],"req_headers":[],"req_query":[],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{}},\"msg\":{\"type\":\"string\"}},\"title\":\"R\",\"$$ref\":\"#/definitions/R\",\"required\":[\"code\"]}","project_id":10518,"catid":105929,"uid":12769,"add_time":1656056922,"up_time":1656484362,"__v":0,"desc":"","markdown":"","req_body_other":""},{"query_path":{"path":"/admin/order/conditionSearch","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["订单管理接口"],"_id":323296,"method":"GET","title":"订单搜索","path":"/admin/order/conditionSearch","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[{"required":"0","_id":"62bbf0ab3e12637d38f24e4c","name":"beginTime","desc":"beginTime"},{"required":"0","_id":"62bbf0ab3e1263a82df24e4b","name":"endTime","desc":"endTime"},{"required":"0","_id":"62bbf0ab3e126336a9f24e4a","name":"number","desc":"number"},{"required":"1","_id":"62bbf0ab3e1263bd21f24e49","name":"page","desc":"page"},{"required":"1","_id":"62bbf0ab3e12630652f24e48","name":"pageSize","desc":"pageSize"},{"required":"0","_id":"62bbf0ab3e12632aa0f24e47","name":"phone","desc":"phone"},{"required":"0","_id":"62bbf0ab3e1263b1c0f24e46","name":"status","desc":"status"}],"req_body_type":"raw","res_body_type":"json","res_body":"{\"$schema\":\"http://json-schema.org/draft-04/schema#\",\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"msg\":{\"type\":\"null\"},\"data\":{\"type\":\"object\",\"properties\":{\"total\":{\"type\":\"number\"},\"records\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"number\"},\"number\":{\"type\":\"string\"},\"status\":{\"type\":\"number\"},\"userId\":{\"type\":\"number\"},\"addressBookId\":{\"type\":\"number\"},\"orderTime\":{\"type\":\"string\"},\"checkoutTime\":{\"type\":[\"null\",\"string\"]},\"payMethod\":{\"type\":\"number\"},\"payStatus\":{\"type\":\"number\"},\"amount\":{\"type\":\"number\"},\"remark\":{\"type\":\"string\"},\"userName\":{\"type\":\"string\"},\"phone\":{\"type\":\"string\"},\"address\":{\"type\":\"string\"},\"consignee\":{\"type\":\"string\"},\"cancelReason\":{\"type\":\"string\"},\"rejectionReason\":{\"type\":\"string\"},\"cancelTime\":{\"type\":\"string\"},\"estimatedDeliveryTime\":{\"type\":\"string\"},\"deliveryStatus\":{\"type\":\"number\"},\"deliveryTime\":{\"type\":\"string\"},\"packAmount\":{\"type\":\"number\"},\"tablewareNumber\":{\"type\":\"number\"},\"tablewareStatus\":{\"type\":\"number\"},\"orderDishes\":{\"type\":\"string\",\"description\":\"订单包含的菜品,以字符串形式展示\"}},\"required\":[\"id\",\"number\",\"status\",\"userId\",\"addressBookId\",\"orderTime\",\"checkoutTime\",\"payMethod\",\"payStatus\",\"amount\",\"remark\",\"userName\",\"phone\",\"address\",\"consignee\",\"cancelReason\",\"rejectionReason\",\"cancelTime\",\"estimatedDeliveryTime\",\"deliveryStatus\",\"deliveryTime\",\"packAmount\",\"tablewareNumber\",\"tablewareStatus\",\"orderDishes\"]}}}}},\"required\":[\"code\"]}","project_id":10518,"catid":105929,"uid":12769,"add_time":1656056922,"up_time":1656484011,"__v":0,"desc":"","markdown":""}]},{"index":0,"name":"通用接口","desc":"Common Controller","add_time":1656056920,"up_time":1656056920,"list":[{"query_path":{"path":"/admin/common/upload","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["通用接口"],"_id":323256,"method":"POST","title":"文件上传","path":"/admin/common/upload","req_params":[],"req_body_form":[{"required":"1","_id":"62bbf7be3e126357f1f24e63","name":"file","type":"file","desc":"文件"}],"req_headers":[{"required":"1","_id":"62bbf7be3e12631a74f24e62","name":"Content-Type","value":"multipart/form-data"}],"req_query":[],"req_body_type":"form","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"string\",\"description\":\"文件上传路径\"},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<string>>\",\"$$ref\":\"#/definitions/R<<string>>\",\"required\":[\"code\",\"data\"]}","req_body_other":"{\"type\":\"string\",\"format\":\"binary\"}","project_id":10518,"catid":105932,"uid":12769,"add_time":1656056921,"up_time":1656485822,"__v":0,"desc":"","markdown":""}]}]
java 复制代码
//用户端接口
[{"index":0,"name":"C端-分类接口","desc":"Category Controller","add_time":1656057114,"up_time":1656057114,"list":[{"query_path":{"path":"/user/category/list","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["C端-分类接口"],"_id":323360,"method":"GET","title":"条件查询","path":"/user/category/list","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[{"required":"0","_id":"62c542ba3e126322f8f27b80","name":"type","example":"1","desc":"分类类型:1菜品分类2套餐分类"}],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"createTime\":{\"type\":\"string\",\"format\":\"date-time\",\"refType\":null},\"createUser\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null},\"id\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null},\"name\":{\"type\":\"string\",\"refType\":null},\"sort\":{\"type\":\"integer\",\"format\":\"int32\",\"refType\":null},\"status\":{\"type\":\"integer\",\"format\":\"int32\",\"refType\":null},\"type\":{\"type\":\"integer\",\"format\":\"int32\",\"refType\":null},\"updateTime\":{\"type\":\"string\",\"format\":\"date-time\",\"refType\":null},\"updateUser\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null}},\"title\":\"Category\",\"$$ref\":\"#/definitions/Category\"}},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<List<<Category>>>>\",\"$$ref\":\"#/definitions/R<<List<<Category>>>>\",\"required\":[\"code\"]}","project_id":10516,"catid":105941,"uid":12769,"add_time":1656057115,"up_time":1657094842,"__v":0,"desc":"","markdown":""}]},{"index":0,"name":"C端-地址簿接口","desc":"Address Book Controller","add_time":1656057114,"up_time":1656057114,"list":[{"query_path":{"path":"/user/addressBook","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["C端-地址簿接口"],"_id":323346,"method":"POST","title":"新增地址","path":"/user/addressBook","req_params":[],"req_body_form":[],"req_headers":[{"required":"1","_id":"62bc04073e12638609f24e6c","name":"Content-Type","value":"application/json"}],"req_query":[],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{}},\"msg\":{\"type\":\"string\"}},\"title\":\"R\",\"$$ref\":\"#/definitions/R\",\"required\":[\"code\"]}","req_body_other":"{\"type\":\"object\",\"properties\":{\"cityCode\":{\"type\":\"string\",\"refType\":null},\"cityName\":{\"type\":\"string\",\"refType\":null},\"consignee\":{\"type\":\"string\",\"refType\":null},\"detail\":{\"type\":\"string\",\"refType\":null,\"description\":\"详细地址\"},\"districtCode\":{\"type\":\"string\",\"refType\":null},\"districtName\":{\"type\":\"string\",\"refType\":null},\"id\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null},\"isDefault\":{\"type\":\"integer\",\"format\":\"int32\",\"refType\":null},\"label\":{\"type\":\"string\",\"refType\":null},\"phone\":{\"type\":\"string\",\"refType\":null,\"description\":\"手机号\"},\"provinceCode\":{\"type\":\"string\",\"refType\":null},\"provinceName\":{\"type\":\"string\",\"refType\":null},\"sex\":{\"type\":\"string\",\"refType\":null},\"userId\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null}},\"title\":\"AddressBook\",\"$$ref\":\"#/definitions/AddressBook\",\"required\":[\"phone\",\"detail\",\"sex\"]}","project_id":10516,"catid":105944,"uid":12769,"add_time":1656057114,"up_time":1656488967,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/user/addressBook/list","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["C端-地址簿接口"],"_id":323356,"method":"GET","title":"查询当前登录用户的所有地址信息","path":"/user/addressBook/list","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"number\"},\"userId\":{\"type\":\"number\"},\"consignee\":{\"type\":\"string\"},\"phone\":{\"type\":\"string\"},\"sex\":{\"type\":\"string\"},\"provinceCode\":{\"type\":\"string\"},\"provinceName\":{\"type\":\"string\"},\"cityCode\":{\"type\":\"string\"},\"cityName\":{\"type\":\"string\"},\"districtCode\":{\"type\":\"string\"},\"districtName\":{\"type\":\"string\"},\"detail\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"isDefault\":{\"type\":\"number\"}},\"required\":[\"id\",\"phone\",\"consignee\",\"userId\",\"cityCode\",\"provinceName\",\"provinceCode\",\"sex\",\"districtName\",\"districtCode\",\"cityName\",\"isDefault\",\"label\",\"detail\"]},\"msg\":{\"type\":\"string\"}},\"title\":\"R\",\"$$ref\":\"#/definitions/R\",\"required\":[\"code\"]}","project_id":10516,"catid":105944,"uid":12769,"add_time":1656057115,"up_time":1656491287,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/user/addressBook/default","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["C端-地址簿接口"],"_id":323352,"method":"GET","title":"查询默认地址","path":"/user/addressBook/default","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{\"cityCode\":{\"type\":\"string\",\"refType\":null},\"cityName\":{\"type\":\"string\",\"refType\":null},\"consignee\":{\"type\":\"string\",\"refType\":null},\"detail\":{\"type\":\"string\",\"refType\":null},\"districtCode\":{\"type\":\"string\",\"refType\":null},\"districtName\":{\"type\":\"string\",\"refType\":null},\"id\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null},\"isDefault\":{\"type\":\"integer\",\"format\":\"int32\",\"refType\":null},\"label\":{\"type\":\"string\",\"refType\":null},\"phone\":{\"type\":\"string\",\"refType\":null},\"provinceCode\":{\"type\":\"string\",\"refType\":null},\"provinceName\":{\"type\":\"string\",\"refType\":null},\"sex\":{\"type\":\"string\",\"refType\":null},\"userId\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null}},\"title\":\"AddressBook\",\"$$ref\":\"#/definitions/AddressBook\"},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<AddressBook>>\",\"$$ref\":\"#/definitions/R<<AddressBook>>\",\"required\":[\"code\"]}","project_id":10516,"catid":105944,"uid":12769,"add_time":1656057115,"up_time":1656490568,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/user/addressBook","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["C端-地址簿接口"],"_id":323348,"method":"PUT","title":"根据id修改地址","path":"/user/addressBook","req_params":[],"req_body_form":[],"req_headers":[{"required":"1","_id":"62bc045f3e126366b6f24e70","name":"Content-Type","value":"application/json"}],"req_query":[],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{}},\"msg\":{\"type\":\"string\"}},\"title\":\"R\",\"$$ref\":\"#/definitions/R\",\"required\":[\"code\"]}","req_body_other":"{\"type\":\"object\",\"properties\":{\"cityCode\":{\"type\":\"string\",\"refType\":null},\"cityName\":{\"type\":\"string\",\"refType\":null},\"consignee\":{\"type\":\"string\",\"refType\":null},\"detail\":{\"type\":\"string\",\"refType\":null,\"description\":\"详细地址\"},\"districtCode\":{\"type\":\"string\",\"refType\":null},\"districtName\":{\"type\":\"string\",\"refType\":null},\"id\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null,\"description\":\"主键值\"},\"isDefault\":{\"type\":\"integer\",\"format\":\"int32\",\"refType\":null},\"label\":{\"type\":\"string\",\"refType\":null},\"phone\":{\"type\":\"string\",\"refType\":null,\"description\":\"手机号\"},\"provinceCode\":{\"type\":\"string\",\"refType\":null},\"provinceName\":{\"type\":\"string\",\"refType\":null},\"sex\":{\"type\":\"string\",\"refType\":null},\"userId\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null}},\"title\":\"AddressBook\",\"$$ref\":\"#/definitions/AddressBook\",\"required\":[\"id\",\"phone\",\"detail\",\"sex\"]}","project_id":10516,"catid":105944,"uid":12769,"add_time":1656057114,"up_time":1656489055,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/user/addressBook","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["C端-地址簿接口"],"_id":323350,"method":"DELETE","title":"根据id删除地址","path":"/user/addressBook","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[{"required":"1","_id":"62bc09b43e126390aff24e79","name":"id","example":"101","desc":"地址id"}],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{}},\"msg\":{\"type\":\"string\"}},\"title\":\"R\",\"$$ref\":\"#/definitions/R\",\"required\":[\"code\"]}","project_id":10516,"catid":105944,"uid":12769,"add_time":1656057114,"up_time":1656490420,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/user/addressBook/{id}","params":[]},"edit_uid":0,"status":"undone","type":"var","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["C端-地址簿接口"],"_id":323358,"method":"GET","title":"根据id查询地址","path":"/user/addressBook/{id}","req_params":[{"_id":"62bc0e3e3e1263944af24e7e","name":"id","example":"101","desc":"地址id"}],"req_body_form":[],"req_headers":[],"req_query":[],"req_body_type":"raw","res_body_type":"json","res_body":"{\"$schema\":\"http://json-schema.org/draft-04/schema#\",\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"data\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"number\"},\"phone\":{\"type\":\"string\"},\"consignee\":{\"type\":\"string\"},\"userId\":{\"type\":\"number\"},\"cityCode\":{\"type\":\"string\"},\"provinceName\":{\"type\":\"string\"},\"provinceCode\":{\"type\":\"string\"},\"sex\":{\"type\":\"string\"},\"districtName\":{\"type\":\"string\"},\"districtCode\":{\"type\":\"string\"},\"cityName\":{\"type\":\"string\"},\"isDefault\":{\"type\":\"number\"},\"label\":{\"type\":\"string\"},\"detail\":{\"type\":\"string\"}}},\"msg\":{\"type\":\"string\"}},\"required\":[\"code\",\"data\"]}","project_id":10516,"catid":105944,"uid":12769,"add_time":1656057115,"up_time":1656491582,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/user/addressBook/default","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["C端-地址簿接口"],"_id":323354,"method":"PUT","title":"设置默认地址","path":"/user/addressBook/default","req_params":[],"req_body_form":[],"req_headers":[{"required":"1","_id":"62bc0b1e3e12633a48f24e7b","name":"Content-Type","value":"application/json"}],"req_query":[],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{}},\"msg\":{\"type\":\"string\"}},\"title\":\"R\",\"$$ref\":\"#/definitions/R\",\"required\":[\"code\"]}","req_body_other":"{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null,\"description\":\"地址id\"}},\"title\":\"AddressBook\",\"$$ref\":\"#/definitions/AddressBook\",\"required\":[\"id\"]}","project_id":10516,"catid":105944,"uid":12769,"add_time":1656057115,"up_time":1656490782,"__v":0,"desc":"","markdown":""}]},{"index":0,"name":"C端-套餐浏览接口","desc":"Setmeal Controller","add_time":1656057114,"up_time":1656057114,"list":[{"query_path":{"path":"/user/setmeal/list","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["C端-套餐浏览接口"],"_id":323380,"method":"GET","title":"根据分类id查询套餐","path":"/user/setmeal/list","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[{"required":"1","_id":"62bc0ed83e12636c9ff24e86","name":"categoryId","example":"101","desc":"分类id"}],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"categoryId\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null},\"createTime\":{\"type\":\"string\",\"format\":\"date-time\",\"refType\":null},\"createUser\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null},\"description\":{\"type\":\"string\",\"refType\":null},\"id\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null},\"image\":{\"type\":\"string\",\"refType\":null},\"name\":{\"type\":\"string\",\"refType\":null},\"price\":{\"type\":\"number\",\"refType\":null},\"status\":{\"type\":\"integer\",\"format\":\"int32\",\"refType\":null},\"updateTime\":{\"type\":\"string\",\"format\":\"date-time\",\"refType\":null},\"updateUser\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null}},\"title\":\"Setmeal\",\"$$ref\":\"#/definitions/Setmeal\"}},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<List<<Setmeal>>>>\",\"$$ref\":\"#/definitions/R<<List<<Setmeal>>>>\",\"required\":[\"code\"]}","project_id":10516,"catid":105947,"uid":12769,"add_time":1656057116,"up_time":1656491736,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/user/setmeal/dish/{id}","params":[]},"edit_uid":0,"status":"undone","type":"var","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["C端-套餐浏览接口"],"_id":323378,"method":"GET","title":"根据套餐id查询包含的菜品","path":"/user/setmeal/dish/{id}","req_params":[{"_id":"62bc0ea83e12639647f24e84","name":"id","example":"101","desc":"套餐id"}],"req_body_form":[],"req_headers":[],"req_query":[],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"copies\":{\"type\":\"integer\",\"format\":\"int32\",\"refType\":null,\"description\":\"份数\"},\"description\":{\"type\":\"string\",\"refType\":null,\"description\":\"菜品描述\"},\"image\":{\"type\":\"string\",\"refType\":null,\"description\":\"菜品图片路径\"},\"name\":{\"type\":\"string\",\"refType\":null,\"description\":\"菜品名称\"}},\"title\":\"DishItemVO\",\"$$ref\":\"#/definitions/DishItemVO\",\"required\":[\"copies\",\"description\",\"image\",\"name\"]}},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<List<<DishItemVO>>>>\",\"$$ref\":\"#/definitions/R<<List<<DishItemVO>>>>\",\"required\":[\"code\",\"data\"]}","project_id":10516,"catid":105947,"uid":12769,"add_time":1656057116,"up_time":1656491688,"__v":0,"desc":"","markdown":""}]},{"index":0,"name":"C端-店铺操作接口","desc":"Shop Controller","add_time":1656057114,"up_time":1656057114,"list":[{"query_path":{"path":"/user/shop/status","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["C端-店铺操作接口"],"_id":323382,"method":"GET","title":"获取营业状态","path":"/user/shop/status","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"integer\",\"format\":\"int32\",\"description\":\"店铺状态:1为营业,0为打烊\"},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<int>>\",\"$$ref\":\"#/definitions/R<<int>>\",\"required\":[\"code\",\"data\"]}","project_id":10516,"catid":105950,"uid":12769,"add_time":1656057116,"up_time":1656491821,"__v":0,"desc":"","markdown":""}]},{"index":0,"name":"C端-用户接口","desc":"User Controller","add_time":1656057114,"up_time":1656057114,"list":[{"query_path":{"path":"/user/user/login","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["C端-用户接口"],"_id":323392,"method":"POST","title":"登录","path":"/user/user/login","req_params":[],"req_body_form":[],"req_headers":[{"required":"1","_id":"62c537e93e1263af8ff27b7f","name":"Content-Type","value":"application/json"}],"req_query":[],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null,\"description\":\"用户id\"},\"openid\":{\"type\":\"string\",\"refType\":null,\"description\":\"微信用户openid\"},\"token\":{\"type\":\"string\",\"refType\":null,\"description\":\"jwt令牌\"}},\"title\":\"UserLoginVO\",\"$$ref\":\"#/definitions/UserLoginVO\",\"required\":[\"id\",\"openid\",\"token\"]},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<UserLoginVO>>\",\"$$ref\":\"#/definitions/R<<UserLoginVO>>\",\"required\":[\"code\",\"data\"]}","req_body_other":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"string\",\"refType\":null,\"description\":\"微信授权码\"}},\"title\":\"UserLoginDTO\",\"$$ref\":\"#/definitions/UserLoginDTO\",\"required\":[\"code\"]}","project_id":10516,"catid":105953,"uid":12769,"add_time":1656057116,"up_time":1657092073,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/user/user/logout","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["C端-用户接口"],"_id":323394,"method":"POST","title":"退出","path":"/user/user/logout","req_params":[],"req_body_form":[],"req_headers":[{"required":"1","_id":"62bc0f963e126372d1f24e89","name":"Content-Type","value":"application/json"}],"req_query":[],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{}},\"msg\":{\"type\":\"string\"}},\"title\":\"R\",\"$$ref\":\"#/definitions/R\",\"required\":[\"code\"]}","project_id":10516,"catid":105953,"uid":12769,"add_time":1656057116,"up_time":1656491926,"__v":0,"desc":"","markdown":"","req_body_other":"{\"type\":\"object\",\"title\":\"empty object\",\"properties\":{}}"}]},{"index":0,"name":"C端-菜品浏览接口","desc":"Dish Controller","add_time":1656057114,"up_time":1656057114,"list":[{"query_path":{"path":"/user/dish/list","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["C端-菜品浏览接口"],"_id":323362,"method":"GET","title":"根据分类id查询菜品","path":"/user/dish/list","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[{"required":"1","_id":"62bc0fed3e126302f6f24fc6","name":"categoryId","example":"101","desc":"分类id"}],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"categoryId\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null},\"categoryName\":{\"type\":\"string\",\"refType\":null},\"description\":{\"type\":\"string\",\"refType\":null},\"flavors\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"dishId\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null},\"id\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null},\"name\":{\"type\":\"string\",\"refType\":null},\"value\":{\"type\":\"string\",\"refType\":null}},\"title\":\"DishFlavor\",\"$$ref\":\"#/definitions/DishFlavor\"},\"refType\":\"DishFlavor\",\"description\":\"菜品口味\"},\"id\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null},\"image\":{\"type\":\"string\",\"refType\":null,\"description\":\"菜品图片路径\"},\"name\":{\"type\":\"string\",\"refType\":null,\"description\":\"菜品名称\"},\"price\":{\"type\":\"number\",\"refType\":null,\"description\":\"价格\"},\"status\":{\"type\":\"integer\",\"format\":\"int32\",\"refType\":null},\"updateTime\":{\"type\":\"string\",\"format\":\"date-time\",\"refType\":null}},\"title\":\"DishVO\",\"$$ref\":\"#/definitions/DishVO\"}},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<List<<DishVO>>>>\",\"$$ref\":\"#/definitions/R<<List<<DishVO>>>>\",\"required\":[\"code\"]}","project_id":10516,"catid":105956,"uid":12769,"add_time":1656057115,"up_time":1656492013,"__v":0,"desc":"","markdown":""}]},{"index":0,"name":"C端-订单接口","desc":"Order Controller","add_time":1656057114,"up_time":1656057114,"list":[{"query_path":{"path":"/user/order/reminder/{id}","params":[]},"edit_uid":0,"status":"undone","type":"var","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["C端-订单接口"],"_id":323372,"method":"GET","title":"催单","path":"/user/order/reminder/{id}","req_params":[{"_id":"62bc13c13e12635596f24fde","name":"id","example":"101","desc":"订单id"}],"req_body_form":[],"req_headers":[],"req_query":[],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{}},\"msg\":{\"type\":\"string\"}},\"title\":\"R\",\"$$ref\":\"#/definitions/R\",\"required\":[\"code\"]}","project_id":10516,"catid":105959,"uid":12769,"add_time":1656057115,"up_time":1656492993,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/user/order/repetition/{id}","params":[]},"edit_uid":0,"status":"undone","type":"var","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["C端-订单接口"],"_id":323374,"method":"POST","title":"再来一单","path":"/user/order/repetition/{id}","req_params":[{"_id":"62bc14123e12633928f24fe9","name":"id","example":"101","desc":"订单id"}],"req_body_form":[],"req_headers":[],"req_query":[],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{}},\"msg\":{\"type\":\"string\"}},\"title\":\"R\",\"$$ref\":\"#/definitions/R\",\"required\":[\"code\"]}","project_id":10516,"catid":105959,"uid":12769,"add_time":1656057115,"up_time":1656493074,"__v":0,"desc":"","markdown":"","req_body_other":""},{"query_path":{"path":"/user/order/historyOrders","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["C端-订单接口"],"_id":323366,"method":"GET","title":"历史订单查询","path":"/user/order/historyOrders","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[{"required":"1","_id":"62bc12113e12638989f24fd7","name":"page","example":"1","desc":"页面"},{"required":"1","_id":"62bc12113e1263b1acf24fd6","name":"pageSize","example":"10","desc":"每页记录数"},{"required":"0","_id":"62bc12113e126383d2f24fd5","name":"status","desc":"订单状态"}],"req_body_type":"raw","res_body_type":"json","res_body":"{\"$schema\":\"http://json-schema.org/draft-04/schema#\",\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"number\"},\"msg\":{\"type\":\"null\"},\"data\":{\"type\":\"object\",\"properties\":{\"total\":{\"type\":\"number\"},\"records\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"number\"},\"number\":{\"type\":\"string\"},\"status\":{\"type\":\"number\"},\"userId\":{\"type\":\"number\"},\"addressBookId\":{\"type\":\"number\"},\"orderTime\":{\"type\":\"string\"},\"checkoutTime\":{\"type\":\"string\"},\"payMethod\":{\"type\":\"number\"},\"payStatus\":{\"type\":\"number\"},\"amount\":{\"type\":\"number\"},\"remark\":{\"type\":\"string\"},\"userName\":{\"type\":\"null\"},\"phone\":{\"type\":\"string\"},\"address\":{\"type\":\"string\"},\"consignee\":{\"type\":\"string\"},\"cancelReason\":{\"type\":\"null\"},\"rejectionReason\":{\"type\":\"null\"},\"cancelTime\":{\"type\":\"null\"},\"estimatedDeliveryTime\":{\"type\":\"string\"},\"deliveryStatus\":{\"type\":\"number\"},\"deliveryTime\":{\"type\":\"null\"},\"packAmount\":{\"type\":\"number\"},\"tablewareNumber\":{\"type\":\"number\"},\"tablewareStatus\":{\"type\":\"number\"},\"orderDetailList\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"number\"},\"name\":{\"type\":\"string\"},\"orderId\":{\"type\":\"number\"},\"dishId\":{\"type\":\"number\"},\"setmealId\":{\"type\":\"null\"},\"dishFlavor\":{\"type\":[\"null\",\"string\"]},\"number\":{\"type\":\"number\"},\"amount\":{\"type\":\"number\"},\"image\":{\"type\":\"string\"}},\"required\":[\"id\",\"name\",\"orderId\",\"dishId\",\"setmealId\",\"dishFlavor\",\"number\",\"amount\",\"image\"]}}}}}}}}}","project_id":10516,"catid":105959,"uid":12769,"add_time":1656057115,"up_time":1656492561,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/user/order/cancel/{id}","params":[]},"edit_uid":0,"status":"undone","type":"var","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["C端-订单接口"],"_id":323364,"method":"PUT","title":"取消订单","path":"/user/order/cancel/{id}","req_params":[{"_id":"62bc10393e1263c552f24fcb","name":"id","example":"101","desc":"订单id"}],"req_body_form":[],"req_headers":[],"req_query":[],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{}},\"msg\":{\"type\":\"string\"}},\"title\":\"R\",\"$$ref\":\"#/definitions/R\",\"required\":[\"code\"]}","project_id":10516,"catid":105959,"uid":12769,"add_time":1656057115,"up_time":1656492089,"__v":0,"desc":"","markdown":"","req_body_other":""},{"query_path":{"path":"/user/order/orderDetail/{id}","params":[]},"edit_uid":0,"status":"undone","type":"var","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["C端-订单接口"],"_id":323368,"method":"GET","title":"查询订单详情","path":"/user/order/orderDetail/{id}","req_params":[{"_id":"62bc132c3e1263462ff24fda","name":"id","example":"101","desc":"订单id"}],"req_body_form":[],"req_headers":[],"req_query":[],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{\"address\":{\"type\":\"string\",\"refType\":null},\"addressBookId\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null},\"amount\":{\"type\":\"number\",\"refType\":null},\"cancelReason\":{\"type\":\"string\",\"refType\":null},\"cancelTime\":{\"type\":\"string\",\"format\":\"date-time\",\"refType\":null},\"checkoutTime\":{\"type\":\"string\",\"format\":\"date-time\",\"refType\":null},\"consignee\":{\"type\":\"string\",\"refType\":null},\"deliveryStatus\":{\"type\":\"integer\",\"format\":\"int32\",\"refType\":null},\"deliveryTime\":{\"type\":\"string\",\"format\":\"date-time\",\"refType\":null},\"estimatedDeliveryTime\":{\"type\":\"string\",\"format\":\"date-time\",\"refType\":null},\"id\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null},\"number\":{\"type\":\"string\",\"refType\":null},\"orderDetailList\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\",\"refType\":null},\"dishFlavor\":{\"type\":\"string\",\"refType\":null},\"dishId\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null},\"id\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null},\"image\":{\"type\":\"string\",\"refType\":null},\"name\":{\"type\":\"string\",\"refType\":null},\"number\":{\"type\":\"integer\",\"format\":\"int32\",\"refType\":null},\"orderId\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null},\"setmealId\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null}},\"title\":\"OrderDetail\",\"$$ref\":\"#/definitions/OrderDetail\"},\"refType\":\"OrderDetail\"},\"orderTime\":{\"type\":\"string\",\"format\":\"date-time\",\"refType\":null},\"packAmount\":{\"type\":\"integer\",\"format\":\"int32\",\"refType\":null},\"payMethod\":{\"type\":\"integer\",\"format\":\"int32\",\"refType\":null},\"payStatus\":{\"type\":\"integer\",\"format\":\"int32\",\"refType\":null},\"phone\":{\"type\":\"string\",\"refType\":null},\"rejectionReason\":{\"type\":\"string\",\"refType\":null},\"remark\":{\"type\":\"string\",\"refType\":null},\"status\":{\"type\":\"integer\",\"format\":\"int32\",\"refType\":null},\"tablewareNumber\":{\"type\":\"integer\",\"format\":\"int32\",\"refType\":null},\"tablewareStatus\":{\"type\":\"integer\",\"format\":\"int32\",\"refType\":null},\"userId\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null},\"userName\":{\"type\":\"string\",\"refType\":null}},\"title\":\"OrderVO\",\"$$ref\":\"#/definitions/OrderVO\"},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<OrderVO>>\",\"$$ref\":\"#/definitions/R<<OrderVO>>\"}","project_id":10516,"catid":105959,"uid":12769,"add_time":1656057115,"up_time":1656492844,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/user/order/submit","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["C端-订单接口"],"_id":323376,"method":"POST","title":"用户下单","path":"/user/order/submit","req_params":[],"req_body_form":[],"req_headers":[{"required":"1","_id":"62bc14c63e1263a09af24feb","name":"Content-Type","value":"application/json"}],"req_query":[],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null,\"description\":\"订单id\"},\"orderAmount\":{\"type\":\"number\",\"refType\":null,\"description\":\"订单金额\"},\"orderNumber\":{\"type\":\"string\",\"refType\":null,\"description\":\"订单号\"},\"orderTime\":{\"type\":\"string\",\"format\":\"date-time\",\"refType\":null,\"description\":\"下单时间\"}},\"title\":\"OrderSubmitVO\",\"$$ref\":\"#/definitions/OrderSubmitVO\",\"required\":[\"id\",\"orderAmount\",\"orderNumber\",\"orderTime\"]},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<OrderSubmitVO>>\",\"$$ref\":\"#/definitions/R<<OrderSubmitVO>>\",\"required\":[\"code\",\"data\"]}","req_body_other":"{\"type\":\"object\",\"properties\":{\"addressBookId\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null,\"description\":\"地址簿id\"},\"amount\":{\"type\":\"number\",\"refType\":null,\"description\":\"总金额\"},\"deliveryStatus\":{\"type\":\"integer\",\"format\":\"int32\",\"refType\":null,\"description\":\"配送状态:1立即送出0选择具体时间\"},\"estimatedDeliveryTime\":{\"type\":\"string\",\"example\":\"yyyy-MM-dd HH:mm:ss\",\"refType\":null,\"description\":\"预计送达时间\"},\"packAmount\":{\"type\":\"integer\",\"format\":\"int32\",\"refType\":null,\"description\":\"打包费\"},\"payMethod\":{\"type\":\"integer\",\"format\":\"int32\",\"refType\":null,\"description\":\"付款方式\"},\"remark\":{\"type\":\"string\",\"refType\":null,\"description\":\"备注\"},\"tablewareNumber\":{\"type\":\"integer\",\"format\":\"int32\",\"refType\":null,\"description\":\"餐具数量\"},\"tablewareStatus\":{\"type\":\"integer\",\"format\":\"int32\",\"refType\":null,\"description\":\"餐具数量状态1按餐量提供0选择具体数量\"}},\"title\":\"OrdersSubmitDTO\",\"$$ref\":\"#/definitions/OrdersSubmitDTO\",\"required\":[\"addressBookId\",\"amount\",\"deliveryStatus\",\"estimatedDeliveryTime\",\"packAmount\",\"payMethod\",\"remark\",\"tablewareNumber\",\"tablewareStatus\"]}","project_id":10516,"catid":105959,"uid":12769,"add_time":1656057116,"up_time":1656493254,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/user/order/payment","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["C端-订单接口"],"_id":323370,"method":"PUT","title":"订单支付","path":"/user/order/payment","req_params":[],"req_body_form":[],"req_headers":[{"required":"1","_id":"63184cf63e1263a810f55f80","name":"Content-Type","value":"application/json"}],"req_query":[],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"object\",\"properties\":{\"nonceStr\":{\"type\":\"string\",\"format\":\"date-time\",\"refType\":null,\"description\":\"随机字符串\"},\"paySign\":{\"type\":\"string\",\"description\":\"签名\"},\"timeStamp\":{\"type\":\"string\",\"description\":\"时间戳\"},\"signType\":{\"type\":\"string\",\"description\":\"签名算法\"},\"packageStr\":{\"type\":\"string\",\"description\":\"统一下单接口返回的prepay_id参数值\"}},\"title\":\"OrderPaymentVO\",\"$$ref\":\"#/definitions/OrderPaymentVO\",\"required\":[\"nonceStr\",\"packageStr\",\"signType\",\"timeStamp\",\"paySign\"]},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<OrderPaymentVO>>\",\"$$ref\":\"#/definitions/R<<OrderPaymentVO>>\",\"required\":[\"code\",\"data\"]}","req_body_other":"{\"type\":\"object\",\"properties\":{\"orderNumber\":{\"type\":\"string\",\"refType\":null,\"description\":\"订单号\"},\"payMethod\":{\"type\":\"integer\",\"format\":\"int32\",\"refType\":null,\"description\":\"支付方式\"}},\"title\":\"OrdersPaymentDTO\",\"$$ref\":\"#/definitions/OrdersPaymentDTO\",\"required\":[\"orderNumber\",\"payMethod\"]}","project_id":10516,"catid":105959,"uid":12769,"add_time":1656057115,"up_time":1662536950,"__v":0,"desc":"","markdown":""}]},{"index":0,"name":"C端-购物车接口","desc":"Shopping Cart Controller","add_time":1656057114,"up_time":1656057114,"list":[{"query_path":{"path":"/user/shoppingCart/sub","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["C端-购物车接口"],"_id":323390,"method":"POST","title":"删除购物车中一个商品","path":"/user/shoppingCart/sub","req_params":[],"req_body_form":[],"req_headers":[{"required":"1","_id":"62bc15973e1263cb91f24fef","name":"Content-Type","value":"application/json"}],"req_query":[],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"string\"},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<string>>\",\"$$ref\":\"#/definitions/R<<string>>\",\"required\":[\"code\"]}","req_body_other":"{\"type\":\"object\",\"properties\":{\"dishFlavor\":{\"type\":\"string\",\"refType\":null,\"description\":\"口味\"},\"dishId\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null,\"description\":\"菜品id\"},\"setmealId\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null,\"description\":\"套餐id\"}},\"title\":\"ShoppingCartDTO\",\"$$ref\":\"#/definitions/ShoppingCartDTO\"}","project_id":10516,"catid":105962,"uid":12769,"add_time":1656057116,"up_time":1656493463,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/user/shoppingCart/list","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["C端-购物车接口"],"_id":323388,"method":"GET","title":"查看购物车","path":"/user/shoppingCart/list","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"amount\":{\"type\":\"number\",\"refType\":null},\"createTime\":{\"type\":\"string\",\"format\":\"date-time\",\"refType\":null},\"dishFlavor\":{\"type\":\"string\",\"refType\":null},\"dishId\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null},\"id\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null},\"image\":{\"type\":\"string\",\"refType\":null},\"name\":{\"type\":\"string\",\"refType\":null},\"number\":{\"type\":\"integer\",\"format\":\"int32\",\"refType\":null},\"setmealId\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null},\"userId\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null}},\"title\":\"ShoppingCart\",\"$$ref\":\"#/definitions/ShoppingCart\"}},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<List<<ShoppingCart>>>>\",\"$$ref\":\"#/definitions/R<<List<<ShoppingCart>>>>\",\"required\":[\"code\"]}","project_id":10516,"catid":105962,"uid":12769,"add_time":1656057116,"up_time":1656493399,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/user/shoppingCart/add","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["C端-购物车接口"],"_id":323384,"method":"POST","title":"添加购物车","path":"/user/shoppingCart/add","req_params":[],"req_body_form":[],"req_headers":[{"required":"1","_id":"62bc15143e12631166f24fed","name":"Content-Type","value":"application/json"}],"req_query":[],"req_body_type":"json","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"string\"},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<string>>\",\"$$ref\":\"#/definitions/R<<string>>\",\"required\":[\"code\"]}","req_body_other":"{\"type\":\"object\",\"properties\":{\"dishFlavor\":{\"type\":\"string\",\"refType\":null,\"description\":\"口味\"},\"dishId\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null,\"description\":\"菜品id\"},\"setmealId\":{\"type\":\"integer\",\"format\":\"int64\",\"refType\":null,\"description\":\"套餐id\"}},\"title\":\"ShoppingCartDTO\",\"$$ref\":\"#/definitions/ShoppingCartDTO\"}","project_id":10516,"catid":105962,"uid":12769,"add_time":1656057116,"up_time":1656493332,"__v":0,"desc":"","markdown":""},{"query_path":{"path":"/user/shoppingCart/clean","params":[]},"edit_uid":0,"status":"undone","type":"static","req_body_is_json_schema":true,"res_body_is_json_schema":true,"api_opened":false,"index":0,"tag":["C端-购物车接口"],"_id":323386,"method":"DELETE","title":"清空购物车","path":"/user/shoppingCart/clean","req_params":[],"req_body_form":[],"req_headers":[],"req_query":[],"req_body_type":"raw","res_body_type":"json","res_body":"{\"type\":\"object\",\"properties\":{\"code\":{\"type\":\"integer\",\"format\":\"int32\"},\"data\":{\"type\":\"string\"},\"msg\":{\"type\":\"string\"}},\"title\":\"R<<string>>\",\"$$ref\":\"#/definitions/R<<string>>\",\"required\":[\"code\"]}","project_id":10516,"catid":105962,"uid":12769,"add_time":1656057116,"up_time":1656493372,"__v":0,"desc":"","markdown":"","req_body_other":""}]}]

打开Apifox-新建项目-输入名称-新建,创建两个项目,点击+---导入---Yapi---选择文件---确认导入---知道了,这样在接口管理中就可以查看添加的接口了。

Swagger

之前我们开发完某个功能需要测试时,通常使用postman进行测试,但有些接口可能需要大量参数,使用postman测试效率较低,因此我们选择使用Swagger来实现高效测试。

使用Swagger只需要按照它的规范去定义接口及接口相关的信息,就可以做到生成接口文档,以及在线接口调试页面。官网: https://swagger.io/

但直接使用Swagger比较繁琐,因此我们选择Knife4j框架,其对Swagger进行了封装并简化了相应的操作。Knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案。

要想使用他需要在pom.xml文件中导入他的坐标:

java 复制代码
        <dependency>
            <groupId>com.github.xiaoymin</groupId>
            <artifactId>knife4j-spring-boot-starter</artifactId>
            <version>3.0.2</version>
        </dependency>

然后需要在配置类WebMvcConfiguration中加入Knife4j相关配置:

java 复制代码
    /**
     * 通过knife4j生成接口文档
     * @return
     */
    @Bean
    public Docket docket() {
        ApiInfo apiInfo = new ApiInfoBuilder()
                .title("苍穹外卖项目接口文档")
                .version("2.0")
                .description("苍穹外卖项目接口文档")
                .build();
        Docket docket = new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo)
                .select()
                //指定接口文档需要扫描的包
                .apis(RequestHandlerSelectors.basePackage("com.sky.controller"))
                .paths(PathSelectors.any())
                .build();
        return docket;
    }

@Bean表示由spring创建并管理这个对象,在该类中创建了对象ApiInfo构建了之前生成的接口文档的一系列信息。然后创建了Docket对象,指定了常量SWAGGER_2表示该swagger的版本,apiInfo传参指定上文生成的的 apiInfo,后面指定接口文档扫描com.sky.controller包及其子包,即扫描其中的类和方法,然后通过反射来生成接口文档。

这些代码我们了解且知道如何修改即可

最后需要设置静态资源映射,否则接口文档页面无法访问(即请求被拦截):

java 复制代码
    /**
     * 设置静态资源映射
     * @param registry
     */
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

此时访问localhost:8080/doc.html即可访问接口文档,在这里就可以便捷的测试接口。(注意这里是直接访问后端,不要再访问Nginx地址)

不难发现其与Apifox有着高度相似,但两者并不冲突:Apifox是设计阶段使用的工具,而Swagger是开发阶段使用的框架。

常用注解

在上文的接口文档页面中,显示的都是方法名类名之类的,仍有些不便于理解,我们可以通过Swagger注解来替换,接下来介绍几个常用的注解:

  • @Api: 用于类上,提供类的相关信息,如API的值和描述。
  • @ApiOperation: 用于方法上,描述API操作的信息,包括操作的值和详细说明。
  • @ApiModel: 用于类上,表示该类是一个模型,并提供模型的描述。
  • @ApiModelProperty: 用于模型属性上,描述模型属性的详细信息。
java 复制代码
@Api(value = "用户API", description = "用户相关的操作")
public class UserController {
    // ...
}
@ApiOperation(value = "创建用户", notes = "根据User对象创建用户")
public ResponseEntity<User> createUser(@RequestBody User user) {
    // ...
}
@ApiModel(description = "用户实体")
public class User {
    // ...
}
public class User {
    @ApiModelProperty(value = "用户ID", example = "1")
    private Long id;
    // ...
}

其中例如value=可以省略。 以下为修改后的文档:

相关推荐
小李不想输啦2 小时前
什么是微服务、微服务如何实现Eureka,网关是什么,nacos是什么
java·spring boot·微服务·eureka·架构
张铁铁是个小胖子2 小时前
微服务学习
java·学习·微服务
ggs_and_ddu2 小时前
Android--java实现手机亮度控制
android·java·智能手机
敲代码娶不了六花4 小时前
jsp | servlet | spring forEach读取不了对象List
java·spring·servlet·tomcat·list·jsp
Yhame.4 小时前
深入理解 Java 中的 ArrayList 和 List:泛型与动态数组
java·开发语言
ROCKY_8174 小时前
Mysql复习(二)
数据库·mysql·oracle
是小崔啊5 小时前
开源轮子 - EasyExcel02(深入实践)
java·开源·excel
myNameGL6 小时前
linux安装idea
java·ide·intellij-idea
青春男大6 小时前
java栈--数据结构
java·开发语言·数据结构·学习·eclipse
问道飞鱼6 小时前
【知识科普】认识正则表达式
数据库·mysql·正则表达式