refactor: Relevance替换key为relkey

This commit is contained in:
yubaolee 2025-04-11 11:13:56 +08:00
parent 965a8ae2e8
commit ca9835a039
9 changed files with 48 additions and 65 deletions

View File

@ -43,7 +43,7 @@ namespace OpenAuth.App
get {
var moduleIds = SugarClient.Queryable<Relevance>().Where(
u =>
u.Key == Define.ROLEMODULE && _userRoleIds.Contains(u.FirstId)).Select(u => u.SecondId).ToList();
u.RelKey == Define.ROLEMODULE && _userRoleIds.Contains(u.FirstId)).Select(u => u.SecondId).ToList();
var elementIds = GetElementIds();
return SugarClient.Queryable<ModuleView>().Where(m =>moduleIds.Contains(m.Id))
@ -70,7 +70,7 @@ namespace OpenAuth.App
{
var elementIds = SugarClient.Queryable<Relevance>().Where(
u =>
u.Key == Define.ROLEELEMENT && _userRoleIds.Contains(u.FirstId)).Select(u => u.SecondId).ToList();
u.RelKey == Define.ROLEELEMENT && _userRoleIds.Contains(u.FirstId)).Select(u => u.SecondId).ToList();
return elementIds;
}
@ -85,7 +85,7 @@ namespace OpenAuth.App
{
var resourceIds = SugarClient.Queryable<Relevance>().Where(
u =>
u.Key == Define.ROLERESOURCE && _userRoleIds.Contains(u.FirstId)).Select(u => u.SecondId).ToList();
u.RelKey == Define.ROLERESOURCE && _userRoleIds.Contains(u.FirstId)).Select(u => u.SecondId).ToList();
return SugarClient.Queryable<SysResource>().Where(u => resourceIds.Contains(u.Id)).ToList();
}
}
@ -95,7 +95,7 @@ namespace OpenAuth.App
get
{
var orgids = SugarClient.Queryable<Relevance>().Where(
u =>u.FirstId == _user.Id && u.Key == Define.USERORG).Select(u => u.SecondId).ToList();
u =>u.FirstId == _user.Id && u.RelKey == Define.USERORG).Select(u => u.SecondId).ToList();
return SugarClient.Queryable<SysOrg>().Where(org =>orgids.Contains(org.Id))
.LeftJoin<SysUser>((org, user) => org.ChairmanId ==user.Id)
.Select((org,user)=>new OrgView
@ -112,7 +112,7 @@ namespace OpenAuth.App
set
{
_user = value;
_userRoleIds = SugarClient.Queryable<Relevance>().Where(u => u.FirstId == _user.Id && u.Key == Define.USERROLE)
_userRoleIds = SugarClient.Queryable<Relevance>().Where(u => u.FirstId == _user.Id && u.RelKey == Define.USERROLE)
.Select(u => u.SecondId).ToList();
}
}
@ -142,7 +142,7 @@ namespace OpenAuth.App
}
var props =SugarClient.Queryable<Relevance>().Where(u =>
u.Key == Define.ROLEDATAPROPERTY && _userRoleIds.Contains(u.FirstId) && u.SecondId == moduleCode)
u.RelKey == Define.ROLEDATAPROPERTY && _userRoleIds.Contains(u.FirstId) && u.SecondId == moduleCode)
.Select(u => u.ThirdId).ToList();
return allprops.Where(u => props.Contains(u.ColumnName)).ToList();
@ -160,7 +160,7 @@ namespace OpenAuth.App
}
var props =SugarClient.Queryable<Relevance>().Where(u =>
u.Key == Define.ROLEDATAPROPERTY && _userRoleIds.Contains(u.FirstId) && u.SecondId == moduleCode)
u.RelKey == Define.ROLEDATAPROPERTY && _userRoleIds.Contains(u.FirstId) && u.SecondId == moduleCode)
.Select(u => u.ThirdId).ToList();
return allprops.Where(u => props.Contains(u.ColumnName)).ToList();

