user.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  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. ShareCode string `orm:"size(100)" form:"sharecode"`
  16. }
  17. func init() {
  18. orm.RegisterModel(new(User))
  19. }
  20. func (u *User) TableName() string {
  21. return "tb_user"
  22. }
  23. // 验证用户信息
  24. func checkUser(u *User) (err error) {
  25. valid := validation.Validation{}
  26. b, _ := valid.Valid(&u)
  27. if !b {
  28. for _, err := range valid.Errors {
  29. log.Println(err.Key, err.Message)
  30. return errors.New(err.Message)
  31. }
  32. }
  33. return nil
  34. }
  35. // get user list
  36. func GetUserlist() (users []orm.Params, count int64) {
  37. o := orm.NewOrm()
  38. user := new(User)
  39. qs := o.QueryTable(user)
  40. qs.Values(&users)
  41. count, _ = qs.Count()
  42. return users, count
  43. }
  44. // 添加用户
  45. func AddUser(u *User) (int64, error) {
  46. if err := checkUser(u); err != nil {
  47. return 0, err
  48. }
  49. o := orm.NewOrm()
  50. id, err := o.Insert(u)
  51. return id, err
  52. }
  53. // 更新用户
  54. func UpdateUser(u *User) (int64, error) {
  55. if err := checkUser(u); err != nil {
  56. return 0, err
  57. }
  58. o := orm.NewOrm()
  59. user := make(orm.Params)
  60. if len(u.Username) > 0 {
  61. user["Username"] = u.Username
  62. }
  63. if len(u.Password) > 0 {
  64. user["Password"] = u.Password //Strtomd5(u.Password)
  65. }
  66. if u.Role != 0 {
  67. user["Role"] = u.Role
  68. }
  69. if u.CreateTs != 0 {
  70. user["CreateTs"] = u.CreateTs
  71. }
  72. if u.LastLoginTs != 0 {
  73. user["LastLoginTs"] = u.LastLoginTs
  74. }
  75. if len(u.ShareCode) > 0 {
  76. user["ShareCode"] = u.ShareCode
  77. }
  78. if len(user) == 0 {
  79. return 0, errors.New("update field is empty")
  80. }
  81. var table User
  82. num, err := o.QueryTable(table).Filter("Id", u.Id).Update(user)
  83. return num, err
  84. }
  85. func DelUserById(Id int64) (int64, error) {
  86. o := orm.NewOrm()
  87. status, err := o.Delete(&User{Id: Id})
  88. return status, err
  89. }
  90. func GetUserByUsername(username string) (user *User) {
  91. user = &User{Username: username}
  92. o := orm.NewOrm()
  93. err := o.Read(user, "Username")
  94. if err != nil {
  95. return nil
  96. }
  97. return user
  98. }
  99. func GetUserById(id int64) (user *User) {
  100. user = &User{Id: id}
  101. o := orm.NewOrm()
  102. err := o.Read(user, "Id")
  103. if err != nil {
  104. return nil
  105. }
  106. return user
  107. }
  108. func GetPermission(username string) int64 {
  109. user := GetUserByUsername(username)
  110. if user == nil {
  111. return 0
  112. }
  113. p := GetRoleById(user.Role)
  114. if p == nil {
  115. return 0
  116. }
  117. return p.Permission
  118. }
  119. // 检查用户是否满足权限
  120. func CheckPermission(username string, permission int) bool {
  121. user := GetUserByUsername(username)
  122. if user == nil {
  123. return false
  124. }
  125. p := GetRoleById(user.Role)
  126. if p == nil {
  127. return false
  128. }
  129. return (p.Permission & (1 << uint(permission))) != 0
  130. }
  131. // 获取账号推广码
  132. func GetUserShareCode(username string) string {
  133. user := GetUserByUsername(username)
  134. log.Printf("GetUserShareCode username[%s] user[%v]", username, user)
  135. if user == nil {
  136. return ""
  137. }
  138. return user.ShareCode
  139. }
  140. // 获取账号角色名称
  141. func GetUserRoleName(username string) string {
  142. user := GetUserByUsername(username)
  143. if user == nil {
  144. return ""
  145. }
  146. p := GetRoleById(user.Role)
  147. if p == nil {
  148. return ""
  149. }
  150. return p.Name
  151. }