1b39b2d41192da5a880ea0e54110334adba56370
TODO
错误提示增强,展示整链路信息
交易信息持久化
订单关闭问题,在前端关闭窗口后直接调用了全部订单接口,应改成先确认再关闭
- 取消订单接口改成只允许管理员调用
- 新增关闭订单接口,关闭订单的逻辑是先尝试完成,如果订单未支付则取消订单
分离 task 的客户端,支持多进程(prefork 必要!)
慢速请求底层调用埋点监控
冷数据迁移方案
开发流程
新建数据表流程
- 创建 model 文件
- 将 model 按照格式添加声明到
cmd/gen/main.go中 - 编辑
scripts/sql/init.sql文件,参照原有格式,需要注意:
- 先写 drop table if exists 语句,确保脚本可以幂等执行
- 为有必要的字段添加索引
- 为数据表及其字段添加注释
- 在文件末尾创建数据表流程全部结束后,为字段添加外键
- 调用
go run ./cmd/gen/main.go生成查询文件
更新数据表流程
- 更新 model 文件
- 编辑
scripts/sql/init.sql文件,参照原有格式,需要注意:
- 先写 drop table if exists 语句,确保脚本可以幂等执行
- 为有必要的字段添加索引
- 为数据表及其字段添加注释
- 在文件末尾创建数据表流程全部结束后,为字段添加外键
- 调用
go run ./cmd/gen/main.go更新查询文件
新增接口或修改接口权限
- 在
web/core/scopes.go下声明权限常量。通常格式为Model:Action:SubAction,例如User:Create、User:Delete、User:Update:Password等 - 在
scripts/sql/fill.sql文件的权限区域添加或修改权限条目
业务逻辑
订单关闭的几种方式
- 创建订单后推送异步任务,到时间后尝试完成订单或关闭订单
- sse 接口推送订单状态,轮询尝试完成订单
- 异步回调事件,收到支付成功事件后自动完成订单
- 用户退出支付界面,客户端主动发起关闭订单
节点分配与存储逻辑
提取:
- 检查用户套餐与白名单
- 选中代理
- 找到当前可用端口最多的代理
- 不考虑分割端口,不够加机器
- 获取可用端口
- 获取可用节点
- 生成批次号,提交到期释放任务
- 绑定节点与端口,保存到数据库
- 分别提交连接与配置请求
释放:
- 根据批次查出所有端口与相关节点
- 分别提交断开与关闭请求
- 释放端口
Description