随笔小记 我将我心,留于此处

周末网课上游工单功能

📃

开发记录:网课系统对接上游官方售后工单完整实现

前言

本次基于个人运营的网课系统,严格根据上游官方开发者文档,独立开发完成上游售后工单对接功能。

由于系统核心文件采用 SourceGuardian 加密,无法修改内核源码、无法新增内核接口。因此本次功能全部采用 明文增量外挂式开发,不改动系统原有加密逻辑、不影响原有订单、货源同步功能,实现完整的上游工单售后闭环。

一、官方接口文档参考

全程严格按照上游提供的两个 POST 接口开发:

1. 提交工单接口

接口地址:https://admin.aceee.de/api.php?act=submitWorkOrder

  • 支持:文字工单 + 单张图片上传
  • 提交规范:multipart/form-data 原生表单提交
  • 限制规则:文字 5-300 字、图片最大 8MB、仅支持 JPG/PNG/GIF/WEBP
  • 自动校验订单状态,过滤不可提交订单

2. 查询工单接口

接口地址:https://admin.aceee.de/api.php?act=queryWorkOrder

  • 根据上游返回 workId 查询工单状态
  • 动态获取上游推荐轮询间隔 pollInterval
  • 可同步:工单状态、客服文字回复、双方图片资源

二、开发实现需求

  1. 用户可在订单列表,对有效订单提交上游官方售后工单
  2. 支持文字问题描述 + 图片举证上传
  3. 提交成功自动保存上游唯一 workId 至本地数据库
  4. 跟随上游 pollInterval 动态轮询,不无效高频请求
  5. 上游回复后,自动同步文字、图片回复至前台展示
  6. 普通用户仅可操作自己工单,管理员可全局查看、代提交工单
  7. 完全遵守上游防重复提交、24小时提交次数、余额频率限制

三、项目开发限制

  • 系统核心接口全部 SG 加密,禁止修改内核文件
  • 不改动原有 TG 本地工单、订单结算、货源同步逻辑
  • 所有新功能外置独立明文文件,增量部署、零侵入系统

四、整体架构设计

采用完全解耦外挂架构,新旧工单系统共存,互不冲突。

 

前端订单页面(list.php)
↓
自建明文接口(api_workorder.php)
↓
工单核心服务类(workorder.php)
↓
上游官方API服务

plaintext

模块说明

  1. 核心服务层(workorder.php)
    自动建表、封装上游 CURL 请求、图片安全校验、图片 URL 修复、数据库读写逻辑。
  2. 接口控制层(api_workorder.php)
    独立开发全套接口:提交工单、查询工单、工单列表、可提交订单筛选。
  3. 前端展示层
    改造原有订单页面,保留本地 TG 工单,新增「上游官方工单」独立入口。

五、核心功能开发细节

1. 标准图文工单提交

严格遵循官方示例,不手动拼接 boundary、不自定义请求头,避免上游安全拦截。
直接使用 CURL 自动生成 multipart 表单,完美兼容图片上传。

  • 使用 finfo 读取图片真实 MIME,杜绝后缀伪造
  • 强制校验文字字数、图片大小、文件格式
  • 自动判断订单状态,拦截已退款/已取消/未支付订单

2. 智能动态轮询机制

完全跟随上游官方规则:

  • 工单状态 pending:按照 pollInterval 延时自动轮询
  • 工单状态 replied:停止轮询,保存所有回复数据
    极大减少无效请求,完全贴合上游接口规范。

3. 图片适配兼容(解决裂图BUG)

上游返回图片地址格式混乱(完整域名、//协议头、裸域名、相对路径),
自研 URL 归一化规则,自动统一修复:

  • 自动补全协议前缀
  • 自动拼接站点根路径
  • 前端添加防盗链适配策略,彻底解决图片加载失败问题

4. 安全权限控制

  • 普通用户:仅查看、提交个人名下工单
  • 管理员(uid=1):全站工单查看、代用户提交售后
  • 后端只读数据库真实订单归属UID,不信任前端传参,杜绝越权伪造漏洞

六、测试方案

为避免频繁请求生产上游接口,采用本地 Mock 测试:

  1. 本地搭建 PHP 模拟服务,复刻上游所有返回场景
  2. 全覆盖测试:参数报错、字数拦截、图片拦截、待回复、已回复、管理员代提交
  3. 本地逻辑 100% 跑通后,再对接真实上游生产接口

七、部署方式

纯增量更新,无需重装系统:

  • 新增两个明文核心文件
  • 小幅修改三个前端明文页面
  • 程序首次访问自动创建数据库,零手动操作

八、开发总结

本次在内核加密无法改动的限制下,通过「明文外挂增量开发」的思路,成功给封闭系统新增了一整套完整的上游官方售后工单系统。

全程完全对标官方开发者文档,解决了 multipart 上传拦截、动态轮询、图片URL兼容、权限安全等多个难点,最终实现了用户提交、图文反馈、上游同步、自动更新回复、管理员管理的完整业务闭环。
 

By 拾八 On