x

📋 订单签名功能

创建日期: 2026-05-07
状态: 待开发

一、涉及终端

  • [ ] App端(Android)
  • [ ] PC端(后台)
  • [ ] H5 端(分享签署页)

二、功能属性

  • 插件模式: 否 — 系统内置功能
  • 权限控制: PC端后台控制(基本设置 → 订单签名设置)
  • 与现有系统关系: 功能新增(赊销订单扩展)

三、部署规划

项目 目标位置
后台服务器 腾讯云重庆一区爱优零售
数据库 CynosDB 读写库(ls_hnjiuheng_cn)
静态资源/CDN 签名图片存储至 OSS/CDN

四、人员分工

负责人 职责
徐滔(后端) 数据库表设计、API接口开发、签名图片存储
张玉杰(PC前端) 后台设置页、开单挂单页、店内明细列表
刘文伟(安卓前端) App内展示、签署流程
测试 功能验收测试

五、功能模块清单

模块 功能描述 涉及端 负责人 优先级
1. 后台设置 基本设置 → 订单签名设置:开关 + 赊销订单勾选项 PC端 张玉杰 P0
2. 签署入口-挂单 开单挂单页:赊销订单出现签署/已签名入口 PC端 张玉杰 P0
3. 签署入口-提交 提交订单/订单并打印弹窗:显示分享签署按钮 PC端 张玉杰 P0
4. 店内明细列表 赊销订单列表:显示分享签署/已签名状态 PC端 张玉杰 P0
5. 分享签署页H5 二维码+链接+订单信息+签名按钮+重置按钮 H5 刘文伟 P0
6. 已签名展示 签名图片 + 签名时间 + 重置按钮 PC端+App 张玉杰/刘文伟 P0
7. App端展示 赊销订单已签名状态展示 App端 刘文伟 P1

六、业务逻辑说明

6.1 赊销订单判断逻辑

支付方式 = "赊销" 时,该订单为赊销订单
  • order.payment_method = 'credit'payment_type 包含赊销标识时,触发签名流程
  • 必须先在「基本设置 → 订单签名设置」中勾选「赊销订单」才生效

6.2 订单签名设置

配置项 类型 说明
开启订单签名 开关 全局开关,默认关闭
赊销订单 勾选 勾选后,赊销订单触发签名流程

6.3 签署流程

赊销订单创建
    ↓
订单签名设置已开启?
    ├── 否 → 正常流程,不触发签名
    └── 是 → 订单标记为「待签名」
            ↓
    客户点击「分享签署」
            ↓
    生成签署链接 + 二维码(H5页面)
            ↓
    客户在H5签署
            ↓
    签名图片 + 签署时间 入库
            ↓
    订单状态更新为「已签名」

6.4 各入口显示逻辑

场景 条件 显示
开单挂单页 赊销 + 未签名 + 功能开启 显示「分享签署」按钮
开单挂单页 赊销 + 已签名 + 功能开启 显示「已签名」+ 点击查看图片+时间
提交/并打印弹窗 赊销 + 未签名 + 功能开启 显示「分享签署」按钮
店内明细列表 赊销 + 未签名 + 功能开启 显示「分享签署」按钮
店内明细列表 赊销 + 已签名 显示「已签名」标签
App订单详情 赊销 + 已签名 显示签名图片+时间

6.5 分享签署页内容

┌─────────────────────────────┐
│         订单信息            │
│  订单号:XXX                │
│  客户名:张三               │
│  商品:螺丝刀 x2            │
│  金额:¥99.00              │
│  日期:2026-05-07          │
├─────────────────────────────┤
│                             │
│     [ 签名区域 ]            │
│     客户在此签字            │
│                             │
│  签名后自动提交             │
├─────────────────────────────┤
│     [ 重置 ] 按钮          │
└─────────────────────────────┘

七、H5签署页设计要求

  1. 订单信息展示区(签署页上半部分)

  2. 订单编号、客户名称、商品明细、应付金额、下单日期

  3. 只读,不可修改

  4. 签名区(签署页下半部分)

  5. 手写签名区域(Canvas 或签名板组件)

  6. 签名后显示签名图片预览

  7. 操作按钮

  8. 确认签署:提交签名图片到服务器

  9. 重置:清除当前签名,重新签署

  10. 二维码

  11. 页面顶部或显著位置显示二维码

  12. 扫码可快速打开H5签署页

  13. 链接复制

  14. 提供签署链接的一键复制功能

