123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- package models
- import (
- "errors"
- "log"
- "github.com/astaxie/beego/orm"
- "github.com/astaxie/beego/validation"
- )
- type User struct {
- Id int64
- Username string `orm:"size(100)" form:"username" valid:"Required"`
- Password string `orm:"size(32)" form:"Password" valid:"Required;MaxSize(32);MinSize(6)"`
- Role int64 `form:"role"`
- CreateTs int64 `form:"create_ts"`
- LastLoginTs int64 `form:"last_login_ts"`
- ShareCode string `orm:"size(100)" form:"sharecode"`
- }
- func init() {
- orm.RegisterModel(new(User))
- }
- func (u *User) TableName() string {
- return "tb_user"
- }
- // 验证用户信息
- func checkUser(u *User) (err error) {
- valid := validation.Validation{}
- b, _ := valid.Valid(&u)
- if !b {
- for _, err := range valid.Errors {
- log.Println(err.Key, err.Message)
- return errors.New(err.Message)
- }
- }
- return nil
- }
- // get user list
- func GetUserlist() (users []orm.Params, count int64) {
- o := orm.NewOrm()
- user := new(User)
- qs := o.QueryTable(user)
- qs.Values(&users)
- count, _ = qs.Count()
- return users, count
- }
- // 主播类型
- func GetTypeUserList(name string) (users []orm.Params, count int64) {
- roleId := GetRoleIdByName(name)
- o := orm.NewOrm()
- user := new(User)
- qs := o.QueryTable(user).Filter("Role", roleId)
- qs.Values(&users)
- count, _ = qs.Count()
- return users, count
- }
- // 添加用户
- func AddUser(u *User) (int64, error) {
- if err := checkUser(u); err != nil {
- return 0, err
- }
- o := orm.NewOrm()
- id, err := o.Insert(u)
- return id, err
- }
- // 更新用户
- func UpdateUser(u *User) (int64, error) {
- if err := checkUser(u); err != nil {
- return 0, err
- }
- o := orm.NewOrm()
- user := make(orm.Params)
- if len(u.Username) > 0 {
- user["Username"] = u.Username
- }
- if len(u.Password) > 0 {
- user["Password"] = u.Password //Strtomd5(u.Password)
- }
- if u.Role != 0 {
- user["Role"] = u.Role
- }
- if u.CreateTs != 0 {
- user["CreateTs"] = u.CreateTs
- }
- if u.LastLoginTs != 0 {
- user["LastLoginTs"] = u.LastLoginTs
- }
- if len(u.ShareCode) > 0 {
- user["ShareCode"] = u.ShareCode
- }
- if len(user) == 0 {
- return 0, errors.New("update field is empty")
- }
- var table User
- num, err := o.QueryTable(table).Filter("Id", u.Id).Update(user)
- return num, err
- }
- func DelUserById(Id int64) (int64, error) {
- o := orm.NewOrm()
- status, err := o.Delete(&User{Id: Id})
- return status, err
- }
- func GetUserByUsername(username string) (user *User) {
- user = &User{Username: username}
- o := orm.NewOrm()
- err := o.Read(user, "Username")
- if err != nil {
- return nil
- }
- return user
- }
- func GetUserById(id int64) (user *User) {
- user = &User{Id: id}
- o := orm.NewOrm()
- err := o.Read(user, "Id")
- if err != nil {
- return nil
- }
- return user
- }
- func GetPermission(username string) int64 {
- user := GetUserByUsername(username)
- if user == nil {
- return 0
- }
- p := GetRoleById(user.Role)
- if p == nil {
- return 0
- }
- return p.Permission
- }
- // 检查用户是否满足权限
- func CheckPermission(username string, permission int) bool {
- user := GetUserByUsername(username)
- if user == nil {
- return false
- }
- p := GetRoleById(user.Role)
- if p == nil {
- return false
- }
- return (p.Permission & (1 << uint(permission))) != 0
- }
- // 获取账号推广码
- func GetUserShareCode(username string) string {
- user := GetUserByUsername(username)
- log.Printf("GetUserShareCode username[%s] user[%v]", username, user)
- if user == nil {
- return ""
- }
- return user.ShareCode
- }
- // 获取账号角色名称
- func GetUserRoleName(username string) string {
- user := GetUserByUsername(username)
- if user == nil {
- return ""
- }
- p := GetRoleById(user.Role)
- if p == nil {
- return ""
- }
- return p.Name
- }
- // 账号是否主播
- func IsUserPromoter(username string) int {
- roleName := GetUserRoleName(username)
- status := 0
- if roleName == "主播" {
- status = 1
- }
- return status
- }
|