View File

@ -761,14 +761,18 @@ namespace OpenAuth.App.Flow
/// <summary>
/// 替换SQL中的权限占位符
/// <para>如select id from sysuser where parentId = {loginUser}</para>
/// <para>替换后select id from sysuser where parentId = '123'</para>
/// <para>如select id from sysuser where parentId = {loginUser}</para>
/// <para>替换后select id from sysuser where parentId = '123'</para>
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
private string ReplaceSql(string sql){
var loginUser = AutofacContainerModule.GetService<IAuth>().GetCurrentUser();
var res = sql.Replace(Define.DATAPRIVILEGE_LOGINUSER, loginUser.User.Id);
res = res.Replace(Define.DATAPRIVILEGE_LOGINROLE, string.Join(',', loginUser.Roles.Select(u => u.Id)));
res = res.Replace(Define.DATAPRIVILEGE_LOGINORG, string.Join(',', loginUser.Orgs.Select(u => u.Id)));
var res = sql.Replace(Define.DATAPRIVILEGE_LOGINUSER, $"'{loginUser.User.Id}'");
res = res.Replace(Define.DATAPRIVILEGE_LOGINROLE, string.Join(',', loginUser.Roles.Select(u => $"'{u.Id}'")));
res = res.Replace(Define.DATAPRIVILEGE_LOGINORG, string.Join(',', loginUser.Orgs.Select(u => $"'{u.Id}'")));
return res;
}

View File

@ -792,17 +792,17 @@ namespace OpenAuth.App
select distinct FirstId as InstanceId
from Relevance rel
inner join FlowInstance flow on rel.FirstId = flow.Id and flow.IsFinish = 1
where `key` = '{Define.INSTANCE_NOTICE_USER}'
where RelKey = '{Define.INSTANCE_NOTICE_USER}'
and SecondId = '{user.User.Id}'
union
select distinct a.FirstId as InstanceId
from Relevance a
inner join (select SecondId as RoleId
from Relevance
where `key` = 'UserRole'
where RelKey = 'UserRole'
and FirstId = '{user.User.Id}') b on a.SecondId = b.RoleId
inner join FlowInstance flow on a.FirstId = flow.Id and flow.IsFinish = 1
where a.`key` = '{Define.INSTANCE_NOTICE_ROLE}') UniqueInstanceIds
where a.RelKey = '{Define.INSTANCE_NOTICE_ROLE}') UniqueInstanceIds
ON fi.Id = UniqueInstanceIds.InstanceId
";
}
@ -810,15 +810,8 @@ namespace OpenAuth.App
switch (SugarClient.CurrentConnectionConfig.DbType)
{
case DbType.SqlServer:
sql = sql.Replace("`key`", "[Key]");
sql = sql.Replace("from dual", "");
break;
case DbType.Oracle:
sql = sql.Replace("`key`", "\"KEY\"");
break;
case DbType.PostgreSQL:
sql = sql.Replace("`key`", "key");
break;
}
var finalQuery = SugarClient.SqlQueryable<FlowInstance>(sql)

View File

@ -52,7 +52,7 @@ namespace OpenAuth.App
/// <param name="roleId">The role unique identifier.</param>
public IEnumerable<Module> LoadForRole(string roleId)
{
var moduleIds = UnitWork.Find<Relevance>(u => u.FirstId == roleId && u.Key == Define.ROLEMODULE)
var moduleIds = UnitWork.Find<Relevance>(u => u.FirstId == roleId && u.RelKey == Define.ROLEMODULE)
.Select(u => u.SecondId);
return UnitWork.Find<Module>(u => moduleIds.Contains(u.Id)).OrderBy(u => u.SortNo);
}

View File

