user.go 1.0 KB

1234567891011121314151617181920212223242526272829303132333435
  1. package model
  2. import (
  3. "fmt"
  4. "gorm.io/gorm"
  5. )
  6. type User struct {
  7. IdModel
  8. Username string `json:"username" gorm:"default:'';not null;uniqueIndex"`
  9. Email string `json:"email" gorm:"default:'';not null;uniqueIndex"`
  10. // Email string `json:"email" `
  11. Password string `json:"-" gorm:"default:'';not null;"`
  12. Nickname string `json:"nickname" gorm:"default:'';not null;"`
  13. Avatar string `json:"avatar" gorm:"default:'';not null;"`
  14. GroupId uint `json:"group_id" gorm:"default:0;not null;index"`
  15. IsAdmin *bool `json:"is_admin" gorm:"default:0;not null;"`
  16. Status StatusCode `json:"status" gorm:"default:1;not null;"`
  17. TimeModel
  18. }
  19. // BeforeSave 钩子用于确保 email 字段有合理的默认值
  20. func (u *User) BeforeSave(tx *gorm.DB) (err error) {
  21. // 如果 email 为空,设置为默认值
  22. if u.Email == "" {
  23. u.Email = fmt.Sprintf("%s@example.com", u.Username)
  24. }
  25. return nil
  26. }
  27. type UserList struct {
  28. Users []*User `json:"list,omitempty"`
  29. Pagination
  30. }