package model import ( "fmt" "github.com/jmoiron/sqlx" "strconv" "trading-go/common" "trading-go/response" "trading-go/util" ) type User struct { Uid uint `db:"uid" json:"uid,string"` Vid string `db:"vid" json:"vid"` Name string `db:"name" json:"name"` Avatar string `db:"avatar" json:"avatar"` Phone string `db:"phone" json:"phone"` Sign string `db:"sign" json:"sign"` } type UserJson struct { Uid string `json:"uid"` Vid string `json:"vid"` Name string `json:"name"` Avatar string `json:"avatar"` Phone string `json:"phone"` Sign string `json:"sign"` } func (u UserJson) Change() User { uid, _ := strconv.Atoi(u.Uid) return User{ Uid: uint(uid), Vid: u.Vid, Name: u.Name, Avatar: u.Avatar, Phone: u.Phone, Sign: u.Sign, } } func (u User) Register() error { db := common.DB sqlStr := "INSERT INTO users(uid, vid,name, avatar, phone, sign) values (:uid, :vid, :name, :avatar, :phone, :sign)" exec, err := db.NamedExec(sqlStr, u) if err != nil { return err } affected, err := exec.RowsAffected() if err != nil { return err } if affected != 1 { return util.InsertFailError } return nil } func (u User) Login() (err error, nu User) { db := common.DB sqlStr := "SELECT * FROM users WHERE vid = ?" err = db.Get(&nu, sqlStr, u.Vid) return } // SPhone 查找电话号码 func (u User) SPhone() error { var nu User db := common.DB fmt.Println(u.Phone) sqlStr := "SELECT * FROM users WHERE phone = ?" err := db.Get(&nu, sqlStr, u.Phone) if err != nil && err.Error() == "sql: no rows in result set" { return nil } else if err != nil { return err } return util.PhoneBeUsed } // Modify 修改信息 func (u User) Modify(old *User) (User, error) { var user User db := common.DB if u.Name == "" { u.Name = old.Name } if u.Avatar == "" { u.Avatar = old.Avatar } if u.Phone == "" { u.Phone = old.Phone } if u.Sign == "" { u.Sign = old.Sign } sqlStr := "UPDATE users set name = ?,avatar = ?, phone = ?, sign = ? WHERE uid = ?" exec, err := db.Exec(sqlStr, u.Name, u.Avatar, u.Phone, u.Sign, u.Uid) if err != nil { return User{}, err } affected, err := exec.RowsAffected() if err != nil { return User{}, err } if affected != 1 { return User{}, util.UpdateFailError } sqlStr = "SELECT * FROM users WHERE uid = ?" err = db.Get(&user, sqlStr, u.Uid) if err != nil { return User{}, err } return user, nil } func (u User) FindByIds(ids []uint) (users []User, err error) { db := common.DB sqlStr := "SELECT * FROM users WHERE uid = ?" for i := 0; i < len(ids); i++ { err := db.Get(&users[i], sqlStr, ids[i]) if err != nil { return nil, err } } return } // Info 获取用户信息 func (u User) Info() (nu User, err error) { db := common.DB sqlStr := "SELECT * FROM users WHERE uid = ?" err = db.Get(&nu, sqlStr, u.Uid) return } func (u User) GetPaged(page, pageSize int) (rsp response.PageResponse, err error) { var users []User db := common.DB sqlStr := "SELECT * FROM users LIMIT ?,?" rsp.Page = page rsp.PageSize = pageSize err = db.Select(&users, sqlStr, (page-1)*pageSize, pageSize) rsp.Data = users return } func (u User) GetCnt() (cnt int, err error) { db := common.DB sqlStr := "SELECT COUNT(1) FROM users" err = db.Get(&cnt, sqlStr) return } func (u User) CheckVid() bool { db := common.DB sqlStr := "SELECT COUNT(1) FROM users WHERE vid = ?" cnt := 0 _ = db.Get(&cnt, sqlStr) return cnt == 0 } func (u User) GetUser() (user User) { db := common.DB sqlStr := "SELECT * FROM users WHERE uid = ?" _ = db.Get(&user, sqlStr, u.Uid) return } func (u User) GetUserList(uid []string) (users []User, err error) { db := common.DB sqlStr := "SELECT * FROM users WHERE uid IN (?)" query, args, err := sqlx.In(sqlStr, uid) if err != nil { return nil, err } err = db.Select(&users, query, args...) return }