Z解析计费系统是一套面向视频解析服务的后台管理平台。系统的核心业务是为用户提供视频解析API接口,通过规则匹配引擎将用户的解析请求智能路由到合适的后端接口,并以套餐(时间制/积分制)的方式对API调用进行计费管理。
系统包含以下核心功能模块:
用户管理:支持用户注册(含邮箱验证码)、登录(图形验证码)、角色分配(管理员/代理/普通用户)、API密钥分发与重置,每个用户拥有独立的API Key用于调用解析接口
接口管理:管理后端解析接口的地址、请求方式、权重、超时时间,支持并发竞速模式(多接口同时请求取最快响应)和公共接口开关
规则管理:配置接口匹配规则,支持域名匹配和标识匹配两种方式,规则分为用户类型和资源库类型,后端采用 Aho-Corasick 多模式匹配算法实现高效路由
套餐管理:支持时间制套餐(按天/月/年,含每日调用限额)和积分制套餐(按次扣费),灵活的计费策略
资源管理:维护资源链接映射关系(原链接→新链接),支持多原链接映射到同一新链接,用于链接替换和资源重定向
系统配置:涵盖网站信息、接口参数(并发开关、解析缓存)、数据库连接池、Redis缓存、SMTP邮箱、注册策略等全方位配置
用户端API文档:为普通用户提供API信息查看、请求示例获取、密钥重置等自助功能
技术栈
层面 技术选型
语言 Go 1.25.5
Web 框架 Gin
ORM GORM (MySQL)
缓存 Redis (go-redis/v8)
认证 JWT (golang-jwt/v5) + 图形验证码 (dchest/captcha)
加密 bcrypt 密码哈希 + AES-256-CBC 对称加密
邮件 go-mail (SMTP)
配置 YAML (gopkg.in/yaml.v3)
跨域 gin-contrib/cors
架构设计
项目采用经典的分层架构:
api/v1/ — 按业务模块划分的 Handler 层(auth、user、packages、endpoints、resources 等)
internal/ — 内部核心:数据库连接、中间件、配置模型
pkg/ — 可复用工具包:通用 CRUD、分页、加密、JWT、邮件、文件上传
routes/ — 统一路由注册
数据库表统一使用 Zhi_ 前缀,连接池配置为最大 100 连接 / 50 空闲。
亮点与设计模式
Go 泛型的实际应用 — DeleteOneHandler[T](), DeleteListHandler[T](), InsertInitialData[T]() 等,用泛型实现了通用的 CRUD Handler,避免了大量重复代码
自动初始化机制 — 通过 install.lock 文件判断是否首次运行,首次启动自动建表、插种子数据
配置管理器 — 带读写锁的线程安全配置缓存,支持热重载
注册防刷机制 — 前端时间戳 + AES 加密签名 + 验证码三重校验
难点与值得注意的问题
数据库连接管理 — NewDB() 每次调用都会创建新连接,在
auth.go
、api/ 各模块中都有包级别的 var db = datab