init
This commit is contained in:
@@ -0,0 +1,206 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"anytunnel/at-admin/app/utils"
|
||||
"crypto/md5"
|
||||
"encoding/hex"
|
||||
"errors"
|
||||
"strings"
|
||||
|
||||
"github.com/snail007/go-activerecord/mysql"
|
||||
)
|
||||
|
||||
type User struct {
|
||||
}
|
||||
|
||||
func (p *User) GetUserByUserId(userId string) (user map[string]string, err error) {
|
||||
db := DB
|
||||
var rs *mysql.ResultSet
|
||||
rs, err = db.Query(db.AR().From("user").Where(map[string]interface{}{
|
||||
"user_id": userId,
|
||||
}))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
user = rs.Row()
|
||||
return
|
||||
}
|
||||
|
||||
func (p *User) HasSameUsername(userId, username string) (has bool, err error) {
|
||||
db := DB
|
||||
var rs *mysql.ResultSet
|
||||
rs, err = db.Query(db.AR().From("user").Where(map[string]interface{}{
|
||||
"user_id <>": userId,
|
||||
"username": username,
|
||||
}).Limit(0, 1))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if rs.Len() > 0 {
|
||||
has = true
|
||||
}
|
||||
return
|
||||
}
|
||||
func (p *User) HasUsername(username string) (has bool, err error) {
|
||||
db := DB
|
||||
var rs *mysql.ResultSet
|
||||
rs, err = db.Query(db.AR().From("user").Where(map[string]interface{}{
|
||||
"username": username,
|
||||
}).Limit(0, 1))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
if rs.Len() > 0 {
|
||||
has = true
|
||||
}
|
||||
return
|
||||
}
|
||||
func (p *User) GetUserByName(username string) (user map[string]string, err error) {
|
||||
db := DB
|
||||
var rs *mysql.ResultSet
|
||||
rs, err = db.Query(db.AR().From("user").Where(map[string]interface{}{
|
||||
"username": username,
|
||||
}).Limit(0, 1))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
user = rs.Row()
|
||||
return
|
||||
}
|
||||
|
||||
//禁用
|
||||
func (p *User) Forbidden(userId string) (err error) {
|
||||
db := DB
|
||||
_, err = db.Exec(db.AR().Update("user", map[string]interface{}{
|
||||
"is_forbidden": 1,
|
||||
}, map[string]interface{}{
|
||||
"user_id": userId,
|
||||
}))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
//恢复
|
||||
func (p *User) Review(userId string) (err error) {
|
||||
db := DB
|
||||
_, err = db.Exec(db.AR().Update("user", map[string]interface{}{
|
||||
"is_forbidden": 0,
|
||||
}, map[string]interface{}{
|
||||
"user_id": userId,
|
||||
}))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (p *User) Insert(user map[string]interface{}) (id int64, err error) {
|
||||
db := DB
|
||||
var rs *mysql.ResultSet
|
||||
rs, err = db.Exec(db.AR().Insert("user", user))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
id = rs.LastInsertId
|
||||
return
|
||||
}
|
||||
|
||||
func (p *User) Update(userId string, user map[string]interface{}) (id int64, err error) {
|
||||
db := DB
|
||||
var rs *mysql.ResultSet
|
||||
rs, err = db.Exec(db.AR().Update("user", user, map[string]interface{}{
|
||||
"user_id": userId,
|
||||
}))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
id = rs.LastInsertId
|
||||
return
|
||||
}
|
||||
|
||||
func (p *User) ChangePassword(userId, newpassword, oldpassword string) (err error) {
|
||||
db := DB
|
||||
user, err := p.GetUserByUserId(userId)
|
||||
if user["password"] != p.EncodePassword(oldpassword) {
|
||||
return errors.New("旧密码错误")
|
||||
}
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
_, err = db.Exec(db.AR().Update("user", map[string]interface{}{
|
||||
"password": p.EncodePassword(newpassword),
|
||||
}, map[string]interface{}{
|
||||
"user_id": userId,
|
||||
}))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
func (p *User) EncodePassword(password string) (passwordHash string) {
|
||||
hasher := md5.New()
|
||||
hasher.Write([]byte(password))
|
||||
passwordHash = strings.ToLower(hex.EncodeToString(hasher.Sum(nil)))
|
||||
return
|
||||
}
|
||||
|
||||
//根据关键字分页获取用户
|
||||
func (user *User) GetUsersByKeywordAndLimit(keyword string, limit int, number int) (users []map[string]string, err error) {
|
||||
|
||||
db := DB
|
||||
var rs *mysql.ResultSet
|
||||
rs, err = db.Query(db.AR().From("user").Where(map[string]interface{}{
|
||||
"username LIKE": "%" + keyword + "%",
|
||||
}).Limit(limit, number))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
users = rs.Rows()
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
//分页获取用户
|
||||
func (user *User) GetUsersByLimit(limit int, number int) (users []map[string]string, err error) {
|
||||
|
||||
db := DB
|
||||
var rs *mysql.ResultSet
|
||||
rs, err = db.Query(db.AR().From("user").Limit(limit, number))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
users = rs.Rows()
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (user *User) CountUsers() (count int, err error) {
|
||||
|
||||
db := DB
|
||||
var rs *mysql.ResultSet
|
||||
rs, err = db.Query(db.AR().Select("count(*) as total").From("user"))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
count = utils.NewConvert().StringToInt(rs.Value("total"))
|
||||
return
|
||||
}
|
||||
|
||||
func (user *User) CountUsersByKeyword(keyword string) (count int, err error) {
|
||||
|
||||
db := DB
|
||||
var rs *mysql.ResultSet
|
||||
rs, err = db.Query(db.AR().
|
||||
Select("count(*) as total").
|
||||
From("user").
|
||||
Where(map[string]interface{}{
|
||||
"username LIKE": "%" + keyword + "%",
|
||||
}))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
count = utils.NewConvert().StringToInt(rs.Value("total"))
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user