mirror of
https://github.com/tiger1103/gfast.git
synced 2026-09-21 18:20:47 +00:00
198 lines
5.5 KiB
Go
198 lines
5.5 KiB
Go
package user
|
|
|
|
import (
|
|
"gfast/library/utils"
|
|
"github.com/gogf/gf/errors/gerror"
|
|
"github.com/gogf/gf/frame/g"
|
|
"github.com/gogf/gf/os/gtime"
|
|
"github.com/gogf/gf/util/gconv"
|
|
)
|
|
|
|
//设置用户状态参数
|
|
type StatusReq struct {
|
|
Id int `p:"userId" v:"required#用户id不能为空"`
|
|
UserStatus int `p:"status" v:"required#用户状态不能为空"`
|
|
}
|
|
|
|
//重置用户密码状态参数
|
|
type ResetPwdReq struct {
|
|
Id int `p:"userId" v:"required#用户id不能为空"`
|
|
Password string `p:"password" v:"required|password#密码不能为空|密码以字母开头,只能包含字母、数字和下划线,长度在6~18之间"`
|
|
}
|
|
|
|
//用户搜索请求参数
|
|
type SearchReq struct {
|
|
DeptId string `p:deptId` //部门id
|
|
DeptIds []int //所属部门id数据
|
|
BeginTime string `p:"beginTime`
|
|
EndTime string `p:"endTime"`
|
|
Phonenumber string `p:"phonenumber"`
|
|
Status string `p:"status"`
|
|
KeyWords string `p:"userName"`
|
|
PageNum int `p:"page"` //当前页码
|
|
PageSize int `p:"pageSize"` //每页数
|
|
}
|
|
|
|
//添加修改用户公用请求字段
|
|
type SetUserReq struct {
|
|
DeptId int64 `p:"deptId" v:"required#用户部门不能为空"` //所属部门
|
|
Email string `p:"email" v:"email#邮箱格式错误"` //邮箱
|
|
NickName string `p:"nickName" v:"required#用户昵称不能为空"`
|
|
Phonenumber string `p:"phonenumber" v:"required|phone#手机号不能为空|手机号格式错误"`
|
|
PostIds []int64 `p:"postIds"`
|
|
Remark string `p:"remark"`
|
|
RoleIds []int64 `p:"roleIds"`
|
|
Sex int `p:"sex"`
|
|
Status int `p:"status"`
|
|
IsAdmin int `p:"is_admin"` // 是否后台管理员 1 是 0 否
|
|
}
|
|
|
|
//添加用户请求
|
|
type AddUserReq struct {
|
|
SetUserReq
|
|
UserName string `p:"userName" v:"required#用户账号不能为空"`
|
|
Password string `p:"password" v:"required|password#密码不能为空|密码以字母开头,只能包含字母、数字和下划线,长度在6~18之间"`
|
|
}
|
|
|
|
//修改用户请求
|
|
type EditUserReq struct {
|
|
SetUserReq
|
|
UserId int `p:"userId" v:"required#用户id不能为空"`
|
|
}
|
|
|
|
func GetUserById(id int) (*Entity, error) {
|
|
return Model.Where("id", id).One()
|
|
}
|
|
|
|
//添加管理员操作
|
|
func Add(req *AddUserReq) (InsertId int64, err error) {
|
|
if i, _ := Model.Where("user_name=?", req.UserName).Count(); i != 0 {
|
|
err = gerror.New("用户名已经存在")
|
|
return
|
|
}
|
|
if i, _ := Model.Where("mobile=?", req.Phonenumber).Count(); i != 0 {
|
|
err = gerror.New("手机号已经存在")
|
|
return
|
|
}
|
|
//保存管理员信息
|
|
entity := new(Entity)
|
|
entity.UserName = req.UserName
|
|
entity.DeptId = req.DeptId
|
|
entity.UserStatus = req.Status
|
|
entity.CreateTime = gconv.Int(gtime.Timestamp())
|
|
entity.Mobile = req.Phonenumber
|
|
entity.Sex = req.Sex
|
|
entity.UserEmail = req.Email
|
|
entity.UserNickname = req.NickName
|
|
entity.UserPassword = req.Password
|
|
entity.Remark = req.Remark
|
|
|
|
res, err := entity.Save()
|
|
if err != nil {
|
|
return
|
|
}
|
|
InsertId, _ = res.LastInsertId()
|
|
return
|
|
}
|
|
|
|
//修改用户信息
|
|
func Edit(req *EditUserReq) (err error) {
|
|
if i, _ := Model.Where("id!=? and mobile=?", req.UserId, req.Phonenumber).Count(); i != 0 {
|
|
err = gerror.New("手机号已经存在")
|
|
return
|
|
}
|
|
//保存管理员信息
|
|
var entity *Entity
|
|
entity, err = Model.Where("id", req.UserId).One()
|
|
if err != nil || entity == nil {
|
|
g.Log().Error(err)
|
|
err = gerror.New("获取用户信息失败")
|
|
return
|
|
}
|
|
entity.DeptId = req.DeptId
|
|
entity.UserStatus = req.Status
|
|
entity.Mobile = req.Phonenumber
|
|
entity.Sex = req.Sex
|
|
entity.UserEmail = req.Email
|
|
entity.UserNickname = req.NickName
|
|
entity.Remark = req.Remark
|
|
entity.IsAdmin = req.IsAdmin
|
|
_, err = entity.Update()
|
|
if err != nil {
|
|
g.Log().Error(err)
|
|
err = gerror.New("修改用户信息失败")
|
|
}
|
|
return
|
|
}
|
|
|
|
//获取管理员列表
|
|
func GetAdminList(req *SearchReq) (total, page int, userList []*Entity, err error) {
|
|
userModel := Model
|
|
if req != nil {
|
|
if req.KeyWords != "" {
|
|
keyWords := "%" + req.KeyWords + "%"
|
|
userModel = userModel.Where("user_name like ? or user_nickname like ?",
|
|
keyWords, keyWords)
|
|
}
|
|
if len(req.DeptIds) != 0 {
|
|
userModel = userModel.Where("dept_id in (?)", req.DeptIds)
|
|
}
|
|
if req.Status != "" {
|
|
userModel = userModel.Where("user_status", gconv.Int(req.Status))
|
|
}
|
|
if req.Phonenumber != "" {
|
|
userModel = userModel.Where("mobile like ?", "%"+req.Phonenumber+"%")
|
|
}
|
|
if req.BeginTime != "" {
|
|
userModel = userModel.Where("create_time >=?", utils.StrToTimestamp(req.BeginTime))
|
|
}
|
|
if req.EndTime != "" {
|
|
userModel = userModel.Where("create_time <=?", utils.StrToTimestamp(req.EndTime))
|
|
}
|
|
}
|
|
total, err = userModel.Count()
|
|
if err != nil {
|
|
g.Log().Error(err)
|
|
err = gerror.New("获取总行数失败")
|
|
return
|
|
}
|
|
if req.PageNum == 0 {
|
|
req.PageNum = 1
|
|
}
|
|
page = req.PageNum
|
|
userList, err = userModel.ForPage(page, req.PageSize).OrderBy("id asc").All()
|
|
return
|
|
}
|
|
|
|
//修改用户状态
|
|
func ChangeUserStatus(req *StatusReq) error {
|
|
user, err := Model.Where("id", req.Id).One()
|
|
if err != nil || user == nil {
|
|
g.Log().Error(err)
|
|
return gerror.New("用户不存在")
|
|
}
|
|
user.UserStatus = req.UserStatus
|
|
_, err = user.Update()
|
|
if err != nil {
|
|
g.Log().Error(err)
|
|
return gerror.New("修改用户状态失败")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
//重置用户密码
|
|
func ResetUserPwd(req *ResetPwdReq) error {
|
|
user, err := Model.Where("id", req.Id).One()
|
|
if err != nil || user == nil {
|
|
g.Log().Error(err)
|
|
return gerror.New("用户不存在")
|
|
}
|
|
user.UserPassword = req.Password
|
|
_, err = user.Update()
|
|
if err != nil {
|
|
g.Log().Error(err)
|
|
return gerror.New("修改用户密码失败")
|
|
}
|
|
return nil
|
|
}
|