Files
platform/README.md
2026-07-21 15:30:33 +08:00

110 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## TODO
清除代理的并发问题,redis 归还后,还有可能 gost 没有完成解除占用,导致端口冲突,考虑先等几秒再释放 redis
现在我需要提供一套首页接口,用来展示一些统计信息。检查 [README.md](README.md) 的后台首页接口部分,确保你正确理解了每个接口的含义,如何进行统计。如果有不清除的接口,先提出问题,我会补充相关信息。在没有问题后,给出实施计划
后台首页接口:
- 待认领客户数量
- 活跃代理数
- 今日交易额
- 今日提取数量
- 今日新增客户
- 每日活跃代理
- 每日交易额
- 每日新增客户
- 每日提取量
- 全局可提取统计(包时套餐计算最大可提取,每日提取上限 * 剩余可提取天数)
- 长效套餐
- 短效套餐
- 最近活跃用户(七日内 ip 使用量)
---
关闭支付弹窗
后台限制 ip
- edge.area_id 可为空,代表节点无固定地区
- 后台展示 mac, ip:port,实际地区
上传文件平铺到 uploads,不分子文件夹
错误提示增强,展示整链路信息
交易信息持久化
订单关闭问题,在前端关闭窗口后直接调用了全部订单接口,应改成先确认再关闭
- 取消订单接口改成只允许管理员调用
- 新增关闭订单接口,关闭订单的逻辑是先尝试完成,如果订单未支付则取消订单
---
分离 task 的客户端,支持多进程(prefork 必要!)
慢速请求底层调用埋点监控
冷数据迁移方案
## 开发流程
### 新建数据表流程
1. 创建 model 文件
2. 将 model 按照格式添加声明到 `cmd/gen/main.go` 中
3. 编辑 `scripts/sql/init.sql` 文件,参照原有格式,需要注意:
- 先写 drop table if exists 语句,确保脚本可以幂等执行
- 为有必要的字段添加索引
- 为数据表及其字段添加注释
- 在文件末尾创建数据表流程全部结束后,为字段添加外键
4. 调用 `go run ./cmd/gen/main.go` 生成查询文件
### 更新数据表流程
1. 更新 model 文件
2. 编辑 `scripts/sql/init.sql` 文件,参照原有格式,需要注意:
- 先写 drop table if exists 语句,确保脚本可以幂等执行
- 为有必要的字段添加索引
- 为数据表及其字段添加注释
- 在文件末尾创建数据表流程全部结束后,为字段添加外键
3. 调用 `go run ./cmd/gen/main.go` 更新查询文件
### 新增接口或修改接口权限
1. 在 `web/core/scopes.go` 下声明权限常量。通常格式为 `Model:Action:SubAction`,例如 `User:Create`、`User:Delete`、`User:Update:Password` 等
2. 在 `scripts/sql/fill.sql` 文件的权限区域添加或修改权限条目
## 业务逻辑
### 订单关闭的几种方式
1. 创建订单后推送异步任务,到时间后尝试完成订单或关闭订单
2. sse 接口推送订单状态,轮询尝试完成订单
3. 异步回调事件,收到支付成功事件后自动完成订单
4. 用户退出支付界面,客户端主动发起关闭订单
### 节点分配与存储逻辑
提取:
- 检查用户套餐与白名单
- 选中代理
- 找到当前可用端口最多的代理
- 不考虑分割端口,不够加机器
- 获取可用端口
- 获取可用节点
- 生成批次号,提交到期释放任务
- 绑定节点与端口,保存到数据库
- 分别提交连接与配置请求
释放:
- 根据批次查出所有端口与相关节点
- 分别提交断开与关闭请求
- 释放端口