@ -71,7 +71,7 @@ namespace OpenAuth.App
delOrgIds.AddRange(UnitWork.Find<SysOrg>(u=>u.CascadeId.Contains(cascadeId)).Select(u =>u.Id).ToArray());
}
UnitWork.Delete<Relevance>(u =>u.Key == Define.USERORG && delOrgIds.Contains(u.SecondId));
UnitWork.Delete<Relevance>(u =>u.RelKey == Define.USERORG && delOrgIds.Contains(u.SecondId));
UnitWork.Delete<SysOrg>(u => delOrgIds.Contains(u.Id));
UnitWork.Save();
@ -85,7 +85,7 @@ namespace OpenAuth.App
{
var result = from userorg in UnitWork.Find<Relevance>(null)
join org in UnitWork.Find<SysOrg>(null) on userorg.SecondId equals org.Id
where userorg.FirstId == userId && userorg.Key == Define.USERORG
where userorg.FirstId == userId && userorg.RelKey == Define.USERORG
select org;
return result.ToList();
}

View File

@ -41,7 +41,7 @@ namespace OpenAuth.App
from value in sameVals
select new Relevance
{
Key = key,
RelKey = key,
FirstId = sameVals.Key,
SecondId = value,
OperateTime = DateTime.Now
@ -81,7 +81,7 @@ namespace OpenAuth.App
_logger.LogInformation($"start=> delete {key} {sameVals.Key} {value}");
try
{
UnitWork.Delete<Relevance>(u => u.Key == key && u.FirstId == sameVals.Key && u.SecondId == value);
UnitWork.Delete<Relevance>(u => u.RelKey == key && u.FirstId == sameVals.Key && u.SecondId == value);
}
catch (Exception e)
{
@ -94,7 +94,7 @@ namespace OpenAuth.App
public void DeleteBy(string key, params string[] firstIds)
{
UnitWork.Delete<Relevance>(u => firstIds.Contains(u.FirstId) && u.Key == key);
UnitWork.Delete<Relevance>(u => firstIds.Contains(u.FirstId) && u.RelKey == key);
}
@ -109,12 +109,12 @@ namespace OpenAuth.App
{
if (returnSecondIds)
{
return Repository.Find(u => u.Key == key
return Repository.Find(u => u.RelKey == key
&& ids.Contains(u.FirstId)).Select(u => u.SecondId).ToList();
}
else
{
return Repository.Find(u => u.Key == key
return Repository.Find(u => u.RelKey == key
&& ids.Contains(u.SecondId)).Select(u => u.FirstId).ToList();
}
}
@ -128,7 +128,7 @@ namespace OpenAuth.App
/// <returns></returns>
public List<string> Get(string key, string firstId, string secondId)
{
return Repository.Find(u => u.Key == key && u.FirstId == firstId && u.SecondId == secondId)
return Repository.Find(u => u.RelKey == key && u.FirstId == firstId && u.SecondId == secondId)
.Select(u => u.ThirdId).ToList();
}
@ -148,7 +148,7 @@ namespace OpenAuth.App
{
relevances.Add(new Relevance
{
Key = Define.ROLEDATAPROPERTY,
RelKey = Define.ROLEDATAPROPERTY,
FirstId = request.RoleId,
SecondId = request.ModuleCode,
ThirdId = requestProperty,
@ -181,7 +181,7 @@ namespace OpenAuth.App
{
foreach (var property in request.Properties)
{
UnitWork.Delete<Relevance>(u => u.Key == Define.ROLEDATAPROPERTY
UnitWork.Delete<Relevance>(u => u.RelKey == Define.ROLEDATAPROPERTY
&& u.FirstId == request.RoleId
&& u.SecondId == request.ModuleCode
&& u.ThirdId == property);
@ -198,12 +198,12 @@ namespace OpenAuth.App
UnitWork.ExecuteWithTransaction(() =>
{
//删除以前的所有用户
UnitWork.Delete<Relevance>(u => u.SecondId == request.RoleId && u.Key == Define.USERROLE);
UnitWork.Delete<Relevance>(u => u.SecondId == request.RoleId && u.RelKey == Define.USERROLE);
//批量分配用户角色
UnitWork.BatchAdd((from firstId in request.UserIds
select new Relevance
{
Key = Define.USERROLE,
RelKey = Define.USERROLE,
FirstId = firstId,
SecondId = request.RoleId,
OperateTime = DateTime.Now
@ -221,12 +221,12 @@ namespace OpenAuth.App
UnitWork.ExecuteWithTransaction(() =>
{
//删除以前的所有用户
UnitWork.Delete<Relevance>(u => u.SecondId == request.OrgId && u.Key == Define.USERORG);
UnitWork.Delete<Relevance>(u => u.SecondId == request.OrgId && u.RelKey == Define.USERORG);
//批量分配用户角色
UnitWork.BatchAdd((from firstId in request.UserIds
select new Relevance
{
Key = Define.USERORG,
RelKey = Define.USERORG,
FirstId = firstId,
SecondId = request.OrgId,
OperateTime = DateTime.Now
@ -244,12 +244,12 @@ namespace OpenAuth.App
UnitWork.ExecuteWithTransaction(() =>
{
//删除以前的所有资源
UnitWork.Delete<Relevance>(u => u.FirstId == request.RoleId && u.Key == Define.ROLERESOURCE);
UnitWork.Delete<Relevance>(u => u.FirstId == request.RoleId && u.RelKey == Define.ROLERESOURCE);
//批量分配角色资源
UnitWork.BatchAdd((from firstId in request.ResourceIds
select new Relevance
{
Key = Define.ROLERESOURCE,
RelKey = Define.ROLERESOURCE,
FirstId = request.RoleId,
SecondId = firstId,
OperateTime = DateTime.Now

View File

@ -88,8 +88,8 @@ namespace OpenAuth.App
{
UnitWork.ExecuteWithTransaction(() =>
{
UnitWork.Delete<Relevance>(u=>(u.Key == Define.ROLEMODULE || u.Key == Define.ROLEELEMENT) && ids.Contains(u.FirstId));
UnitWork.Delete<Relevance>(u=>u.Key == Define.USERROLE && ids.Contains(u.SecondId));
UnitWork.Delete<Relevance>(u=>(u.RelKey == Define.ROLEMODULE || u.RelKey == Define.ROLEELEMENT) && ids.Contains(u.FirstId));
UnitWork.Delete<Relevance>(u=>u.RelKey == Define.USERROLE && ids.Contains(u.SecondId));
UnitWork.Delete<Role>(u =>ids.Contains(u.Id));
UnitWork.Save();
});

View File

@ -44,7 +44,7 @@ namespace OpenAuth.App
join user2 in UnitWork.Find<SysUser>(null)
on user.ParentId equals user2.Id into tempuser
from u in tempuser.DefaultIfEmpty()
join relevance in UnitWork.Find<Relevance>(u => u.Key == "UserOrg")
join relevance in UnitWork.Find<Relevance>(u => u.RelKey == "UserOrg")
on user.Id equals relevance.FirstId into temp
from r in temp.DefaultIfEmpty()
join org in UnitWork.Find<SysOrg>(null)
@ -64,7 +64,7 @@ namespace OpenAuth.App
user.TypeName,
user.ParentId,
ParentName = u.Name, //直属上级
r.Key,
Key = r.RelKey,
r.SecondId,
OrgId = o.Id,
OrgName = o.Name
@ -122,7 +122,7 @@ namespace OpenAuth.App
join user2 in UnitWork.Find<SysUser>(null)
on user.ParentId equals user2.Id into tempuser
from u in tempuser.DefaultIfEmpty()
join relevance in UnitWork.Find<Relevance>(u => u.Key == "UserOrg")
join relevance in UnitWork.Find<Relevance>(u => u.RelKey == "UserOrg")
on user.Id equals relevance.FirstId into temp
from r in temp.DefaultIfEmpty()
join org in UnitWork.Find<SysOrg>(null)
@ -142,7 +142,7 @@ namespace OpenAuth.App
user.TypeName,
user.ParentId,
ParentName = u.Name, //直属上级
r.Key,
Key = r.RelKey,
r.SecondId,
OrgId = o.Id,
OrgName = o.Name
@ -230,7 +230,7 @@ namespace OpenAuth.App
{
UnitWork.ExecuteWithTransaction(() =>
{
UnitWork.Delete<Relevance>(u =>(u.Key == Define.USERROLE || u.Key == Define.USERORG)
UnitWork.Delete<Relevance>(u =>(u.RelKey == Define.USERROLE || u.RelKey == Define.USERORG)
&& ids.Contains(u.FirstId));
UnitWork.Delete<SysUser>(u => ids.Contains(u.Id));
UnitWork.Save();
@ -255,7 +255,7 @@ namespace OpenAuth.App
public async Task<TableData> LoadByRole(QueryUserListByRoleReq request)
{
var users = from userRole in UnitWork.Find<Relevance>(u =>
u.SecondId == request.roleId && u.Key == Define.USERROLE)
u.SecondId == request.roleId && u.RelKey == Define.USERROLE)
join user in UnitWork.Find<SysUser>(null) on userRole.FirstId equals user.Id into temp
from c in temp.Where(u =>u.Id != null)
select c;
@ -273,7 +273,7 @@ namespace OpenAuth.App
public async Task<TableData> LoadByOrg(QueryUserListByOrgReq request)
{
var users = from userOrg in UnitWork.Find<Relevance>(u =>
u.SecondId == request.orgId && u.Key == Define.USERORG)
u.SecondId == request.orgId && u.RelKey == Define.USERORG)
join user in UnitWork.Find<SysUser>(null) on userOrg.FirstId equals user.Id into temp
from c in temp.Where(u =>u.Id != null)
select c;
@ -327,30 +327,16 @@ namespace OpenAuth.App
from sysuser u
join (select distinct SecondId as UserId
from Relevance
where `key` = '{Define.INSTANCE_NOTICE_USER}'
where RelKey = '{Define.INSTANCE_NOTICE_USER}'
and FirstId = '{instanceId}'
union
select distinct FirstId as UserId
from Relevance a
inner join (select SecondId as RoleId
from Relevance
where `key` = '{Define.INSTANCE_NOTICE_ROLE}'
where RelKey = '{Define.INSTANCE_NOTICE_ROLE}'
and FirstId = '{instanceId}') b on a.SecondId = b.RoleId
where `key` = 'UserRole') userids on u.Id = userids.UserId";
if (UnitWork.GetDbContext().Database.GetDbConnection().GetType().Name == "SqlConnection")
{
sql = sql.Replace("`key`", "[Key]");
}
else if (UnitWork.GetDbContext().Database.GetDbConnection().GetType().Name == "OracleConnection")
{
sql = sql.Replace("`key`", "\"KEY\"");
}
else if (UnitWork.GetDbContext().Database.GetDbConnection().GetType().Name == "NpgsqlConnection")
{
sql = sql.Replace("`key`", "\"key\"");
}
where RelKey = 'UserRole') userids on u.Id = userids.UserId";
var users = UnitWork.FromSql<SysUser>(sql);
return users.Select(u=>u.Id).ToList();
}

View File

@ -23,7 +23,7 @@ namespace OpenAuth.Repository.Domain
public Relevance()
{
this.Description= string.Empty;
this.Key= string.Empty;
this.RelKey= string.Empty;
this.Status= 0;
this.OperateTime= DateTime.Now;
this.OperatorId= string.Empty;
@ -42,7 +42,7 @@ namespace OpenAuth.Repository.Domain
/// 映射标识
/// </summary>
[Description("映射标识")]
public string Key { get; set; }
public string RelKey { get; set; }
/// <summary>
/// 状态
/// </summary>