Skip to content

管理后台 — 订单管理

上级文档:管理后台 Web


模块概述

订单管理是管理后台的核心业务模块,承载「用户购买产品 → 支付 → 生效 → 核销/使用 → 退款」全生命周期管理。运营人员在此完成订单查询、退款处理、核销记录追踪、财务对账导出等日常操作。


页面路由

路由页面说明
/orders订单列表多维度筛选、批量导出
/orders/:id订单详情完整信息、操作日志、退款操作

订单列表页

列表字段定义

列名字段 key类型说明排序
订单编号idString格式:YYYYMMDD + 6 位随机码,如 20260331A7X9KL
用户信息userObject昵称 + 头像缩略图;点击跳转用户详情
门店storeNameString购买时所在门店;线上购买 为空
产品名称productNameString来自 productSnapshot
产品类型productTypeEnum月卡 / 季卡 / 年卡 / 次卡 / 体验卡
来源sourceEnum微信支付 / 外部券码
原价originalAmountDecimal元,2 位小数
优惠金额discountAmountDecimal外部券码抵扣金额;无优惠显示
实付金额payAmountDecimal元,2 位小数;外部券码显示 0.00(券码兑换)
状态statusEnum见状态定义,带颜色标签
支付时间paidAtDateTimeYYYY-MM-DD HH:mm:ss;待支付显示
到期时间expiresAtDateTimeYYYY-MM-DD;未生效显示
剩余次数remainingTimesInt仅次卡/体验卡显示;月卡/年卡显示 不限次
创建时间createdAtDateTimeYYYY-MM-DD HH:mm:ss

状态枚举与视觉规范

状态值中文标签颜色标签说明
PENDING待支付⚪ 灰色已创建订单,等待微信支付
PAID已支付🔵 蓝色支付成功,等待生效
ACTIVE使用中🟢 绿色会员权益生效中
EXPIRED已过期⚫ 深灰有效期截止或次数用完
CANCELLED已取消⚪ 灰色超时未支付自动取消
REFUNDING退款中🟡 橙色退款申请已提交,等待微信处理
REFUNDED已退款🔴 红色退款完成

筛选条件

筛选项类型说明
关键词搜索输入框订单编号(精确)、用户昵称(模糊)、用户手机号(精确)
时间范围日期区间选择器按创建时间 / 支付时间筛选,默认「近 7 天」
门店下拉选择全部门店列表;受门店上下文自动筛选
产品类型多选月卡 / 季卡 / 年卡 / 次卡 / 体验卡
订单来源多选微信支付 / 外部券码
订单状态多选7 种状态全选
是否有退款开关快速筛选退款相关订单(REFUNDING + REFUNDED)

列表操作

操作说明
查看详情点击行或「详情」按钮进入订单详情页
导出按当前筛选条件导出 Excel/CSV,字段与列表列对齐 + 退款原因/退款时间
刷新手动刷新列表数据

移动端适配

场景方案
表格列过多转为卡片列表,每卡片展示:用户信息 + 产品 + 状态 + 实付金额
详情入口卡片右滑或点击跳转详情
筛选面板底部弹出式筛选面板,支持组合筛选

订单详情页

Tab 设计

Tab 1:订单信息(默认)

展示订单基本信息、用户信息、产品与金额、使用情况。字段见上方线框描述。

Tab 2:支付信息

字段说明
支付方式微信支付 / 外部券码兑换
微信交易号wxTransactionId,可复制
原价originalAmount
优惠金额discountAmount
实付金额payAmount
使用的优惠券券码信息(如有)
支付时间paidAt
退款信息仅退款订单显示:退款金额、退款原因、退款时间、微信退款单号

Tab 3:使用记录

仅次卡和体验卡显示。展示每次进入健身房的记录。

字段说明
进入时间刷脸验证通过、B 门打开的时间
离开时间出门刷脸 / 超时自动离店的时间
门店进入的门店名称
扣减次数本次扣减的次数(通常为 1)
扣减后剩余扣减后的剩余次数
关联订单订单编号(可跳转)

Tab 4:操作日志

记录订单生命周期中的所有关键操作。

字段说明
操作时间精确到秒
操作类型创建 / 支付 / 生效 / 核销 / 退款申请 / 退款完成 / 取消
操作人系统 / 微信回调 / 管理员(含管理员账号)
操作详情补充说明(如退款原因、备注)

退款操作

退款入口

  • 订单详情页底部「申请退款」按钮
  • ACTIVEEXPIRED 状态的订单可申请退款
  • REFUNDING 状态显示「退款处理中」,不可重复操作
  • REFUNDED 状态显示「已退款」,不可重复操作
  • PENDING / CANCELLED 状态不显示退款入口

退款弹窗交互

退款金额自动计算规则 [建议值]

订单类型状态退款金额计算
月卡/季卡/年卡ACTIVE(使用中)实付金额 × (剩余天数 / 总有效期天数),向下取整到分
月卡/季卡/年卡ACTIVE(未使用)全额退款(首次进入时间 > 支付时间,视为未使用)
次卡ACTIVE(有剩余次数)实付金额 × (剩余次数 / 总次数),向下取整到分
次卡ACTIVE(0 次剩余)不允许退款(应已转为 EXPIRED)
次卡EXPIRED实付金额 × (剩余次数 / 总次数),向下取整到分
体验卡EXPIRED由系统自动触发(二次刷脸退款),管理后台仅展示结果,不可手动退款
体验卡ACTIVE全额退款(用户仅进入 1 次,权益仍在)
外部券码订单任意实付为 0,不可退款(券码核销不可逆)

