| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
- 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 uint `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 uint64 `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 uint `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 uint64) (*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.Page(page, req.PageSize).Order("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
- }
|