八、数据库设计

徐滔负责,需新增表或字段

8.1 订单签名表(新建)

CREATE TABLE order_signatures (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    order_id BIGINT NOT NULL COMMENT '订单ID',
    signature_url VARCHAR(500) NOT NULL COMMENT '签名图片OSS地址',
    sign_time DATETIME NOT NULL COMMENT '签署时间',
    customer_name VARCHAR(100) COMMENT '签署客户名称',
    ip_address VARCHAR(50) COMMENT '签署IP地址',
    status TINYINT DEFAULT 1 COMMENT '状态:1已签署 0已重置',
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    INDEX idx_order_id (order_id),
    INDEX idx_sign_time (sign_time)
) COMMENT '订单签名表';

8.2 订单表新增字段

ALTER TABLE orders ADD COLUMN need_sign TINYINT DEFAULT 0 COMMENT '是否需要签名:0否 1是';
ALTER TABLE orders ADD COLUMN sign_status TINYINT DEFAULT 0 COMMENT '签名状态:0未签名 1已签名';
ALTER TABLE orders ADD COLUMN sign_id BIGINT COMMENT '签名记录ID,关联order_signatures.id';

8.3 系统配置表新增配置项

INSERT INTO system_config (key, value, type, description) VALUES
('order_sign_enable', 'false', 'boolean', '订单签名功能总开关'),
('order_sign_credit_only', 'false', 'boolean', '仅赊销订单需签名');

九、API接口设计

9.1 获取签署状态

GET /api/order/{orderId}/signature
Response: {
  "needSign": true,
  "signStatus": "unsigned|pending|signed",
  "signatureUrl": "https://xxx/sig.png",
  "signTime": "2026-05-07 15:30:00"
}

9.2 生成签署链接

POST /api/order/{orderId}/signature/link
Response: {
  "shareUrl": "https://h5.5jin.top/sign/{token}",
  "qrCode": "https://qr.5jin.top?url=..."
}

9.3 提交签名

POST /api/order/{orderId}/signature
Body: {
  "signatureData": "data:image/png;base64,..." // 或直接传OSS上传后的URL
}
Response: {
  "success": true,
  "signTime": "2026-05-07 15:35:00"
}

9.4 重置签名

POST /api/order/{orderId}/signature/reset
Response: {
  "success": true
}

9.5 获取系统配置

GET /api/config/order-sign
Response: {
  "enable": true,
  "creditOnly": true
}

9.6 保存系统配置

POST /api/config/order-sign
Body: {
  "enable": true,
  "creditOnly": true
}

十、PC端页面详细说明

10.1 基本设置 → 订单签名设置

┌──────────────────────────────────────┐
│  订单签名设置                          │
├──────────────────────────────────────┤
│  ○ 开启订单签名设置                    │
│    □ 赊销订单(勾选后赊销订单需签名)   │
│                                      │
│           [ 保存 ]                    │
└──────────────────────────────────────┘

10.2 开单挂单页

  • 赊销订单卡片/列表项显示「分享签署」按钮
  • 已签名订单显示「已签名」标签,点击弹出:
  • 签名图片
  • 签署时间
  • 「重置」按钮

10.3 提交/并打印弹窗

  • 弹窗底部新增「分享签署」按钮(赊销订单且未签名时显示)

10.4 店内明细列表

  • 赊销订单行显示签署状态
  • 未签名:显示「分享签署」按钮
  • 已签名:显示「已签名」标签(可点击查看详情)

十一、App端说明

页面 展示内容
订单详情 赊销订单显示签名图片缩略图 + 签署时间,点击可放大
订单列表 已签名订单显示「已签名」标签

十二、优先级说明

  • P0:核心功能,必须优先完成
  • 后台设置 + 数据库 + 签署入口 + H5签署页 + 提交/重置API
  • P1:重要功能,核心完成后推进
  • App端展示

十三、备注

  1. 签名图片建议上传至 OSS,数据库只存储 URL
  2. 签署链接建议有时效性(如 7 天有效)
  3. 签署页需在微信内置浏览器和普通浏览器均可正常签署
  4. 重置签名后,订单恢复「待签名」状态,客户需重新签署
  5. 订单流转到正式订单时,应校验签名状态(已签名才能流转,或允许特殊配置跳过)
Left-click: follow link, Right-click: select node, Scroll: zoom
x