liuxiaolong
2020-08-17 bae4af47f77a195a12a0437584d667465e826e12
models/user.go
@@ -1,86 +1,94 @@
package models
import (
   "errors"
   "strconv"
   "time"
   "github.com/astaxie/beego/orm"
)
var (
   UserList map[string]*User
)
func init() {
   UserList = make(map[string]*User)
   u := User{"user_11111", "astaxie", "11111", Profile{"male", 20, "Singapore", "astaxie@gmail.com"}}
   UserList["user_11111"] = &u
}
type User struct {
   Id       string
   Username string
   Password string
   Profile  Profile
   Id          string       `orm:"pk;size(50);column(id)" json:"id"`
   Username    string      `orm:"size(250);column(username)" json:"username"`
   PhoneNum    string       `orm:"size(20);column(phoneNum)" json:"phoneNum"` //手机号
   Password    string      `orm:"size(50);column(password)" json:"password"`
   TrueName    string       `orm:"size(250);column(trueName)" json:"trueName"` //真实姓名
   Gender     int         `orm:"size(1);column(gender)" json:"gender"` //性别
   IdCard       string       `orm:"size(250);column(idCard)" json:"idCard"` //身份证号
   Age        int         `orm:"size(8);column(age)" json:"age"` //年龄
   Address    string      `orm:"size(200);column(address)" json:"gender"`  //地址
   Email      string      `orm:"size(200);column(email)" json:"email"` //邮箱
   IsDelete    bool       `orm:"size(1);default(0);column(isDelete)" json:"isDelete"`
}
type Profile struct {
   Gender  string
   Age     int
   Address string
   Email   string
func (u *User) TableName() string {
   return "sys_user"
}
func AddUser(u User) string {
   u.Id = "user_" + strconv.FormatInt(time.Now().UnixNano(), 10)
   UserList[u.Id] = &u
   return u.Id
func (u *User) Insert() (int64,error) {
   o := orm.NewOrm()
   return o.Insert(u)
}
func GetUser(uid string) (u *User, err error) {
   if u, ok := UserList[uid]; ok {
      return u, nil
func (u *User) SelectById(uid string) error {
   o := orm.NewOrm()
   err := o.QueryTable(u.TableName()).Filter("id", uid).One(u)
   return err
}
func (u *User) SelectByPhoneNum(phoneNum string) error {
   o := orm.NewOrm()
   err := o.QueryTable(u.TableName()).Filter("phoneNum", phoneNum).One(u)
   return err
}
func (u *User) GetAllUsers() (all []User,err error) {
   o := orm.NewOrm()
   _, err = o.QueryTable(u.TableName()).All(&all)
   if err != nil {
      return nil, err
   }
   return nil, errors.New("User not exists")
   return all,nil
}
func GetAllUsers() map[string]*User {
   return UserList
}
func UpdateUser(uid string, uu *User) (a *User, err error) {
   if u, ok := UserList[uid]; ok {
      if uu.Username != "" {
         u.Username = uu.Username
func (u *User) GetAllMap() (map[string]User) {
   idM := make(map[string]User)
   all, _ := u.GetAllUsers()
   if all !=nil {
      for _,p := range all {
         idM[p.Id] = p
      }
      if uu.Password != "" {
         u.Password = uu.Password
      }
      if uu.Profile.Age != 0 {
         u.Profile.Age = uu.Profile.Age
      }
      if uu.Profile.Address != "" {
         u.Profile.Address = uu.Profile.Address
      }
      if uu.Profile.Gender != "" {
         u.Profile.Gender = uu.Profile.Gender
      }
      if uu.Profile.Email != "" {
         u.Profile.Email = uu.Profile.Email
      }
      return u, nil
   }
   return nil, errors.New("User Not Exist")
   return idM
}
func (u *User) Update() (int64, error) {
   o := orm.NewOrm()
   return o.Update(u)
}
func (u *User) UpdatePhoneNum(phoneNum string, hikPersonId string) (int64, error) {
   o := orm.NewOrm()
   res, err := o.Raw("update sys_user set phoneNum=? where id=?", phoneNum, hikPersonId).Exec()
   if err != nil {
      return 0, err
   }
   return res.RowsAffected()
}
func Login(username, password string) bool {
   for _, u := range UserList {
      if u.Username == username && u.Password == password {
         return true
      }
   }
   return false
}
func DeleteUser(uid string) {
   delete(UserList, uid)
func (u *User) DeleteById() (int64, error) {
   o := orm.NewOrm()
   return o.Update(u, "isDelete")
}
func (u *User) Delete(id string) (int64, error) {
   o := orm.NewOrm()
   res, err := o.Raw("delete from sys_user where id=?", id).Exec()
   if err != nil {
      return 0, err
   }
   return res.RowsAffected()
}