mirror of
https://github.com/skyle1995/NetworkAuth.git
synced 2026-05-25 02:24:05 +08:00
New warehouse
This commit is contained in:
97
models/api.go
Normal file
97
models/api.go
Normal file
@@ -0,0 +1,97 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// API 接口表模型
|
||||
// 用于管理API接口的配置信息
|
||||
// 包含加密算法配置、密钥管理等功能
|
||||
// 支持多种加密算法:不加密、RC4、RSA、RSA(动态)
|
||||
|
||||
type API struct {
|
||||
// ID:主键,自增
|
||||
ID uint `gorm:"primaryKey;comment:API接口ID,自增主键" json:"id"`
|
||||
|
||||
// API类型(int型)
|
||||
APIType int `gorm:"not null;comment:API类型" json:"api_type"`
|
||||
|
||||
// API密钥
|
||||
APIKey string `gorm:"size:255;not null;uniqueIndex;comment:API密钥,唯一标识" json:"api_key"`
|
||||
|
||||
// 应用UUID,关联到App表
|
||||
AppUUID string `gorm:"size:36;not null;index;comment:关联的应用UUID" json:"app_uuid"`
|
||||
|
||||
// 接口状态(1=启用,0=禁用)
|
||||
Status int `gorm:"default:1;not null;comment:接口状态,1=启用,0=禁用" json:"status"`
|
||||
|
||||
// 接口提交算法
|
||||
// 支持的算法:0=不加密,1=RC4,2=RSA,3=RSA(动态)
|
||||
SubmitAlgorithm int `gorm:"default:0;not null;comment:提交算法,0=不加密,1=RC4,2=RSA,3=RSA动态" json:"submit_algorithm"`
|
||||
|
||||
// 接口返回算法
|
||||
// 支持的算法:0=不加密,1=RC4,2=RSA,3=RSA(动态)
|
||||
ReturnAlgorithm int `gorm:"default:0;not null;comment:返回算法,0=不加密,1=RC4,2=RSA,3=RSA动态" json:"return_algorithm"`
|
||||
|
||||
// 提交算法公钥(base64编码存储)
|
||||
SubmitPublicKey string `gorm:"type:text;comment:提交算法公钥,base64编码" json:"submit_public_key"`
|
||||
|
||||
// 提交算法私钥(base64编码存储)
|
||||
SubmitPrivateKey string `gorm:"type:text;comment:提交算法私钥,base64编码" json:"submit_private_key"`
|
||||
|
||||
// 返回算法公钥(base64编码存储)
|
||||
ReturnPublicKey string `gorm:"type:text;comment:返回算法公钥,base64编码" json:"return_public_key"`
|
||||
|
||||
// 返回算法私钥(base64编码存储)
|
||||
ReturnPrivateKey string `gorm:"type:text;comment:返回算法私钥,base64编码" json:"return_private_key"`
|
||||
|
||||
// 时间字段
|
||||
CreatedAt time.Time `gorm:"comment:创建时间" json:"created_at"`
|
||||
UpdatedAt time.Time `gorm:"comment:更新时间" json:"updated_at"`
|
||||
}
|
||||
|
||||
// BeforeCreate 在创建记录前自动生成API密钥
|
||||
func (api *API) BeforeCreate(tx *gorm.DB) error {
|
||||
if api.APIKey == "" {
|
||||
// 生成唯一的API密钥
|
||||
api.APIKey = "api_" + uuid.New().String()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// TableName 指定表名
|
||||
func (API) TableName() string {
|
||||
return "apis"
|
||||
}
|
||||
|
||||
// 算法类型常量
|
||||
const (
|
||||
AlgorithmNone = 0 // 不加密
|
||||
AlgorithmRC4 = 1 // RC4
|
||||
AlgorithmRSA = 2 // RSA
|
||||
AlgorithmRSADynamic = 3 // RSA(动态)
|
||||
)
|
||||
|
||||
// GetAlgorithmName 获取算法名称
|
||||
func GetAlgorithmName(algorithm int) string {
|
||||
switch algorithm {
|
||||
case AlgorithmNone:
|
||||
return "不加密"
|
||||
case AlgorithmRC4:
|
||||
return "RC4"
|
||||
case AlgorithmRSA:
|
||||
return "RSA"
|
||||
case AlgorithmRSADynamic:
|
||||
return "RSA(动态)"
|
||||
default:
|
||||
return "未知算法"
|
||||
}
|
||||
}
|
||||
|
||||
// IsValidAlgorithm 验证算法类型是否有效
|
||||
func IsValidAlgorithm(algorithm int) bool {
|
||||
return algorithm >= AlgorithmNone && algorithm <= AlgorithmRSADynamic
|
||||
}
|
||||
63
models/app.go
Normal file
63
models/app.go
Normal file
@@ -0,0 +1,63 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"crypto/rand"
|
||||
"encoding/hex"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
// App 应用表模型
|
||||
// 用于管理应用程序的基本信息
|
||||
// UUID 为应用的唯一标识符,自动生成
|
||||
// Status 为应用状态(1:启用 0:禁用),默认为1
|
||||
// Name 为应用名称
|
||||
// Secret 为应用密钥,用于API认证
|
||||
// Version 为应用版本号
|
||||
// CreatedAt/UpdatedAt 由 GORM 自动维护
|
||||
|
||||
type App struct {
|
||||
// ID:主键,自增,同时通过 json 标签保证前端接收为 id
|
||||
ID uint `gorm:"primaryKey;comment:应用ID,自增主键" json:"id"`
|
||||
// UUID:应用唯一标识符,自动生成
|
||||
UUID string `gorm:"uniqueIndex;size:36;not null;comment:应用UUID,唯一标识符" json:"uuid"`
|
||||
// Status:状态(1=启用,0=禁用);json 名称与前端一致
|
||||
Status int `gorm:"default:1;not null;comment:应用状态,1=启用,0=禁用" json:"status"`
|
||||
// Name:应用名称;json 名称与前端一致
|
||||
Name string `gorm:"size:100;not null;comment:应用名称" json:"name"`
|
||||
// Secret:应用密钥,用于API认证
|
||||
Secret string `gorm:"size:255;not null;comment:应用密钥,用于API认证" json:"secret"`
|
||||
// Version:应用版本号
|
||||
Version string `gorm:"size:50;default:'1.0.0';comment:应用版本号" json:"version"`
|
||||
// ForceUpdate:强制更新(0=不开启,1=开启)
|
||||
ForceUpdate int `gorm:"default:0;not null;comment:强制更新,0=不开启,1=开启" json:"force_update"`
|
||||
// DownloadType:下载方式(0=不启用更新,1=自动更新,2=手动下载)
|
||||
DownloadType int `gorm:"default:0;not null;comment:更新方式,0=不启用更新,1=自动更新,2=手动下载" json:"download_type"`
|
||||
// DownloadURL:下载地址
|
||||
DownloadURL string `gorm:"size:500;comment:下载地址" json:"download_url"`
|
||||
// CreatedAt/UpdatedAt:时间字段,返回为 created_at/updated_at,便于前端展示
|
||||
CreatedAt time.Time `gorm:"comment:创建时间" json:"created_at"`
|
||||
UpdatedAt time.Time `gorm:"comment:更新时间" json:"updated_at"`
|
||||
}
|
||||
|
||||
// BeforeCreate 在创建记录前自动生成UUID和密钥
|
||||
func (app *App) BeforeCreate(tx *gorm.DB) error {
|
||||
if app.UUID == "" {
|
||||
app.UUID = uuid.New().String()
|
||||
}
|
||||
if app.Secret == "" {
|
||||
// 生成32位大写16进制随机字符
|
||||
bytes := make([]byte, 16) // 16字节 = 32位16进制字符
|
||||
rand.Read(bytes)
|
||||
app.Secret = strings.ToUpper(hex.EncodeToString(bytes))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// TableName 指定表名
|
||||
func (App) TableName() string {
|
||||
return "apps"
|
||||
}
|
||||
27
models/card.go
Normal file
27
models/card.go
Normal file
@@ -0,0 +1,27 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
// Card 卡密模型
|
||||
// 用于存储和管理系统中的卡密信息,包括卡密号码、状态、使用情况等
|
||||
type Card struct {
|
||||
// ID:主键,自增
|
||||
ID uint `gorm:"primaryKey;comment:卡密ID,自增主键" json:"id"`
|
||||
// CardNumber:卡密号码,唯一且非空
|
||||
CardNumber string `gorm:"size:200;not null;comment:卡密号码(十六进制字符串)" json:"card_number"`
|
||||
// CardTypeID:所属卡密类型ID(外键)
|
||||
CardTypeID uint `gorm:"not null;index;comment:所属卡密类型ID(外键)" json:"card_type_id"`
|
||||
// Status:状态(0=未使用,1=已使用,2=禁用)
|
||||
Status int `gorm:"default:0;not null;comment:状态,0=未使用,1=已使用,2=禁用" json:"status"`
|
||||
// Batch:批次标识,用于区分导入或生成批次
|
||||
Batch string `gorm:"size:100;comment:批次标识" json:"batch"`
|
||||
// Remark:备注信息
|
||||
Remark string `gorm:"size:255;comment:备注信息" json:"remark"`
|
||||
// UsedAt:使用时间,未使用为NULL(调整到创建时间前面,以便前端展示顺序一致)
|
||||
UsedAt *time.Time `gorm:"comment:使用时间" json:"used_at"`
|
||||
// CreatedAt/UpdatedAt:时间字段
|
||||
CreatedAt time.Time `gorm:"comment:创建时间" json:"created_at"`
|
||||
UpdatedAt time.Time `gorm:"comment:更新时间" json:"updated_at"`
|
||||
}
|
||||
24
models/card_type.go
Normal file
24
models/card_type.go
Normal file
@@ -0,0 +1,24 @@
|
||||
package models
|
||||
|
||||
import "time"
|
||||
|
||||
// CardType 卡密类型表模型
|
||||
// 用于管理不同类型的卡密(如:ChatGPT、Claude、Suno、Grok等)
|
||||
// ID 为自增主键
|
||||
// Name 为卡密类型名称,唯一索引
|
||||
// Status 为状态(1:启用 0:禁用),默认为1
|
||||
// CreatedAt/UpdatedAt 由 GORM 自动维护
|
||||
|
||||
type CardType struct {
|
||||
// ID:主键,自增,同时通过 json 标签保证前端接收为 id
|
||||
ID uint `gorm:"primaryKey;comment:卡密类型ID,自增主键" json:"id"`
|
||||
// Name:名称,唯一;json 名称与前端一致
|
||||
Name string `gorm:"uniqueIndex;size:100;not null;comment:卡密类型名称,唯一索引" json:"name"`
|
||||
// Status:状态(1=启用,0=禁用);json 名称与前端一致
|
||||
Status int `gorm:"default:1;not null;comment:状态,1=启用,0=禁用" json:"status"`
|
||||
// LoginTypes:登录方式(逗号分隔);json 使用 login_types
|
||||
LoginTypes string `gorm:"type:varchar(500);default:'';comment:登录方式,多个用逗号分隔" json:"login_types"`
|
||||
// CreatedAt/UpdatedAt:时间字段,返回为 created_at/updated_at,便于前端展示
|
||||
CreatedAt time.Time `gorm:"comment:创建时间" json:"created_at"`
|
||||
UpdatedAt time.Time `gorm:"comment:更新时间" json:"updated_at"`
|
||||
}
|
||||
24
models/login_type.go
Normal file
24
models/login_type.go
Normal file
@@ -0,0 +1,24 @@
|
||||
package models
|
||||
|
||||
import "time"
|
||||
|
||||
// LoginType 登录类型表模型
|
||||
// 用于管理不同的登录方式,如直登、Google、Microsoft、Apple等
|
||||
// ID 为自增主键
|
||||
// Name 为登录类型名称,唯一索引
|
||||
// Status 为状态(1:启用 0:禁用),默认为1
|
||||
// CreatedAt/UpdatedAt 由 GORM 自动维护
|
||||
|
||||
type LoginType struct {
|
||||
// ID:主键,自增,同时通过 json 标签保证前端接收为 id
|
||||
ID uint `gorm:"primaryKey;comment:登录类型ID,自增主键" json:"id"`
|
||||
// Name:名称,唯一;json 名称与前端一致
|
||||
Name string `gorm:"uniqueIndex;size:100;not null;comment:登录类型名称,唯一索引" json:"name"`
|
||||
// Status:状态(1=启用,0=禁用);json 名称与前端一致
|
||||
Status int `gorm:"default:1;not null;comment:状态,1=启用,0=禁用" json:"status"`
|
||||
// VerifyTypes:验证方式(逗号分隔);json 使用 verify_types;用于记录多种验证方式,输入内容用多个用逗号分隔
|
||||
VerifyTypes string `gorm:"type:varchar(500);default:'';comment:验证方式,输入内容用多个用逗号分隔" json:"verify_types"`
|
||||
// CreatedAt/UpdatedAt:时间字段,返回为 created_at/updated_at,便于前端展示
|
||||
CreatedAt time.Time `gorm:"comment:创建时间" json:"created_at"`
|
||||
UpdatedAt time.Time `gorm:"comment:更新时间" json:"updated_at"`
|
||||
}
|
||||
19
models/settings.go
Normal file
19
models/settings.go
Normal file
@@ -0,0 +1,19 @@
|
||||
package models
|
||||
|
||||
import "time"
|
||||
|
||||
// Settings 系统设置表模型
|
||||
// 用于存储应用的配置参数
|
||||
// Name 为配置项名称,唯一索引
|
||||
// Value 为配置项的值
|
||||
// Description 为配置项描述说明
|
||||
// CreatedAt/UpdatedAt 由 GORM 自动维护
|
||||
|
||||
type Settings struct {
|
||||
ID uint `gorm:"primaryKey;comment:设置ID,自增主键"`
|
||||
Name string `gorm:"uniqueIndex;size:64;not null;comment:配置项名称,唯一索引"`
|
||||
Value string `gorm:"type:text;comment:配置项的值"`
|
||||
Description string `gorm:"size:255;comment:配置项描述说明"`
|
||||
CreatedAt time.Time `gorm:"comment:创建时间"`
|
||||
UpdatedAt time.Time `gorm:"comment:更新时间"`
|
||||
}
|
||||
16
models/user.go
Normal file
16
models/user.go
Normal file
@@ -0,0 +1,16 @@
|
||||
package models
|
||||
|
||||
import "time"
|
||||
|
||||
// User 用户表模型
|
||||
// 说明:PasswordSalt 使用 32 字节随机盐(以 16 进制存储为 64 个字符),因此列长度设置为 64
|
||||
|
||||
type User struct {
|
||||
ID uint `gorm:"primaryKey;comment:用户ID,自增主键"`
|
||||
Username string `gorm:"uniqueIndex;size:64;not null;comment:用户名,唯一索引"`
|
||||
Password string `gorm:"size:255;not null;comment:密码哈希值"`
|
||||
PasswordSalt string `gorm:"size:64;not null;comment:密码加密盐值"`
|
||||
Role int `gorm:"not null;comment:用户角色,0=管理员,1=普通用户"`
|
||||
CreatedAt time.Time `gorm:"comment:创建时间"`
|
||||
UpdatedAt time.Time `gorm:"comment:更新时间"`
|
||||
}
|
||||
Reference in New Issue
Block a user