sys_user.go 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. package system
  2. import (
  3. "github.com/jameskeane/bcrypt"
  4. "go_server/model/common"
  5. "time"
  6. )
  7. type Administrator struct {
  8. ID int64 `json:"id" gorm:"primarykey;comment:id"`
  9. common.GormAllTimeModel
  10. Nickname string `json:"nickname" gorm:"column:nickname;type:char(20);comment:昵称"`
  11. Username string `json:"username" gorm:"column:username;type:varchar(50);unique;comment:用户名"`
  12. Password string `json:"-" gorm:"column:password;type:varchar(100);comment:密码"`
  13. Salt string `json:"-" gorm:"column:salt;varchar(50);comment:延码"`
  14. RoleId int64 `json:"role_id" gorm:"column:role_id;comment:角色Id"`
  15. Avatar string `json:"avatar" gorm:"type:varchar(100);comment:头像地址"`
  16. Lock bool `json:"lock" gorm:"column:lock;default:false;comment:是否锁定"`
  17. Token string `json:"-" gorm:";column:token;type:text;comment:token"`
  18. LastLoginIp string `json:"last_login_ip" gorm:"column:last_login_ip;type:varchar(20);comment:最后登录ip"`
  19. LastLoginTime *time.Time `json:"last_login_time" gorm:"column:last_login_time;comment:最后登录时间"`
  20. GoogleKey string `json:"-" gorm:"column:google_key;type:varchar(100);comment:谷歌密钥"`
  21. }
  22. func (*Administrator) TableName() string {
  23. return common.ModelPrefix + "administrator"
  24. }
  25. func NewAdministrator() *Administrator {
  26. return &Administrator{}
  27. }
  28. func (*Administrator) Comment() string {
  29. return "管理员"
  30. }
  31. func (r *Administrator) EncodePassword(passWord string) (enPassWord, salt string) {
  32. salt, err := bcrypt.Salt(bcrypt.DefaultRounds)
  33. if err != nil {
  34. panic(err)
  35. }
  36. enPassWord, err = bcrypt.Hash(passWord, salt)
  37. if err != nil {
  38. panic(err)
  39. }
  40. return
  41. }
  42. func (r *Administrator) CheckPassWord(checkPassWord string) bool {
  43. checkPassWordEn, _ := bcrypt.Hash(checkPassWord, r.Salt)
  44. if checkPassWordEn == r.Password {
  45. return true
  46. }
  47. return false
  48. }
  49. type AdministratorLog struct {
  50. common.GormFullModel
  51. AdminId int64 `json:"adminId" gorm:"comment:管理员Id"`
  52. Method string `json:"method" gorm:"type:varchar(20);comment:请求方法"`
  53. Path string `json:"path" gorm:"type:varchar(200);comment:请求方法"`
  54. Ip string `json:"ip" gorm:"type:varchar(20);comment:ip"`
  55. UserAgent string `json:"userAgent" gorm:"type:text;comment:用户请求信息"`
  56. }
  57. func (*AdministratorLog) TableName() string {
  58. return common.ModelPrefix + "administrator_log"
  59. }
  60. func NewAdministratorLog() *AdministratorLog {
  61. return &AdministratorLog{}
  62. }
  63. func (*AdministratorLog) Comment() string {
  64. return "管理员日志"
  65. }