feat():learning后台管理项目初始化

This commit is contained in:
yuj
2025-12-04 16:23:46 +08:00
parent 39886d50d2
commit 88e048f4d1
154 changed files with 28966 additions and 6 deletions

View File

@@ -0,0 +1,65 @@
package models
import (
"time"
"gorm.io/gorm"
)
// InviteCode 简化版邀请码模型
type InviteCode struct {
ID uint `json:"id" gorm:"primaryKey;autoIncrement;comment:主键ID"`
Code string `json:"code" gorm:"not null;type:varchar(64);uniqueIndex;comment:邀请码"`
IsUsed bool `json:"is_used" gorm:"not null;default:0;type:tinyint(1);comment:是否已使用"`
ClientID string `json:"client_id" gorm:"type:varchar(64);comment:客户端ID"`
Email string `json:"email" gorm:"type:varchar(255);comment:关联邮箱"`
UserLevelID *uint `json:"user_level_id" gorm:"type:BIGINT;comment:用户等级ID"`
ExpiresAt *time.Time `json:"expires_at" gorm:"comment:过期时间"`
CreatedAt time.Time `json:"created_at" gorm:"not null;comment:创建时间"`
DeletedAt gorm.DeletedAt `json:"-" gorm:"index;comment:软删除时间"`
}
// TableName 指定数据库表名
func (InviteCode) TableName() string {
return "admin_invite_codes"
}
// 列表请求(简化)
type InviteCodeListRequest struct {
Code string `form:"code"`
IsUsed *bool `form:"is_used"`
StartTime string `form:"start_time"`
EndTime string `form:"end_time"`
Page int `form:"page,default=1"`
Size int `form:"size,default=20"`
}
// 创建请求(支持设置过期时间)
type InviteCodeCreateRequest struct {
Emails []string `json:"emails" form:"emails"` // 邮箱列表,可选
UserLevelID *uint `json:"user_level_id" form:"user_level_id"` // 用户等级ID可选
ExpiresAt *time.Time `json:"expires_at" form:"expires_at"` // 过期时间,可选
ClientID string `json:"client_id" form:"client_id"` // 客户端ID可选保留向后兼容
}
// 更新请求(支持更新过期时间)
type InviteCodeUpdateRequest struct {
ClientID string `json:"client_id" form:"client_id"` // 客户端ID可选
Email string `json:"email" form:"email"` // 邮箱,可选
UserLevelID *uint `json:"user_level_id" form:"user_level_id"` // 用户等级ID可选
ExpiresAt *time.Time `json:"expires_at" form:"expires_at"` // 过期时间,可选
}
// 统计响应(简化,可选)
type InviteCodeStatistics struct {
Total int `json:"total"`
Used int `json:"used"`
Unused int `json:"unused"`
TodayCreated int `json:"today_created"`
}
// 列表响应
type InviteCodeListResponse struct {
List []InviteCode `json:"list"`
Total int64 `json:"total"`
}