New interface management

Optimize the pop-up interface
This commit is contained in:
2025-10-25 01:43:03 +08:00
parent 269fc897db
commit 6dad3971de
11 changed files with 1869 additions and 80 deletions

View File

@@ -1,10 +1,11 @@
package models
import (
"crypto/rand"
"encoding/hex"
"strings"
"time"
"github.com/google/uuid"
"gorm.io/gorm"
)
@@ -30,24 +31,24 @@ type API struct {
Status int `gorm:"default:1;not null;comment:接口状态1=启用0=禁用" json:"status"`
// 接口提交算法
// 支持的算法0=不加密1=RC42=RSA3=RSA动态
SubmitAlgorithm int `gorm:"default:0;not null;comment:提交算法0=不加密1=RC42=RSA3=RSA动态" json:"submit_algorithm"`
// 支持的算法0=不加密1=RC42=RSA3=RSA动态4=易加密
SubmitAlgorithm int `gorm:"default:0;not null;comment:提交算法0=不加密1=RC42=RSA3=RSA动态4=易加密" json:"submit_algorithm"`
// 接口返回算法
// 支持的算法0=不加密1=RC42=RSA3=RSA动态
ReturnAlgorithm int `gorm:"default:0;not null;comment:返回算法0=不加密1=RC42=RSA3=RSA动态" json:"return_algorithm"`
// 支持的算法0=不加密1=RC42=RSA3=RSA动态4=易加密
ReturnAlgorithm int `gorm:"default:0;not null;comment:返回算法0=不加密1=RC42=RSA3=RSA动态4=易加密" json:"return_algorithm"`
// 提交算法公钥(base64编码存储)
SubmitPublicKey string `gorm:"type:text;comment:提交算法公钥,base64编码" json:"submit_public_key"`
// 提交算法公钥(明文PEM存储)
SubmitPublicKey string `gorm:"type:text;comment:提交算法公钥,明文PEM" json:"submit_public_key"`
// 提交算法私钥(base64编码存储)
SubmitPrivateKey string `gorm:"type:text;comment:提交算法私钥,base64编码" json:"submit_private_key"`
// 提交算法私钥(明文PEM存储)
SubmitPrivateKey string `gorm:"type:text;comment:提交算法私钥,明文PEM" json:"submit_private_key"`
// 返回算法公钥(base64编码存储)
ReturnPublicKey string `gorm:"type:text;comment:返回算法公钥,base64编码" json:"return_public_key"`
// 返回算法公钥(明文PEM存储)
ReturnPublicKey string `gorm:"type:text;comment:返回算法公钥,明文PEM" json:"return_public_key"`
// 返回算法私钥(base64编码存储)
ReturnPrivateKey string `gorm:"type:text;comment:返回算法私钥,base64编码" json:"return_private_key"`
// 返回算法私钥(明文PEM存储)
ReturnPrivateKey string `gorm:"type:text;comment:返回算法私钥,明文PEM" json:"return_private_key"`
// 时间字段
CreatedAt time.Time `gorm:"comment:创建时间" json:"created_at"`
@@ -57,8 +58,10 @@ type API struct {
// BeforeCreate 在创建记录前自动生成API密钥
func (api *API) BeforeCreate(tx *gorm.DB) error {
if api.APIKey == "" {
// 生成唯一的API密钥
api.APIKey = "api_" + strings.ToUpper(uuid.New().String())
// 生成16位大写十六进制API密钥
bytes := make([]byte, 8) // 8字节 = 16位十六进制字符
rand.Read(bytes)
api.APIKey = strings.ToUpper(hex.EncodeToString(bytes))
}
return nil
}
@@ -68,12 +71,50 @@ 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 获取算法名称
@@ -87,6 +128,8 @@ func GetAlgorithmName(algorithm int) string {
return "RSA"
case AlgorithmRSADynamic:
return "RSA动态"
case AlgorithmEasy:
return "易加密"
default:
return "未知算法"
}
@@ -94,5 +137,100 @@ func GetAlgorithmName(algorithm int) string {
// IsValidAlgorithm 验证算法类型是否有效
func IsValidAlgorithm(algorithm int) bool {
return algorithm >= AlgorithmNone && algorithm <= AlgorithmRSADynamic
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,
}
for _, validType := range validTypes {
if apiType == validType {
return true
}
}
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},
}
}

View File

@@ -39,6 +39,9 @@ type App struct {
// DownloadURL下载地址
DownloadURL string `gorm:"size:500;comment:下载地址" json:"download_url"`
// AppData应用数据base64编码存储
AppData string `gorm:"type:text;comment:应用数据base64编码存储" json:"app_data"`
// Announcement程序公告内容base64编码存储
Announcement string `gorm:"type:text;comment:程序公告内容base64编码存储" json:"announcement"`