Files
gfast/app/model/admin/user/user.go
T

95 lines
2.7 KiB
Go

package user
import (
"github.com/gogf/gf/errors/gerror"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/os/gtime"
"github.com/gogf/gf/util/gconv"
"github.com/gogf/gf/util/gvalid"
)
//验证用户表单数据
func checkUserData(params map[string]interface{}, t string) error {
rules := []string{
"id@integer|min:1#管理员id必须为整数|管理员Id必须大于0",
"user_name@required|length:3,60#请填用户名|用户名应在:min到:max个字符之间",
"mobile@telephone#手机号码格式不正确",
"user_nickname@required|length:3,50#请填写姓名|姓名应在:min到:max个字符之间",
"user_email@email#邮箱格式错误",
}
if t == "add" {
rules = append(rules, "user_password@required|length:6,60#请填写密码|密码应在::min到:max个字符之间")
} else {
rules = append(rules, "user_password@length:6,60#密码应在::min到:max个字符之间")
}
e := gvalid.CheckMap(params, rules)
if e != nil {
return e
}
return nil
}
//添加管理员操作
func Add(data map[string]interface{}) (InsertId int64, err error) {
e := checkUserData(data, "add")
if e != nil {
err = gerror.New(e.(*gvalid.Error).FirstString())
return
}
if i, _ := Model.Where("user_name=?", data["user_name"]).Count(); i != 0 {
err = gerror.New("用户名已经存在")
return
}
if i, _ := Model.Where("mobile=?", data["mobile"]).Count(); i != 0 {
err = gerror.New("手机号已经存在")
return
}
//保存管理员信息
data["create_time"] = gtime.Timestamp()
res, err := Model.Filter().Data(data).Save()
if err != nil {
return
}
InsertId, _ = res.LastInsertId()
return
}
//修改用户信息
func Edit(data map[string]interface{}) (err error) {
e := checkUserData(data, "edit")
if e != nil {
err = gerror.New(e.(*gvalid.Error).FirstString())
return
}
if i, _ := Model.Where("id!=? and user_name=?", data["id"], data["user_name"]).Count(); i != 0 {
err = gerror.New("用户名已经存在")
return
}
if i, _ := Model.Where("id!=? and mobile=?", data["mobile"]).Count(); i != 0 {
err = gerror.New("手机号已经存在")
return
}
//保存管理员信息
_, err = Model.Filter().Data(data).Save()
if err != nil {
return
}
return
}
//获取管理员列表
func GetAdminList(where g.Map, page, pageNum int) (total int, userList []*Entity, err error) {
userModel := Model
if v, ok := where["keyWords"]; ok {
keyWords := gconv.String(v)
if keyWords != "" {
keyWords = "%" + keyWords + "%"
userModel = userModel.Where("user_name like ? or mobile like ? or user_nickname like ?",
keyWords, keyWords, keyWords)
}
}
total, err = userModel.Count()
userList, err = userModel.ForPage(page, pageNum).OrderBy("id asc").All()
return
}