宇恒一号官网
This commit is contained in:
77
server/models/user.go
Normal file
77
server/models/user.go
Normal file
@@ -0,0 +1,77 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
"go.mongodb.org/mongo-driver/v2/bson"
|
||||
)
|
||||
|
||||
const (
|
||||
RoleIDSuperAdmin = 9527 // 超级管理员(后台登录)
|
||||
RoleIDSuperUser = 0 // 超级用户(role_id=0 且 role=admin,可配置短信平台)
|
||||
RoleIDUser = 1 // 普通用户
|
||||
)
|
||||
|
||||
// FlexDate 可解码 BSON DateTime 或 string,统一以 string 输出(兼容库中既有日期类型又有字符串的情况)
|
||||
type FlexDate string
|
||||
|
||||
func (d *FlexDate) UnmarshalBSONValue(typ byte, data []byte) error {
|
||||
rv := bson.RawValue{Type: bson.Type(typ), Value: data}
|
||||
switch bson.Type(typ) {
|
||||
case bson.TypeDateTime:
|
||||
if dt, ok := rv.DateTimeOK(); ok {
|
||||
*d = FlexDate(time.UnixMilli(dt).Format("2006-01-02"))
|
||||
}
|
||||
return nil
|
||||
case bson.TypeString:
|
||||
if s, ok := rv.StringValueOK(); ok {
|
||||
*d = FlexDate(s)
|
||||
}
|
||||
return nil
|
||||
case bson.TypeNull, bson.TypeUndefined:
|
||||
*d = ""
|
||||
return nil
|
||||
default:
|
||||
return fmt.Errorf("FlexDate: cannot decode type %v", typ)
|
||||
}
|
||||
}
|
||||
|
||||
type User struct {
|
||||
ID bson.ObjectID `bson:"_id,omitempty" json:"id,omitempty"`
|
||||
Username string `bson:"username" json:"username"`
|
||||
Mobile string `bson:"mobile,omitempty" json:"mobile,omitempty"`
|
||||
Email string `bson:"email" json:"email"`
|
||||
Password string `bson:"password" json:"-"` // 不返回给前端
|
||||
Role string `bson:"role" json:"role"`
|
||||
RoleID int `bson:"role_id,omitempty" json:"role_id"` // 9527=超级管理员 1=普通用户
|
||||
IsBeta bool `bson:"is_beta,omitempty" json:"is_beta"`
|
||||
TrialStartDate FlexDate `bson:"trial_start_date,omitempty" json:"trial_start_date,omitempty"`
|
||||
TrialEndDate FlexDate `bson:"trial_end_date,omitempty" json:"trial_end_date,omitempty"`
|
||||
LastLogin string `bson:"lastLogin,omitempty" json:"last_login,omitempty"`
|
||||
LLM string `bson:"llm,omitempty" json:"llm,omitempty"`
|
||||
}
|
||||
|
||||
type UserCreateInput struct {
|
||||
Username string `json:"username" binding:"required"`
|
||||
Email string `json:"email" binding:"required"`
|
||||
Password string `json:"password" binding:"required"`
|
||||
Role string `json:"role"`
|
||||
RoleID int `json:"role_id"` // 9527=超级管理员 1=普通用户
|
||||
IsBeta bool `json:"is_beta"`
|
||||
TrialStartDate string `json:"trial_start_date"`
|
||||
TrialEndDate string `json:"trial_end_date"`
|
||||
LLM string `json:"llm"`
|
||||
}
|
||||
|
||||
type UserUpdateInput struct {
|
||||
Username *string `json:"username"`
|
||||
Email *string `json:"email"`
|
||||
Password *string `json:"password"` // 若提供则更新
|
||||
Role *string `json:"role"`
|
||||
RoleID *int `json:"role_id"`
|
||||
IsBeta *bool `json:"is_beta"`
|
||||
TrialStartDate *string `json:"trial_start_date"`
|
||||
TrialEndDate *string `json:"trial_end_date"`
|
||||
LLM *string `json:"llm"`
|
||||
}
|
||||
Reference in New Issue
Block a user