public static List <Dto.DiskFile.List> SelectByParentId(int parentId, string searchText, int diskTypeId = 0, int userId = 0) { using (var db = new XkSystem.Models.DbContext()) { var tbDiskType = DiskTypeController.SelectInfo(diskTypeId); bool isPublic = tbDiskType != null && tbDiskType.DiskType == Code.EnumHelper.DiskType.Public; if (parentId == 0) { var tb = (from t in db.Table <Disk.Entity.tbDiskFolder>() where (isPublic || t.tbSysUser.Id == Code.Common.UserId) && t.tbDiskFolderParent == null && !t.DiskFolderName.Equals("公开文件夹") && (String.IsNullOrEmpty(searchText) || t.DiskFolderName.Contains(searchText)) orderby t.No select new Dto.DiskFile.List { Id = t.Id, FileType = "Folder", DiskTypeId = diskTypeId == 0 ? t.tbDiskType.Id : diskTypeId, UserId = userId, FileTitle = t.DiskFolderName, DiskPermit = t.DiskPermit }).ToList(); return(tb); } else { var tb = (from t in db.Table <Disk.Entity.tbDiskFolder>() where (isPublic || t.tbSysUser.Id == Code.Common.UserId) && t.tbDiskFolderParent.Id == parentId && (String.IsNullOrEmpty(searchText) || t.DiskFolderName.Contains(searchText)) orderby t.No select new Dto.DiskFile.List { Id = t.Id, FileType = "Folder", DiskTypeId = diskTypeId == 0 ? t.tbDiskType.Id : diskTypeId, UserId = userId, FileTitle = t.DiskFolderName, DiskPermit = t.DiskPermit }).ToList(); return(tb); } } }
public ActionResult List() { using (var db = new XkSystem.Models.DbContext()) { var vm = new Models.DiskFile.List(); var tbDiskType = DiskTypeController.SelectInfo(vm.DiskTypeId); #region 文件夹路径 if (vm.UserId == 0) { vm.FolderPath = DiskFolderController.SelectFolderPath(vm.FolderId); } else { if (tbDiskType != null && tbDiskType.DiskType == Code.EnumHelper.DiskType.Public) { var tbSysUser = db.Set <Sys.Entity.tbSysUser>().Find(vm.UserId); var tbDiskFolder = (from t in db.Table <Disk.Entity.tbDiskFolder>() where t.DiskFolderName == "教师共享文件夹" select t).FirstOrDefault(); vm.FolderPath = DiskFolderController.SelectFolderPath(tbDiskFolder.Id); vm.FolderPath.Add(new Dto.DiskFolder.Info { DiskFolderName = tbSysUser.UserName, DiskTypeId = vm.DiskTypeId, UserId = tbSysUser.Id, ParentId = 0 }); } if (vm.FolderId != 0) { vm.FolderPath = vm.FolderPath.Union(DiskFolderController.SelectFolderPath(vm.FolderId, vm.DiskTypeId, vm.UserId)).ToList(); } } #endregion #region 文件夹 if (vm.FolderId == 0) { if (vm.DiskTypeId == 0) { // /Disk/DiskFile/List vm.DiskFileList = DiskFolderController.SelectPublicRootFolder(); vm.DiskFileList = vm.DiskFileList.Union(DiskFolderController.SelectByParentId(vm.FolderId, vm.SearchText, 0, Code.Common.UserId)).ToList(); } if (vm.UserId != 0) { vm.DiskFileList = DiskFolderController.SelectByDiskPermitPublic(vm.UserId, vm.DiskTypeId); vm.DiskFileList = vm.DiskFileList.Union(DiskFolderController.SelectByDiskPermitAuthorize(vm.UserId, vm.DiskTypeId)).ToList(); } } else { if (tbDiskType != null && tbDiskType.DiskType == Code.EnumHelper.DiskType.Public) { // 管理员查看全部 if (Code.Common.UserType == Code.EnumHelper.SysUserType.Administrator) { vm.DiskFileList = DiskFolderController.SelectPublicFolderByParentId(vm.FolderId); } else { // 学校共享文件夹-共有 vm.DiskFileList = DiskFolderController.SelectPublicFolderByParentId(vm.FolderId, Code.EnumHelper.DiskPermit.Public); // 学校共享文件夹-授权 var tbDiskFolderAuthorize = DiskFolderController.SelectPublicFolderAuthorizeByParentId(vm.FolderId, Code.EnumHelper.DiskPermit.Public); foreach (Dto.DiskFile.List diskFile in tbDiskFolderAuthorize) { if (!vm.DiskFileList.Any(t => t.FileTitle.Equals(diskFile.FileTitle))) { vm.DiskFileList.Add(diskFile); } } } var folder = (from t in db.Table <Disk.Entity.tbDiskFolder>() where t.Id == vm.FolderId select t).FirstOrDefault(); if (folder != null) { if (folder.DiskFolderName.Equals("教师共享文件夹")) { vm.DiskFileList = vm.DiskFileList.Union(DiskFolderController.SelectByPublic(Code.EnumHelper.DiskType.Private, vm.DiskTypeId)).ToList(); foreach (Dto.DiskFile.List diskFile in DiskFolderController.SelectByAuthorize(Code.EnumHelper.DiskType.Private, vm.DiskTypeId)) { if (!vm.DiskFileList.Any(t => t.FileTitle.Equals(diskFile.FileTitle))) { vm.DiskFileList.Add(diskFile); } } } else if (!folder.DiskFolderName.Equals("公开文件夹") && !(folder.DiskFolderName.Equals("学校共享文件夹"))) { vm.DiskFileList = DiskFolderController.SelectByParentId(vm.FolderId, vm.SearchText, vm.DiskTypeId, vm.UserId); } } } else { vm.DiskFileList = DiskFolderController.SelectByParentId(vm.FolderId, vm.SearchText); } } #endregion #region 文件 var tbDiskFile = from t in db.Table <Disk.Entity.tbDiskFile>() select t; if (vm.FolderId != 0) { tbDiskFile = tbDiskFile.Where(t => t.tbDiskFolder.Id == vm.FolderId); } else { tbDiskFile = tbDiskFile.Where(t => t.tbDiskFolder == null); //if (vm.UserId != 0) //{ // tbDiskFile = tbDiskFile.Where(t => t.tbSysUser.Id == vm.UserId); //} //else //{ tbDiskFile = tbDiskFile.Where(t => t.tbSysUser.Id == Code.Common.UserId); //} } if (!String.IsNullOrWhiteSpace(vm.SearchText)) { tbDiskFile = tbDiskFile.Where(t => t.FileTitle.Contains(vm.SearchText)); } int diskTypeId = DiskTypeController.SelectByEnumDiskType(Code.EnumHelper.DiskType.Private).Id; var tb = (from t in tbDiskFile orderby t.Id descending select new Dto.DiskFile.List { Id = t.Id, DiskTypeId = t.tbDiskFolder == null ? diskTypeId : t.tbDiskFolder.tbDiskType.Id, FileType = "File", FileTitle = t.FileTitle, FileLength = t.FileLength, InputDate = t.InputDate, UserId = t.tbSysUser.Id, UserName = t.tbSysUser.UserName }).ToList(); vm.DiskFileList = vm.DiskFileList.Union(tb).ToList(); #endregion #region 文件夹文件权限 // 管理权限 vm.AdminFolderIds = DiskFolderController.SelectOwnFolderIdsByUserId(Code.Common.UserId); if (Code.Common.UserType == Code.EnumHelper.SysUserType.Administrator) { vm.AdminFolderIds = vm.AdminFolderIds.Union(DiskFolderController.SelectDiskPermitPublicFolderIdsByUserId(Code.EnumHelper.DiskType.Public, Code.Common.UserId)).ToList(); } vm.AdminFolderIds = vm.AdminFolderIds.Union(DiskFolderController.SelectDiskPermitPublicFolderIdsByUserId(Code.EnumHelper.DiskType.Private, Code.Common.UserId)).ToList(); vm.AdminFolderIds = vm.AdminFolderIds.Union(DiskPowerController.SelectAdminFolderIds(Code.Common.UserId)).ToList(); // 查看权限 vm.ViewFolderIds = DiskFolderController.SelectOwnFolderIdsByUserId(Code.Common.UserId); vm.ViewFolderIds = vm.ViewFolderIds.Union(DiskFolderController.SelectDiskPermitPublicFolderIdsByUserId(Code.EnumHelper.DiskType.Public, Code.Common.UserId)).ToList(); vm.ViewFolderIds = vm.ViewFolderIds.Union(DiskFolderController.SelectDiskPermitPublicFolderIdsByUserId(Code.EnumHelper.DiskType.Private, Code.Common.UserId)).ToList(); vm.ViewFolderIds = vm.ViewFolderIds.Union(DiskPowerController.SelectViewFolderIds(Code.Common.UserId)).ToList(); #endregion #region 文件权限 vm.AdminFileIds = DiskFileController.SelectDescendantsByFolder(vm.AdminFolderIds).Select(t => t.Id).ToList(); vm.ViewFileIds = DiskFileController.SelectDescendantsByFolder(vm.ViewFolderIds).Select(t => t.Id).ToList(); var MyRootFileIds = (from t in db.Table <Disk.Entity.tbDiskFile>() where t.tbDiskFolder == null && t.tbSysUser.Id == Code.Common.UserId select t.Id).ToList(); vm.AdminFileIds = vm.AdminFileIds.Union(MyRootFileIds).ToList(); vm.ViewFileIds = vm.ViewFileIds.Union(MyRootFileIds).ToList(); #endregion return(View(vm)); } }
public ActionResult Edit(int id = 0) { using (var db = new XkSystem.Models.DbContext()) { var vm = new Models.DiskFolder.Edit(); var tbDiskType = DiskTypeController.SelectInfo(vm.DiskTypeId); if (tbDiskType != null && tbDiskType.DiskType == Code.EnumHelper.DiskType.Public) { if (Code.Common.UserType != Code.EnumHelper.SysUserType.Administrator) { return(Content("只有管理员才可以新建公开文件夹!")); } else { // 管理员只能新建【学校共享文件夹】的子文件夹 var tbDiskFolder = (from t in db.Table <Disk.Entity.tbDiskFolder>() where t.DiskFolderName.Equals("学校共享文件夹") && t.tbDiskType.DiskType == Code.EnumHelper.DiskType.Public select t).FirstOrDefault(); if (tbDiskFolder != null) { List <int> ids = new List <int>(); ids.Add(tbDiskFolder.Id); if (!DiskFolderController.SelectDescendants(ids).Select(t => t.Id).Contains(vm.FolderId)) { return(Content("只能在学校共享文件夹中新建子文件夹!")); } else { vm.DiskFolderEdit.DiskPermit = Code.EnumHelper.DiskPermit.Public; } } } } vm.DiskTypeList = Disk.Controllers.DiskTypeController.SelectInfoList(); if (id != 0) { var tb = (from p in db.Table <Disk.Entity.tbDiskFolder>() where p.Id == id select new Dto.DiskFolder.Edit { Id = p.Id, No = p.No, DiskFolderName = p.DiskFolderName, DiskTypeId = p.tbDiskType.Id, DiskPermit = p.DiskPermit }).FirstOrDefault(); if (tb != null) { vm.DiskFolderEdit = tb; } } else { vm.DiskFolderEdit.DiskTypeId = (tbDiskType == null || tbDiskType.DiskType == Code.EnumHelper.DiskType.Private) ? vm.DiskTypeList.Where(t => t.DiskType == Code.EnumHelper.DiskType.Private).FirstOrDefault().Id : vm.DiskTypeList.Where(t => t.DiskType == Code.EnumHelper.DiskType.Public).FirstOrDefault().Id; } return(View(vm)); } }