From 10ed96047556147b0357f0552dd734c83d10b861 Mon Sep 17 00:00:00 2001 From: yxh Date: Wed, 8 Feb 2023 09:12:43 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E5=AE=8C=E5=96=84=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E6=9D=83=E9=99=90=E9=AA=8C=E8=AF=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/app/system/logic/sysRole/sys_role.go | 2 ++ internal/app/system/logic/sysUser/sys_user.go | 16 +++++++++++++++- internal/app/system/service/sys_user.go | 1 + 3 files changed, 18 insertions(+), 1 deletion(-) 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 } )