1.0正式版

修复beta版未能解决的BUG;
全面修改页面结构,采用面向对象JS开发;
优化进出库管理示例,对资源的应用更加清晰;
完整的SQL初始数据;
This commit is contained in:
yubaolee
2016-04-21 15:48:38 +08:00
parent 2d13810c82
commit 2de1fb6433
13 changed files with 423 additions and 82 deletions

View File

@@ -17,5 +17,12 @@ namespace OpenAuth.Domain.Interface
/// </summary>
/// <param name="orgId">部门ID</param>
IEnumerable<Org> GetSubOrgs(int orgId);
/// <summary>
/// 获取包括自己在内的全部子部门
/// </summary>
/// <param name="orgId">The org identifier.</param>
/// <returns>IEnumerable&lt;Org&gt;.</returns>
IEnumerable<Org> GetSubWithOwn(int orgId);
}
}

View File

@@ -64,6 +64,7 @@
<Compile Include="Resource.cs" />
<Compile Include="Role.cs" />
<Compile Include="Service\AuthoriseService.cs" />
<Compile Include="Service\StockManagerService.cs" />
<Compile Include="Stock.cs" />
<Compile Include="User.cs" />
<Compile Include="UserCfg.cs" />

View File

@@ -109,6 +109,7 @@ namespace OpenAuth.Domain.Service
}
else
{
_user = _repository.FindSingle(u => u.Account == name);
//用户角色
var userRoleIds = _relevanceRepository.Find(u => u.FirstId == _user.Id && u.Key == "UserRole").Select(u => u.SecondId).ToList();

View File

@@ -0,0 +1,91 @@
using System;
using System.Linq;
using System.Linq.Expressions;
using OpenAuth.Domain.Interface;
namespace OpenAuth.Domain.Service
{
/// <summary>
/// 领域服务
/// <para>进出库管理服务</para>
/// </summary>
public class StockManagerService
{
private IStockRepository _repository;
private IOrgRepository _orgRepository;
private AuthoriseService _authoriseService;
public StockManagerService(IStockRepository repository,
IOrgRepository orgRepository, AuthoriseService service)
{
_repository = repository;
_orgRepository = orgRepository;
_authoriseService = service;
}
/// <summary>
/// 根据部门ID得到进出库信息
/// </summary>
public dynamic Load(string username, int orgId, int pageindex, int pagesize)
{
_authoriseService.GetUserAccessed(username);
if (_authoriseService.Orgs.Count == 0) //用户没有任何可见机构
{
return new
{
total = 0,
pageCurrent = pageindex
};
}
var orgIds = _authoriseService.Orgs.Select(u => u.Id).ToArray(); //用户可访问的机构ID
var orgs = _orgRepository.GetSubWithOwn(orgId) //点击的节点与用户可访问的机构合并
.Where(u => orgIds.Contains(u.Id))
.Select(u => u.Id).ToArray();
var keys = _authoriseService.Resources.Select(r => r.Key); //用户可访问的资源的KEY列表
//由于库存Stock表开始没有设计资源有关的字段暂时用User字段代替
Expression<Func<Stock, bool>> exp = u => orgs.Contains(u.OrgId) && (u.User == "" || keys.Contains(u.User));
var stocks = _repository.Find(pageindex, pagesize, "", exp);
int total = _repository.GetCount(exp);
return new
{
total = total,
list = stocks,
pageCurrent = pageindex
};
}
public Stock Find(int id)
{
var stock = _repository.FindSingle(u => u.Id == id);
if (stock == null) return new Stock();
return stock;
}
public void Delete(int id)
{
_repository.Delete(id);
}
public void AddOrUpdate(Stock stock)
{
if (stock.Id == 0)
{
_repository.Add(stock);
}
else
{
_repository.Update(stock);
}
}
}
}