123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- package model
- import (
- "fmt"
- "time"
- "github.com/710leo/urlooker/modules/web/g"
- . "github.com/710leo/urlooker/modules/web/store"
- "github.com/710leo/urlooker/modules/web/utils"
- )
- type User struct {
- Id int64 `json:"id"`
- Name string `json:"name"`
- Cnname string `json:"cnname"`
- Password string `json:"-"`
- Email string `json:"email"`
- Phone string `json:"phone"`
- Wechat string `json:"wechat"`
- Role int `json:"role"`
- Created time.Time `json:"-" xorm:"<-"`
- }
- func GetUserById(id int64) (*User, error) {
- var obj User
- has, err := Orm.Cols("id", "name", "cnname", "email", "phone", "wechat").Where("id=?", id).Get(&obj)
- if err != nil || !has {
- return nil, err
- }
- obj.Password = ""
- return &obj, nil
- }
- func GetUserPwById(id int64) (*User, error) {
- var obj User
- has, err := Orm.Cols("id", "name", "password").Where("id=?", id).Get(&obj)
- if err != nil || !has {
- return nil, err
- }
- return &obj, nil
- }
- // 先根据name获取id,再根据id去查询
- func CheckPw(name string, passwd string) (*User, error) {
- if name == "" {
- return nil, nil
- }
- var obj User
- has, err := Orm.Cols("id", "name", "cnname", "email", "phone", "wechat").Where("name=? and password=?", name, passwd).Get(&obj)
- if err != nil || !has {
- return nil, err
- }
- return &obj, nil
- }
- // 先根据name获取id,再根据id去查询
- func GetUserByName(name string) (*User, error) {
- if name == "" {
- return nil, nil
- }
- var obj User
- has, err := Orm.Cols("id", "name", "cnname", "email", "phone", "wechat").Where("name=?", name).Get(&obj)
- if err != nil || !has {
- return nil, err
- }
- return &obj, nil
- }
- func QueryUsers(query string, limit int) ([]*User, error) {
- users := make([]*User, 0)
- if query == "" {
- return users, nil
- }
- err := Orm.Cols("id", "name", "cnname", "email", "phone", "wechat").Where("name LIKE ?", "%"+query+"%").Limit(limit).Find(&users)
- if err != nil {
- return users, err
- }
- return users, nil
- }
- func AdminRegister() error {
- count, err := Orm.Count(new(User))
- if err != nil {
- return err
- }
- if count > 0 {
- return nil
- }
- user := &User{Name: "admin", Password: utils.EncryptPassword(g.Config.Salt, "password")}
- _, err = Orm.Insert(user)
- if err != nil {
- return err
- }
- return nil
- }
- func UserRegister(name, password string) (int64, error) {
- user, err := GetUserByName(name)
- if err != nil {
- return 0, err
- }
- if user != nil {
- return 0, fmt.Errorf("用户名已经被占用了")
- }
- user = &User{Name: name, Password: password}
- _, err = Orm.Insert(user)
- if err != nil {
- return 0, err
- }
- return user.Id, nil
- }
- func UserLogin(name, password string) (int64, error) {
- user, err := CheckPw(name, password)
- if err != nil {
- return 0, err
- }
- if user == nil {
- return 0, fmt.Errorf("密码不正确")
- }
- return user.Id, nil
- }
- func (this *User) UpdateProfile() error {
- _, err := Orm.Id(this.Id).Update(this)
- if err != nil {
- return err
- }
- return err
- }
- func (this *User) Save() error {
- _, err := Orm.Insert(this)
- return err
- }
- func (this *User) ChangePasswd(oldPasswd, newPasswd string) error {
- if this.Password != oldPasswd {
- return fmt.Errorf("原密码不正确")
- }
- this.Password = newPasswd
- _, err := Orm.Id(this.Id).Update(this)
- if err != nil {
- return err
- }
- return nil
- }
|