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.
 
 
 
 
 
 

293 lines
14 KiB

  1. using Learun.DataBase.Repository;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data.Common;
  5. using System.Text;
  6. namespace Learun.Application.OA.File.FileInfo
  7. {
  8. /// <summary>
  9. /// 版 本 Learun-ADMS-Ultimate V7.0.0 数字化智慧校园
  10. /// Copyright (c) 2013-2017
  11. /// 创建人:陈彬彬
  12. /// 日 期:2018.06.20
  13. /// 描 述:文件管理
  14. /// </summary>
  15. public class FileInfoService : RepositoryFactory
  16. {
  17. #region 获取数据
  18. public IEnumerable<FileInfoEntity> GetList(string userId)
  19. {
  20. string sql = "select * from LR_OA_FileInfo where F_CreateUserId = @userId and F_DeleteMark = 0";
  21. return this.BaseRepository().FindList<FileInfoEntity>(sql, new { userId = userId });
  22. }
  23. public IEnumerable<FileInfoEntity> GetList()
  24. {
  25. string sql = "select * from LR_OA_FileInfo where F_DeleteMark = 0";
  26. return this.BaseRepository().FindList<FileInfoEntity>();
  27. }
  28. /// <summary>
  29. /// 所有文件(夹)列表
  30. /// </summary>
  31. /// <param name="folderId">文件夹Id</param>
  32. /// <param name="userId">用户Id</param>
  33. /// <returns></returns>
  34. public IEnumerable<FileInfoEntity> GetList(string folderId, string userId)
  35. {
  36. var strSql = new StringBuilder();
  37. string folderCondition = "";
  38. string fileCondition = "";
  39. if (!string.IsNullOrEmpty(folderId))
  40. {
  41. folderCondition = " AND F_ParentId = @folderId";
  42. fileCondition=" AND F_FolderId = @folderId";
  43. }
  44. else
  45. {
  46. fileCondition = " AND F_FolderId = '0'";
  47. }
  48. strSql.Append(@"SELECT *
  49. FROM ( SELECT F_FolderId AS F_FileId ,
  50. F_ParentId AS F_FolderId ,
  51. F_FolderName AS F_FileName ,
  52. '' AS F_FileSize ,
  53. 'folder' AS F_FileType ,
  54. F_CreateUserId,
  55. F_ModifyDate,
  56. F_IsShare
  57. FROM LR_OA_FileFolder where F_DeleteMark = 0");
  58. strSql.Append(folderCondition);
  59. strSql.Append(" UNION ");
  60. strSql.Append(@"SELECT F_FileId ,
  61. F_FolderId ,
  62. F_FileName ,
  63. F_FileSize ,
  64. F_FileType ,
  65. F_CreateUserId,
  66. F_ModifyDate,
  67. F_IsShare
  68. FROM LR_OA_FileInfo where F_DeleteMark = 0 ");
  69. strSql.Append(fileCondition);
  70. strSql.Append(") t WHERE F_CreateUserId = @userId");
  71. strSql.Append(" ORDER BY CASE WHEN F_FileType = 'folder' THEN 1 ELSE 2 END, F_ModifyDate ASC");
  72. return this.BaseRepository().FindList<FileInfoEntity>(strSql.ToString(), new { userId = userId, folderId = folderId });
  73. }
  74. /// <summary>
  75. /// 文档列表
  76. /// </summary>
  77. /// <param name="userId">用户Id</param>
  78. /// <returns></returns>
  79. public IEnumerable<FileInfoEntity> GetDocumentList(string userId)
  80. {
  81. var strSql = new StringBuilder();
  82. strSql.Append(@"SELECT F_FileId ,
  83. F_FolderId ,
  84. F_FileName ,
  85. F_FileSize ,
  86. F_FileType ,
  87. F_CreateUserId ,
  88. F_ModifyDate,
  89. F_IsShare
  90. FROM LR_OA_FileInfo
  91. WHERE F_DeleteMark = 0
  92. AND F_FileType IN ( 'log', 'txt', 'pdf', 'doc', 'docx', 'ppt', 'pptx',
  93. 'xls', 'xlsx' )
  94. AND F_CreateUserId = @userId");
  95. strSql.Append(" ORDER BY F_ModifyDate ASC");
  96. return this.BaseRepository().FindList<FileInfoEntity>(strSql.ToString(), new { userId = userId });
  97. }
  98. /// <summary>
  99. /// 图片列表
  100. /// </summary>
  101. /// <param name="userId">用户Id</param>
  102. /// <returns></returns>
  103. public IEnumerable<FileInfoEntity> GetImageList(string userId)
  104. {
  105. var strSql = new StringBuilder();
  106. strSql.Append(@"SELECT F_FileId ,
  107. F_FolderId ,
  108. F_FileName ,
  109. F_FileSize ,
  110. F_FileType ,
  111. F_CreateUserId ,
  112. F_ModifyDate,
  113. F_IsShare
  114. FROM LR_OA_FileInfo
  115. WHERE F_DeleteMark = 0
  116. AND F_FileType IN ( 'ico', 'gif', 'jpeg', 'jpg', 'png', 'psd' )
  117. AND F_CreateUserId = @userId");
  118. strSql.Append(" ORDER BY F_ModifyDate ASC");
  119. return this.BaseRepository().FindList<FileInfoEntity>(strSql.ToString(), new { userId = userId });
  120. }
  121. /// <summary>
  122. /// 回收站文件(夹)列表
  123. /// </summary>
  124. /// <param name="userId">用户Id</param>
  125. /// <returns></returns>
  126. public IEnumerable<FileInfoEntity> GetRecycledList(string userId)
  127. {
  128. var strSql = new StringBuilder();
  129. strSql.Append(@"SELECT *
  130. FROM ( SELECT F_FolderId AS F_FileId ,
  131. F_ParentId AS F_FolderId ,
  132. F_FolderName AS F_FileName ,
  133. '' AS F_FileSize ,
  134. 'folder' AS F_FileType ,
  135. F_CreateUserId,
  136. F_ModifyDate
  137. FROM LR_OA_FileFolder where F_DeleteMark = 1
  138. UNION
  139. SELECT F_FileId ,
  140. F_FolderId ,
  141. F_FileName ,
  142. F_FileSize ,
  143. F_FileType ,
  144. F_CreateUserId,
  145. F_ModifyDate
  146. FROM LR_OA_FileInfo where F_DeleteMark = 1
  147. ) t WHERE F_CreateUserId = @userId");
  148. strSql.Append(" ORDER BY F_ModifyDate DESC");
  149. return this.BaseRepository().FindList<FileInfoEntity>(strSql.ToString(), new { userId = userId });
  150. }
  151. /// <summary>
  152. /// 我的文件(夹)共享列表
  153. /// </summary>
  154. /// <param name="userId">用户Id</param>
  155. /// <returns></returns>
  156. public IEnumerable<FileInfoEntity> GetMyShareList(string userId)
  157. {
  158. var strSql = new StringBuilder();
  159. strSql.Append(@"SELECT *
  160. FROM ( SELECT F_FolderId AS F_FileId ,
  161. F_ParentId AS F_FolderId ,
  162. F_FolderName AS F_FileName ,
  163. '' AS F_FileSize ,
  164. 'folder' AS F_FileType ,
  165. F_CreateUserId,
  166. F_ModifyDate
  167. FROM LR_OA_FileFolder WHERE F_DeleteMark = 0 AND F_IsShare = 1
  168. UNION
  169. SELECT F_FileId ,
  170. F_FolderId ,
  171. F_FileName ,
  172. F_FileSize ,
  173. F_FileType ,
  174. F_CreateUserId,
  175. F_ModifyDate
  176. FROM LR_OA_FileInfo WHERE F_DeleteMark = 0 AND F_IsShare = 1
  177. ) t WHERE F_CreateUserId = @userId");
  178. strSql.Append(" ORDER BY F_ModifyDate DESC");
  179. return this.BaseRepository().FindList<FileInfoEntity>(strSql.ToString(), new { userId = userId });
  180. }
  181. /// <summary>
  182. /// 他人文件(夹)共享列表
  183. /// </summary>
  184. /// <param name="userId">用户Id</param>
  185. /// <returns></returns>
  186. public IEnumerable<FileInfoEntity> GetOthersShareList(string userId)
  187. {
  188. var strSql = new StringBuilder();
  189. strSql.Append(@"SELECT *
  190. FROM ( SELECT F_FolderId AS F_FileId ,
  191. F_ParentId AS F_FolderId ,
  192. F_FolderName AS F_FileName ,
  193. '' AS F_FileSize ,
  194. 'folder' AS F_FileType ,
  195. F_CreateUserId,
  196. F_CreateUserName,
  197. F_ShareTime AS F_ModifyDate
  198. FROM LR_OA_FileFolder WHERE F_DeleteMark = 0 AND F_IsShare = 1
  199. UNION
  200. SELECT F_FileId ,
  201. F_FolderId ,
  202. F_FileName ,
  203. F_FileSize ,
  204. F_FileType ,
  205. F_CreateUserId,
  206. F_CreateUserName,
  207. F_ShareTime AS F_ModifyDate
  208. FROM LR_OA_FileInfo WHERE F_DeleteMark = 0 AND F_IsShare = 1
  209. ) t WHERE F_CreateUserId != @userId");
  210. strSql.Append(" ORDER BY F_ModifyDate DESC");
  211. return this.BaseRepository().FindList<FileInfoEntity>(strSql.ToString(), new { userId = userId });
  212. }
  213. /// <summary>
  214. /// 文件实体
  215. /// </summary>
  216. /// <param name="keyValue">主键值</param>
  217. /// <returns></returns>
  218. public FileInfoEntity GetEntity(string keyValue)
  219. {
  220. return this.BaseRepository().FindEntity<FileInfoEntity>(keyValue);
  221. }
  222. #endregion
  223. #region 提交数据
  224. /// <summary>
  225. /// 还原文件
  226. /// </summary>
  227. /// <param name="keyValue">主键</param>
  228. public void RestoreFile(string keyValue)
  229. {
  230. FileInfoEntity fileInfoEntity = new FileInfoEntity();
  231. fileInfoEntity.Modify(keyValue);
  232. fileInfoEntity.F_DeleteMark = 0;
  233. this.BaseRepository().Update(fileInfoEntity);
  234. }
  235. /// <summary>
  236. /// 删除文件
  237. /// </summary>
  238. /// <param name="keyValue">主键</param>
  239. public void RemoveForm(string keyValue)
  240. {
  241. FileInfoEntity fileInfoEntity = new FileInfoEntity();
  242. fileInfoEntity.Modify(keyValue);
  243. fileInfoEntity.F_DeleteMark = 1;
  244. this.BaseRepository().Update(fileInfoEntity);
  245. }
  246. /// <summary>
  247. /// 彻底删除文件
  248. /// </summary>
  249. /// <param name="keyValue">主键</param>
  250. public void ThoroughRemoveForm(string keyValue)
  251. {
  252. this.BaseRepository().Delete<FileInfoEntity>(t => t.F_FileId == keyValue);
  253. }
  254. /// <summary>
  255. /// 保存文件表单(新增、修改)
  256. /// </summary>
  257. /// <param name="keyValue">主键值</param>
  258. /// <param name="fileInfoEntity">文件信息实体</param>
  259. /// <returns></returns>
  260. public void SaveForm(string keyValue, FileInfoEntity fileInfoEntity)
  261. {
  262. if (!string.IsNullOrEmpty(keyValue))
  263. {
  264. fileInfoEntity.Modify(keyValue);
  265. this.BaseRepository().Update(fileInfoEntity);
  266. }
  267. else
  268. {
  269. fileInfoEntity.Create();
  270. this.BaseRepository().Insert(fileInfoEntity);
  271. }
  272. }
  273. /// <summary>
  274. /// 共享文件
  275. /// </summary>
  276. /// <param name="keyValue">主键</param>
  277. /// <param name="IsShare">是否共享:1-共享 0取消共享</param>
  278. public void ShareFile(string keyValue, int IsShare)
  279. {
  280. FileInfoEntity fileInfoEntity = new FileInfoEntity();
  281. fileInfoEntity.F_FileId = keyValue;
  282. fileInfoEntity.F_IsShare = IsShare;
  283. fileInfoEntity.F_ShareTime = DateTime.Now;
  284. this.BaseRepository().Update(fileInfoEntity);
  285. }
  286. #endregion
  287. }
  288. }