using LeaRun.Data.Repository; using System.Collections.Generic; using System.Linq; using System; using LeaRun.Application.IService.AuthorizeManage; using LeaRun.Application.Entity.BaseManage; using LeaRun.Application.Entity.AuthorizeManage; using LeaRun.Application.Code; namespace LeaRun.Application.Service.BaseManage { /// /// 版 本 /// Copyright (c) 2013-2016 上海力软信息技术有限公司 /// 创建人:佘赐雄 /// 日 期:2015.11.5 22:35 /// 描 述:权限配置管理(角色、岗位、职位、用户组、用户) /// public class PermissionService : RepositoryFactory, IPermissionService { #region 获取数据 /// /// 获取成员列表 /// /// 对象Id /// public IEnumerable GetMemberList(string objectId) { return this.BaseRepository().IQueryable(t => t.ObjectId == objectId).OrderByDescending(t => t.CreateDate).ToList(); } /// /// 获取对象列表 /// /// /// public IEnumerable GetObjectList(string userId) { return this.BaseRepository().IQueryable(t => t.UserId == userId).OrderByDescending(t => t.CreateDate).ToList(); } /// /// 获取功能列表 /// /// 对象Id /// public IEnumerable GetModuleList(string objectId) { return this.BaseRepository().IQueryable(t => t.ObjectId == objectId && t.ItemType == 1).ToList(); } /// /// 获取功能列表 /// /// 对象Id /// public IEnumerable GetModuleListN(string objectId) { return this.BaseRepository().IQueryable(t => t.ObjectId == objectId && t.ItemType == 1).ToList(); } /// /// 获取按钮列表 /// /// 对象Id /// public IEnumerable GetModuleButtonList(string objectId) { return this.BaseRepository().IQueryable(t => t.ObjectId == objectId && t.ItemType == 2).ToList(); } /// /// 获取视图列表 /// /// 对象Id /// public IEnumerable GetModuleColumnList(string objectId) { return this.BaseRepository().IQueryable(t => t.ObjectId == objectId && t.ItemType == 3).ToList(); } /// /// 获取数据权限列表 /// /// 对象Id /// public IEnumerable GetAuthorizeDataList(string objectId) { return this.BaseRepository().IQueryable(t => t.ObjectId == objectId).OrderBy(t => t.SortCode).ToList(); } #endregion #region 提交数据 /// /// 添加成员 /// /// 权限分类 /// 对象Id /// 成员Id public void SaveMember(AuthorizeTypeEnum authorizeType, string objectId, string[] userIds) { IRepository db = new RepositoryFactory().BaseRepository().BeginTrans(); try { db.Delete(t => t.ObjectId == objectId && t.IsDefault == 0); int SortCode = 1; foreach (string item in userIds) { UserRelationEntity userRelationEntity = new UserRelationEntity(); userRelationEntity.Create(); userRelationEntity.Category = (int)authorizeType; userRelationEntity.ObjectId = objectId; userRelationEntity.UserId = item; userRelationEntity.SortCode = SortCode++; db.Insert(userRelationEntity); } db.Commit(); } catch (Exception) { db.Rollback(); throw; } } /// /// 添加授权 /// /// 权限分类 /// 对象Id /// 功能Id /// 按钮Id /// 视图Id /// 数据权限 public void SaveAuthorize(AuthorizeTypeEnum authorizeType, string objectId, string[] moduleIds, string[] moduleButtonIds, string[] moduleColumnIds, IEnumerable authorizeDataList) { IRepository db = new RepositoryFactory().BaseRepository().BeginTrans(); try { db.Delete(t => t.ObjectId == objectId); #region 功能 int SortCode = 1; foreach (string item in moduleIds) { AuthorizeEntity authorizeEntity = new AuthorizeEntity(); authorizeEntity.Create(); authorizeEntity.Category = (int)authorizeType; authorizeEntity.ObjectId = objectId; authorizeEntity.ItemType = 1; authorizeEntity.ItemId = item; authorizeEntity.SortCode = SortCode++; db.Insert(authorizeEntity); } #endregion #region 按钮 SortCode = 1; foreach (string item in moduleButtonIds) { AuthorizeEntity authorizeEntity = new AuthorizeEntity(); authorizeEntity.Create(); authorizeEntity.Category = (int)authorizeType; authorizeEntity.ObjectId = objectId; authorizeEntity.ItemType = 2; authorizeEntity.ItemId = item; authorizeEntity.SortCode = SortCode++; db.Insert(authorizeEntity); } #endregion #region 视图 SortCode = 1; foreach (string item in moduleColumnIds) { AuthorizeEntity authorizeEntity = new AuthorizeEntity(); authorizeEntity.Create(); authorizeEntity.Category = (int)authorizeType; authorizeEntity.ObjectId = objectId; authorizeEntity.ItemType = 3; authorizeEntity.ItemId = item; authorizeEntity.SortCode = SortCode++; db.Insert(authorizeEntity); } #endregion #region 数据权限 SortCode = 1; db.Delete(objectId, "ObjectId"); int index = 0; foreach (AuthorizeDataEntity authorizeDataEntity in authorizeDataList) { authorizeDataEntity.Create(); authorizeDataEntity.Category = (int)authorizeType; authorizeDataEntity.ObjectId = objectId; // authorizeDataEntity.Module = "Department"; authorizeDataEntity.SortCode = SortCode++; db.Insert(authorizeDataEntity); index++; } #endregion db.Commit(); } catch (Exception) { db.Rollback(); throw; } } #endregion } }