mirror of
https://gitee.com/dotnetchina/OpenAuth.Net.git
synced 2025-07-15 14:04:41 +08:00
fix issue #I80UEX 部门增加职位及部门负责人
This commit is contained in:
parent
88c1108ac2
commit
30256db076
@ -36,6 +36,19 @@
|
||||
public const string ALL_USER = "ALL_USER"; //所有用户
|
||||
public const string SPECIAL_ROLE = "SPECIAL_ROLE"; //指定角色
|
||||
public const string SPECIAL_USER = "SPECIAL_USER"; //指定用户
|
||||
/// <summary>
|
||||
/// 连续多级直属上级
|
||||
/// <para>不同于钉钉的各上级部门负责人审批,OpenAuth以用户的各级直属上级审批模式</para>
|
||||
/// </summary>
|
||||
public const string RUNTIME_MANY_PARENTS = "RUNTIME_MANY_PARENTS";
|
||||
/// <summary>
|
||||
/// 部门负责人
|
||||
/// </summary>
|
||||
public const string RUNTIME_CHAIRMAN = "RUNTIME_CHAIRMAN";
|
||||
/// <summary>
|
||||
/// 发起人直属上级
|
||||
/// </summary>
|
||||
public const string RUNTIME_PARENT = "RUNTIME_PARENT";
|
||||
|
||||
public const string RUNTIME_SPECIAL_ROLE = "RUNTIME_SPECIAL_ROLE"; //运行时指定角色
|
||||
public const string RUNTIME_SPECIAL_USER = "RUNTIME_SPECIAL_USER"; //运行时指定用户
|
||||
|
@ -47,12 +47,14 @@ namespace OpenAuth.App
|
||||
private IServiceProvider _serviceProvider;
|
||||
private SysMessageApp _messageApp;
|
||||
private DbExtension _dbExtension;
|
||||
private UserManagerApp _userManagerApp;
|
||||
private OrgManagerApp _orgManagerApp;
|
||||
|
||||
public FlowInstanceApp(IUnitWork<OpenAuthDBContext> unitWork,
|
||||
IRepository<FlowInstance, OpenAuthDBContext> repository
|
||||
, RevelanceManagerApp app, FlowSchemeApp flowSchemeApp, FormApp formApp,
|
||||
IHttpClientFactory httpClientFactory, IAuth auth, IServiceProvider serviceProvider,
|
||||
SysMessageApp messageApp, DbExtension dbExtension)
|
||||
SysMessageApp messageApp, DbExtension dbExtension, UserManagerApp userManagerApp, OrgManagerApp orgManagerApp)
|
||||
: base(unitWork, repository, auth)
|
||||
{
|
||||
_revelanceApp = app;
|
||||
@ -62,6 +64,8 @@ namespace OpenAuth.App
|
||||
_serviceProvider = serviceProvider;
|
||||
_messageApp = messageApp;
|
||||
_dbExtension = dbExtension;
|
||||
_userManagerApp = userManagerApp;
|
||||
_orgManagerApp = orgManagerApp;
|
||||
}
|
||||
|
||||
#region 流程处理API
|
||||
@ -115,7 +119,10 @@ namespace OpenAuth.App
|
||||
flowInstance.ActivityName = wfruntime.nextNode.name;
|
||||
flowInstance.PreviousId = wfruntime.currentNodeId;
|
||||
flowInstance.CreateUserId = user.User.Id;
|
||||
addFlowInstanceReq.CreateUserId = user.User.Id;
|
||||
flowInstance.CreateUserName = user.User.Account;
|
||||
addFlowInstanceReq.CreateUserName = user.User.Account;
|
||||
|
||||
flowInstance.MakerList =
|
||||
(wfruntime.GetNextNodeType() != 4 ? GetNextMakers(wfruntime, addFlowInstanceReq) : "");
|
||||
flowInstance.IsFinish = (wfruntime.GetNextNodeType() == 4
|
||||
@ -572,6 +579,41 @@ namespace OpenAuth.App
|
||||
|
||||
makerList = GenericHelpers.ArrayToString(request.NodeDesignates, makerList);
|
||||
}
|
||||
else if (wfruntime.nextNode.setInfo.NodeDesignate == Setinfo.RUNTIME_PARENT)
|
||||
{
|
||||
//如果是发起人直属上级
|
||||
if (wfruntime.nextNode.setInfo.NodeDesignate != request.NodeDesignateType)
|
||||
{
|
||||
throw new Exception("前端提交的节点权限类型异常,请检查流程");
|
||||
}
|
||||
|
||||
string createUserId = string.Empty;
|
||||
if (wfruntime.currentNode.type == FlowNode.START) //如果是创建流程
|
||||
{
|
||||
var user = _auth.GetCurrentUser().User;
|
||||
createUserId = user.Id;
|
||||
}
|
||||
else //如果是审批
|
||||
{
|
||||
FlowInstance flowInstance = Get(wfruntime.flowInstanceId);
|
||||
createUserId = flowInstance.CreateUserId;
|
||||
}
|
||||
|
||||
var parentId = _userManagerApp.GetParent(createUserId);
|
||||
makerList = GenericHelpers.ArrayToString(new[]{parentId}, makerList);
|
||||
}
|
||||
else if (wfruntime.nextNode.setInfo.NodeDesignate == Setinfo.RUNTIME_CHAIRMAN)
|
||||
{
|
||||
//如果是发起人的部门负责人
|
||||
if (wfruntime.nextNode.setInfo.NodeDesignate != request.NodeDesignateType)
|
||||
{
|
||||
throw new Exception("前端提交的节点权限类型异常,请检查流程");
|
||||
}
|
||||
|
||||
FlowInstance flowInstance = Get(wfruntime.flowInstanceId);
|
||||
var chairmanIds = _orgManagerApp.GetChairmanId(wfruntime.nextNode.setInfo.NodeDesignateData.orgs);
|
||||
makerList = GenericHelpers.ArrayToString(chairmanIds, makerList);
|
||||
}
|
||||
else
|
||||
{
|
||||
makerList = GetNodeMarkers(wfruntime.nextNode);
|
||||
|
@ -95,5 +95,10 @@ namespace OpenAuth.App
|
||||
{
|
||||
_revelanceApp = revelanceApp;
|
||||
}
|
||||
|
||||
public string[] GetChairmanId(string[] orgIds)
|
||||
{
|
||||
return Repository.Find(u => orgIds.Contains(u.Id)&&u.ChairmanId!= null).Select(u => u.ChairmanId).ToArray();
|
||||
}
|
||||
}
|
||||
}
|
@ -287,5 +287,19 @@ namespace OpenAuth.App
|
||||
Sex = request.Sex
|
||||
});
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取用户的直属上级ID
|
||||
/// </summary>
|
||||
/// <param name="userid">用户ID</param>
|
||||
/// <returns></returns>
|
||||
public string GetParent(string userid)
|
||||
{
|
||||
if (userid == Guid.Empty.ToString())
|
||||
{
|
||||
throw new Exception("超级管理员没有直属上级,请检查配置");
|
||||
}
|
||||
return Repository.FirstOrDefault(u => u.Id == userid).ParentId;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user