退款校验

前端和服务端双重校验:

  1. 订单状态是否为 ACTIVEEXPIRED
  2. 体验卡订单不允许手动退款(仅系统自动触发)
  3. 外部券码来源订单不允许退款
  4. 退款金额 ≤ 实付金额
  5. 退款金额 ≥ 0
  6. 同一订单退款中(REFUNDING)不可重复提交

退款确认

  • 点击「确认退款」后弹出二次确认对话框,要求管理员输入操作备注
  • 服务端调用微信退款 API
  • 成功:订单状态 → REFUNDING,异步等待微信回调确认 → REFUNDED
  • 失败:显示微信返回的具体错误信息

权限控制

Tab 可见性

Tab老板财务店长(本店)客服说明
订单信息全角色可见
支付信息✅(本店)店长仅看本店订单
使用记录✅(本店)
操作日志✅(本店)

操作权限

操作老板财务店长客服
查看订单列表✅ 全店✅ 全店✅ 本店✅ 按策略
查看订单详情✅ 本店
申请退款❌ [建议值]
导出订单✅ 本店

[建议值] 店长无退款权限,需提交退款申请给总部财务处理。理由:退款涉及资金操作,分店店长不宜直接操作;如业务需要,可通过角色权限配置单独开放。


用户故事

US-ORD-01:运营人员查看今日订单

作为运营人员,我想查看今天所有门店的订单列表,按支付时间降序排列,以便了解当日销售情况。

验收标准

  • [ ] 默认时间范围为「今天」,自动填充当前日期
  • [ ] 列表按支付时间降序排列
  • [ ] 状态标签颜色符合规范
  • [ ] 支持按门店、产品类型、状态进一步筛选
  • [ ] 店长视角仅显示本店订单

US-ORD-02:财务人员导出月度订单报表

作为财务人员,我想导出指定月份的全部订单数据(含退款信息),以便进行财务对账。

验收标准

  • [ ] 导出按钮在列表页右上角始终可见
  • [ ] 导出文件包含当前筛选条件的所有订单(支持全量导出,不受分页限制)
  • [ ] 导出 Excel 列名使用中文表头
  • [ ] 包含退款字段:退款金额、退款原因、退款时间
  • [ ] 文件名格式:订单报表_YYYY-MM-DD_to_YYYY-MM-DD.xlsx

US-ORD-03:管理员为用户办理退款

作为管理员,我需要在订单详情页为用户申请退款,系统应自动计算建议退款金额,我确认后发起退款。

验收标准

  • [ ] ACTIVE/EXPIRED 状态的订单显示「申请退款」按钮
  • [ ] 退款弹窗自动计算并展示建议退款金额及计算公式
  • [ ] 管理员可手动调整退款金额(不超过实付金额)
  • [ ] 必须填写退款原因
  • [ ] 提交后弹出二次确认对话框
  • [ ] 退款成功后订单状态变为「退款中」,等待微信回调
  • [ ] 体验卡订单不显示手动退款按钮
  • [ ] 外部券码来源订单不显示退款按钮

US-ORD-04:客服快速定位用户订单

作为客服,我需要通过用户手机号或昵称快速搜索到该用户的所有订单,以便处理用户投诉。

验收标准

  • [ ] 搜索框支持手机号(精确匹配)和昵称(模糊匹配)
  • [ ] 搜索结果按创建时间降序排列
  • [ ] 从订单详情可一键跳转到用户详情页
  • [ ] 从用户详情可查看该用户的所有历史订单

数据导出规范

导出项格式字段
订单列表xlsx订单编号、用户昵称、手机号、门店、产品名称、产品类型、来源、原价、优惠金额、实付金额、状态、支付时间、到期时间、创建时间
退款记录xlsx订单编号、用户昵称、实付金额、退款金额、退款原因、退款时间、操作人

API 接口规划

# 订单列表
GET /api/v1/admin/orders
  Query: {
    keyword?, storeId?, productType[], source[], status[],
    startDate?, endDate?, hasRefund?, page, pageSize, sortBy, sortOrder
  }
  Response: {
    items: Order[], total: number, page: number, pageSize: number
  }

# 订单详情
GET /api/v1/admin/orders/:id
  Response: Order { ...详情全部字段, user: UserSummary, store: StoreSummary,
                   usageLogs: UsageLog[], operationLogs: OperationLog[] }

# 使用记录(次卡/体验卡)
GET /api/v1/admin/orders/:id/usage-logs
  Response: UsageLog[]

# 操作日志
GET /api/v1/admin/orders/:id/operation-logs
  Response: OperationLog[]

# 申请退款
POST /api/v1/admin/orders/:id/refund
  Body: { refundAmount: number, reason: string }
  Response: { success: boolean, message: string, refundId?: string }

# 计算建议退款金额
GET /api/v1/admin/orders/:id/refund-suggestion
  Response: { suggestedAmount: number, calculation: string, usedDays: number,
              totalDays: number, remainingTimes: number, totalTimes: number }

# 导出订单
GET /api/v1/admin/orders/export
  Query: { 同列表查询参数 }
  Response: { downloadUrl: string }  // 异步生成,返回下载链接

飞创 Fitron 内部规划文档