feat():learning后台管理项目初始化
This commit is contained in:
65
internal/models/invite_code.go
Normal file
65
internal/models/invite_code.go
Normal 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"`
|
||||
}
|
||||
Reference in New Issue
Block a user