user.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  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 GetTypeUserList(name string) (users []orm.Params, count int64) {
  46. roleId := GetRoleIdByName(name)
  47. o := orm.NewOrm()
  48. user := new(User)
  49. qs := o.QueryTable(user).Filter("Role", roleId)
  50. qs.Values(&users)
  51. count, _ = qs.Count()
  52. return users, count
  53. }
  54. // 添加用户
  55. func AddUser(u *User) (int64, error) {
  56. if err := checkUser(u); err != nil {
  57. return 0, err
  58. }
  59. o := orm.NewOrm()
  60. id, err := o.Insert(u)
  61. return id, err
  62. }
  63. // 更新用户
  64. func UpdateUser(u *User) (int64, error) {
  65. if err := checkUser(u); err != nil {
  66. return 0, err
  67. }
  68. o := orm.NewOrm()
  69. user := make(orm.Params)
  70. if len(u.Username) > 0 {
  71. user["Username"] = u.Username
  72. }
  73. if len(u.Password) > 0 {
  74. user["Password"] = u.Password //Strtomd5(u.Password)
  75. }
  76. if u.Role != 0 {
  77. user["Role"] = u.Role
  78. }
  79. if u.CreateTs != 0 {
  80. user["CreateTs"] = u.CreateTs
  81. }
  82. if u.LastLoginTs != 0 {
  83. user["LastLoginTs"] = u.LastLoginTs
  84. }
  85. if len(u.ShareCode) > 0 {
  86. user["ShareCode"] = u.ShareCode
  87. }
  88. if len(user) == 0 {
  89. return 0, errors.New("update field is empty")
  90. }
  91. var table User
  92. num, err := o.QueryTable(table).Filter("Id", u.Id).Update(user)
  93. return num, err
  94. }
  95. func DelUserById(Id int64) (int64, error) {
  96. o := orm.NewOrm()
  97. status, err := o.Delete(&User{Id: Id})
  98. return status, err
  99. }
  100. func GetUserByUsername(username string) (user *User) {
  101. user = &User{Username: username}
  102. o := orm.NewOrm()
  103. err := o.Read(user, "Username")
  104. if err != nil {
  105. return nil
  106. }
  107. return user
  108. }
  109. func GetUserById(id int64) (user *User) {
  110. user = &User{Id: id}
  111. o := orm.NewOrm()
  112. err := o.Read(user, "Id")
  113. if err != nil {
  114. return nil
  115. }
  116. return user
  117. }
  118. func GetPermission(username string) int64 {
  119. user := GetUserByUsername(username)
  120. if user == nil {
  121. return 0
  122. }
  123. p := GetRoleById(user.Role)
  124. if p == nil {
  125. return 0
  126. }
  127. return p.Permission
  128. }
  129. // 检查用户是否满足权限
  130. func CheckPermission(username string, permission int) bool {
  131. user := GetUserByUsername(username)
  132. if user == nil {
  133. return false
  134. }
  135. p := GetRoleById(user.Role)
  136. if p == nil {
  137. return false
  138. }
  139. return (p.Permission & (1 << uint(permission))) != 0
  140. }
  141. // 获取账号推广码
  142. func GetUserShareCode(username string) string {
  143. user := GetUserByUsername(username)
  144. log.Printf("GetUserShareCode username[%s] user[%v]", username, user)
  145. if user == nil {
  146. return ""
  147. }
  148. return user.ShareCode
  149. }
  150. // 获取账号角色名称
  151. func GetUserRoleName(username string) string {
  152. user := GetUserByUsername(username)
  153. if user == nil {
  154. return ""
  155. }
  156. p := GetRoleById(user.Role)
  157. if p == nil {
  158. return ""
  159. }
  160. return p.Name
  161. }
  162. // 账号是否主播
  163. func IsUserPromoter(username string) int {
  164. roleName := GetUserRoleName(username)
  165. status := 0
  166. if roleName == "主播" {
  167. status = 1
  168. }
  169. return status
  170. }