| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- package model
- import (
- "time"
- "gorm.io/gorm"
- )
- // User 用户模型
- type User struct {
- ID uint `gorm:"primaryKey" json:"id"`
- Username string `gorm:"uniqueIndex;not null;size:50" json:"username"`
- Email string `gorm:"uniqueIndex;not null;size:100" json:"email"`
- Password string `gorm:"not null;size:255" json:"-"`
- FirstName string `gorm:"size:50" json:"first_name"`
- LastName string `gorm:"size:50" json:"last_name"`
- Avatar string `gorm:"size:255" json:"avatar"`
- Phone string `gorm:"size:20" json:"phone"`
- Address string `gorm:"size:255" json:"address"`
- IsActive bool `gorm:"default:true" json:"is_active"`
- Role string `gorm:"default:user;size:20" json:"role"`
- CreatedAt time.Time `json:"created_at"`
- UpdatedAt time.Time `json:"updated_at"`
- DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
- }
- // TableName 指定表名
- func (User) TableName() string {
- return "users"
- }
- // BeforeCreate GORM钩子 - 创建前
- func (u *User) BeforeCreate(tx *gorm.DB) error {
- // 这里可以添加密码加密等逻辑
- return nil
- }
- // BeforeUpdate GORM钩子 - 更新前
- func (u *User) BeforeUpdate(tx *gorm.DB) error {
- // 这里可以添加更新前的逻辑
- return nil
- }
- // CreateUserRequest 创建用户请求
- type CreateUserRequest struct {
- Username string `json:"username" binding:"required,min=3,max=50"`
- Email string `json:"email" binding:"required,email"`
- Password string `json:"password" binding:"required,min=6"`
- FirstName string `json:"first_name" binding:"max=50"`
- LastName string `json:"last_name" binding:"max=50"`
- Phone string `json:"phone" binding:"max=20"`
- Address string `json:"address" binding:"max=255"`
- }
- // UpdateUserRequest 更新用户请求
- type UpdateUserRequest struct {
- FirstName string `json:"first_name" binding:"max=50"`
- LastName string `json:"last_name" binding:"max=50"`
- Avatar string `json:"avatar" binding:"max=255"`
- Phone string `json:"phone" binding:"max=20"`
- Address string `json:"address" binding:"max=255"`
- }
- // LoginRequest 登录请求
- type LoginRequest struct {
- Username string `json:"username" binding:"required"`
- Password string `json:"password" binding:"required"`
- }
- // UserResponse 用户响应
- type UserResponse struct {
- ID uint `json:"id"`
- Username string `json:"username"`
- Email string `json:"email"`
- FirstName string `json:"first_name"`
- LastName string `json:"last_name"`
- Avatar string `json:"avatar"`
- Phone string `json:"phone"`
- Address string `json:"address"`
- IsActive bool `json:"is_active"`
- Role string `json:"role"`
- CreatedAt time.Time `json:"created_at"`
- UpdatedAt time.Time `json:"updated_at"`
- }
- // LoginResponse 登录响应
- type LoginResponse struct {
- Token string `json:"token"`
- User UserResponse `json:"user"`
- }
- // ToResponse 转换为响应格式
- func (u *User) ToResponse() UserResponse {
- return UserResponse{
- ID: u.ID,
- Username: u.Username,
- Email: u.Email,
- FirstName: u.FirstName,
- LastName: u.LastName,
- Avatar: u.Avatar,
- Phone: u.Phone,
- Address: u.Address,
- IsActive: u.IsActive,
- Role: u.Role,
- CreatedAt: u.CreatedAt,
- UpdatedAt: u.UpdatedAt,
- }
- }
|