You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

171 lines
5.6 KiB

  1. using Learun.Application.OA.File.FileInfo;
  2. using Learun.DataBase.Repository;
  3. using Learun.Util;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. namespace Learun.Application.OA.File.FileFolder
  8. {
  9. /// <summary>
  10. /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
  11. /// Copyright (c) 2013-2017
  12. /// 创建人:陈彬彬
  13. /// 日 期:2018.06.20
  14. /// 描 述:文件管理
  15. /// </summary>
  16. public class FileFolderService : RepositoryFactory
  17. {
  18. #region 获取数据
  19. /// <summary>
  20. /// 文件夹列表
  21. /// </summary>
  22. /// <param name="userId">用户Id</param>
  23. /// <returns></returns>
  24. public IEnumerable<FileFolderEntity> GetList(string userId)
  25. {
  26. var expression = LinqExtensions.True<FileFolderEntity>();
  27. expression = expression.And(t => t.F_CreateUserId == userId);
  28. return this.BaseRepository().IQueryable(expression).ToList();
  29. }
  30. /// <summary>
  31. /// 文件夹实体
  32. /// </summary>
  33. /// <param name="keyValue">主键值</param>
  34. /// <returns></returns>
  35. public FileFolderEntity GetEntity(string keyValue)
  36. {
  37. return this.BaseRepository().FindEntity<FileFolderEntity>(keyValue);
  38. }
  39. #endregion
  40. #region 提交数据
  41. /// <summary>
  42. /// 还原文件夹
  43. /// </summary>
  44. /// <param name="keyValue">主键</param>
  45. public void RestoreFile(string keyValue)
  46. {
  47. FileFolderEntity fileFolderEntity = new FileFolderEntity();
  48. fileFolderEntity.Modify(keyValue);
  49. fileFolderEntity.F_DeleteMark = 0;
  50. this.BaseRepository().Update(fileFolderEntity);
  51. }
  52. /// <summary>
  53. /// 删除文件夹
  54. /// </summary>
  55. /// <param name="keyValue">主键</param>
  56. public void RemoveForm(string keyValue)
  57. {
  58. var db = this.BaseRepository().BeginTrans();
  59. try
  60. {
  61. var fid = new List<string>();
  62. fid.Add(keyValue);
  63. var floder = db.FindList<FileFolderEntity>(x => x.F_DeleteMark != 1).ToList();
  64. DelFloderChild(keyValue, fid, floder);
  65. var fs = floder.Where(x => fid.Contains(x.F_FolderId)).ToList();
  66. foreach (var f in fs)
  67. {
  68. f.F_DeleteMark = 1;
  69. f.F_ModifyDate = DateTime.Now;
  70. }
  71. db.Update(fs);
  72. var file=db.FindList<FileInfoEntity>(x=>x.F_DeleteMark!=1 && fid.Contains(x.F_FolderId)).ToList();
  73. if(file.Any())
  74. {
  75. foreach (var f in file)
  76. {
  77. f.F_DeleteMark = 1;
  78. f.F_ModifyDate = DateTime.Now;
  79. }
  80. db.Update(file);
  81. }
  82. db.Commit();
  83. }
  84. catch (Exception)
  85. {
  86. db.Rollback();
  87. throw;
  88. }
  89. }
  90. private void DelFloderChild(string kv,List<string> fid,List<FileFolderEntity> floder)
  91. {
  92. var child=floder.Where(x=>x.F_ParentId == kv);
  93. if(child.Any())
  94. {
  95. foreach (var f in child)
  96. {
  97. fid.Add(f.F_FolderId);
  98. DelFloderChild(f.F_FolderId,fid,floder);
  99. }
  100. }
  101. }
  102. /// <summary>
  103. /// 彻底删除文件夹
  104. /// </summary>
  105. /// <param name="keyValue">主键</param>
  106. public void ThoroughRemoveForm(string keyValue)
  107. {
  108. this.BaseRepository().Delete<FileFolderEntity>(t => t.F_FolderId == keyValue);
  109. }
  110. /// <summary>
  111. /// 清空回收站
  112. /// </summary>
  113. public void EmptyRecycledForm()
  114. {
  115. var db = this.BaseRepository().BeginTrans();
  116. try
  117. {
  118. db.Delete<FileFolderEntity>(t => t.F_DeleteMark == 1);
  119. db.Delete<FileInfoEntity>(t => t.F_DeleteMark == 1);
  120. db.Commit();
  121. }
  122. catch (Exception ex)
  123. {
  124. db.Rollback();
  125. throw ExceptionEx.ThrowServiceException(ex);
  126. }
  127. }
  128. /// <summary>
  129. /// 保存文件夹表单(新增、修改)
  130. /// </summary>
  131. /// <param name="keyValue">主键值</param>
  132. /// <param name="fileFolderEntity">文件夹实体</param>
  133. /// <returns></returns>
  134. public void SaveForm(string keyValue, FileFolderEntity fileFolderEntity)
  135. {
  136. if (!string.IsNullOrEmpty(keyValue))
  137. {
  138. fileFolderEntity.Modify(keyValue);
  139. this.BaseRepository().Update(fileFolderEntity);
  140. }
  141. else
  142. {
  143. fileFolderEntity.Create();
  144. this.BaseRepository().Insert(fileFolderEntity);
  145. }
  146. }
  147. /// <summary>
  148. /// 共享文件夹
  149. /// </summary>
  150. /// <param name="keyValue">主键</param>
  151. /// <param name="IsShare">是否共享:1-共享 0取消共享</param>
  152. public void ShareFolder(string keyValue, int IsShare)
  153. {
  154. FileFolderEntity fileFolderEntity = new FileFolderEntity();
  155. fileFolderEntity.F_FolderId = keyValue;
  156. fileFolderEntity.F_IsShare = IsShare;
  157. fileFolderEntity.F_ShareTime = DateTime.Now;
  158. this.BaseRepository().Update(fileFolderEntity);
  159. }
  160. #endregion
  161. }
  162. }