调整User为SysUser、Resource为SysResource

This commit is contained in:
yubaolee 2025-02-19 12:44:42 +08:00
parent 839256e8bb
commit 2a2d83d026
27 changed files with 417 additions and 426 deletions

View File

@ -52,7 +52,7 @@ namespace OpenAuth.App
else else
{ {
service = _normalAuthStrategy; service = _normalAuthStrategy;
service.User = _unitWork.FirstOrDefault<User>(u => u.Account == username); service.User = _unitWork.FirstOrDefault<SysUser>(u => u.Account == username);
} }
return new AuthStrategyContext(service); return new AuthStrategyContext(service);

View File

@ -34,7 +34,7 @@ namespace OpenAuth.App
this._strategy = strategy; this._strategy = strategy;
} }
public User User public SysUser User
{ {
get { return _strategy.User; } get { return _strategy.User; }
} }
@ -54,7 +54,7 @@ namespace OpenAuth.App
get { return _strategy.Roles; } get { return _strategy.Roles; }
} }
public List<Resource> Resources public List<SysResource> Resources
{ {
get { return _strategy.Resources; } get { return _strategy.Resources; }
} }

View File

@ -30,10 +30,10 @@ namespace OpenAuth.App
/// <summary> /// <summary>
/// 普通用户授权策略 /// 普通用户授权策略
/// </summary> /// </summary>
public class NormalAuthStrategy : SqlSugarBaseApp<User>, IAuthStrategy public class NormalAuthStrategy : SqlSugarBaseApp<SysUser>, IAuthStrategy
{ {
protected User _user; protected SysUser _user;
private List<string> _userRoleIds; //用户角色GUID private List<string> _userRoleIds; //用户角色GUID
private DbExtension _dbExtension; private DbExtension _dbExtension;
@ -79,14 +79,14 @@ namespace OpenAuth.App
get { return SugarClient.Queryable<Role>().Where(u => _userRoleIds.Contains(u.Id)).ToList(); } get { return SugarClient.Queryable<Role>().Where(u => _userRoleIds.Contains(u.Id)).ToList(); }
} }
public List<Resource> Resources public List<SysResource> Resources
{ {
get get
{ {
var resourceIds = SugarClient.Queryable<Relevance>().Where( var resourceIds = SugarClient.Queryable<Relevance>().Where(
u => u =>
u.Key == Define.ROLERESOURCE && _userRoleIds.Contains(u.FirstId)).Select(u => u.SecondId).ToList(); u.Key == Define.ROLERESOURCE && _userRoleIds.Contains(u.FirstId)).Select(u => u.SecondId).ToList();
return SugarClient.Queryable<Resource>().Where(u => resourceIds.Contains(u.Id)).ToList(); return SugarClient.Queryable<SysResource>().Where(u => resourceIds.Contains(u.Id)).ToList();
} }
} }
@ -97,7 +97,7 @@ namespace OpenAuth.App
var orgids = SugarClient.Queryable<Relevance>().Where( 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.Key == Define.USERORG).Select(u => u.SecondId).ToList();
return SugarClient.Queryable<SysOrg>().Where(org =>orgids.Contains(org.Id)) return SugarClient.Queryable<SysOrg>().Where(org =>orgids.Contains(org.Id))
.LeftJoin<User>((org, user) => org.ChairmanId ==user.Id) .LeftJoin<SysUser>((org, user) => org.ChairmanId ==user.Id)
.Select((org,user)=>new OrgView .Select((org,user)=>new OrgView
{ {
Id = org.Id.SelectAll(), Id = org.Id.SelectAll(),
@ -106,7 +106,7 @@ namespace OpenAuth.App
} }
} }
public User User public SysUser User
{ {
get { return _user; } get { return _user; }
set set

View File

@ -31,9 +31,9 @@ namespace OpenAuth.App
/// <para>超级管理员权限</para> /// <para>超级管理员权限</para>
/// <para>超级管理员使用guid.empty为ID可以根据需要修改</para> /// <para>超级管理员使用guid.empty为ID可以根据需要修改</para>
/// </summary> /// </summary>
public class SystemAuthStrategy : SqlSugarBaseApp<User>, IAuthStrategy public class SystemAuthStrategy : SqlSugarBaseApp<SysUser>, IAuthStrategy
{ {
protected User _user; protected SysUser _user;
private DbExtension _dbExtension; private DbExtension _dbExtension;
public List<ModuleView> Modules public List<ModuleView> Modules
@ -54,15 +54,15 @@ namespace OpenAuth.App
get { return SugarClient.Queryable<ModuleElement>().ToList(); } get { return SugarClient.Queryable<ModuleElement>().ToList(); }
} }
public List<Resource> Resources public List<SysResource> Resources
{ {
get { return SugarClient.Queryable<Resource>().ToList(); } get { return SugarClient.Queryable<SysResource>().ToList(); }
} }
public List<OrgView> Orgs public List<OrgView> Orgs
{ {
get { return SugarClient.Queryable<SysOrg>() get { return SugarClient.Queryable<SysOrg>()
.LeftJoin<User>((org, user) => org.ChairmanId ==user.Id) .LeftJoin<SysUser>((org, user) => org.ChairmanId ==user.Id)
.Select((org,user)=>new OrgView .Select((org,user)=>new OrgView
{ {
Id = org.Id.SelectAll(), Id = org.Id.SelectAll(),
@ -70,7 +70,7 @@ namespace OpenAuth.App
}).ToList(); } }).ToList(); }
} }
public User User public SysUser User
{ {
get { return _user; } get { return _user; }
set //禁止外部设置 set //禁止外部设置
@ -94,7 +94,7 @@ namespace OpenAuth.App
public SystemAuthStrategy(ISqlSugarClient client,DbExtension dbExtension) : base(client, null) public SystemAuthStrategy(ISqlSugarClient client,DbExtension dbExtension) : base(client, null)
{ {
_dbExtension = dbExtension; _dbExtension = dbExtension;
_user = new User _user = new SysUser
{ {
Account = Define.SYSTEM_USERNAME, Account = Define.SYSTEM_USERNAME,
Name = "超级管理员", Name = "超级管理员",

View File

@ -2,7 +2,7 @@
* @Author: yubaolee <yubaolee@163.com> | ahfu~ <954478625@qq.com> * @Author: yubaolee <yubaolee@163.com> | ahfu~ <954478625@qq.com>
* @Date: 2024-12-13 16:55:17 * @Date: 2024-12-13 16:55:17
* @Description: * @Description:
* @LastEditTime: 2025-02-13 17:26:19 * @LastEditTime: 2025-02-19 11:43:24
* Copyright (c) 2024 by yubaolee | ahfu~ , All Rights Reserved. * Copyright (c) 2024 by yubaolee | ahfu~ , All Rights Reserved.
*/ */
@ -592,141 +592,135 @@ namespace OpenAuth.App
var user = _auth.GetCurrentUser(); var user = _auth.GetCurrentUser();
//行转列专用SQL //行转列专用SQL
string groupConcatSql = $@" ( SELECT GROUP_CONCAT(Account SEPARATOR ',') string groupConcatSql = $@" ( SELECT GROUP_CONCAT(Account SEPARATOR ',')
FROM `User` FROM `SysUser`
WHERE fi.MakerList like concat('%', Id, '%') ) "; WHERE fi.MakerList like concat('%', Id, '%') ) ";
//sqlserver的行转列需要特殊处理 //sqlserver的行转列需要特殊处理
if (SugarClient.CurrentConnectionConfig.DbType == DbType.SqlServer) if(SugarClient.CurrentConnectionConfig.DbType == DbType.SqlServer)
{ {
groupConcatSql = $@" STUFF(( groupConcatSql = $@" STUFF((
SELECT ',' + Account SELECT ',' + Account
FROM [User] FROM [SysUser]
WHERE fi.MakerList LIKE '%' + Id + '%' WHERE fi.MakerList LIKE '%' + Id + '%'
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') "; FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') ";
} }
else if (SugarClient.CurrentConnectionConfig.DbType == DbType.Oracle) else if (SugarClient.CurrentConnectionConfig.DbType == DbType.Oracle)
{ {
groupConcatSql = $@" (select listagg(""Account"", ',') within group (order by ""Account"") groupConcatSql = $@" (select listagg(Account, ',') within group (order by Account)
from ""User"" from SysUser
where fi.""MakerList"" like '%' || ""Id"" || '%') "; where fi.MakerList like '%' || Id || '%') ";
} }
string sql = String.Empty; string sql = String.Empty;
if (request.type == "wait") //待办事项(即需要我处理的流程) if (request.type == "wait") //待办事项(即需要我处理的流程)
{ {
sql = $@" sql = $@"
SELECT {"fi." + Quote("Id")}, SELECT fi.Id,
{"fi." + Quote("CreateUserName")}, fi.CreateUserName,
{"fi." + Quote("ActivityName")}, fi.ActivityName,
{"fi." + Quote("CreateDate")}, fi.CreateDate,
{"fi." + Quote("CustomName")}, fi.CustomName,
{"fi." + Quote("Code")}, fi.Code,
{"fi." + Quote("Description")}, fi.Description,
{"fi." + Quote("IsFinish")}, fi.IsFinish,
CASE CASE
WHEN {"fi." + Quote("MakerList")} = '1' THEN '' WHEN fi.MakerList = '1' THEN ''
WHEN {"fi." + Quote("MakerList")} = '00000000-0000-0000-0000-000000000000' THEN 'System' WHEN fi.MakerList = '00000000-0000-0000-0000-000000000000' THEN 'System'
ELSE {groupConcatSql} ELSE {groupConcatSql}
END AS {Quote("MakerList")} END AS MakerList
FROM {Quote("FlowInstance")} fi FROM FlowInstance fi
JOIN ( JOIN (SELECT fith.Id
SELECT {"fith." + Quote("Id")} FROM FlowInstance fith
FROM {Quote("FlowInstance")} fith WHERE (MakerList = '1' or MakerList LIKE '%{user.User.Id}%')
WHERE ({"fith." + Quote("MakerList")} = '1' or {"fith." + Quote("MakerList")} LIKE '%{user.User.Id}%') and (fith.IsFinish = {FlowInstanceStatus.Running} or fith.IsFinish = {FlowInstanceStatus.Rejected})
and ({"fith." + Quote("IsFinish")} = {FlowInstanceStatus.Running} or {"fith." + Quote("IsFinish")} = {FlowInstanceStatus.Rejected}) and not exists (select 1
and not exists ( from flowapprover
SELECT 1 where fith.Id = InstanceId
FROM {Quote("FlowApprover")} and fith.ActivityId = ActivityId
WHERE {"fith." + Quote("Id")} = {Quote("InstanceId")} and Status = 0)
and {"fith." + Quote("ActivityId")} = {Quote("ActivityId")} UNION
and {Quote("Status")} = 0 SELECT fa.InstanceId
) FROM FlowApprover fa
UNION WHERE fa.Status = 0
SELECT {"fa." + Quote("InstanceId")} AND fa.ApproverId = '{user.User.Id}') UniqueInstanceIds
FROM {Quote("FlowApprover")} fa ON fi.Id = UniqueInstanceIds.Id";
WHERE {"fa." + Quote("Status")} = 0
AND {"fa." + Quote("ApproverId")} = '{user.User.Id}'
) UniqueInstanceIds
ON {"fi." + Quote("Id")} = {"UniqueInstanceIds." + Quote("Id")}
";
} }
else if (request.type == "disposed") //已办事项(即我参与过的流程) else if (request.type == "disposed") //已办事项(即我参与过的流程)
{ {
sql = $@" sql = $@"
SELECT {"fi." + Quote("Id")}, SELECT fi.Id,
{"fi." + Quote("CreateUserName")}, fi.CreateUserName,
{"fi." + Quote("ActivityName")}, fi.ActivityName,
{"fi." + Quote("CreateDate")}, fi.CreateDate,
{"fi." + Quote("CustomName")}, fi.CustomName,
{"fi." + Quote("Code")}, fi.Code,
{"fi." + Quote("Description")}, fi.Description,
{"fi." + Quote("IsFinish")}, fi.IsFinish,
CASE CASE
WHEN {"fi." + Quote("MakerList")} = '1' THEN '' WHEN fi.MakerList = '1' THEN ''
WHEN {"fi." + Quote("MakerList")} = '00000000-0000-0000-0000-000000000000' THEN 'System' WHEN fi.MakerList = '00000000-0000-0000-0000-000000000000' THEN 'System'
ELSE {groupConcatSql} ELSE {groupConcatSql}
END AS {Quote("MakerList")} END AS MakerList
FROM {Quote("FlowInstance")} fi FROM FlowInstance fi
JOIN ( JOIN (SELECT fith.InstanceId
SELECT {"fith." + Quote("InstanceId")} FROM FlowInstanceOperationHistory fith
FROM {Quote("FlowInstanceOperationHistory")} fith WHERE fith.CreateUserId = '{user.User.Id}'
WHERE {"fith." + Quote("CreateUserId")} = '{user.User.Id}' UNION
UNION SELECT fa.InstanceId
SELECT {"fa." + Quote("InstanceId")} FROM FlowApprover fa
FROM {Quote("FlowApprover")} fa WHERE fa.Status <> 0
WHERE {"fa." + Quote("Status")} <> 0 AND fa.ApproverId = '{user.User.Id}') UniqueInstanceIds
AND {"fa." + Quote("ApproverId")} = '{user.User.Id}' ON fi.Id = UniqueInstanceIds.InstanceId
) UniqueInstanceIds ";
ON {"fi." + Quote("Id")} = {"UniqueInstanceIds." + Quote("InstanceId")}
";
} }
else //我的流程(我创建的及知会我的) else //我的流程(我创建的及知会我的)
{ {
sql = $@" sql = $@"
SELECT {"fi." + Quote("Id")}, SELECT fi.Id,
{"fi." + Quote("CreateUserName")}, fi.CreateUserName,
{"fi." + Quote("ActivityName")}, fi.ActivityName,
{"fi." + Quote("CreateDate")}, fi.CreateDate,
{"fi." + Quote("CustomName")}, fi.CustomName,
{"fi." + Quote("Code")}, fi.Code,
{"fi." + Quote("Description")}, fi.Description,
{"fi." + Quote("IsFinish")}, fi.IsFinish,
CASE CASE
WHEN {"fi." + Quote("MakerList")} = '1' THEN '' WHEN fi.MakerList = '1' THEN ''
WHEN {"fi." + Quote("MakerList")} = '00000000-0000-0000-0000-000000000000' THEN 'System' WHEN fi.MakerList = '00000000-0000-0000-0000-000000000000' THEN 'System'
ELSE {groupConcatSql} ELSE {groupConcatSql}
END AS {Quote("MakerList")} END AS MakerList
FROM {Quote("FlowInstance")} fi FROM FlowInstance fi
JOIN ( JOIN (select Id as InstanceId
SELECT {Quote("Id")} as {Quote("InstanceId")} from FlowInstance
FROM {Quote("FlowInstance")} where CreateUserId = '{user.User.Id}'
WHERE {Quote("CreateUserId")} = '{user.User.Id}' union
UNION select distinct FirstId as InstanceId
SELECT DISTINCT {Quote("FirstId")} as {Quote("InstanceId")} from Relevance rel
FROM {Quote("Relevance")} rel inner join FlowInstance flow on rel.FirstId = flow.Id and flow.IsFinish = 1
INNER JOIN {Quote("FlowInstance")} flow ON {"rel." + Quote("FirstId")} = {"flow." + Quote("Id")} and {"flow." + Quote("IsFinish")} = 1 where `Key` = '{Define.INSTANCE_NOTICE_USER}'
WHERE {Quote("Key")} = '{Define.INSTANCE_NOTICE_USER}' and SecondId = '{user.User.Id}'
AND {Quote("SecondId")} = '{user.User.Id}' union
UNION select distinct a.FirstId as InstanceId
SELECT DISTINCT {"a." + Quote("FirstId")} as {Quote("InstanceId")} from Relevance a
FROM {Quote("Relevance")} a inner join (select SecondId as RoleId
INNER JOIN ( from Relevance
SELECT {Quote("SecondId")} as {Quote("RoleId")} where `Key` = 'UserRole'
FROM {Quote("Relevance")} and FirstId = '{user.User.Id}') b on a.SecondId = b.RoleId
WHERE {Quote("Key")} = 'UserRole' inner join FlowInstance flow on a.FirstId = flow.Id and flow.IsFinish = 1
AND {Quote("FirstId")} = '{user.User.Id}' where a.`Key` = '{Define.INSTANCE_NOTICE_ROLE}') UniqueInstanceIds
) b ON {"a." + Quote("SecondId")} = {"b." + Quote("RoleId")} ON fi.Id = UniqueInstanceIds.InstanceId
INNER JOIN {Quote("FlowInstance")} flow ON {"a." + Quote("FirstId")} = {"flow." + Quote("Id")} and {"flow." + Quote("IsFinish")} = 1 ";
WHERE {"a." + Quote("Key")} = '{Define.INSTANCE_NOTICE_ROLE}'
) UniqueInstanceIds
ON {"fi." + Quote("Id")} = {"UniqueInstanceIds." + Quote("InstanceId")}
";
} }
switch (SugarClient.CurrentConnectionConfig.DbType) switch (SugarClient.CurrentConnectionConfig.DbType)
{ {
case DbType.SqlServer: case DbType.SqlServer:
sql = sql.Replace("`Key`", "[Key]");
sql = sql.Replace("from dual", ""); sql = sql.Replace("from dual", "");
break; break;
case DbType.Oracle:
sql = sql.Replace("`Key`", "\"KEY\"");
break;
} }
var finalQuery = SugarClient.SqlQueryable<FlowInstance>(sql) var finalQuery = SugarClient.SqlQueryable<FlowInstance>(sql)
@ -738,18 +732,6 @@ namespace OpenAuth.App
return result; return result;
} }
string Quote(string name)
{
switch (SugarClient.CurrentConnectionConfig.DbType)
{
case DbType.SqlServer:
return $"[{name}]";
case DbType.Oracle:
return $"\"{name}\"";
default:
return $"`{name}`";
}
}
public List<FlowInstanceOperationHistory> QueryHistories(QueryFlowInstanceHistoryReq request) public List<FlowInstanceOperationHistory> QueryHistories(QueryFlowInstanceHistoryReq request)
{ {

View File

@ -31,11 +31,11 @@ namespace OpenAuth.App
List<Role> Roles { get; } List<Role> Roles { get; }
List<Resource> Resources { get; } List<SysResource> Resources { get; }
List<OrgView> Orgs { get; } List<OrgView> Orgs { get; }
User User SysUser User
{ {
get;set; get;set;
} }

View File

@ -14,13 +14,13 @@ namespace OpenAuth.App
/// <summary> /// <summary>
/// 分类管理 /// 分类管理
/// </summary> /// </summary>
public class ResourceApp:SqlSugarBaseApp<Resource> public class ResourceApp:SqlSugarBaseApp<SysResource>
{ {
private RevelanceManagerApp _revelanceApp; private RevelanceManagerApp _revelanceApp;
public void Add(AddOrUpdateResReq resource) public void Add(AddOrUpdateResReq resource)
{ {
var obj = resource.MapTo<Resource>(); var obj = resource.MapTo<SysResource>();
CaculateCascade(obj); CaculateCascade(obj);
obj.CreateTime = DateTime.Now; obj.CreateTime = DateTime.Now;
var user = _auth.GetCurrentUser().User; var user = _auth.GetCurrentUser().User;
@ -32,7 +32,7 @@ namespace OpenAuth.App
public void Update(AddOrUpdateResReq obj) public void Update(AddOrUpdateResReq obj)
{ {
var user = _auth.GetCurrentUser().User; var user = _auth.GetCurrentUser().User;
Repository.Update(u => new Resource Repository.Update(u => new SysResource
{ {
Name = obj.Name, Name = obj.Name,
Disable = obj.Disable, Disable = obj.Disable,
@ -51,10 +51,10 @@ namespace OpenAuth.App
},u => u.Id == obj.Id); },u => u.Id == obj.Id);
} }
public IEnumerable<Resource> LoadForRole(string appId, string roleId) public IEnumerable<SysResource> LoadForRole(string appId, string roleId)
{ {
var elementIds = _revelanceApp.Get(Define.ROLERESOURCE, true, roleId); var elementIds = _revelanceApp.Get(Define.ROLERESOURCE, true, roleId);
return SugarClient.Queryable<Resource>().Where(u => elementIds.Contains(u.Id) && (appId == null || appId =="" || u.AppId == appId)).ToArray(); return SugarClient.Queryable<SysResource>().Where(u => elementIds.Contains(u.Id) && (appId == null || appId =="" || u.AppId == appId)).ToArray();
} }
public async Task<TableData> Load(QueryResourcesReq request) public async Task<TableData> Load(QueryResourcesReq request)

View File

@ -16,11 +16,11 @@ namespace OpenAuth.App.SSO
{ {
//这个地方使用IRepository<User> 而不使用UserManagerApp是防止循环依赖 //这个地方使用IRepository<User> 而不使用UserManagerApp是防止循环依赖
public IRepository<User,OpenAuthDBContext> _app; public IRepository<SysUser,OpenAuthDBContext> _app;
private ICacheContext _cacheContext; private ICacheContext _cacheContext;
private AppManager _appInfoService; private AppManager _appInfoService;
public LoginParse( AppManager infoService, ICacheContext cacheContext, IRepository<User,OpenAuthDBContext> userApp) public LoginParse( AppManager infoService, ICacheContext cacheContext, IRepository<SysUser,OpenAuthDBContext> userApp)
{ {
_appInfoService = infoService; _appInfoService = infoService;
_cacheContext = cacheContext; _cacheContext = cacheContext;
@ -40,10 +40,10 @@ namespace OpenAuth.App.SSO
// throw new Exception("应用不存在"); // throw new Exception("应用不存在");
// } // }
//获取用户信息 //获取用户信息
User userInfo = null; SysUser sysUserInfo = null;
if (model.Account == Define.SYSTEM_USERNAME) if (model.Account == Define.SYSTEM_USERNAME)
{ {
userInfo = new User sysUserInfo = new SysUser
{ {
Id = Guid.Empty.ToString(), Id = Guid.Empty.ToString(),
Account = Define.SYSTEM_USERNAME, Account = Define.SYSTEM_USERNAME,
@ -53,19 +53,19 @@ namespace OpenAuth.App.SSO
} }
else else
{ {
userInfo = _app.FirstOrDefault(u =>u.Account == model.Account); sysUserInfo = _app.FirstOrDefault(u =>u.Account == model.Account);
} }
if (userInfo == null) if (sysUserInfo == null)
{ {
throw new Exception("用户不存在"); throw new Exception("用户不存在");
} }
if (userInfo.Password != model.Password) if (sysUserInfo.Password != model.Password)
{ {
throw new Exception("密码错误"); throw new Exception("密码错误");
} }
if (userInfo.Status != 0) if (sysUserInfo.Status != 0)
{ {
throw new Exception("账号状态异常,可能已停用"); throw new Exception("账号状态异常,可能已停用");
} }
@ -73,7 +73,7 @@ namespace OpenAuth.App.SSO
var currentSession = new UserAuthSession var currentSession = new UserAuthSession
{ {
Account = model.Account, Account = model.Account,
Name = userInfo.Name, Name = sysUserInfo.Name,
Token = Guid.NewGuid().ToString().GetHashCode().ToString("x"), Token = Guid.NewGuid().ToString().GetHashCode().ToString("x"),
AppKey = model.AppKey, AppKey = model.AppKey,
CreateTime = DateTime.Now CreateTime = DateTime.Now

View File

@ -63,10 +63,10 @@ namespace OpenAuth.App
/// <param name="message"></param> /// <param name="message"></param>
public void SendMsgTo(string userId, string message) public void SendMsgTo(string userId, string message)
{ {
User user = null; SysUser sysUser = null;
if (userId == Guid.Empty.ToString()) if (userId == Guid.Empty.ToString())
{ {
user = new User sysUser = new SysUser
{ {
Name = Define.SYSTEM_USERNAME, Name = Define.SYSTEM_USERNAME,
Id = userId Id = userId
@ -74,17 +74,17 @@ namespace OpenAuth.App
} }
else else
{ {
user = UnitWork.FirstOrDefault<User>(u => u.Id == userId); sysUser = UnitWork.FirstOrDefault<SysUser>(u => u.Id == userId);
} }
if (user == null) if (sysUser == null)
{ {
_logger.LogError($"未能找到用户{userId},不能给该用户发送消息"); _logger.LogError($"未能找到用户{userId},不能给该用户发送消息");
return; return;
} }
Repository.Add(new SysMessage Repository.Add(new SysMessage
{ {
ToId = user.Id, ToId = sysUser.Id,
ToName = user.Name, ToName = sysUser.Name,
TypeName = "系统消息", TypeName = "系统消息",
TypeId ="SYS_MSG", TypeId ="SYS_MSG",
FromId = Guid.Empty.ToString(), FromId = Guid.Empty.ToString(),

View File

@ -50,11 +50,11 @@ namespace OpenAuth.App.Test
private async Task AddOrUpdate() private async Task AddOrUpdate()
{ {
var repository = _autofacServiceProvider.GetService<IRepository<User,OpenAuthDBContext>>(); var repository = _autofacServiceProvider.GetService<IRepository<SysUser,OpenAuthDBContext>>();
var account = "user_" + DateTime.Now.ToString("yyyy_MM_dd HH:mm:ss"); var account = "user_" + DateTime.Now.ToString("yyyy_MM_dd HH:mm:ss");
var user = new User var user = new SysUser
{ {
Account = account, Account = account,
Name = account Name = account

View File

@ -49,14 +49,14 @@ namespace OpenAuth.App.Test
public void SetObj() public void SetObj()
{ {
var app = _autofacServiceProvider.GetService<ICacheContext>(); var app = _autofacServiceProvider.GetService<ICacheContext>();
app.Set("user:info", new User app.Set("user:info", new SysUser
{ {
Name = "测试", Name = "测试",
Account ="Test", Account ="Test",
BizCode = "0.1.1" BizCode = "0.1.1"
}, DateTime.Now.AddDays(1)); }, DateTime.Now.AddDays(1));
var result = app.Get<User>("user:info"); var result = app.Get<SysUser>("user:info");
Console.WriteLine($"redis结果:{JsonHelper.Instance.Serialize(result)}"); Console.WriteLine($"redis结果:{JsonHelper.Instance.Serialize(result)}");
} }
@ -68,7 +68,7 @@ namespace OpenAuth.App.Test
{ {
var app = _autofacServiceProvider.GetService<ICacheContext>(); var app = _autofacServiceProvider.GetService<ICacheContext>();
var result = app.Get<User>("noexistkey"); var result = app.Get<SysUser>("noexistkey");
Console.WriteLine($"redis结果:{JsonHelper.Instance.Serialize(result)}"); Console.WriteLine($"redis结果:{JsonHelper.Instance.Serialize(result)}");
} }

View File

@ -61,14 +61,14 @@ namespace OpenAuth.App.Request
[Required(ErrorMessage = "请为用户分配机构")] [Required(ErrorMessage = "请为用户分配机构")]
public string OrganizationIds { get; set; } public string OrganizationIds { get; set; }
public static implicit operator UpdateUserReq(User user) public static implicit operator UpdateUserReq(SysUser sysUser)
{ {
return user.MapTo<UpdateUserReq>(); return sysUser.MapTo<UpdateUserReq>();
} }
public static implicit operator User(UpdateUserReq view) public static implicit operator SysUser(UpdateUserReq view)
{ {
return view.MapTo<User>(); return view.MapTo<SysUser>();
} }
public UpdateUserReq() public UpdateUserReq()

View File

@ -76,14 +76,14 @@ namespace OpenAuth.App.Response
public string OrganizationIds { get; set; } public string OrganizationIds { get; set; }
public static implicit operator UserView(User user) public static implicit operator UserView(SysUser sysUser)
{ {
return user.MapTo<UserView>(); return sysUser.MapTo<UserView>();
} }
public static implicit operator User(UserView view) public static implicit operator SysUser(UserView view)
{ {
return view.MapTo<User>(); return view.MapTo<SysUser>();
} }
public UserView() public UserView()

View File

@ -14,17 +14,17 @@ using OpenAuth.Repository.Domain;
using OpenAuth.Repository.Interface; using OpenAuth.Repository.Interface;
namespace OpenAuth.App namespace OpenAuth.App
{ {
public class UserManagerApp : BaseStringApp<User,OpenAuthDBContext> public class UserManagerApp : BaseStringApp<SysUser,OpenAuthDBContext>
{ {
private RevelanceManagerApp _revelanceApp; private RevelanceManagerApp _revelanceApp;
private OrgManagerApp _orgManagerApp; private OrgManagerApp _orgManagerApp;
public UserManagerApp(IUnitWork<OpenAuthDBContext> unitWork, IRepository<User,OpenAuthDBContext> repository, public UserManagerApp(IUnitWork<OpenAuthDBContext> unitWork, IRepository<SysUser,OpenAuthDBContext> repository,
RevelanceManagerApp app,IAuth auth, OrgManagerApp orgManagerApp) : base(unitWork, repository, auth) RevelanceManagerApp app,IAuth auth, OrgManagerApp orgManagerApp) : base(unitWork, repository, auth)
{ {
_revelanceApp = app; _revelanceApp = app;
_orgManagerApp = orgManagerApp; _orgManagerApp = orgManagerApp;
} }
public User GetByAccount(string account) public SysUser GetByAccount(string account)
{ {
return Repository.FirstOrDefault(u => u.Account == account); return Repository.FirstOrDefault(u => u.Account == account);
} }
@ -35,13 +35,13 @@ namespace OpenAuth.App
public async Task<TableData> Load(QueryUserListReq request) public async Task<TableData> Load(QueryUserListReq request)
{ {
var loginUser = _auth.GetCurrentUser(); var loginUser = _auth.GetCurrentUser();
IQueryable<User> query = UnitWork.Find<User>(null); IQueryable<SysUser> query = UnitWork.Find<SysUser>(null);
if (!string.IsNullOrEmpty(request.key)) if (!string.IsNullOrEmpty(request.key))
{ {
query = UnitWork.Find<User>(u => u.Name.Contains(request.key) || u.Account.Contains(request.key)); query = UnitWork.Find<SysUser>(u => u.Name.Contains(request.key) || u.Account.Contains(request.key));
} }
var userOrgs = from user in query var userOrgs = from user in query
join user2 in UnitWork.Find<User>(null) join user2 in UnitWork.Find<SysUser>(null)
on user.ParentId equals user2.Id into tempuser on user.ParentId equals user2.Id into tempuser
from u in tempuser.DefaultIfEmpty() from u in tempuser.DefaultIfEmpty()
join relevance in UnitWork.Find<Relevance>(u => u.Key == "UserOrg") join relevance in UnitWork.Find<Relevance>(u => u.Key == "UserOrg")
@ -113,13 +113,13 @@ namespace OpenAuth.App
/// </summary> /// </summary>
public async Task<TableResp<UserView>> LoadAll(QueryUserListReq request) public async Task<TableResp<UserView>> LoadAll(QueryUserListReq request)
{ {
IQueryable<User> query = UnitWork.Find<User>(null); IQueryable<SysUser> query = UnitWork.Find<SysUser>(null);
if (!string.IsNullOrEmpty(request.key)) if (!string.IsNullOrEmpty(request.key))
{ {
query = UnitWork.Find<User>(u => u.Name.Contains(request.key) || u.Account.Contains(request.key)); query = UnitWork.Find<SysUser>(u => u.Name.Contains(request.key) || u.Account.Contains(request.key));
} }
var userOrgs = from user in query var userOrgs = from user in query
join user2 in UnitWork.Find<User>(null) join user2 in UnitWork.Find<SysUser>(null)
on user.ParentId equals user2.Id into tempuser on user.ParentId equals user2.Id into tempuser
from u in tempuser.DefaultIfEmpty() from u in tempuser.DefaultIfEmpty()
join relevance in UnitWork.Find<Relevance>(u => u.Key == "UserOrg") join relevance in UnitWork.Find<Relevance>(u => u.Key == "UserOrg")
@ -179,13 +179,13 @@ namespace OpenAuth.App
request.ValidationEntity(u => new {u.Account,u.Name, u.OrganizationIds}); request.ValidationEntity(u => new {u.Account,u.Name, u.OrganizationIds});
if (string.IsNullOrEmpty(request.OrganizationIds)) if (string.IsNullOrEmpty(request.OrganizationIds))
throw new Exception("请为用户分配机构"); throw new Exception("请为用户分配机构");
User requser = request; SysUser requser = request;
requser.CreateId = _auth.GetCurrentUser().User.Id; requser.CreateId = _auth.GetCurrentUser().User.Id;
UnitWork.ExecuteWithTransaction(() => UnitWork.ExecuteWithTransaction(() =>
{ {
if (string.IsNullOrEmpty(request.Id)) if (string.IsNullOrEmpty(request.Id))
{ {
if (UnitWork.Any<User>(u => u.Account == request.Account)) if (UnitWork.Any<SysUser>(u => u.Account == request.Account))
{ {
throw new Exception("用户账号已存在"); throw new Exception("用户账号已存在");
} }
@ -199,7 +199,7 @@ namespace OpenAuth.App
} }
else else
{ {
UnitWork.Update<User>(u => u.Id == request.Id, u => new User UnitWork.Update<SysUser>(u => u.Id == request.Id, u => new SysUser
{ {
Account = requser.Account, Account = requser.Account,
BizCode = requser.BizCode, BizCode = requser.BizCode,
@ -210,7 +210,7 @@ namespace OpenAuth.App
}); });
if (!string.IsNullOrEmpty(requser.Password)) //密码为空的时候,不做修改 if (!string.IsNullOrEmpty(requser.Password)) //密码为空的时候,不做修改
{ {
UnitWork.Update<User>(u => u.Id == request.Id, u => new User UnitWork.Update<SysUser>(u => u.Id == request.Id, u => new SysUser
{ {
Password = requser.Password Password = requser.Password
}); });
@ -232,7 +232,7 @@ namespace OpenAuth.App
{ {
UnitWork.Delete<Relevance>(u =>(u.Key == Define.USERROLE || u.Key == Define.USERORG) UnitWork.Delete<Relevance>(u =>(u.Key == Define.USERROLE || u.Key == Define.USERORG)
&& ids.Contains(u.FirstId)); && ids.Contains(u.FirstId));
UnitWork.Delete<User>(u => ids.Contains(u.Id)); UnitWork.Delete<SysUser>(u => ids.Contains(u.Id));
UnitWork.Save(); UnitWork.Save();
}); });
} }
@ -242,7 +242,7 @@ namespace OpenAuth.App
/// <param name="request"></param> /// <param name="request"></param>
public void ChangePassword(ChangePasswordReq request) public void ChangePassword(ChangePasswordReq request)
{ {
Repository.Update(u => u.Account == request.Account, user => new User Repository.Update(u => u.Account == request.Account, user => new SysUser
{ {
Password = request.Password Password = request.Password
}); });
@ -256,7 +256,7 @@ namespace OpenAuth.App
{ {
var users = from userRole in UnitWork.Find<Relevance>(u => var users = from userRole in UnitWork.Find<Relevance>(u =>
u.SecondId == request.roleId && u.Key == Define.USERROLE) u.SecondId == request.roleId && u.Key == Define.USERROLE)
join user in UnitWork.Find<User>(null) on userRole.FirstId equals user.Id into temp join user in UnitWork.Find<SysUser>(null) on userRole.FirstId equals user.Id into temp
from c in temp.Where(u =>u.Id != null) from c in temp.Where(u =>u.Id != null)
select c; select c;
return new TableData return new TableData
@ -274,7 +274,7 @@ namespace OpenAuth.App
{ {
var users = from userOrg in UnitWork.Find<Relevance>(u => var users = from userOrg in UnitWork.Find<Relevance>(u =>
u.SecondId == request.orgId && u.Key == Define.USERORG) u.SecondId == request.orgId && u.Key == Define.USERORG)
join user in UnitWork.Find<User>(null) on userOrg.FirstId equals user.Id into temp join user in UnitWork.Find<SysUser>(null) on userOrg.FirstId equals user.Id into temp
from c in temp.Where(u =>u.Id != null) from c in temp.Where(u =>u.Id != null)
select c; select c;
return new TableData return new TableData
@ -293,7 +293,7 @@ namespace OpenAuth.App
{ {
throw new Exception("不能修改超级管理员信息"); throw new Exception("不能修改超级管理员信息");
} }
Repository.Update(u => u.Account == request.Account, user => new User Repository.Update(u => u.Account == request.Account, user => new SysUser
{ {
Name = request.Name, Name = request.Name,
Sex = request.Sex Sex = request.Sex
@ -349,7 +349,7 @@ namespace OpenAuth.App
sql = sql.Replace("`Key`", "\"Key\""); sql = sql.Replace("`Key`", "\"Key\"");
} }
var users = UnitWork.FromSql<User>(sql); var users = UnitWork.FromSql<SysUser>(sql);
return users.Select(u=>u.Id).ToList(); return users.Select(u=>u.Id).ToList();
} }
} }

View File

@ -78,12 +78,12 @@ namespace OpenAuth.IdentityServer
return Task.CompletedTask; return Task.CompletedTask;
} }
private User GetUserById(string id) private SysUser GetUserById(string id)
{ {
User user; SysUser sysUser;
if (id == Define.SYSTEM_USERNAME) if (id == Define.SYSTEM_USERNAME)
{ {
user = new User sysUser = new SysUser
{ {
Account = Define.SYSTEM_USERNAME, Account = Define.SYSTEM_USERNAME,
Id = Define.SYSTEM_USERNAME, Id = Define.SYSTEM_USERNAME,
@ -92,10 +92,10 @@ namespace OpenAuth.IdentityServer
} }
else else
{ {
user = UserManager.Get(id); sysUser = UserManager.Get(id);
} }
return user; return sysUser;
} }
} }
} }

View File

@ -107,10 +107,10 @@ namespace OpenAuth.IdentityServer.Quickstart.Account
if (ModelState.IsValid) if (ModelState.IsValid)
{ {
User user; SysUser sysUser;
if (model.Username == Define.SYSTEM_USERNAME && model.Password == Define.SYSTEM_USERPWD) if (model.Username == Define.SYSTEM_USERNAME && model.Password == Define.SYSTEM_USERPWD)
{ {
user = new User sysUser = new SysUser
{ {
Account = Define.SYSTEM_USERNAME, Account = Define.SYSTEM_USERNAME,
Password = Define.SYSTEM_USERPWD, Password = Define.SYSTEM_USERPWD,
@ -119,12 +119,12 @@ namespace OpenAuth.IdentityServer.Quickstart.Account
} }
else else
{ {
user = _userManager.GetByAccount(model.Username); sysUser = _userManager.GetByAccount(model.Username);
} }
if (user != null &&(user.Password ==model.Password)) if (sysUser != null &&(sysUser.Password ==model.Password))
{ {
if (user.Status != 0) //判断用户状态 if (sysUser.Status != 0) //判断用户状态
{ {
await _events.RaiseAsync(new UserLoginFailureEvent(model.Username, "invalid user status")); await _events.RaiseAsync(new UserLoginFailureEvent(model.Username, "invalid user status"));
ModelState.AddModelError(string.Empty, "user.status must be 0"); ModelState.AddModelError(string.Empty, "user.status must be 0");
@ -132,7 +132,7 @@ namespace OpenAuth.IdentityServer.Quickstart.Account
return View(err); return View(err);
} }
await _events.RaiseAsync(new UserLoginSuccessEvent(user.Account, user.Id, user.Account)); await _events.RaiseAsync(new UserLoginSuccessEvent(sysUser.Account, sysUser.Id, sysUser.Account));
// only set explicit expiration here if user chooses "remember me". // only set explicit expiration here if user chooses "remember me".
// otherwise we rely upon expiration configured in cookie middleware. // otherwise we rely upon expiration configured in cookie middleware.
@ -147,7 +147,7 @@ namespace OpenAuth.IdentityServer.Quickstart.Account
}; };
// issue authentication cookie with subject ID and username // issue authentication cookie with subject ID and username
await HttpContext.SignInAsync(user.Id, user.Account, props); await HttpContext.SignInAsync(sysUser.Id, sysUser.Account, props);
if (context != null) if (context != null)
{ {

View File

@ -112,8 +112,7 @@ namespace OpenAuth.Mvc
IsAutoCloseConnection = true, IsAutoCloseConnection = true,
MoreSettings=new ConnMoreSettings() { MoreSettings=new ConnMoreSettings() {
PgSqlIsAutoToLower = false,//增删查改支持驼峰表 PgSqlIsAutoToLower = false,//增删查改支持驼峰表
PgSqlIsAutoToLowerCodeFirst = false, // 建表建驼峰表。5.1.3.30 PgSqlIsAutoToLowerCodeFirst = false // 建表建驼峰表。5.1.3.30
IsAutoToUpper=false //禁用自动转成大写表
} }
}, db => { db.Aop.OnLogExecuting = (sql, pars) => { logger.LogInformation(sql); }; }); }, db => { db.Aop.OnLogExecuting = (sql, pars) => { logger.LogInformation(sql); }; });
return sqlSugar; return sqlSugar;

View File

@ -1,111 +1,102 @@
//------------------------------------------------------------------------------ using System;
// <autogenerated> using System.ComponentModel;
// This code was generated by a CodeSmith Template. using System.ComponentModel.DataAnnotations.Schema;
// using OpenAuth.Repository.Core;
// DO NOT MODIFY contents of this file. Changes to this
// file will be lost if the code is regenerated. namespace OpenAuth.Repository.Domain
// Author:Yubao Li {
// </autogenerated> /// <summary>
//------------------------------------------------------------------------------ /// 资源表
using System; /// </summary>
using System.ComponentModel; [Table("SysResource")]
using System.ComponentModel.DataAnnotations.Schema; public partial class SysResource : TreeEntity
using OpenAuth.Repository.Core; {
public SysResource()
namespace OpenAuth.Repository.Domain {
{ this.Name= string.Empty;
/// <summary> this.SortNo= 0;
/// 资源表 this.Description= string.Empty;
/// </summary> this.AppId= string.Empty;
[Table("Resource")] this.AppName= string.Empty;
public partial class Resource : TreeEntity this.TypeName= string.Empty;
{ this.TypeId= string.Empty;
public Resource() this.CreateTime= DateTime.Now;
{ this.CreateUserId= string.Empty;
this.Name= string.Empty; this.CreateUserName= string.Empty;
this.SortNo= 0; this.UpdateTime= DateTime.Now;
this.Description= string.Empty; this.UpdateUserId= string.Empty;
this.AppId= string.Empty; this.UpdateUserName= string.Empty;
this.AppName= string.Empty; }
this.TypeName= string.Empty;
this.TypeId= string.Empty;
this.CreateTime= DateTime.Now; /// <summary>
this.CreateUserId= string.Empty; /// 排序号
this.CreateUserName= string.Empty; /// </summary>
this.UpdateTime= DateTime.Now; [Description("排序号")]
this.UpdateUserId= string.Empty; public int SortNo { get; set; }
this.UpdateUserName= string.Empty; /// <summary>
} /// 描述
/// </summary>
[Description("描述")]
/// <summary> public string Description { get; set; }
/// 排序号 /// <summary>
/// </summary> /// 资源所属应用ID
[Description("排序号")] /// </summary>
public int SortNo { get; set; } [Description("资源所属应用ID")]
/// <summary> [Browsable(false)]
/// 描述 public string AppId { get; set; }
/// </summary> /// <summary>
[Description("描述")] /// 所属应用名称
public string Description { get; set; } /// </summary>
/// <summary> [Description("所属应用名称")]
/// 资源所属应用ID public string AppName { get; set; }
/// </summary> /// <summary>
[Description("资源所属应用ID")] /// 分类名称
[Browsable(false)] /// </summary>
public string AppId { get; set; } [Description("分类名称")]
/// <summary> public string TypeName { get; set; }
/// 所属应用名称 /// <summary>
/// </summary> /// 分类ID
[Description("所属应用名称")] /// </summary>
public string AppName { get; set; } [Description("分类ID")]
/// <summary> [Browsable(false)]
/// 分类名称 public string TypeId { get; set; }
/// </summary> /// <summary>
[Description("分类名称")] /// 是否可用
public string TypeName { get; set; } /// </summary>
/// <summary> [Description("是否可用")]
/// 分类ID public bool Disable { get; set; }
/// </summary> /// <summary>
[Description("分类ID")] /// 创建时间
[Browsable(false)] /// </summary>
public string TypeId { get; set; } [Description("创建时间")]
/// <summary> public System.DateTime CreateTime { get; set; }
/// 是否可用 /// <summary>
/// </summary> /// 创建人ID
[Description("是否可用")] /// </summary>
public bool Disable { get; set; } [Description("创建人ID")]
/// <summary> [Browsable(false)]
/// 创建时间 public string CreateUserId { get; set; }
/// </summary> /// <summary>
[Description("创建时间")] /// 创建人
public System.DateTime CreateTime { get; set; } /// </summary>
/// <summary> [Description("创建人")]
/// 创建人ID public string CreateUserName { get; set; }
/// </summary> /// <summary>
[Description("创建人ID")] /// 最后更新时间
[Browsable(false)] /// </summary>
public string CreateUserId { get; set; } [Description("最后更新时间")]
/// <summary> public System.DateTime? UpdateTime { get; set; }
/// 创建人 /// <summary>
/// </summary> /// 最后更新人ID
[Description("创建人")] /// </summary>
public string CreateUserName { get; set; } [Description("最后更新人ID")]
/// <summary> [Browsable(false)]
/// 最后更新时间 public string UpdateUserId { get; set; }
/// </summary> /// <summary>
[Description("最后更新时间")] /// 最后更新人
public System.DateTime? UpdateTime { get; set; } /// </summary>
/// <summary> [Description("最后更新人")]
/// 最后更新人ID public string UpdateUserName { get; set; }
/// </summary> }
[Description("最后更新人ID")]
[Browsable(false)]
public string UpdateUserId { get; set; }
/// <summary>
/// 最后更新人
/// </summary>
[Description("最后更新人")]
public string UpdateUserName { get; set; }
}
} }

View File

@ -1,95 +1,95 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <autogenerated> // <autogenerated>
// This code was generated by a CodeSmith Template. // This code was generated by a CodeSmith Template.
// //
// DO NOT MODIFY contents of this file. Changes to this // DO NOT MODIFY contents of this file. Changes to this
// file will be lost if the code is regenerated. // file will be lost if the code is regenerated.
// Author:Yubao Li // Author:Yubao Li
// </autogenerated> // </autogenerated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
using System; using System;
using System.ComponentModel; using System.ComponentModel;
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations.Schema;
using OpenAuth.Repository.Core; using OpenAuth.Repository.Core;
namespace OpenAuth.Repository.Domain namespace OpenAuth.Repository.Domain
{ {
/// <summary> /// <summary>
/// 用户基本信息表 /// 用户基本信息表
/// </summary> /// </summary>
[Table("User")] [Table("SysUser")]
public partial class User : StringEntity public partial class SysUser : StringEntity
{ {
public User() public SysUser()
{ {
this.Account= string.Empty; this.Account= string.Empty;
this.Password= string.Empty; this.Password= string.Empty;
this.Name= string.Empty; this.Name= string.Empty;
this.Sex= 0; this.Sex= 0;
this.Status= 0; this.Status= 0;
this.BizCode= string.Empty; this.BizCode= string.Empty;
this.CreateTime= DateTime.Now; this.CreateTime= DateTime.Now;
this.CreateId= string.Empty; this.CreateId= string.Empty;
this.TypeName= string.Empty; this.TypeName= string.Empty;
this.TypeId= string.Empty; this.TypeId= string.Empty;
} }
/// <summary> /// <summary>
/// 用户登录帐号 /// 用户登录帐号
/// </summary> /// </summary>
[Description("用户登录帐号")] [Description("用户登录帐号")]
public string Account { get; set; } public string Account { get; set; }
/// <summary> /// <summary>
/// 密码 /// 密码
/// </summary> /// </summary>
[Description("密码")] [Description("密码")]
public string Password { get; set; } public string Password { get; set; }
/// <summary> /// <summary>
/// 用户姓名 /// 用户姓名
/// </summary> /// </summary>
[Description("用户姓名")] [Description("用户姓名")]
public string Name { get; set; } public string Name { get; set; }
/// <summary> /// <summary>
/// 性别 /// 性别
/// </summary> /// </summary>
[Description("性别")] [Description("性别")]
public int Sex { get; set; } public int Sex { get; set; }
/// <summary> /// <summary>
/// 用户状态 /// 用户状态
/// </summary> /// </summary>
[Description("用户状态")] [Description("用户状态")]
public int Status { get; set; } public int Status { get; set; }
/// <summary> /// <summary>
/// 业务对照码 /// 业务对照码
/// </summary> /// </summary>
[Description("业务对照码")] [Description("业务对照码")]
public string BizCode { get; set; } public string BizCode { get; set; }
/// <summary> /// <summary>
/// 经办时间 /// 经办时间
/// </summary> /// </summary>
[Description("经办时间")] [Description("经办时间")]
public System.DateTime CreateTime { get; set; } public System.DateTime CreateTime { get; set; }
/// <summary> /// <summary>
/// 创建人 /// 创建人
/// </summary> /// </summary>
[Description("创建人")] [Description("创建人")]
public string CreateId { get; set; } public string CreateId { get; set; }
/// <summary> /// <summary>
/// 分类名称 /// 分类名称
/// </summary> /// </summary>
[Description("分类名称")] [Description("分类名称")]
public string TypeName { get; set; } public string TypeName { get; set; }
/// <summary> /// <summary>
/// 分类ID /// 分类ID
/// </summary> /// </summary>
[Description("分类ID")] [Description("分类ID")]
public string TypeId { get; set; } public string TypeId { get; set; }
/// <summary> /// <summary>
/// 直接上级 /// 直接上级
/// </summary> /// </summary>
[Description("直接上级")] [Description("直接上级")]
public string ParentId { get; set; } public string ParentId { get; set; }
} }
} }

View File

@ -7,9 +7,9 @@ namespace OpenAuth.Repository.Domain
/// </summary> /// </summary>
public static class UserExt public static class UserExt
{ {
public static void CheckPassword(this User user, string password) public static void CheckPassword(this SysUser sysUser, string password)
{ {
if (user.Password != password) if (sysUser.Password != password)
{ {
throw new Exception("密码错误"); throw new Exception("密码错误");
} }

View File

@ -5,6 +5,7 @@ using Infrastructure.Extensions;
using Infrastructure.Utilities; using Infrastructure.Utilities;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
@ -106,6 +107,24 @@ namespace OpenAuth.Repository
} }
} }
} }
//如果数据库是Oracle则将所有表名和字段名转换为大写
if (Database.ProviderName == "Oracle.EntityFrameworkCore")
{
foreach (var entity in modelBuilder.Model.GetEntityTypes())
{
entity.SetTableName(entity.GetTableName().ToUpper());
// 将所有属性映射到大写列名
foreach (var property in entity.GetProperties())
{
var storeObject = StoreObjectIdentifier.Create(entity, StoreObjectType.Table);
if (storeObject.HasValue)
{
property.SetColumnName(property.GetColumnName(storeObject.Value).ToUpper());
}
}
}
}
} }
public virtual DbSet<Application> Applications { get; set; } public virtual DbSet<Application> Applications { get; set; }
@ -120,9 +139,9 @@ namespace OpenAuth.Repository
public virtual DbSet<ModuleElement> ModuleElements { get; set; } public virtual DbSet<ModuleElement> ModuleElements { get; set; }
public virtual DbSet<SysOrg> Orgs { get; set; } public virtual DbSet<SysOrg> Orgs { get; set; }
public virtual DbSet<Relevance> Relevances { get; set; } public virtual DbSet<Relevance> Relevances { get; set; }
public virtual DbSet<Resource> Resources { get; set; } public virtual DbSet<SysResource> Resources { get; set; }
public virtual DbSet<Role> Roles { get; set; } public virtual DbSet<Role> Roles { get; set; }
public virtual DbSet<User> Users { get; set; } public virtual DbSet<SysUser> Users { get; set; }
public virtual DbSet<UploadFile> UploadFiles { get; set; } public virtual DbSet<UploadFile> UploadFiles { get; set; }
public virtual DbSet<SysPrinterPlan> SysPrinterPlans { get; set; } public virtual DbSet<SysPrinterPlan> SysPrinterPlans { get; set; }
public virtual DbSet<FrmLeaveReq> FrmLeaveReqs { get; set; } public virtual DbSet<FrmLeaveReq> FrmLeaveReqs { get; set; }

View File

@ -21,7 +21,7 @@ namespace OpenAuth.Repository.Test
var account = "user_" + DateTime.Now.ToString("yyyy_MM_dd HH:mm:ss"); var account = "user_" + DateTime.Now.ToString("yyyy_MM_dd HH:mm:ss");
Console.WriteLine(account); Console.WriteLine(account);
dbcontext.Users.Add(new User dbcontext.Users.Add(new SysUser
{ {
Account = account, Account = account,
Name = account, Name = account,
@ -83,10 +83,10 @@ namespace OpenAuth.Repository.Test
Console.WriteLine(account); Console.WriteLine(account);
var repository = _autofacServiceProvider.GetService<IRepository<User,OpenAuthDBContext>>(); var repository = _autofacServiceProvider.GetService<IRepository<SysUser,OpenAuthDBContext>>();
//新增 //新增
repository.Add(new User repository.Add(new SysUser
{ {
Account = account, Account = account,
Name = account, Name = account,
@ -105,7 +105,7 @@ namespace OpenAuth.Repository.Test
Assert.NotNull(newuser); Assert.NotNull(newuser);
//批量修改 //批量修改
repository.Update(u => u.Id == id, u =>new User{ Name = account}); repository.Update(u => u.Id == id, u =>new SysUser{ Name = account});
newuser = repository.FirstOrDefault(u => u.Name == account); newuser = repository.FirstOrDefault(u => u.Name == account);
Assert.NotNull(newuser); Assert.NotNull(newuser);

View File

@ -52,7 +52,7 @@ namespace OpenAuth.Repository.Test
} }
"; ";
var query = sugarClient.Queryable<User>().GenerateFilter("c",json); var query = sugarClient.Queryable<SysUser>().GenerateFilter("c",json);
Console.WriteLine(query.ToSqlString()); Console.WriteLine(query.ToSqlString());
Console.WriteLine(JsonHelper.Instance.Serialize(query.ToList())); Console.WriteLine(JsonHelper.Instance.Serialize(query.ToList()));
@ -100,7 +100,7 @@ namespace OpenAuth.Repository.Test
var sugarClient = _autofacServiceProvider.GetService<ISqlSugarClient>(); var sugarClient = _autofacServiceProvider.GetService<ISqlSugarClient>();
var query = sugarClient.Queryable<User>().GenerateFilter("c",queryObject); var query = sugarClient.Queryable<SysUser>().GenerateFilter("c",queryObject);
Console.WriteLine(query.ToSqlString()); Console.WriteLine(query.ToSqlString());
} }
} }

View File

@ -51,7 +51,7 @@ namespace OpenAuth.Repository.Test
} }
//如果没有插入成功,表示事务发生了回滚 //如果没有插入成功,表示事务发生了回滚
Assert.IsFalse(unitWork.Any<User>( u=>u.Id == account)); Assert.IsFalse(unitWork.Any<SysUser>( u=>u.Id == account));
} }
@ -60,7 +60,7 @@ namespace OpenAuth.Repository.Test
/// </summary> /// </summary>
private void AddAndUpdate(string account, IUnitWork<OpenAuthDBContext> unitWork) private void AddAndUpdate(string account, IUnitWork<OpenAuthDBContext> unitWork)
{ {
var user = new User var user = new SysUser
{ {
Id = account, Id = account,
Account = account, Account = account,
@ -78,7 +78,7 @@ namespace OpenAuth.Repository.Test
unitWork.Save(); unitWork.Save();
unitWork.Update<User>(u => u.Id == account, u => new User unitWork.Update<SysUser>(u => u.Id == account, u => new SysUser
{ {
Account = "Trans2_" + user.Account Account = "Trans2_" + user.Account
}); });
@ -90,7 +90,7 @@ namespace OpenAuth.Repository.Test
{ {
var unitWork = _autofacServiceProvider.GetService<IUnitWork<OpenAuthDBContext>>(); var unitWork = _autofacServiceProvider.GetService<IUnitWork<OpenAuthDBContext>>();
var users = unitWork.Find<User>(u => u.Account.Contains("test")); var users = unitWork.Find<SysUser>(u => u.Account.Contains("test"));
foreach (var user in users) foreach (var user in users)
{ {
user.Name = "user_" + DateTime.Now.ToString("yyyy_MM_dd HH:mm:ss"); user.Name = "user_" + DateTime.Now.ToString("yyyy_MM_dd HH:mm:ss");
@ -105,12 +105,12 @@ namespace OpenAuth.Repository.Test
public void MultiUpdate2() public void MultiUpdate2()
{ {
var unitWork = _autofacServiceProvider.GetService<IUnitWork<OpenAuthDBContext>>(); var unitWork = _autofacServiceProvider.GetService<IUnitWork<OpenAuthDBContext>>();
var users = unitWork.Find<User>(null).ToList(); var users = unitWork.Find<SysUser>(null).ToList();
unitWork.ExecuteWithTransaction(()=> unitWork.ExecuteWithTransaction(()=>
{ {
foreach (var req in users) foreach (var req in users)
{ {
unitWork.Update<User>(u =>u.Id == req.Id, user => new User unitWork.Update<SysUser>(u =>u.Id == req.Id, user => new SysUser
{ {
Name = "user_" + DateTime.Now.ToString("yyyy_MM_dd HH:mm:ss") Name = "user_" + DateTime.Now.ToString("yyyy_MM_dd HH:mm:ss")
}); });

View File

@ -23,7 +23,7 @@ namespace OpenAuth.Repository.Test
public void ExecProcedure() public void ExecProcedure()
{ {
var unitWork = _autofacServiceProvider.GetService<IUnitWork<OpenAuthDBContext>>(); var unitWork = _autofacServiceProvider.GetService<IUnitWork<OpenAuthDBContext>>();
var users = unitWork.ExecProcedure<User>("sp_alluser"); var users = unitWork.ExecProcedure<SysUser>("sp_alluser");
Console.WriteLine(JsonHelper.Instance.Serialize(users)); Console.WriteLine(JsonHelper.Instance.Serialize(users));
} }
@ -37,7 +37,7 @@ namespace OpenAuth.Repository.Test
var unitWork = _autofacServiceProvider.GetService<IUnitWork<OpenAuthDBContext>>(); var unitWork = _autofacServiceProvider.GetService<IUnitWork<OpenAuthDBContext>>();
var param = new MySqlParameter("keyword", SqlDbType.NVarChar); var param = new MySqlParameter("keyword", SqlDbType.NVarChar);
param.Value = "test%"; param.Value = "test%";
var users = unitWork.ExecProcedure<User>("sp_alluser", new []{param}); var users = unitWork.ExecProcedure<SysUser>("sp_alluser", new []{param});
Console.WriteLine(JsonHelper.Instance.Serialize(users)); Console.WriteLine(JsonHelper.Instance.Serialize(users));
} }

View File

@ -273,9 +273,9 @@ namespace OpenAuth.WebApi.Controllers
/// 获取登录用户的所有可访问的资源 /// 获取登录用户的所有可访问的资源
/// </summary> /// </summary>
[HttpGet] [HttpGet]
public Response<List<Resource>> GetResources() public Response<List<SysResource>> GetResources()
{ {
var result = new Response<List<Resource>>(); var result = new Response<List<SysResource>>();
try try
{ {
result.Result = _authStrategyContext.Resources; result.Result = _authStrategyContext.Resources;

View File

@ -87,9 +87,9 @@ namespace OpenAuth.WebApi.Controllers
/// <param name="appId">应用ID</param> /// <param name="appId">应用ID</param>
/// <param name="firstId">角色ID</param> /// <param name="firstId">角色ID</param>
[HttpGet] [HttpGet]
public Response<List<Resource>> LoadForRole(string appId, string firstId) public Response<List<SysResource>> LoadForRole(string appId, string firstId)
{ {
var result = new Response<List<Resource>>(); var result = new Response<List<SysResource>>();
try try
{ {
result.Result = _app.LoadForRole(appId, firstId).ToList(); result.Result = _app.LoadForRole(appId, firstId).ToList();