mirror of
https://github.com/skyle1995/NetworkAuth.git
synced 2026-05-25 02:24:05 +08:00
Add classification annotations
This commit is contained in:
343
models/api.go
343
models/api.go
@@ -8,11 +8,63 @@ import (
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// ============================================================================
|
||||
// 常量定义
|
||||
// ============================================================================
|
||||
|
||||
// API类型常量定义
|
||||
const (
|
||||
// 基础信息
|
||||
APITypeGetBulletin = 1 // 获取程序公告
|
||||
APITypeGetUpdateUrl = 2 // 获取更新地址
|
||||
APITypeCheckAppVersion = 3 // 检测最新版本
|
||||
APITypeGetCardInfo = 4 // 获取卡密信息
|
||||
|
||||
// 卡密相关
|
||||
APITypeSingleLogin = 10 // 卡密登录
|
||||
|
||||
// 账号管理
|
||||
APITypeUserLogin = 20 // 用户登录
|
||||
APITypeUserRegin = 21 // 用户注册
|
||||
APITypeUserRecharge = 22 // 用户充值
|
||||
|
||||
// 登出操作
|
||||
APITypeLogOut = 30 // 退出登录
|
||||
|
||||
// 状态查询
|
||||
APITypeGetExpired = 40 // 获取到期时间
|
||||
APITypeCheckUserStatus = 41 // 检测账号状态
|
||||
APITypeGetAppData = 42 // 获取程序数据
|
||||
APITypeGetVariable = 43 // 获取变量数据
|
||||
APITypeExecuteFunction = 44 // 执行远程函数
|
||||
|
||||
// 用户操作
|
||||
APITypeUpdatePwd = 50 // 修改账号密码
|
||||
APITypeMacChangeBind = 51 // 机器码转绑
|
||||
APITypeIPChangeBind = 52 // IP转绑
|
||||
|
||||
// 风控操作
|
||||
APITypeDisableUser = 60 // 封停用户
|
||||
APITypeBlackUser = 61 // 添加黑名单
|
||||
APITypeUserDeductedTime = 62 // 扣除时间
|
||||
)
|
||||
|
||||
// 算法类型常量
|
||||
const (
|
||||
AlgorithmNone = 0 // 不加密
|
||||
AlgorithmRC4 = 1 // RC4
|
||||
AlgorithmRSA = 2 // RSA
|
||||
AlgorithmRSADynamic = 3 // RSA(动态)
|
||||
AlgorithmEasy = 4 // 易加密
|
||||
)
|
||||
|
||||
// ============================================================================
|
||||
// 结构体定义
|
||||
// ============================================================================
|
||||
|
||||
// API 接口表模型
|
||||
// 用于管理API接口的配置信息
|
||||
// 包含加密算法配置、密钥管理等功能
|
||||
// 支持多种加密算法:不加密、RC4、RSA、RSA(动态)
|
||||
|
||||
// CreatedAt/UpdatedAt 由 GORM 自动维护
|
||||
type API struct {
|
||||
// ID:主键,自增
|
||||
ID uint `gorm:"primaryKey;comment:API接口ID,自增主键" json:"id"`
|
||||
@@ -54,6 +106,10 @@ type API struct {
|
||||
UpdatedAt time.Time `gorm:"comment:更新时间" json:"updated_at"`
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// 结构体方法
|
||||
// ============================================================================
|
||||
|
||||
// BeforeCreate 在创建记录前自动生成UUID
|
||||
func (api *API) BeforeCreate(tx *gorm.DB) error {
|
||||
if api.UUID == "" {
|
||||
@@ -67,51 +123,9 @@ func (API) TableName() string {
|
||||
return "apis"
|
||||
}
|
||||
|
||||
// API类型常量定义
|
||||
const (
|
||||
// 基础信息获取类API
|
||||
APITypeGetBulletin = 1 // 获取程序公告
|
||||
APITypeGetUpdateUrl = 2 // 获取更新地址
|
||||
APITypeCheckAppVersion = 3 // 检测最新版本
|
||||
APITypeGetCardInfo = 4 // 获取卡密信息
|
||||
|
||||
// 登录相关API
|
||||
APITypeSingleLogin = 10 // 卡密登录
|
||||
|
||||
// 用户账号管理API
|
||||
APITypeUserLogin = 20 // 用户登录
|
||||
APITypeUserRegin = 21 // 用户注册
|
||||
APITypeUserRecharge = 22 // 用户充值
|
||||
APITypeCardRegin = 23 // 卡密注册
|
||||
|
||||
// 登出API
|
||||
APITypeLogOut = 30 // 退出登录
|
||||
|
||||
// 用户状态查询API
|
||||
APITypeGetExpired = 40 // 获取到期时间
|
||||
APITypeCheckUserStatus = 41 // 检测账号状态
|
||||
APITypeGetAppData = 42 // 获取程序数据
|
||||
APITypeGetVariable = 43 // 获取变量数据
|
||||
|
||||
// 用户操作API
|
||||
APITypeUpdatePwd = 50 // 修改账号密码
|
||||
APITypeMacChangeBind = 51 // 机器码转绑
|
||||
APITypeIPChangeBind = 52 // IP转绑
|
||||
|
||||
// 管理员操作API
|
||||
APITypeDisableUser = 60 // 封停用户
|
||||
APITypeBlackUser = 61 // 添加黑名单
|
||||
APITypeUserDeductedTime = 62 // 扣除时间
|
||||
)
|
||||
|
||||
// 算法类型常量
|
||||
const (
|
||||
AlgorithmNone = 0 // 不加密
|
||||
AlgorithmRC4 = 1 // RC4
|
||||
AlgorithmRSA = 2 // RSA
|
||||
AlgorithmRSADynamic = 3 // RSA(动态)
|
||||
AlgorithmEasy = 4 // 易加密
|
||||
)
|
||||
// ============================================================================
|
||||
// 独立函数
|
||||
// ============================================================================
|
||||
|
||||
// GetAlgorithmName 获取算法名称
|
||||
func GetAlgorithmName(algorithm int) string {
|
||||
@@ -131,84 +145,134 @@ func GetAlgorithmName(algorithm int) string {
|
||||
}
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// 基础结构体定义
|
||||
// ============================================================================
|
||||
|
||||
// APITypeInfo 接口类型信息
|
||||
type APITypeInfo struct {
|
||||
Type int `json:"type"` // 接口类型
|
||||
Name string `json:"name"` // 接口名称
|
||||
}
|
||||
|
||||
// APICategoryInfo 接口分类信息
|
||||
type APICategoryInfo struct {
|
||||
Name string `json:"name"` // 分类名称
|
||||
Types []APITypeInfo `json:"types"` // 该分类下的接口类型列表
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// 核心功能函数
|
||||
// ============================================================================
|
||||
|
||||
// GetAPITypes 获取API接口类型,支持按分类返回或返回完整列表
|
||||
// categorized: true=按分类返回[]APICategoryInfo, false=返回完整列表[]int
|
||||
func GetAPITypes(categorized bool) interface{} {
|
||||
// 层次化的接口类型组织结构
|
||||
apiCategories := []APICategoryInfo{
|
||||
{
|
||||
Name: "基础信息",
|
||||
Types: []APITypeInfo{
|
||||
{Type: APITypeGetBulletin, Name: "获取程序公告"},
|
||||
{Type: APITypeGetUpdateUrl, Name: "获取更新地址"},
|
||||
{Type: APITypeCheckAppVersion, Name: "检测最新版本"},
|
||||
{Type: APITypeGetCardInfo, Name: "获取卡密信息"},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "卡密相关",
|
||||
Types: []APITypeInfo{
|
||||
{Type: APITypeSingleLogin, Name: "卡密登录"},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "账号管理",
|
||||
Types: []APITypeInfo{
|
||||
{Type: APITypeUserLogin, Name: "用户登录"},
|
||||
{Type: APITypeUserRegin, Name: "用户注册"},
|
||||
{Type: APITypeUserRecharge, Name: "用户充值"},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "登出操作",
|
||||
Types: []APITypeInfo{
|
||||
{Type: APITypeLogOut, Name: "退出登录"},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "状态查询",
|
||||
Types: []APITypeInfo{
|
||||
{Type: APITypeGetExpired, Name: "获取到期时间"},
|
||||
{Type: APITypeCheckUserStatus, Name: "检测账号状态"},
|
||||
{Type: APITypeGetAppData, Name: "获取程序数据"},
|
||||
{Type: APITypeGetVariable, Name: "获取变量数据"},
|
||||
{Type: APITypeExecuteFunction, Name: "执行远程函数"},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "用户操作",
|
||||
Types: []APITypeInfo{
|
||||
{Type: APITypeUpdatePwd, Name: "修改账号密码"},
|
||||
{Type: APITypeMacChangeBind, Name: "机器码转绑"},
|
||||
{Type: APITypeIPChangeBind, Name: "IP转绑"},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "风控操作",
|
||||
Types: []APITypeInfo{
|
||||
{Type: APITypeDisableUser, Name: "封停用户"},
|
||||
{Type: APITypeBlackUser, Name: "添加黑名单"},
|
||||
{Type: APITypeUserDeductedTime, Name: "扣除时间"},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
if categorized {
|
||||
// 返回层次化的分类结构
|
||||
return apiCategories
|
||||
}
|
||||
|
||||
// 返回所有接口类型的扁平列表
|
||||
var allTypes []int
|
||||
for _, category := range apiCategories {
|
||||
for _, typeInfo := range category.Types {
|
||||
allTypes = append(allTypes, typeInfo.Type)
|
||||
}
|
||||
}
|
||||
return allTypes
|
||||
}
|
||||
|
||||
// GetAPITypeName 获取API类型名称
|
||||
// 通过调用GetAPITypes函数来获取名称,避免重复维护数据
|
||||
func GetAPITypeName(apiType int) string {
|
||||
// 获取分类化的API类型数据
|
||||
categories := GetAPITypes(true).([]APICategoryInfo)
|
||||
|
||||
// 遍历所有分类和类型,查找匹配的API类型
|
||||
for _, category := range categories {
|
||||
for _, typeInfo := range category.Types {
|
||||
if typeInfo.Type == apiType {
|
||||
return typeInfo.Name
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 如果没有找到匹配的类型,返回默认值
|
||||
return "未知API类型"
|
||||
}
|
||||
|
||||
// ============================================================================
|
||||
// 验证函数
|
||||
// ============================================================================
|
||||
|
||||
// IsValidAlgorithm 验证算法类型是否有效
|
||||
func IsValidAlgorithm(algorithm int) bool {
|
||||
return algorithm >= AlgorithmNone && algorithm <= AlgorithmEasy
|
||||
}
|
||||
|
||||
// GetAPITypeName 获取API类型名称
|
||||
func GetAPITypeName(apiType int) string {
|
||||
switch apiType {
|
||||
// 基础信息获取类API
|
||||
case APITypeGetBulletin:
|
||||
return "获取程序公告"
|
||||
case APITypeGetUpdateUrl:
|
||||
return "获取更新地址"
|
||||
case APITypeCheckAppVersion:
|
||||
return "检测最新版本"
|
||||
case APITypeGetCardInfo:
|
||||
return "获取卡密信息"
|
||||
|
||||
// 登录相关API
|
||||
case APITypeSingleLogin:
|
||||
return "卡密登录"
|
||||
|
||||
// 用户账号管理API
|
||||
case APITypeUserLogin:
|
||||
return "用户登录"
|
||||
case APITypeUserRegin:
|
||||
return "用户注册"
|
||||
case APITypeUserRecharge:
|
||||
return "用户充值"
|
||||
case APITypeCardRegin:
|
||||
return "卡密注册"
|
||||
|
||||
// 登出API
|
||||
case APITypeLogOut:
|
||||
return "退出登录"
|
||||
|
||||
// 用户状态查询API
|
||||
case APITypeGetExpired:
|
||||
return "获取到期时间"
|
||||
case APITypeCheckUserStatus:
|
||||
return "检测账号状态"
|
||||
case APITypeGetAppData:
|
||||
return "获取程序数据"
|
||||
case APITypeGetVariable:
|
||||
return "获取变量数据"
|
||||
|
||||
// 用户操作API
|
||||
case APITypeUpdatePwd:
|
||||
return "修改账号密码"
|
||||
case APITypeMacChangeBind:
|
||||
return "机器码转绑"
|
||||
case APITypeIPChangeBind:
|
||||
return "IP转绑"
|
||||
|
||||
// 管理员操作API
|
||||
case APITypeDisableUser:
|
||||
return "封停用户"
|
||||
case APITypeBlackUser:
|
||||
return "添加黑名单"
|
||||
case APITypeUserDeductedTime:
|
||||
return "扣除时间"
|
||||
|
||||
default:
|
||||
return "未知API类型"
|
||||
}
|
||||
}
|
||||
|
||||
// IsValidAPIType 验证API类型是否有效
|
||||
func IsValidAPIType(apiType int) bool {
|
||||
validTypes := []int{
|
||||
APITypeGetBulletin, APITypeGetUpdateUrl, APITypeCheckAppVersion, APITypeGetCardInfo,
|
||||
APITypeSingleLogin,
|
||||
APITypeUserLogin, APITypeUserRegin, APITypeUserRecharge, APITypeCardRegin,
|
||||
APITypeLogOut,
|
||||
APITypeGetExpired, APITypeCheckUserStatus, APITypeGetAppData, APITypeGetVariable,
|
||||
APITypeUpdatePwd, APITypeMacChangeBind, APITypeIPChangeBind,
|
||||
APITypeDisableUser, APITypeBlackUser, APITypeUserDeductedTime,
|
||||
}
|
||||
validTypes := GetDefaultAPITypes()
|
||||
|
||||
for _, validType := range validTypes {
|
||||
if apiType == validType {
|
||||
@@ -218,15 +282,34 @@ func IsValidAPIType(apiType int) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
// GetAPITypesByCategory 根据分类获取API类型列表
|
||||
func GetAPITypesByCategory() map[string][]int {
|
||||
return map[string][]int{
|
||||
"基础信息获取": {APITypeGetBulletin, APITypeGetUpdateUrl, APITypeCheckAppVersion, APITypeGetCardInfo},
|
||||
"登录相关": {APITypeSingleLogin},
|
||||
"用户账号管理": {APITypeUserLogin, APITypeUserRegin, APITypeUserRecharge, APITypeCardRegin},
|
||||
"登出": {APITypeLogOut},
|
||||
"用户状态查询": {APITypeGetExpired, APITypeCheckUserStatus, APITypeGetAppData, APITypeGetVariable},
|
||||
"用户操作": {APITypeUpdatePwd, APITypeMacChangeBind, APITypeIPChangeBind},
|
||||
"管理员操作": {APITypeDisableUser, APITypeBlackUser, APITypeUserDeductedTime},
|
||||
}
|
||||
// ============================================================================
|
||||
// 兼容性函数
|
||||
// ============================================================================
|
||||
|
||||
// GetDefaultAPITypes 获取默认创建的API接口类型列表(兼容性函数)
|
||||
func GetDefaultAPITypes() []int {
|
||||
return GetAPITypes(false).([]int)
|
||||
}
|
||||
|
||||
// GetAPITypesByCategory 根据分类获取API类型列表(兼容性函数)
|
||||
// 返回传统的 map[string][]int 格式以保持向后兼容
|
||||
func GetAPITypesByCategory() map[string][]int {
|
||||
categories := GetAPITypes(true).([]APICategoryInfo)
|
||||
result := make(map[string][]int)
|
||||
|
||||
for _, category := range categories {
|
||||
var types []int
|
||||
for _, typeInfo := range category.Types {
|
||||
types = append(types, typeInfo.Type)
|
||||
}
|
||||
result[category.Name] = types
|
||||
}
|
||||
|
||||
return result
|
||||
}
|
||||
|
||||
// GetAPICategoriesInfo 获取完整的层次化分类信息
|
||||
// 返回新的 []APICategoryInfo 格式,包含完整的类型名称信息
|
||||
func GetAPICategoriesInfo() []APICategoryInfo {
|
||||
return GetAPITypes(true).([]APICategoryInfo)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user