同步OpenAuth.Core最新代码

This commit is contained in:
yubaolee
2020-12-17 23:04:04 +08:00
parent 7ce8a219cf
commit 7217e7a924
61 changed files with 1112 additions and 315 deletions

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using OpenAuth.App.Interface;
using OpenAuth.App.Request;
using OpenAuth.Repository.Domain;
@@ -28,7 +29,7 @@ namespace OpenAuth.App
}
public List<Application> GetList(QueryAppListReq request)
public async Task<List<Application>> GetList(QueryAppListReq request)
{
var applications = UnitWork.Find<Application>(null) ;

View File

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

View File

@@ -18,13 +18,12 @@ namespace OpenAuth.App
/// <summary>
/// 用于普通的数据库操作
/// </summary>
/// <value>The repository.</value>
protected IRepository<T> Repository;
/// <summary>
/// 用于事务操作
/// <para>使用详见http://doc.openauth.me/core/unitwork.html</para>
/// </summary>
/// <value>The unit work.</value>
protected IUnitWork UnitWork;
protected IAuth _auth;
@@ -47,7 +46,7 @@ namespace OpenAuth.App
if (loginUser.User.Account == Define.SYSTEM_USERNAME) return UnitWork.Find<T>(null); //超级管理员特权
var moduleName = typeof(T).Name;
var rule = UnitWork.FindSingle<DataPrivilegeRule>(u => u.SourceCode == moduleName);
var rule = UnitWork.FirstOrDefault<DataPrivilegeRule>(u => u.SourceCode == moduleName);
if (rule == null) return UnitWork.Find<T>(null); //没有设置数据规则,那么视为该资源允许被任何主体查看
if (rule.PrivilegeRules.Contains(Define.DATAPRIVILEGE_LOGINUSER) ||
rule.PrivilegeRules.Contains(Define.DATAPRIVILEGE_LOGINROLE)||
@@ -82,7 +81,7 @@ namespace OpenAuth.App
public T Get(string id)
{
return Repository.FindSingle(u => u.Id == id);
return Repository.FirstOrDefault(u => u.Id == id);
}
/// <summary>
@@ -104,7 +103,7 @@ namespace OpenAuth.App
if (!string.IsNullOrEmpty(entity.ParentId))
{
var parentOrg = UnitWork.FindSingle<U>(o => o.Id == entity.ParentId);
var parentOrg = UnitWork.FirstOrDefault<U>(o => o.Id == entity.ParentId);
if (parentOrg != null)
{
cascadeId = parentOrg.CascadeId + currentCascadeId + ".";

View File

@@ -29,7 +29,7 @@ namespace OpenAuth.App
CaculateCascade(obj);
//获取旧的的CascadeId
var cascadeId = Repository.FindSingle(o => o.Id == obj.Id).CascadeId;
var cascadeId = Repository.FirstOrDefault(o => o.Id == obj.Id).CascadeId;
//根据CascadeId查询子部门
var objs = Repository.Find(u => u.CascadeId.Contains(cascadeId) && u.Id != obj.Id)
.OrderBy(u => u.CascadeId).ToList();

View File

@@ -6,6 +6,7 @@ using System.Linq;
using System.Reflection;
using System.Runtime.Loader;
using System.Text;
using System.Threading.Tasks;
using Infrastructure;
using Infrastructure.Extensions;
using Infrastructure.Helpers;
@@ -76,7 +77,7 @@ namespace OpenAuth.App
/// <summary>
/// 加载列表
/// </summary>
public TableResp<BuilderTable> Load(QueryBuilderTableListReq request)
public async Task<TableResp<BuilderTable>> Load(QueryBuilderTableListReq request)
{
var loginContext = _auth.GetCurrentUser();
if (loginContext == null)
@@ -192,9 +193,12 @@ namespace OpenAuth.App
/// <param name="ids"></param>
public void DelTableAndcolumns(string[] ids)
{
UnitWork.Delete<BuilderTable>(u => ids.Contains(u.Id));
UnitWork.Delete<BuilderTableColumn>(u => ids.Contains(u.TableId));
UnitWork.Save();
UnitWork.ExecuteWithTransaction(() =>
{
UnitWork.Delete<BuilderTable>(u => ids.Contains(u.Id));
UnitWork.Delete<BuilderTableColumn>(u => ids.Contains(u.TableId));
UnitWork.Save();
});
}
@@ -204,7 +208,7 @@ namespace OpenAuth.App
/// <returns></returns>
public void CreateEntity(CreateEntityReq req)
{
var sysTableInfo = Repository.FindSingle(u => u.Id == req.Id);
var sysTableInfo = Repository.FirstOrDefault(u => u.Id == req.Id);
var tableColumns = _builderTableColumnApp.Find(req.Id);
if (sysTableInfo == null
|| tableColumns == null
@@ -223,7 +227,7 @@ namespace OpenAuth.App
/// <returns></returns>
public void CreateBusiness(CreateBusiReq req)
{
var sysTableInfo = Repository.FindSingle(u => u.Id == req.Id);
var sysTableInfo = Repository.FirstOrDefault(u => u.Id == req.Id);
var tableColumns = _builderTableColumnApp.Find(req.Id);
if (sysTableInfo == null
|| tableColumns == null
@@ -512,7 +516,7 @@ namespace OpenAuth.App
{
throw new Exception("请提供vue项目的根目录,如C:\\OpenAuth.Pro\\Client");
}
var sysTableInfo = Repository.FindSingle(u => u.Id == req.Id);
var sysTableInfo = Repository.FirstOrDefault(u => u.Id == req.Id);
var tableColumns = _builderTableColumnApp.Find(req.Id);
if (sysTableInfo == null
|| tableColumns == null
@@ -617,7 +621,7 @@ namespace OpenAuth.App
.Replace("{Temp}", tempBuilder.ToString())
.Replace("{DialogFormItem}", dialogStrBuilder.ToString());
FileHelper.WriteFile(Path.Combine(req.VueProjRootPath, $"src/views/{sysTableInfo.ClassName.ToCamelCase()}s/"),
FileHelper.WriteFile(Path.Combine(req.VueProjRootPath, $"src/views/{sysTableInfo.ClassName.ToLower()}s/"),
$"index.vue",
domainContent);
}
@@ -633,7 +637,7 @@ namespace OpenAuth.App
{
throw new Exception("请提供vue项目的根目录,如C:\\OpenAuth.Pro\\Client");
}
var sysTableInfo = Repository.FindSingle(u => u.Id == req.Id);
var sysTableInfo = Repository.FirstOrDefault(u => u.Id == req.Id);
var tableColumns = _builderTableColumnApp.Find(req.Id);
if (sysTableInfo == null
|| tableColumns == null

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Infrastructure;
using OpenAuth.App.Interface;
using OpenAuth.App.Request;
@@ -21,7 +22,7 @@ namespace OpenAuth.App
/// <summary>
/// 加载列表
/// </summary>
public TableResp<BuilderTableColumn> Load(QueryBuilderTableColumnListReq request)
public async Task<TableResp<BuilderTableColumn>> Load(QueryBuilderTableColumnListReq request)
{
if (string.IsNullOrEmpty(request.BuilderTableId))
{

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Infrastructure;
using OpenAuth.App.Interface;
using OpenAuth.App.Request;
@@ -16,7 +17,7 @@ namespace OpenAuth.App
/// <summary>
/// 加载列表
/// </summary>
public TableData Load(QueryCategoryListReq request)
public async Task<TableData> Load(QueryCategoryListReq request)
{
var loginContext = _auth.GetCurrentUser();
if (loginContext == null)

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Infrastructure;
using OpenAuth.App.Interface;
using OpenAuth.App.Request;
@@ -18,7 +19,7 @@ namespace OpenAuth.App
/// <summary>
/// 加载列表
/// </summary>
public TableData Load(QueryCategoryTypeListReq request)
public async Task<TableData> Load(QueryCategoryTypeListReq request)
{
var result = new TableData();
var objs = UnitWork.Find<CategoryType>(null);
@@ -56,9 +57,13 @@ namespace OpenAuth.App
public new void Delete(string[] ids)
{
UnitWork.Delete<CategoryType>(u=>ids.Contains(u.Id));
UnitWork.Delete<Category>(u=>ids.Contains(u.TypeId));
UnitWork.Save();
UnitWork.ExecuteWithTransaction(() =>
{
UnitWork.Delete<CategoryType>(u=>ids.Contains(u.Id));
UnitWork.Delete<Category>(u=>ids.Contains(u.TypeId));
UnitWork.Save();
});
}
public List<CategoryType> AllTypes()

View File

@@ -1,5 +1,6 @@
using System;
using System.Linq;
using System.Threading.Tasks;
using Infrastructure;
using OpenAuth.App.Interface;
using OpenAuth.App.Request;
@@ -16,7 +17,7 @@ namespace OpenAuth.App
/// <summary>
/// 加载列表
/// </summary>
public TableData Load(QueryDataPrivilegeRuleListReq request)
public async Task<TableData> Load(QueryDataPrivilegeRuleListReq request)
{
var loginContext = _auth.GetCurrentUser();
if (loginContext == null)
@@ -51,7 +52,7 @@ namespace OpenAuth.App
public void Add(AddOrUpdateDataPriviReq req)
{
if (Repository.IsExist(u => u.SourceCode == req.SourceCode))
if (Repository.Any(u => u.SourceCode == req.SourceCode))
{
throw new Exception($"已经存在{req.SourceCode}的数据规则,如果想调整规制请直接修改");
}
@@ -85,7 +86,7 @@ namespace OpenAuth.App
public DataPrivilegeRule GetByModuleName(string moduleName)
{
return Repository.FindSingle(u=>u.SourceCode == moduleName);
return Repository.FirstOrDefault(u=>u.SourceCode == moduleName);
}
public void Clear()

View File

@@ -134,7 +134,7 @@ namespace OpenAuth.App
END AS EntityType,
case WHEN CHARACTER_MAXIMUM_LENGTH>8000 THEN 0 ELSE CHARACTER_MAXIMUM_LENGTH end AS Maxlength,
CASE
WHEN COLUMN_KEY <> '' THEN
WHEN COLUMN_KEY = 'PRI' THEN
1 ELSE 0
END AS IsKey,
CASE

View File

@@ -24,6 +24,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Net.Http;
using System.Threading.Tasks;
using Infrastructure.Helpers;
namespace OpenAuth.App
@@ -472,7 +473,7 @@ namespace OpenAuth.App
Repository.Update(flowScheme);
}
public TableData Load(QueryFlowInstanceListReq request)
public async Task<TableData> Load(QueryFlowInstanceListReq request)
{
var result = new TableData();
var user = _auth.GetCurrentUser();

View File

@@ -1,5 +1,6 @@
using System;
using System.Linq;
using System.Threading.Tasks;
using OpenAuth.App.Interface;
using OpenAuth.App.Request;
using OpenAuth.App.Response;
@@ -12,7 +13,7 @@ namespace OpenAuth.App
{
public void Add(FlowScheme flowScheme)
{
if (Repository.IsExist(u => u.SchemeName == flowScheme.SchemeName))
if (Repository.Any(u => u.SchemeName == flowScheme.SchemeName))
{
throw new Exception("流程名称已经存在");
}
@@ -25,12 +26,12 @@ namespace OpenAuth.App
public FlowScheme FindByCode(string code)
{
return Repository.FindSingle(u => u.SchemeCode == code);
return Repository.FirstOrDefault(u => u.SchemeCode == code);
}
public void Update(FlowScheme flowScheme)
{
if (Repository.IsExist(u => u.SchemeName == flowScheme.SchemeName && u.Id != flowScheme.Id))
if (Repository.Any(u => u.SchemeName == flowScheme.SchemeName && u.Id != flowScheme.Id))
{
throw new Exception("流程名称已经存在");
}
@@ -48,7 +49,7 @@ namespace OpenAuth.App
});
}
public TableData Load(QueryFlowSchemeListReq request)
public async Task<TableData> Load(QueryFlowSchemeListReq request)
{
var result = new TableData();
var objs = GetDataPrivilege("u");

View File

@@ -1,5 +1,6 @@
using System;
using System.Linq;
using System.Threading.Tasks;
using Infrastructure;
using Microsoft.Extensions.Options;
using OpenAuth.App.Interface;
@@ -18,7 +19,7 @@ namespace OpenAuth.App
/// <summary>
/// 加载列表
/// </summary>
public TableData Load(QueryFormListReq request)
public async Task<TableData> Load(QueryFormListReq request)
{
var result = new TableData();
var forms = GetDataPrivilege("u");

View File

@@ -1,4 +1,5 @@
using Infrastructure;
using System.Threading.Tasks;
using Infrastructure;
using OpenAuth.App.Interface;
using OpenAuth.App.Request;
using OpenAuth.App.Response;
@@ -15,11 +16,11 @@ namespace OpenAuth.App
/// <summary>
/// 加载列表
/// </summary>
public TableData Load(QueryFrmLeaveReqListReq request)
public async Task<TableData> Load(QueryFrmLeaveReqListReq request)
{
return new TableData
{
count = Repository.GetCount(null),
count = Repository.Count(null),
data = Repository.Find(request.page, request.limit, "Id desc")
};
}

View File

@@ -8,9 +8,10 @@ using OpenAuth.Repository.Interface;
namespace OpenAuth.App
{
public class ModuleManagerApp :BaseTreeApp<Module>
public class ModuleManagerApp : BaseTreeApp<Module>
{
private RevelanceManagerApp _revelanceApp;
public void Add(Module model)
{
var loginContext = _auth.GetCurrentUser();
@@ -18,20 +19,22 @@ namespace OpenAuth.App
{
throw new CommonException("登录已过期", Define.INVALID_TOKEN);
}
CaculateCascade(model);
Repository.Add(model);
AddDefaultMenus(model);
//当前登录用户的所有角色自动分配模块
loginContext.Roles.ForEach(u =>
{
{
_revelanceApp.Assign(new AssignReq
{
type=Define.ROLEMODULE,
type = Define.ROLEMODULE,
firstId = u.Id,
secIds = new[]{model.Id}
secIds = new[] {model.Id}
});
});
}
public void Update(Module obj)
@@ -40,10 +43,8 @@ namespace OpenAuth.App
}
#region /
/// <summary>
/// 加载特定角色的模块
/// </summary>
@@ -67,7 +68,7 @@ namespace OpenAuth.App
var query = UnitWork.Find<ModuleElement>(u => elementIds.Contains(u.Id));
if (!string.IsNullOrEmpty(moduleId))
{
query = query.Where(u => u.ModuleId == moduleId);
query = query.Where(u => u.ModuleId == moduleId);
}
return query;
@@ -77,6 +78,7 @@ namespace OpenAuth.App
#region
/// <summary>
/// 删除指定的菜单
/// </summary>
@@ -87,6 +89,7 @@ namespace OpenAuth.App
UnitWork.Save();
}
public void AddMenu(ModuleElement model)
{
var loginContext = _auth.GetCurrentUser();
@@ -94,21 +97,24 @@ namespace OpenAuth.App
{
throw new CommonException("登录已过期", Define.INVALID_TOKEN);
}
UnitWork.Add(model);
//当前登录用户的所有角色自动分配菜单
loginContext.Roles.ForEach(u =>
{
_revelanceApp.Assign(new AssignReq
UnitWork.ExecuteWithTransaction(() =>
{
UnitWork.Add(model);
//当前登录用户的所有角色自动分配菜单
loginContext.Roles.ForEach(u =>
{
type=Define.ROLEELEMENT,
firstId = u.Id,
secIds = new[]{model.Id}
_revelanceApp.Assign(new AssignReq
{
type = Define.ROLEELEMENT,
firstId = u.Id,
secIds = new[] {model.Id}
});
});
UnitWork.Save();
});
UnitWork.Save();
}
#endregion
public void UpdateMenu(ModuleElement model)
{
@@ -116,8 +122,51 @@ namespace OpenAuth.App
UnitWork.Save();
}
//添加默认按钮
private void AddDefaultMenus(Module module)
{
AddMenu(new ModuleElement
{
ModuleId = module.Id,
DomId = "btnAdd",
Script = "add()",
Name = "添加",
Sort = 1,
Icon = "xinzeng",
Class = "success",
Remark = "新增" + module.Name
});
AddMenu(new ModuleElement
{
ModuleId = module.Id,
DomId = "btnEdit",
Script = "edit()",
Name = "编辑",
Sort = 2,
Icon = "bianji-copy",
Class = "primary",
Remark = "修改" + module.Name
});
AddMenu(new ModuleElement
{
ModuleId = module.Id,
DomId = "btnDel",
Script = "del()",
Name = "删除",
Sort = 3,
Icon = "shanchu",
Class = "danger",
Remark = "删除" + module.Name
});
//todo:可以自己添加更多默认按钮
}
#endregion
public ModuleManagerApp(IUnitWork unitWork, IRepository<Module> repository
,RevelanceManagerApp app,IAuth auth) : base(unitWork, repository, auth)
, RevelanceManagerApp app, IAuth auth) : base(unitWork, repository, auth)
{
_revelanceApp = app;
}

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Infrastructure;
using Microsoft.Extensions.Logging;
using OpenAuth.App.Interface;
@@ -23,7 +24,7 @@ namespace OpenAuth.App
/// <summary>
/// 加载列表
/// </summary>
public TableData Load(QueryOpenJobListReq request)
public async Task<TableData> Load(QueryOpenJobListReq request)
{
var result = new TableData();
var objs = Repository.Find(null);
@@ -86,7 +87,7 @@ namespace OpenAuth.App
public void ChangeJobStatus(ChangeJobStatusReq req)
{
var job = Repository.FindSingle(u => u.Id == req.Id);
var job = Repository.FirstOrDefault(u => u.Id == req.Id);
if (job == null)
{
throw new Exception("任务不存在");
@@ -140,7 +141,7 @@ namespace OpenAuth.App
/// <param name="jobId"></param>
public void RecordRun(string jobId)
{
var job = Repository.FindSingle(u =>u.Id == jobId);
var job = Repository.FirstOrDefault(u =>u.Id == jobId);
if (job == null)
{
_sysLogApp.Add(new SysLog

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Infrastructure;
using OpenAuth.App.Interface;
using OpenAuth.App.Request;
@@ -47,7 +48,7 @@ namespace OpenAuth.App
return UnitWork.Find<Resource>(u => elementIds.Contains(u.Id) && (appId == null || appId =="" || u.AppId == appId));
}
public TableData Load(QueryResourcesReq request)
public async Task<TableData> Load(QueryResourcesReq request)
{
var loginContext = _auth.GetCurrentUser();
if (loginContext == null)

View File

@@ -51,7 +51,7 @@ namespace OpenAuth.App.SSO
}
else
{
userInfo = _app.FindSingle(u =>u.Account == model.Account);
userInfo = _app.FirstOrDefault(u =>u.Account == model.Account);
}
if (userInfo == null)
@@ -63,6 +63,11 @@ namespace OpenAuth.App.SSO
throw new Exception("密码错误");
}
if (userInfo.Status != 0)
{
throw new Exception("账号状态异常,可能已停用");
}
var currentSession = new UserAuthSession
{
Account = model.Account,

View File

@@ -1,5 +1,6 @@
using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using OpenAuth.App.Request;
using OpenAuth.App.Response;
using OpenAuth.Repository.Domain;
@@ -14,7 +15,7 @@ namespace OpenAuth.App
/// <summary>
/// 加载列表
/// </summary>
public TableData Load(QuerySysLogListReq request)
public async Task<TableData> Load(QuerySysLogListReq request)
{
var result = new TableData();
var objs = UnitWork.Find<SysLog>(null);

View File

@@ -1,4 +1,5 @@
using System.Linq;
using System.Threading.Tasks;
using Infrastructure;
using OpenAuth.App.Interface;
using OpenAuth.App.Request;
@@ -16,7 +17,7 @@ namespace OpenAuth.App
/// <summary>
/// 加载列表
/// </summary>
public TableData Load(QuerySysMessageListReq request)
public async Task<TableData> Load(QuerySysMessageListReq request)
{
var loginContext = _auth.GetCurrentUser();
if (loginContext == null)

View File

@@ -0,0 +1,68 @@
using System;
using System.Threading;
using System.Threading.Tasks;
using Infrastructure.Cache;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.DependencyInjection;
using Moq;
using NUnit.Framework;
using OpenAuth.App.Request;
using OpenAuth.App.SSO;
using OpenAuth.Repository.Domain;
using OpenAuth.Repository.Interface;
namespace OpenAuth.App.Test
{
public class TestDynamic : TestBase
{
public override ServiceCollection GetService()
{
var services = new ServiceCollection();
var cachemock = new Mock<ICacheContext>();
cachemock.Setup(x => x.Get<UserAuthSession>("tokentest"))
.Returns(new UserAuthSession { Account = "System" });
services.AddScoped(x => cachemock.Object);
var httpContextAccessorMock = new Mock<IHttpContextAccessor>();
httpContextAccessorMock.Setup(x => x.HttpContext.Request.Query[Define.TOKEN_NAME])
.Returns("tokentest");
services.AddScoped(x => httpContextAccessorMock.Object);
return services;
}
[Test]
public void Async()
{
Console.WriteLine($"开始异步测试");
AddOrUpdate();
Console.WriteLine("异步测试结束");
//延长主线程,防止程序退出
Thread.Sleep(3000);
}
private async Task AddOrUpdate()
{
var repository = _autofacServiceProvider.GetService<IRepository<User>>();
var account = "user_" + DateTime.Now.ToString("yyyy_MM_dd HH:mm:ss");
var user = new User
{
Account = account,
Name = account
};
await repository.AddAsync(user);
user.Account = "new_" + user.Account;
await repository.UpdateAsync(user);
Console.WriteLine($"更新完成");
}
}
}

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Castle.Core.Internal;
using OpenAuth.App.Interface;
using OpenAuth.App.Request;
@@ -25,14 +26,14 @@ namespace OpenAuth.App
public User GetByAccount(string account)
{
return Repository.FindSingle(u => u.Account == account);
return Repository.FirstOrDefault(u => u.Account == account);
}
/// <summary>
/// 加载当前登录用户可访问的一个部门及子部门全部用户
/// 如果请求的request.OrgId为空则可以获取到已被删除机构的用户没有分配任何机构的用户
/// </summary>
public TableData Load(QueryUserListReq request)
public async Task<TableData> Load(QueryUserListReq request)
{
var loginUser = _auth.GetCurrentUser();
@@ -120,7 +121,7 @@ namespace OpenAuth.App
requser.CreateId = _auth.GetCurrentUser().User.Id;
if (string.IsNullOrEmpty(request.Id))
{
if (UnitWork.IsExist<User>(u => u.Account == request.Account))
if (UnitWork.Any<User>(u => u.Account == request.Account))
{
throw new Exception("用户账号已存在");
}
@@ -191,7 +192,7 @@ namespace OpenAuth.App
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public TableData LoadByRole(QueryUserListByRoleReq request)
public async Task<TableData> LoadByRole(QueryUserListByRoleReq request)
{
var users = from userRole in UnitWork.Find<Relevance>(u =>
u.SecondId == request.roleId && u.Key == Define.USERROLE)
@@ -211,7 +212,7 @@ namespace OpenAuth.App
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
public TableData LoadByOrg(QueryUserListByOrgReq request)
public async Task<TableData> LoadByOrg(QueryUserListByOrgReq request)
{
var users = from userRole in UnitWork.Find<Relevance>(u =>
u.SecondId == request.orgId && u.Key == Define.USERORG)

View File

@@ -1,5 +1,6 @@
using System;
using System.Linq;
using System.Threading.Tasks;
using Infrastructure;
using OpenAuth.App.Interface;
using OpenAuth.App.Request;
@@ -18,7 +19,7 @@ namespace OpenAuth.App
/// <summary>
/// 加载列表
/// </summary>
public TableData Load(QueryWmsInboundOrderDtblListReq request)
public async Task<TableData> Load(QueryWmsInboundOrderDtblListReq request)
{
var loginContext = _auth.GetCurrentUser();

View File

@@ -1,5 +1,6 @@
using System;
using System.Linq;
using System.Threading.Tasks;
using Infrastructure;
using OpenAuth.App.Interface;
using OpenAuth.App.Request;
@@ -18,7 +19,7 @@ namespace OpenAuth.App
/// <summary>
/// 加载列表
/// </summary>
public TableData Load(QueryWmsInboundOrderTblListReq request)
public async Task<TableData> Load(QueryWmsInboundOrderTblListReq request)
{
var loginContext = _auth.GetCurrentUser();
if (loginContext == null)
@@ -67,69 +68,71 @@ namespace OpenAuth.App
_wmsInboundOrderDtblApp.AddNoSave(detail);
}
}
UnitWork.Save();
}
public void Update(AddOrUpdateWmsInboundOrderTblReq obj)
public void Update(AddOrUpdateWmsInboundOrderTblReq obj)
{
var user = _auth.GetCurrentUser().User;
if (obj.WmsInboundOrderDtblReqs != null && obj.WmsInboundOrderDtblReqs.Any())
{
//id为空的添加
foreach (var detail in obj.WmsInboundOrderDtblReqs.Where(u =>string.IsNullOrEmpty(u.Id)))
{
detail.OrderId = obj.Id;
_wmsInboundOrderDtblApp.AddNoSave(detail);
}
//id比数据库少的删除
var containids = obj.WmsInboundOrderDtblReqs.Select(u => u.Id)
.Where(u =>!string.IsNullOrEmpty(u)).ToList();
if (containids.Any())
{
UnitWork.Delete<WmsInboundOrderDtbl>(u =>(!containids.Contains(u.Id)) && u.OrderId == obj.Id);
}
//更新id相同的
foreach (var detail in obj.WmsInboundOrderDtblReqs.Where(u =>!string.IsNullOrEmpty(u.Id)))
{
_wmsInboundOrderDtblApp.Update(detail);
}
}
UnitWork.Update<WmsInboundOrderTbl>(u => u.Id == obj.Id, u => new WmsInboundOrderTbl
{
ExternalNo = obj.ExternalNo,
ExternalType = obj.ExternalType,
Status = obj.Status,
OrderType = obj.OrderType,
GoodsType = obj.GoodsType,
PurchaseNo = obj.PurchaseNo,
StockId = obj.StockId,
OwnerId = obj.OwnerId,
ShipperId = obj.ShipperId,
SupplierId = obj.SupplierId,
ScheduledInboundTime = obj.ScheduledInboundTime,
Remark = obj.Remark,
Enable = obj.Enable,
TransferType = obj.TransferType,
InBondedArea = obj.InBondedArea,
ReturnBoxNum = obj.ReturnBoxNum,
UpdateTime = DateTime.Now,
UpdateUserId = user.Id,
UpdateUserName = user.Name
//todo:补充或调整自己需要的字段
});
UnitWork.Save();
UnitWork.ExecuteWithTransaction(() =>
{
if (obj.WmsInboundOrderDtblReqs != null && obj.WmsInboundOrderDtblReqs.Any())
{
//id为空的添加
foreach (var detail in obj.WmsInboundOrderDtblReqs.Where(u => string.IsNullOrEmpty(u.Id)))
{
detail.OrderId = obj.Id;
_wmsInboundOrderDtblApp.AddNoSave(detail);
}
//id比数据库少的删除
var containids = obj.WmsInboundOrderDtblReqs.Select(u => u.Id)
.Where(u => !string.IsNullOrEmpty(u)).ToList();
if (containids.Any())
{
UnitWork.Delete<WmsInboundOrderDtbl>(u => (!containids.Contains(u.Id)) && u.OrderId == obj.Id);
}
//更新id相同的
foreach (var detail in obj.WmsInboundOrderDtblReqs.Where(u => !string.IsNullOrEmpty(u.Id)))
{
_wmsInboundOrderDtblApp.Update(detail);
}
}
UnitWork.Update<WmsInboundOrderTbl>(u => u.Id == obj.Id, u => new WmsInboundOrderTbl
{
ExternalNo = obj.ExternalNo,
ExternalType = obj.ExternalType,
Status = obj.Status,
OrderType = obj.OrderType,
GoodsType = obj.GoodsType,
PurchaseNo = obj.PurchaseNo,
StockId = obj.StockId,
OwnerId = obj.OwnerId,
ShipperId = obj.ShipperId,
SupplierId = obj.SupplierId,
ScheduledInboundTime = obj.ScheduledInboundTime,
Remark = obj.Remark,
Enable = obj.Enable,
TransferType = obj.TransferType,
InBondedArea = obj.InBondedArea,
ReturnBoxNum = obj.ReturnBoxNum,
UpdateTime = DateTime.Now,
UpdateUserId = user.Id,
UpdateUserName = user.Name
//todo:补充或调整自己需要的字段
});
UnitWork.Save();
});
}
public WmsInboundOrderTblApp(IUnitWork unitWork, IRepository<WmsInboundOrderTbl> repository,
RevelanceManagerApp app, IAuth auth, WmsInboundOrderDtblApp wmsInboundOrderDtblApp) : base(unitWork, repository,auth)
RevelanceManagerApp app, IAuth auth, WmsInboundOrderDtblApp wmsInboundOrderDtblApp) : base(unitWork,
repository, auth)
{
_revelanceApp = app;
_wmsInboundOrderDtblApp = wmsInboundOrderDtblApp;