Files
zyt/admin/README_ORDER.md
2026-03-11 09:49:47 +08:00

6.4 KiB
Raw Permalink Blame History

订单系统 - 快速开始

🎯 概述

完整的订单管理系统,包括:

  • 订单创建、编辑、删除
  • 支付、取消、退款操作
  • 订单列表、搜索、筛选
  • 订单详情查看
  • 订单导出

5分钟快速安装

1️⃣ 创建数据库表(必须)

复制以下 SQL 到你的数据库管理工具执行:

-- 订单表
CREATE TABLE IF NOT EXISTS `la_order` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `order_no` varchar(50) NOT NULL COMMENT '订单号',
  `patient_id` int(11) NOT NULL COMMENT '患者ID',
  `creator_id` int(11) NOT NULL COMMENT '创建人ID(推广ID',
  `order_type` tinyint(1) NOT NULL COMMENT '订单类型 1-挂号费 2-问诊费 3-药品费用',
  `amount` decimal(10, 2) NOT NULL COMMENT '订单金额',
  `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '订单状态 1-待支付 2-已支付 3-已取消 4-已退款',
  `payment_method` varchar(20) DEFAULT NULL COMMENT '支付方式 alipay-支付宝 wechat-微信 bank-银行卡',
  `payment_time` datetime DEFAULT NULL COMMENT '支付时间',
  `remark` varchar(500) DEFAULT '' COMMENT '备注',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  `delete_time` datetime DEFAULT NULL COMMENT '删除时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_order_no` (`order_no`),
  KEY `idx_patient` (`patient_id`),
  KEY `idx_creator` (`creator_id`),
  KEY `idx_status` (`status`),
  KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单表';

-- 订单详情表
CREATE TABLE IF NOT EXISTS `la_order_detail` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `order_id` int(11) NOT NULL COMMENT '订单ID',
  `related_type` varchar(20) NOT NULL COMMENT '关联类型 appointment-挂号 diagnosis-问诊 medicine-药品',
  `related_id` int(11) NOT NULL COMMENT '关联ID',
  `quantity` int(11) DEFAULT '1' COMMENT '数量',
  `unit_price` decimal(10, 2) NOT NULL COMMENT '单价',
  `total_price` decimal(10, 2) NOT NULL COMMENT '总价',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  PRIMARY KEY (`id`),
  KEY `idx_order` (`order_id`),
  KEY `idx_related` (`related_type`, `related_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单详情表';

2️⃣ 验证表创建

执行以下 SQL 检查表是否创建成功:

SHOW TABLES LIKE 'la_order%';
DESC la_order;
DESC la_order_detail;

3️⃣ 添加权限节点

在后端权限管理系统中添加以下权限:

order.order/lists      - 订单列表
order.order/detail     - 订单详情
order.order/create     - 创建订单
order.order/edit       - 编辑订单
order.order/pay        - 支付订单
order.order/cancel     - 取消订单
order.order/refund     - 退款订单
order.order/delete     - 删除订单
order.order/export     - 导出订单

4️⃣ 完成!

现在你可以访问订单页面了。

📂 文件位置

前端

admin/src/api/order.ts                    # API 接口
admin/src/views/order/index.vue           # 列表页面

后端

server/app/common/model/Order.php
server/app/common/model/OrderDetail.php
server/app/adminapi/controller/order/OrderController.php
server/app/adminapi/logic/order/OrderLogic.php
server/app/adminapi/validate/order/OrderValidate.php
server/app/adminapi/lists/order/OrderLists.php

🔌 API 端点

GET    /order.order/lists       - 订单列表
GET    /order.order/detail      - 订单详情
POST   /order.order/create      - 创建订单
POST   /order.order/edit        - 编辑订单
POST   /order.order/pay         - 支付订单
POST   /order.order/cancel      - 取消订单
POST   /order.order/refund      - 退款订单
POST   /order.order/delete      - 删除订单
GET    /order.order/export      - 导出订单

📋 订单类型

类型 说明
挂号费 1 医生挂号费用
问诊费 2 医生问诊费用
药品费用 3 药品购买费用

📊 订单状态

状态 说明
待支付 1 订单已创建,等待支付
已支付 2 订单已支付
已取消 3 订单已取消
已退款 4 订单已退款

💳 支付方式

方式 说明
支付宝 alipay 支付宝支付
微信 wechat 微信支付
银行卡 bank 银行卡支付

🚀 使用示例

创建订单

import { orderCreate } from '@/api/order'

const result = await orderCreate({
  patient_id: 1,
  order_type: 1,
  amount: 100.00,
  remark: '挂号费',
  details: [
    {
      related_type: 'appointment',
      related_id: 1,
      quantity: 1,
      unit_price: 100.00,
      total_price: 100.00
    }
  ]
})

支付订单

import { orderPay } from '@/api/order'

await orderPay({
  id: 1,
  payment_method: 'alipay'
})

获取订单列表

import { orderLists } from '@/api/order'

const result = await orderLists({
  page_no: 1,
  page_size: 15,
  order_type: 1,
  status: 1
})

常见问题

Q: 表不存在错误?

A: 执行上面的 SQL 脚本创建表。

Q: 控制器找不到?

A: 确保文件在 server/app/adminapi/controller/order/ 目录中。

Q: 权限不足?

A: 在权限管理系统中添加相应的权限节点。

Q: 如何删除表?

A: 执行以下 SQL

DROP TABLE IF EXISTS la_order_detail;
DROP TABLE IF EXISTS la_order;

📚 详细文档

  • ORDER_SYSTEM_GUIDE.md - 完整系统指南
  • ORDER_SETUP.md - 安装指南
  • INSTALL_ORDER_TABLES.md - 表安装指南
  • ORDER_IMPLEMENTATION_COMPLETE.md - 实现完成说明

特性

完整的 CRUD 操作 支付状态管理 订单详情关联 创建人追踪(推广 ID 软删除支持 事务处理 完整的验证规则 搜索和筛选 数据导出

🔒 安全特性

  • 权限验证
  • 输入验证
  • SQL 注入防护
  • 事务处理
  • 软删除

📞 需要帮助?

  1. 检查 INSTALL_ORDER_TABLES.md 了解表安装
  2. 查看 ORDER_SYSTEM_GUIDE.md 了解完整功能
  3. 参考其他模块的实现作为参考

版本: 1.0.0 状态: 完成 最后更新: 2024-03-10