user.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. package models
  2. import (
  3. "errors"
  4. "log"
  5. "github.com/astaxie/beego/orm"
  6. "github.com/astaxie/beego/validation"
  7. )
  8. type User struct {
  9. Id int64
  10. Username string `orm:"size(100)" form:"username" valid:"Required"`
  11. Password string `orm:"size(32)" form:"Password" valid:"Required;MaxSize(32);MinSize(6)"`
  12. Role int64 `form:"role"`
  13. CreateTs int64 `form:"create_ts"`
  14. LastLoginTs int64 `form:"last_login_ts"`
  15. }
  16. func init() {
  17. orm.RegisterModel(new(User))
  18. }
  19. func (u *User) TableName() string {
  20. return "tb_user"
  21. }
  22. //验证用户信息
  23. func checkUser(u *User) (err error) {
  24. valid := validation.Validation{}
  25. b, _ := valid.Valid(&u)
  26. if !b {
  27. for _, err := range valid.Errors {
  28. log.Println(err.Key, err.Message)
  29. return errors.New(err.Message)
  30. }
  31. }
  32. return nil
  33. }
  34. //get user list
  35. func GetUserlist() (users []orm.Params, count int64) {
  36. o := orm.NewOrm()
  37. user := new(User)
  38. qs := o.QueryTable(user)
  39. qs.Values(&users)
  40. count, _ = qs.Count()
  41. return users, count
  42. }
  43. //添加用户
  44. func AddUser(u *User) (int64, error) {
  45. if err := checkUser(u); err != nil {
  46. return 0, err
  47. }
  48. o := orm.NewOrm()
  49. id, err := o.Insert(u)
  50. return id, err
  51. }
  52. //更新用户
  53. func UpdateUser(u *User) (int64, error) {
  54. if err := checkUser(u); err != nil {
  55. return 0, err
  56. }
  57. o := orm.NewOrm()
  58. user := make(orm.Params)
  59. if len(u.Username) > 0 {
  60. user["Username"] = u.Username
  61. }
  62. if len(u.Password) > 0 {
  63. user["Password"] = u.Password//Strtomd5(u.Password)
  64. }
  65. if u.Role != 0 {
  66. user["Role"] = u.Role
  67. }
  68. if u.CreateTs != 0 {
  69. user["CreateTs"] = u.CreateTs
  70. }
  71. if u.LastLoginTs != 0 {
  72. user["LastLoginTs"] = u.LastLoginTs
  73. }
  74. if len(user) == 0 {
  75. return 0, errors.New("update field is empty")
  76. }
  77. var table User
  78. num, err := o.QueryTable(table).Filter("Id", u.Id).Update(user)
  79. return num, err
  80. }
  81. func DelUserById(Id int64) (int64, error) {
  82. o := orm.NewOrm()
  83. status, err := o.Delete(&User{Id: Id})
  84. return status, err
  85. }
  86. func GetUserByUsername(username string) (user *User) {
  87. user = &User{Username: username}
  88. o := orm.NewOrm()
  89. err := o.Read(user, "Username")
  90. if err != nil {
  91. return nil
  92. }
  93. return user
  94. }
  95. func GetUserById(id int64) (user *User) {
  96. user = &User{Id: id}
  97. o := orm.NewOrm()
  98. err := o.Read(user, "Id")
  99. if err != nil {
  100. return nil
  101. }
  102. return user
  103. }
  104. func GetPermission(username string) int64 {
  105. user := GetUserByUsername(username)
  106. if user == nil {
  107. return 0
  108. }
  109. p := GetRoleById(user.Role)
  110. if p == nil {
  111. return 0
  112. }
  113. return p.Permission
  114. }
  115. //检查用户是否满足权限
  116. func CheckPermission(username string, permission int) bool {
  117. user := GetUserByUsername(username)
  118. if user == nil {
  119. return false
  120. }
  121. p := GetRoleById(user.Role)
  122. if p == nil {
  123. return false
  124. }
  125. return (p.Permission & (1 << uint(permission))) != 0
  126. }