37 Star 209 Fork 108

狂奔的蜗牛./anytunnel

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
user.go 4.28 KB
一键复制 编辑 原始数据 按行查看 历史
arraykeys 提交于 2019-08-08 17:13 +08:00 . init
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 := G.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 := G.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 := G.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 := G.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 := G.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 := G.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 := G.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 := G.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 := G.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 := G.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 := G.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 := G.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 := G.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
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
JavaScript
1
https://gitee.com/snail/anytunnel.git
git@gitee.com:snail/anytunnel.git
snail
anytunnel
anytunnel
8296c84158a6

搜索帮助