|
|
@@ -2,13 +2,11 @@ package service
|
|
|
|
|
|
import (
|
|
|
"context"
|
|
|
- "dashoo.cn/micro/app/common/service"
|
|
|
"dashoo.cn/micro/app/dao"
|
|
|
"dashoo.cn/micro/app/model"
|
|
|
"dashoo.cn/opms_libary/request"
|
|
|
"dashoo.cn/opms_libary/utils"
|
|
|
"errors"
|
|
|
- "fmt"
|
|
|
"github.com/gogf/gf/container/gset"
|
|
|
"github.com/gogf/gf/database/gdb"
|
|
|
"github.com/gogf/gf/errors/gerror"
|
|
|
@@ -19,7 +17,10 @@ import (
|
|
|
|
|
|
type userService struct {
|
|
|
*contextService
|
|
|
- Dao *dao.SysUserDao
|
|
|
+ Dao *dao.SysUserDao
|
|
|
+ userRoleDao *dao.SysUserRoleDao
|
|
|
+ userPostDao *dao.SysUserPostDao
|
|
|
+ userGroupDao *dao.SysUserGroupDao
|
|
|
}
|
|
|
|
|
|
func NewUserService(ctx context.Context) (svc *userService, err error) {
|
|
|
@@ -28,6 +29,10 @@ func NewUserService(ctx context.Context) (svc *userService, err error) {
|
|
|
return nil, err
|
|
|
}
|
|
|
svc.Dao = dao.NewSysUserDao(svc.Tenant)
|
|
|
+ svc.Table = svc.Dao.Table
|
|
|
+ //svc.userRoleDao = dao.NewSysUserRoleDao(svc.Tenant)
|
|
|
+ //svc.userPostDao = dao.NewSysUserPostDao(svc.Tenant)
|
|
|
+ //svc.userGroupDao = dao.NewSysUserGroupDao(svc.Tenant)
|
|
|
return svc, nil
|
|
|
}
|
|
|
|
|
|
@@ -66,40 +71,40 @@ func (s *userService) Login(username, password string) (*request.UserInfo, error
|
|
|
}
|
|
|
|
|
|
func (s *userService) GetUserList(req *model.SysUserSearchReq) (total int, userList []*model.SysUser, err error) {
|
|
|
- userModel := dao.SysUser.M
|
|
|
+ userModel := s.Dao.M
|
|
|
if req.KeyWords != "" {
|
|
|
keyWords := "%" + req.KeyWords + "%"
|
|
|
- userModel = userModel.Where("user_name like ? or nick_name like ?", keyWords, keyWords)
|
|
|
+ userModel = userModel.Where("sys_user.user_name like ? or sys_user.nick_name like ?", keyWords, keyWords)
|
|
|
}
|
|
|
if req.DeptId != 0 {
|
|
|
- userModel = userModel.Where("dept_id", req.DeptId)
|
|
|
+ userModel = userModel.Where("sys_user.dept_id", req.DeptId)
|
|
|
}
|
|
|
if len(req.DeptIds) != 0 {
|
|
|
- userModel = userModel.Where("dept_id in (?)", req.DeptIds)
|
|
|
+ userModel = userModel.WhereIn("sys_user.dept_id", req.DeptIds)
|
|
|
}
|
|
|
if req.Status != "" {
|
|
|
- userModel = userModel.Where("status", gconv.Int(req.Status))
|
|
|
+ userModel = userModel.Where("sys_user.status", gconv.Int(req.Status))
|
|
|
}
|
|
|
if req.Phone != "" {
|
|
|
- userModel = userModel.Where("phone like ?", "%"+req.Phone+"%")
|
|
|
+ userModel = userModel.WhereLike("sys_user.phone", "%"+req.Phone+"%")
|
|
|
}
|
|
|
if req.BeginTime != "" {
|
|
|
- userModel = userModel.Where("created_at >=?", req.BeginTime)
|
|
|
+ userModel = userModel.WhereGTE("sys_user.created_time", req.BeginTime)
|
|
|
}
|
|
|
if req.EndTime != "" {
|
|
|
- userModel = userModel.Where("created_at <=?", req.EndTime)
|
|
|
+ userModel = userModel.WhereLTE("sys_user.created_time", req.EndTime)
|
|
|
}
|
|
|
+ if userModel, err = s.SetDataScopeWhere(userModel); err != nil {
|
|
|
+ return 0, nil, err
|
|
|
+ }
|
|
|
+
|
|
|
total, err = userModel.Count()
|
|
|
if err != nil {
|
|
|
g.Log().Error(err)
|
|
|
err = gerror.New("获取总行数失败")
|
|
|
return
|
|
|
}
|
|
|
- if req.PageNum == 0 {
|
|
|
- req.PageNum = 1
|
|
|
- }
|
|
|
- err = userModel.FieldsEx(dao.SysUser.Columns.Password, dao.SysUser.Columns.UserSalt).
|
|
|
- Page(req.PageNum, req.PageSize).Order("id asc").Scan(&userList)
|
|
|
+ err = userModel.Fields("sys_user.*").Page(req.PageNum, req.PageSize).Order("id asc").Scan(&userList)
|
|
|
return
|
|
|
}
|
|
|
|
|
|
@@ -183,73 +188,6 @@ func (s *userService) LoginLog(params *model.LoginLogParams) {
|
|
|
// dao.SysUserOnline.SaveOnline(params)
|
|
|
//}
|
|
|
|
|
|
-// GetAdminRole 获取用户角色
|
|
|
-func (s *userService) GetAdminRole(userId int, allRoleList []*model.SysRole) (roles []*model.SysRole, err error) {
|
|
|
- var roleIds []uint
|
|
|
- roleIds, err = s.GetAdminRoleIds(userId)
|
|
|
- if err != nil {
|
|
|
- return
|
|
|
- }
|
|
|
- roles = make([]*model.SysRole, 0, len(allRoleList))
|
|
|
- for _, v := range allRoleList {
|
|
|
- for _, id := range roleIds {
|
|
|
- if int(id) == v.Id {
|
|
|
- roles = append(roles, v)
|
|
|
- }
|
|
|
- }
|
|
|
- if len(roles) == len(roleIds) {
|
|
|
- break
|
|
|
- }
|
|
|
- }
|
|
|
- return
|
|
|
-}
|
|
|
-
|
|
|
-// GetAdminRoleIds 获取用户角色ids
|
|
|
-func (s *userService) GetAdminRoleIds(userId int) (roleIds []uint, err error) {
|
|
|
- enforcer, e := service.Casbin.GetEnforcer()
|
|
|
- if e != nil {
|
|
|
- err = e
|
|
|
- return
|
|
|
- }
|
|
|
- //查询关联角色规则
|
|
|
- groupPolicy := enforcer.GetFilteredGroupingPolicy(0, gconv.String(userId))
|
|
|
- if len(groupPolicy) > 0 {
|
|
|
- roleIds = make([]uint, len(groupPolicy))
|
|
|
- //得到角色id的切片
|
|
|
- for k, v := range groupPolicy {
|
|
|
- roleIds[k] = gconv.Uint(v[1])
|
|
|
- }
|
|
|
- }
|
|
|
- return
|
|
|
-}
|
|
|
-
|
|
|
-// AddUserPost 添加用户岗位信息
|
|
|
-func (s *userService) AddUserPost(postIds []int, userId int64, tx *gdb.TX) (err error) {
|
|
|
- //删除旧岗位信息
|
|
|
- _, err = dao.SysUserPost.TX(tx).Where(dao.SysUserPost.Columns.UserId, userId).Delete()
|
|
|
- if err != nil {
|
|
|
- g.Log().Error(err)
|
|
|
- return
|
|
|
- }
|
|
|
- if len(postIds) == 0 {
|
|
|
- return
|
|
|
- }
|
|
|
- //添加用户岗位信息
|
|
|
- data := g.List{}
|
|
|
- for _, v := range postIds {
|
|
|
- data = append(data, g.Map{
|
|
|
- dao.SysUserPost.Columns.UserId: userId,
|
|
|
- dao.SysUserPost.Columns.PostId: v,
|
|
|
- })
|
|
|
- }
|
|
|
- _, err = dao.SysUserPost.TX(tx).Data(data).Insert()
|
|
|
- if err != nil {
|
|
|
- g.Log().Error(err)
|
|
|
- return
|
|
|
- }
|
|
|
- return
|
|
|
-}
|
|
|
-
|
|
|
// GetUserInfoById 通过Id获取用户信息
|
|
|
func (s *userService) GetUserInfoById(id int, withPwd ...bool) (user *model.SysUser, err error) {
|
|
|
if len(withPwd) > 0 && withPwd[0] {
|
|
|
@@ -267,89 +205,72 @@ func (s *userService) GetUserInfoById(id int, withPwd ...bool) (user *model.SysU
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-// GetEditUser 获取要修改的用户信息
|
|
|
-func (s *userService) GetEditUser(id int) (g.Map, error) {
|
|
|
- userData, err := s.GetUserInfoById(id)
|
|
|
- //获取角色信息
|
|
|
- //roleList, err := SysRole.GetRoleList()
|
|
|
- if err != nil {
|
|
|
- g.Log().Error(err)
|
|
|
- return nil, errors.New("获取角色数据失败")
|
|
|
- }
|
|
|
- //获取已选择的角色信息
|
|
|
- checkedRoleIds, err := s.GetAdminRoleIds(id)
|
|
|
+// GetUserRoleIds 获取用户角色
|
|
|
+func (s *userService) GetUserRoleIds(userId int) (roleIds []int, err error) {
|
|
|
+ s.userRoleDao = dao.NewSysUserRoleDao(s.Tenant)
|
|
|
+ list, err := s.userRoleDao.Where(dao.SysUserRole.Columns.UserId, userId).All()
|
|
|
if err != nil {
|
|
|
g.Log().Error(err)
|
|
|
- return nil, errors.New("获取用户角色数据失败")
|
|
|
- }
|
|
|
- if checkedRoleIds == nil {
|
|
|
- checkedRoleIds = []uint{}
|
|
|
- }
|
|
|
- //获取岗位信息
|
|
|
- posts, err := s.GetUsedPost()
|
|
|
- if err != nil {
|
|
|
- return nil, err
|
|
|
- }
|
|
|
- checkedPosts, err := s.GetUserPostIds(id)
|
|
|
- if err != nil {
|
|
|
- return nil, err
|
|
|
- }
|
|
|
-
|
|
|
- if checkedPosts == nil {
|
|
|
- checkedPosts = []int{}
|
|
|
+ return nil, gerror.New("获取用户岗位信息失败")
|
|
|
}
|
|
|
-
|
|
|
- res := g.Map{
|
|
|
- //"roleList": roleList,
|
|
|
- "userInfo": userData,
|
|
|
- "checkedRoleIds": checkedRoleIds,
|
|
|
- "posts": posts,
|
|
|
- "checkedPosts": checkedPosts,
|
|
|
+ roleIds = make([]int, 0)
|
|
|
+ for _, entity := range list {
|
|
|
+ roleIds = append(roleIds, entity.RoleId)
|
|
|
}
|
|
|
-
|
|
|
- return res, nil
|
|
|
+ return
|
|
|
}
|
|
|
|
|
|
-// GetUsedPost 获取正常状态的岗位
|
|
|
-func (s *userService) GetUsedPost() (list []*model.SysPost, err error) {
|
|
|
- err = dao.SysPost.Where(dao.SysPost.Columns.Status, 1).
|
|
|
- Order(dao.SysPost.Columns.Sort + " ASC, " + dao.SysPost.Columns.Id + " ASC ").Scan(&list)
|
|
|
+// GetUserPostIds 获取用户岗位
|
|
|
+func (s *userService) GetUserPostIds(userId int) (postIds []int, err error) {
|
|
|
+ s.userPostDao = dao.NewSysUserPostDao(s.Tenant)
|
|
|
+ list, err := s.userPostDao.Where(dao.SysUserPost.Columns.UserId, userId).All()
|
|
|
if err != nil {
|
|
|
g.Log().Error(err)
|
|
|
- err = gerror.New("获取岗位数据失败")
|
|
|
+ return nil, gerror.New("获取用户岗位信息失败")
|
|
|
+ }
|
|
|
+ postIds = make([]int, 0)
|
|
|
+ for _, entity := range list {
|
|
|
+ postIds = append(postIds, entity.PostId)
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
|
|
|
-// GetUserPostIds 获取用户岗位
|
|
|
-func (s *userService) GetUserPostIds(userId int) (postIds []int, err error) {
|
|
|
- var list []*model.SysUserPost
|
|
|
- err = dao.SysUserPost.Where(dao.SysUserPost.Columns.UserId, userId).Scan(&list)
|
|
|
+// GetUserGroupIds 获取用户的用户组
|
|
|
+func (s *userService) GetUserGroupIds(userId int) (postIds []int, err error) {
|
|
|
+ s.userGroupDao = dao.NewSysUserGroupDao(s.Tenant)
|
|
|
+ list, err := s.userGroupDao.Where(dao.SysUserGroup.Columns.UserId, userId).All()
|
|
|
if err != nil {
|
|
|
g.Log().Error(err)
|
|
|
return nil, gerror.New("获取用户岗位信息失败")
|
|
|
}
|
|
|
postIds = make([]int, 0)
|
|
|
for _, entity := range list {
|
|
|
- postIds = append(postIds, int(entity.PostId))
|
|
|
+ postIds = append(postIds, entity.GroupId)
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+// GetRolesByUserId 根据用户id获取岗位信息详情
|
|
|
+func (s *userService) GetRolesByUserId(userId int) ([]*model.SysRole, error) {
|
|
|
+ roleIds, err := s.GetUserRoleIds(userId)
|
|
|
+ if err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+ roles, err := dao.NewSysRoleDao(s.Tenant).Where(dao.SysRole.Columns.Id+" in (?)", roleIds).All()
|
|
|
+ return roles, err
|
|
|
+}
|
|
|
+
|
|
|
// GetPostsByUserId 根据用户id获取岗位信息详情
|
|
|
func (s *userService) GetPostsByUserId(userId int) ([]*model.SysPost, error) {
|
|
|
postIds, err := s.GetUserPostIds(userId)
|
|
|
if err != nil {
|
|
|
return nil, err
|
|
|
}
|
|
|
- var posts []*model.SysPost
|
|
|
- err = dao.SysPost.Where(dao.SysPost.Columns.Id+" in (?)", postIds).Scan(&posts)
|
|
|
+ posts, err := dao.NewSysPostDao(s.Tenant).Where(dao.SysPost.Columns.Id+" in (?)", postIds).All()
|
|
|
return posts, err
|
|
|
}
|
|
|
|
|
|
func (s *userService) CreateUser(req *model.AddUserReq) (err error) {
|
|
|
- req.UserSalt = grand.S(10)
|
|
|
- req.Password = utils.EncryptPassword(req.Password, req.UserSalt)
|
|
|
var tx *gdb.TX
|
|
|
tx, err = g.DB().Begin()
|
|
|
if err != nil {
|
|
|
@@ -368,60 +289,134 @@ func (s *userService) CreateUser(req *model.AddUserReq) (err error) {
|
|
|
return
|
|
|
}
|
|
|
userData := new(model.SysUser)
|
|
|
- //userData.UserName = req.UserName
|
|
|
- //userData.DeptId = req.DeptId
|
|
|
- //userData.Status = req.Status
|
|
|
- //userData.Phone = req.Phone
|
|
|
- //userData.Sex = req.Sex
|
|
|
- //userData.Email = req.Email
|
|
|
- //userData.NickName = req.NickName
|
|
|
- //userData.UserSalt = req.UserSalt
|
|
|
- //userData.Password = req.Password
|
|
|
- //userData.Remark = req.Remark
|
|
|
-
|
|
|
if err = gconv.Struct(req, userData); err != nil {
|
|
|
tx.Rollback()
|
|
|
return
|
|
|
}
|
|
|
+ userData.UserSalt = grand.S(10)
|
|
|
+ userData.Password = utils.EncryptPassword(userData.Password, userData.UserSalt)
|
|
|
SetCreatedInfo(userData, s.GetCxtUserId(), s.GetCxtUserName())
|
|
|
res, err := Model.Insert(userData)
|
|
|
if err != nil {
|
|
|
tx.Rollback()
|
|
|
return
|
|
|
}
|
|
|
- InsertId, _ := res.LastInsertId()
|
|
|
- fmt.Println(InsertId)
|
|
|
- //err = s.AddUserRole(req.RoleIds, InsertId)
|
|
|
- //if err != nil {
|
|
|
- // g.Log().Error(err)
|
|
|
- // err = gerror.New("设置用户权限失败")
|
|
|
- // tx.Rollback()
|
|
|
- // return
|
|
|
- //}
|
|
|
- //err = s.AddUserPost(req.PostIds, InsertId, tx)
|
|
|
+ insertId, _ := res.LastInsertId()
|
|
|
+ if err := s.AddUserOtherInfo(req.SetUserReq, insertId, tx); err != nil {
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ tx.Commit()
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// AddUserOtherInfo 重新设置用户相关其他表信息
|
|
|
+func (s *userService) AddUserOtherInfo(req model.SetUserReq, insertId int64, tx *gdb.TX) (err error) {
|
|
|
+ // 设置用户角色信息
|
|
|
+ err = s.AddUserRole(req.RoleIds, insertId, tx)
|
|
|
+ if err != nil {
|
|
|
+ g.Log().Error(err)
|
|
|
+ err = gerror.New("设置用户权限失败")
|
|
|
+ tx.Rollback()
|
|
|
+ return
|
|
|
+ }
|
|
|
+ // 设置用户岗位信息
|
|
|
+ err = s.AddUserPost(req.PostIds, insertId, tx)
|
|
|
if err != nil {
|
|
|
g.Log().Error(err)
|
|
|
err = gerror.New("设置用户岗位信息失败")
|
|
|
tx.Rollback()
|
|
|
return
|
|
|
}
|
|
|
- tx.Commit()
|
|
|
+ // 设置用户的用户组信息
|
|
|
+ err = s.AddUserGroup(req.GroupIds, insertId, tx)
|
|
|
+ if err != nil {
|
|
|
+ g.Log().Error(err)
|
|
|
+ err = gerror.New("设置用户组信息失败")
|
|
|
+ tx.Rollback()
|
|
|
+ return
|
|
|
+ }
|
|
|
return
|
|
|
}
|
|
|
|
|
|
// AddUserRole 添加用户角色信息
|
|
|
-func (s *userService) AddUserRole(roleIds interface{}, userId int64) (err error) {
|
|
|
- enforcer, e := service.Casbin.GetEnforcer()
|
|
|
- if e != nil {
|
|
|
- err = e
|
|
|
+func (s *userService) AddUserRole(roleIds []int, userId int64, tx *gdb.TX) (err error) {
|
|
|
+ //删除旧用户角色信息
|
|
|
+ _, err = dao.SysUserRole.TX(tx).Where(dao.SysUserPost.Columns.UserId, userId).Delete()
|
|
|
+ if err != nil {
|
|
|
+ g.Log().Error(err)
|
|
|
return
|
|
|
}
|
|
|
- rule := gconv.Ints(roleIds)
|
|
|
- for _, v := range rule {
|
|
|
- _, err = enforcer.AddGroupingPolicy(fmt.Sprintf("%d", userId), fmt.Sprintf("%d", v))
|
|
|
- if err != nil {
|
|
|
- return
|
|
|
- }
|
|
|
+ if len(roleIds) == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //添加用户岗位信息
|
|
|
+ data := g.List{}
|
|
|
+ for _, v := range roleIds {
|
|
|
+ data = append(data, g.Map{
|
|
|
+ dao.SysUserRole.Columns.UserId: userId,
|
|
|
+ dao.SysUserRole.Columns.RoleId: v,
|
|
|
+ })
|
|
|
+ }
|
|
|
+ _, err = dao.SysUserRole.TX(tx).Data(data).Insert()
|
|
|
+ if err != nil {
|
|
|
+ g.Log().Error(err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// AddUserPost 添加用户岗位信息
|
|
|
+func (s *userService) AddUserPost(postIds []int, userId int64, tx *gdb.TX) (err error) {
|
|
|
+ //删除旧岗位信息
|
|
|
+ _, err = dao.SysUserPost.TX(tx).Where(dao.SysUserPost.Columns.UserId, userId).Delete()
|
|
|
+ if err != nil {
|
|
|
+ g.Log().Error(err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if len(postIds) == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //添加用户岗位信息
|
|
|
+ data := g.List{}
|
|
|
+ for _, v := range postIds {
|
|
|
+ data = append(data, g.Map{
|
|
|
+ dao.SysUserPost.Columns.UserId: userId,
|
|
|
+ dao.SysUserPost.Columns.PostId: v,
|
|
|
+ })
|
|
|
+ }
|
|
|
+ _, err = dao.SysUserPost.TX(tx).Data(data).Insert()
|
|
|
+ if err != nil {
|
|
|
+ g.Log().Error(err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ return
|
|
|
+}
|
|
|
+
|
|
|
+// AddUserGroup 添加用户的用户组信息
|
|
|
+func (s *userService) AddUserGroup(groupIds []int, userId int64, tx *gdb.TX) (err error) {
|
|
|
+ //删除旧用户组信息
|
|
|
+ _, err = dao.SysUserGroup.TX(tx).Where(dao.SysUserGroup.Columns.UserId, userId).Delete()
|
|
|
+ if err != nil {
|
|
|
+ g.Log().Error(err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if len(groupIds) == 0 {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ //添加用户的用户组信息
|
|
|
+ data := g.List{}
|
|
|
+ for _, v := range groupIds {
|
|
|
+ data = append(data, g.Map{
|
|
|
+ dao.SysUserGroup.Columns.UserId: userId,
|
|
|
+ dao.SysUserGroup.Columns.GroupId: v,
|
|
|
+ dao.SysUserGroup.Columns.CreatedBy: userId,
|
|
|
+ dao.SysUserGroup.Columns.CreatedName: v,
|
|
|
+ })
|
|
|
+ }
|
|
|
+ _, err = dao.SysUserGroup.TX(tx).Data(data).Insert()
|
|
|
+ if err != nil {
|
|
|
+ g.Log().Error(err)
|
|
|
+ return
|
|
|
}
|
|
|
return
|
|
|
}
|
|
|
@@ -442,13 +437,6 @@ func (s *userService) UpdateUser(req *model.EditUserReq) (err error) {
|
|
|
err = gerror.New("获取用户信息失败")
|
|
|
return
|
|
|
}
|
|
|
- //userData.DeptId = req.DeptId
|
|
|
- //userData.Status = req.Status
|
|
|
- //userData.Phone = req.Phone
|
|
|
- //userData.Sex = req.Sex
|
|
|
- //userData.Email = req.Email
|
|
|
- //userData.NickName = req.NickName
|
|
|
- //userData.Remark = req.Remark
|
|
|
if err = gconv.Struct(req, userData); err != nil {
|
|
|
tx.Rollback()
|
|
|
return
|
|
|
@@ -463,42 +451,10 @@ func (s *userService) UpdateUser(req *model.EditUserReq) (err error) {
|
|
|
tx.Rollback()
|
|
|
return
|
|
|
}
|
|
|
- //设置用户所属角色信息
|
|
|
- //err = s.EditUserRole(req.RoleIds, req.Id)
|
|
|
- //if err != nil {
|
|
|
- // g.Log().Error(err)
|
|
|
- // err = gerror.New("设置用户权限失败")
|
|
|
- // tx.Rollback()
|
|
|
- // return
|
|
|
- //}
|
|
|
- //设置用户岗位数据
|
|
|
- //err = s.AddUserPost(req.PostIds, int64(req.Id), tx)
|
|
|
- //if err != nil {
|
|
|
- // g.Log().Error(err)
|
|
|
- // err = gerror.New("设置用户岗位信息失败")
|
|
|
- // tx.Rollback()
|
|
|
- // return
|
|
|
- //}
|
|
|
- tx.Commit()
|
|
|
- return
|
|
|
-}
|
|
|
-
|
|
|
-// EditUserRole 修改用户角色信息
|
|
|
-func (s *userService) EditUserRole(roleIds interface{}, userId int) (err error) {
|
|
|
- enforcer, e := service.Casbin.GetEnforcer()
|
|
|
- if e != nil {
|
|
|
- err = e
|
|
|
- return
|
|
|
- }
|
|
|
- rule := gconv.Ints(roleIds)
|
|
|
- //删除用户旧角色信息
|
|
|
- enforcer.RemoveFilteredGroupingPolicy(0, fmt.Sprintf("%d", userId))
|
|
|
- for _, v := range rule {
|
|
|
- _, err = enforcer.AddGroupingPolicy(fmt.Sprintf("%d", userId), fmt.Sprintf("%d", v))
|
|
|
- if err != nil {
|
|
|
- return
|
|
|
- }
|
|
|
+ if err := s.AddUserOtherInfo(req.SetUserReq, int64(req.Id), tx); err != nil {
|
|
|
+ return err
|
|
|
}
|
|
|
+ tx.Commit()
|
|
|
return
|
|
|
}
|
|
|
|
|
|
@@ -524,13 +480,6 @@ func (s *userService) ChangeUserStatus(req *model.SysUserStatusReq) error {
|
|
|
func (s *userService) DeleteUserByIds(ctx context.Context, ids []int64) error {
|
|
|
return g.DB().Transaction(ctx, func(ctx context.Context, tx *gdb.TX) error {
|
|
|
_, err := s.Dao.Ctx(ctx).TX(tx).Where(dao.SysUser.Columns.Id+" in(?)", ids).Delete()
|
|
|
- //删除对应权限
|
|
|
- enforcer, err := service.Casbin.GetEnforcer()
|
|
|
- if err == nil {
|
|
|
- for _, v := range ids {
|
|
|
- enforcer.RemoveFilteredGroupingPolicy(0, fmt.Sprintf("%d", v))
|
|
|
- }
|
|
|
- }
|
|
|
//删除用户对应的岗位
|
|
|
_, err = dao.SysUserPost.Ctx(ctx).TX(tx).Delete(dao.SysUserPost.Columns.UserId+" in (?)", ids)
|
|
|
return err
|
|
|
@@ -570,74 +519,6 @@ func (s *userService) ProfileUpdatePwd(req *model.ProfileUpdatePwdReq) error {
|
|
|
return err
|
|
|
}
|
|
|
|
|
|
-// GetDataWhere 获取数据权限判断条件
|
|
|
-//func (s *sysUser) GetDataWhere(userInfo *dao.CtxUser, entity interface{}) (where g.Map, err error) {
|
|
|
-// whereJustMe := g.Map{} //本人数据权限
|
|
|
-// t := reflect.TypeOf(entity)
|
|
|
-// for i := 0; i < t.Elem().NumField(); i++ {
|
|
|
-// if t.Elem().Field(i).Name == "CreatedBy" {
|
|
|
-// //若存在用户id的字段,则生成判断数据权限的条件
|
|
|
-// //1、获取当前用户所属角色
|
|
|
-// allRoles := ([]*model.SysRole)(nil)
|
|
|
-// allRoles, err = SysRole.GetRoleList()
|
|
|
-// if err != nil {
|
|
|
-// return nil, err
|
|
|
-// }
|
|
|
-// roles := ([]*model.SysRole)(nil)
|
|
|
-// roles, err = s.GetAdminRole(userInfo.Id, allRoles)
|
|
|
-// if err != nil {
|
|
|
-// return nil, err
|
|
|
-// }
|
|
|
-// //2获取角色对应数据权限
|
|
|
-// deptIdArr := gset.New()
|
|
|
-// for _, role := range roles {
|
|
|
-// switch role.DataScope {
|
|
|
-// case 1: //全部数据权限
|
|
|
-// return
|
|
|
-// case 2: //自定数据权限
|
|
|
-// var deptIds []int
|
|
|
-// deptIds, err = Dept.GetRoleDepts(gconv.int(role.Id))
|
|
|
-// if err != nil {
|
|
|
-// return
|
|
|
-// }
|
|
|
-// deptIdArr.Add(gconv.Interfaces(deptIds)...)
|
|
|
-// case 3: //本部门数据权限
|
|
|
-// deptIdArr.Add(gconv.int(userInfo.DeptId))
|
|
|
-// case 4: //本部门及以下数据权限
|
|
|
-// deptIdArr.Add(gconv.int(userInfo.DeptId))
|
|
|
-// //获取正常状态部门数据
|
|
|
-// depts := ([]*model.SysDept)(nil)
|
|
|
-// depts, err = Dept.GetList(&dao.SysDeptSearchParams{Status: "1"})
|
|
|
-// if err != nil {
|
|
|
-// return
|
|
|
-// }
|
|
|
-// var dList g.List
|
|
|
-// for _, d := range depts {
|
|
|
-// m := g.Map{
|
|
|
-// "id": d.DeptId,
|
|
|
-// "pid": d.ParentId,
|
|
|
-// "label": d.DeptName,
|
|
|
-// }
|
|
|
-// dList = append(dList, m)
|
|
|
-// }
|
|
|
-// l := library.FindSonByParentId(dList, gconv.Int(userInfo.DeptId), "pid", "id")
|
|
|
-// for _, li := range l {
|
|
|
-// deptIdArr.Add(gconv.int(li["id"]))
|
|
|
-// }
|
|
|
-// case 5: //仅本人数据权限
|
|
|
-// whereJustMe = g.Map{"user.id": userInfo.Id}
|
|
|
-// }
|
|
|
-// }
|
|
|
-// if deptIdArr.Size() > 0 {
|
|
|
-// where = g.Map{"user.dept_id": deptIdArr.Slice()}
|
|
|
-// } else if len(whereJustMe) > 0 {
|
|
|
-// where = whereJustMe
|
|
|
-// }
|
|
|
-// }
|
|
|
-// }
|
|
|
-// return
|
|
|
-//}
|
|
|
-
|
|
|
// GetUsers 通过用户ids查询多个用户信息
|
|
|
func (s *userService) GetUsers(ids []int) (users []*model.SysUserRes, err error) {
|
|
|
if len(ids) == 0 {
|