OpenAuth.Net/OpenAuth.Domain/Service/ModuleEleManService.cs

103 lines
3.3 KiB
C#
Raw Normal View History

2016-05-27 13:35:52 +08:00
// ***********************************************************************
// Assembly : OpenAuth.Domain
// Author : yubaolee
// Created : 05-27-2016
//
// Last Modified By : yubaolee
// Last Modified On : 05-27-2016
// Contact : Microsoft
// File: ModuleEleManService.cs
// ***********************************************************************
using System;
2016-05-27 13:35:52 +08:00
using System.Collections.Generic;
using System.Linq;
using OpenAuth.Domain.Interface;
namespace OpenAuth.Domain.Service
{
/// <summary>
/// 领域服务
/// <para>模块菜单管理服务</para>
/// </summary>
public class ModuleEleManService
{
private readonly IUnitWork _unitWork;
2016-10-17 00:20:55 +08:00
private readonly AuthoriseFactory _factory;
2016-05-27 13:35:52 +08:00
2016-10-17 00:20:55 +08:00
public ModuleEleManService(IUnitWork unitWork, AuthoriseFactory authoriseService)
2016-05-27 13:35:52 +08:00
{
_unitWork = unitWork;
2016-10-17 00:20:55 +08:00
_factory = authoriseService;
2016-05-27 13:35:52 +08:00
}
public void AddOrUpdate(ModuleElement model)
{
2017-10-11 16:19:34 +08:00
if (model.Id == string.Empty)
2016-05-27 13:35:52 +08:00
{
_unitWork.Add(model);
}
else
{
_unitWork.Update(model);
}
2016-07-14 00:26:51 +08:00
_unitWork.Save();
2016-05-27 13:35:52 +08:00
}
2017-10-11 16:19:34 +08:00
public IEnumerable<ModuleElement> LoadByModuleId(string loginuser, string id)
2016-05-27 13:35:52 +08:00
{
2016-10-17 00:20:55 +08:00
var service = _factory.Create(loginuser);
if (!service.GetModuleElementsQuery().Any()) //用户没有任何资源
2016-05-27 13:35:52 +08:00
{
return new List<ModuleElement>();
}
2016-10-17 00:20:55 +08:00
var modules = service.GetModuleElementsQuery().Where(u => u.ModuleId == id).OrderBy(u =>u.Sort);
2016-05-27 13:35:52 +08:00
return modules;
}
/// <summary>
/// 获取带有授权状态的菜单列表
/// </summary>
/// <param name="username">当前登录的操作人</param>
/// <param name="accessType">授权类型当前有RoleElement/UserElement</param>
/// <param name="firstId">
/// 当为RoleElement时表示RoleId
/// 当为UserElement时表示UserId
/// </param>
/// <param name="moduleId">模块ID</param>
2017-10-11 16:19:34 +08:00
public List<dynamic> LoadWithAccess(string username, string accessType, string firstId, string moduleId)
2016-05-27 13:35:52 +08:00
{
var listVms = new List<dynamic>();
2016-10-17 00:20:55 +08:00
var service = _factory.Create(username);
if (!service.GetModuleElementsQuery().Any()) //用户没有任何资源
2016-05-27 13:35:52 +08:00
{
return listVms;
}
2017-10-11 16:19:34 +08:00
if (moduleId == string.Empty) return listVms;
2016-10-17 00:20:55 +08:00
foreach (var element in service.GetModuleElementsQuery().Where(u =>u.ModuleId ==moduleId))
2016-05-27 13:35:52 +08:00
{
var accessed = _unitWork.FindSingle<Relevance>(u =>u.Key == accessType
&& u.FirstId == firstId && u.SecondId == element.Id);
var vm = new
{
Id = element.Id,
Name = element.Name,
ModuleId = element.ModuleId,
DomId = element.DomId,
2016-10-20 16:47:35 +08:00
Checked = accessed != null
2016-05-27 13:35:52 +08:00
};
listVms.Add(vm);
}
return listVms;
}
2017-10-11 16:19:34 +08:00
public void Delete(string[] objs)
2016-05-27 13:35:52 +08:00
{
2016-10-18 11:11:51 +08:00
_unitWork.Delete<ModuleElement>(u =>objs.Contains(u.Id));
2016-05-27 13:35:52 +08:00
}
}
}