diff --git a/internal/app/system/logic/sysRole/sys_role.go b/internal/app/system/logic/sysRole/sys_role.go index 7a51b13..3c07a59 100644 --- a/internal/app/system/logic/sysRole/sys_role.go +++ b/internal/app/system/logic/sysRole/sys_role.go @@ -237,6 +237,8 @@ func (s *sSysRole) RoleDataScope(ctx context.Context, req *system.DataScopeReq) _, err = tx.Model(dao.SysRoleDept.Table()).Data(data).Insert() liberr.ErrIsNil(ctx, err, "设置失败") } + //清除缓存 + commonService.Cache().Remove(ctx, consts.CacheSysRole) }) return err }) diff --git a/internal/app/system/logic/sysUser/sys_user.go b/internal/app/system/logic/sysUser/sys_user.go index 2a9cfd1..f671c09 100644 --- a/internal/app/system/logic/sysUser/sys_user.go +++ b/internal/app/system/logic/sysUser/sys_user.go @@ -678,7 +678,7 @@ func (s *sSysUser) GetDataWhere(ctx context.Context, userInfo *model.ContextUser } dList = append(dList, m) } - l := libUtils.FindSonByParentId(dList, gconv.Int(userInfo.DeptId), "pid", "id") + l := libUtils.FindSonByParentId(dList, userInfo.DeptId, "pid", "id") for _, li := range l { deptIdArr.Add(gconv.Int64(li["id"])) } @@ -695,3 +695,17 @@ func (s *sSysUser) GetDataWhere(ctx context.Context, userInfo *model.ContextUser } return } + +// HasAccessByDataWhere 判断用户是否有数据权限 +func (s *sSysUser) HasAccessByDataWhere(ctx context.Context, where g.Map, uid interface{}) bool { + err := g.Try(ctx, func(ctx context.Context) { + rec, err := dao.SysUser.Ctx(ctx).As("user"). + Fields("user.id"). + Where("user.id",uid).Where(where).One() + liberr.ErrIsNil(ctx, err) + if rec.IsEmpty() { + liberr.ErrIsNil(ctx, gerror.New("没有数据")) + } + }) + return err == nil +} diff --git a/internal/app/system/service/sys_user.go b/internal/app/system/service/sys_user.go index 4d3ca3c..81e70ef 100644 --- a/internal/app/system/service/sys_user.go +++ b/internal/app/system/service/sys_user.go @@ -46,6 +46,7 @@ type ( Delete(ctx context.Context, ids []int) (err error) GetUsers(ctx context.Context, ids []int) (users []*model.SysUserSimpleRes, err error) GetDataWhere(ctx context.Context, userInfo *model.ContextUser, entityData interface{}) (where g.Map, err error) + HasAccessByDataWhere(ctx context.Context, where g.Map,uid interface{}) bool } )