diff --git a/OpenAuth.App/UserManager/Request/UpdateUserReq.cs b/OpenAuth.App/UserManager/Request/UpdateUserReq.cs
index 11a8eb37..dd04bba7 100644
--- a/OpenAuth.App/UserManager/Request/UpdateUserReq.cs
+++ b/OpenAuth.App/UserManager/Request/UpdateUserReq.cs
@@ -47,6 +47,11 @@ namespace OpenAuth.App.Request
///
///
public int Status { get; set; }
+
+ ///
+ /// 直接上级
+ ///
+ public string ParentId { get; set; }
///
diff --git a/OpenAuth.App/UserManager/Response/UserView.cs b/OpenAuth.App/UserManager/Response/UserView.cs
index 5540b8be..90d7605b 100644
--- a/OpenAuth.App/UserManager/Response/UserView.cs
+++ b/OpenAuth.App/UserManager/Response/UserView.cs
@@ -44,6 +44,11 @@ namespace OpenAuth.App.Response
///
///
public int Type { get; set; }
+
+ ///
+ /// 直接上级
+ ///
+ public string ParentId { get; set; }
diff --git a/OpenAuth.App/UserManager/UserManagerApp.cs b/OpenAuth.App/UserManager/UserManagerApp.cs
index ad7673ca..c8f04df2 100644
--- a/OpenAuth.App/UserManager/UserManagerApp.cs
+++ b/OpenAuth.App/UserManager/UserManagerApp.cs
@@ -12,27 +12,22 @@ using OpenAuth.App.Response;
using OpenAuth.Repository;
using OpenAuth.Repository.Domain;
using OpenAuth.Repository.Interface;
-
-
namespace OpenAuth.App
{
public class UserManagerApp : BaseStringApp
{
private RevelanceManagerApp _revelanceApp;
private OrgManagerApp _orgManagerApp;
-
public UserManagerApp(IUnitWork unitWork, IRepository repository,
RevelanceManagerApp app,IAuth auth, OrgManagerApp orgManagerApp) : base(unitWork, repository, auth)
{
_revelanceApp = app;
_orgManagerApp = orgManagerApp;
}
-
public User GetByAccount(string account)
{
return Repository.FirstOrDefault(u => u.Account == account);
}
-
///
/// 加载当前登录用户可访问的一个部门及子部门全部用户
/// 如果请求的request.OrgId为空,则可以获取到已被删除机构的用户(即:没有分配任何机构的用户)
@@ -40,13 +35,11 @@ namespace OpenAuth.App
public async Task Load(QueryUserListReq request)
{
var loginUser = _auth.GetCurrentUser();
-
IQueryable query = UnitWork.Find(null);
if (!string.IsNullOrEmpty(request.key))
{
query = UnitWork.Find(u => u.Name.Contains(request.key) || u.Account.Contains(request.key));
}
-
var userOrgs = from user in query
join relevance in UnitWork.Find(u => u.Key == "UserOrg")
on user.Id equals relevance.FirstId into temp
@@ -66,33 +59,27 @@ namespace OpenAuth.App
user.CreateTime,
user.TypeId,
user.TypeName,
+ user.ParentId,
r.Key,
r.SecondId,
OrgId = o.Id,
OrgName = o.Name
};
-
//如果请求的orgId不为空
if (!string.IsNullOrEmpty(request.orgId))
{
var org = loginUser.Orgs.SingleOrDefault(u => u.Id == request.orgId);
var cascadeId = org.CascadeId;
-
var orgIds = loginUser.Orgs.Where(u => u.CascadeId.Contains(cascadeId)).Select(u => u.Id).ToArray();
-
//只获取机构里面的用户
userOrgs = userOrgs.Where(u => u.Key == Define.USERORG && orgIds.Contains(u.OrgId));
}
else //todo:如果请求的orgId为空,即为跟节点,这时可以额外获取到机构已经被删除的用户,从而进行机构分配。可以根据自己需求进行调整
{
var orgIds = loginUser.Orgs.Select(u => u.Id).ToArray();
-
//获取用户可以访问的机构的用户和没有任何机构关联的用户(机构被删除后,没有删除这里面的关联关系)
userOrgs = userOrgs.Where(u => (u.Key == Define.USERORG && orgIds.Contains(u.OrgId)) || (u.OrgId == null));
}
-
-
-
var userViews = (await userOrgs.ToListAsync()).GroupBy(b => b.Account)
.Select(u =>new UserView
{
@@ -101,13 +88,12 @@ namespace OpenAuth.App
Name = u.First().Name,
Sex = u.First().Sex,
Status = u.First().Status,
+ ParentId = u.First().ParentId,
CreateTime = u.First().CreateTime,
CreateUser = u.First().CreateId,
OrganizationIds = string.Join(",", u.Select(x=>x.OrgId))
,Organizations = string.Join(",", u.Select(x=>x.OrgName))
-
});
-
return new TableData
{
count =userViews.Count(),
@@ -116,7 +102,6 @@ namespace OpenAuth.App
.Take(request.limit),
};
}
-
///
/// 获取所有的用户
/// 为了控制权限,通常只用于流程实例选择执行角色,其他地方请使用Load
@@ -128,7 +113,6 @@ namespace OpenAuth.App
{
query = UnitWork.Find(u => u.Name.Contains(request.key) || u.Account.Contains(request.key));
}
-
var userOrgs = from user in query
join relevance in UnitWork.Find(u => u.Key == "UserOrg")
on user.Id equals relevance.FirstId into temp
@@ -153,13 +137,11 @@ namespace OpenAuth.App
OrgId = o.Id,
OrgName = o.Name
};
-
//如果请求的orgId不为空
if (!string.IsNullOrEmpty(request.orgId))
{
userOrgs = userOrgs.Where(u => u.Key == Define.USERORG && u.OrgId == request.orgId);
}
-
var userViews = (await userOrgs.ToListAsync()).GroupBy(b => b.Account).Select(u =>new UserView
{
Id = u.First().Id,
@@ -171,9 +153,7 @@ namespace OpenAuth.App
CreateUser = u.First().CreateId,
OrganizationIds = string.Join(",", u.Select(x=>x.OrgId))
,Organizations = string.Join(",", u.Select(x=>x.OrgName))
-
});
-
return new TableResp()
{
count = userViews.Count(),
@@ -182,16 +162,13 @@ namespace OpenAuth.App
.Take(request.limit).ToList()
};
}
-
public void AddOrUpdate(UpdateUserReq request)
{
request.ValidationEntity(u => new {u.Account,u.Name, u.OrganizationIds});
-
if (string.IsNullOrEmpty(request.OrganizationIds))
throw new Exception("请为用户分配机构");
User requser = request;
requser.CreateId = _auth.GetCurrentUser().User.Id;
-
UnitWork.ExecuteWithTransaction(() =>
{
if (string.IsNullOrEmpty(request.Id))
@@ -200,14 +177,11 @@ namespace OpenAuth.App
{
throw new Exception("用户账号已存在");
}
-
if (string.IsNullOrEmpty(requser.Password))
{
requser.Password = requser.Account; //如果客户端没提供密码,默认密码同账号
}
-
requser.CreateTime = DateTime.Now;
-
UnitWork.Add(requser);
request.Id = requser.Id; //要把保存后的ID存入view
}
@@ -219,7 +193,8 @@ namespace OpenAuth.App
BizCode = requser.BizCode,
Name = requser.Name,
Sex = requser.Sex,
- Status = requser.Status
+ Status = requser.Status,
+ ParentId = request.ParentId
});
if (!string.IsNullOrEmpty(requser.Password)) //密码为空的时候,不做修改
{
@@ -229,16 +204,12 @@ namespace OpenAuth.App
});
}
}
-
UnitWork.Save();
string[] orgIds = request.OrganizationIds.Split(',').ToArray();
-
_revelanceApp.DeleteBy(Define.USERORG, requser.Id);
_revelanceApp.Assign(Define.USERORG, orgIds.ToLookup(u => requser.Id));
});
-
}
-
///
/// 删除用户,包含用户与组织关系、用户与角色关系
///
@@ -252,10 +223,7 @@ namespace OpenAuth.App
UnitWork.Delete(u => ids.Contains(u.Id));
UnitWork.Save();
});
-
}
-
-
///
/// 修改密码
///
@@ -267,8 +235,6 @@ namespace OpenAuth.App
Password = request.Password
});
}
-
-
///
/// 获取指定角色包含的用户列表
///
@@ -281,14 +247,12 @@ namespace OpenAuth.App
join user in UnitWork.Find(null) on userRole.FirstId equals user.Id into temp
from c in temp.Where(u =>u.Id != null)
select c;
-
return new TableData
{
count =await users.CountAsync(),
data =await users.Skip((request.page - 1) * request.limit).Take(request.limit).ToListAsync()
};
}
-
///
/// 获取指定机构包含的用户列表
///
@@ -301,14 +265,12 @@ namespace OpenAuth.App
join user in UnitWork.Find(null) on userOrg.FirstId equals user.Id into temp
from c in temp.Where(u =>u.Id != null)
select c;
-
return new TableData
{
count =await users.CountAsync(),
data =await users.Skip((request.page - 1) * request.limit).Take(request.limit).ToListAsync()
};
}
-
///
/// 修改用户资料
///
@@ -319,7 +281,6 @@ namespace OpenAuth.App
{
throw new Exception("不能修改超级管理员信息");
}
-
Repository.Update(u => u.Account == request.Account, user => new User
{
Name = request.Name,
diff --git a/OpenAuth.Repository/Domain/Org.cs b/OpenAuth.Repository/Domain/Org.cs
index a95e7175..5e58212e 100644
--- a/OpenAuth.Repository/Domain/Org.cs
+++ b/OpenAuth.Repository/Domain/Org.cs
@@ -99,6 +99,12 @@ namespace OpenAuth.Repository.Domain
///
[Description("分类ID")]
public string TypeId { get; set; }
+
+ ///
+ /// 负责人ID
+ ///
+ [Description("负责人ID")]
+ public string ChairmanId { get; set; }
}
}
\ No newline at end of file
diff --git a/OpenAuth.Repository/Domain/User.cs b/OpenAuth.Repository/Domain/User.cs
index 5636da2a..70e8885e 100644
--- a/OpenAuth.Repository/Domain/User.cs
+++ b/OpenAuth.Repository/Domain/User.cs
@@ -84,6 +84,12 @@ namespace OpenAuth.Repository.Domain
///
[Description("分类ID")]
public string TypeId { get; set; }
+
+ ///
+ /// 直接上级
+ ///
+ [Description("直接上级")]
+ public string ParentId { get; set; }
}
}
\ No newline at end of file