liuxiaolong
2020-06-29 167f00c02df35f19d689e60db3d30ebf035ab629
models/user.go
@@ -1,86 +1,71 @@
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 GetUser(uid string) (u *User, err error) {
   if u, ok := UserList[uid]; ok {
      return u, nil
func (u *User) TableUnique() [][]string {
   return [][]string {
      []string{"phoneNum"},
   }
   return nil, errors.New("User not exists")
}
func GetAllUsers() map[string]*User {
   return UserList
func (u *User) Insert() (int64,error) {
   o := orm.NewOrm()
   return o.Insert(u)
}
func UpdateUser(uid string, uu *User) (a *User, err error) {
   if u, ok := UserList[uid]; ok {
      if uu.Username != "" {
         u.Username = uu.Username
      }
      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
func (u *User) SelectById(uid string) error {
   o := orm.NewOrm()
   err := o.Raw("select * from ? where id=?", u.TableName(), uid).QueryRow(u)
   return err
}
func (u *User) SelectByPhoneNum(phoneNum string) error {
   o := orm.NewOrm()
   err := o.Raw("select * from ? where phoneNum=?", u.TableName(), phoneNum).QueryRow(u)
   return err
}
func (u *User) GetAllUsers() (all []User,err error) {
   o := orm.NewOrm()
   _, err = o.Raw("select * from ?", u.TableName()).QueryRows(&all)
   if err != nil {
      return nil, err
   }
   return nil, errors.New("User Not Exist")
   return all,nil
}
func (u *User) Update() (int64, error) {
   o := orm.NewOrm()
   return o.Update(u)
}
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")
}