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.
 
 
 
 
 
 

370 lines
17 KiB

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