| | |
| | | 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") |
| | | } |