CollectionService.cs 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using System.Threading.Tasks;
  4. using AutoMapper;
  5. using Datory;
  6. using GxPress.Common.Exceptions;
  7. using GxPress.Common.Page;
  8. using GxPress.Common.Tools;
  9. using GxPress.Entity.Middle;
  10. using GxPress.Entity.WorkMeeting;
  11. using GxPress.EnumConst;
  12. using GxPress.Repository.Interface;
  13. using GxPress.Repository.Interface.Collection;
  14. using GxPress.Repository.Interface.Missive;
  15. using GxPress.Repository.Interface.Note;
  16. using GxPress.Repository.Interface.WorkMeeting;
  17. using GxPress.Request.App.Analyze;
  18. using GxPress.Request.App.Collection;
  19. using GxPress.Request.App.Middle;
  20. using GxPress.Result;
  21. using GxPress.Result.App.Collection;
  22. using GxPress.Service.Interface.Analyze;
  23. using GxPress.Service.Interface.Article;
  24. using GxPress.Service.Interface.Collection;
  25. using GxPress.Service.Interface.Middle;
  26. using GxPress.Service.Interface.UserMiddle;
  27. using Newtonsoft.Json;
  28. namespace GxPress.Service.Implement.Collection
  29. {
  30. public class CollectionService : ICollectionService
  31. {
  32. private readonly ICollectionRepository _collectionRepository;
  33. private readonly IMiddleService _middleService;
  34. private readonly IArticleRepository _articleRepository;
  35. private readonly ITopicRepository _topicRepository;
  36. private readonly ITopicAnalyzeRepository _topicAnalyzeRepository;
  37. private readonly IMiddleRepository _middleRepository;
  38. private readonly INoteRepository _noteRepository;
  39. private readonly IUserRepository _userRepository;
  40. private readonly IArticleService _articleService;
  41. private readonly INoticeRepository _noticeRepository;
  42. private readonly IMissiveRepository _missiveRepository;
  43. private readonly IMissiveAnalyzeRepository _missiveAnalyzeRepository;
  44. private readonly IGroupRepository _groupRepository;
  45. private readonly IMeetingSummaryRepository _meetingSummaryRepository;
  46. private readonly IMapper _mapper;
  47. private readonly IFolderUserRepository _folderUserRepository;
  48. private readonly IAnalyzeService _analyzeService;
  49. private readonly IFileLibraryRepository fileLibraryRepository;
  50. private readonly IUserMiddleService _userMiddleService;
  51. public CollectionService(ICollectionRepository collectionRepository, IMiddleService middleService,
  52. IArticleRepository articleRepository, ITopicRepository topicRepository, IMiddleRepository middleRepository,
  53. INoteRepository noteRepository, IUserRepository userRepository, IArticleService articleService,
  54. ITopicAnalyzeRepository topicAnalyzeRepository, INoticeRepository noticeRepository,
  55. IMissiveRepository missiveRepository, IMissiveAnalyzeRepository missiveAnalyzeRepository, IMapper mapper,
  56. IGroupRepository groupRepository, IMeetingSummaryRepository meetingSummaryRepository, IFolderUserRepository folderUserRepository, IAnalyzeService analyzeService, IFileLibraryRepository fileLibraryRepository, IUserMiddleService userMiddleService)
  57. {
  58. _collectionRepository = collectionRepository;
  59. _middleService = middleService;
  60. _articleRepository = articleRepository;
  61. _topicRepository = topicRepository;
  62. _middleRepository = middleRepository;
  63. _noteRepository = noteRepository;
  64. _userRepository = userRepository;
  65. _articleService = articleService;
  66. _topicAnalyzeRepository = topicAnalyzeRepository;
  67. _noticeRepository = noticeRepository;
  68. _missiveAnalyzeRepository = missiveAnalyzeRepository;
  69. _missiveRepository = missiveRepository;
  70. _mapper = mapper;
  71. _groupRepository = groupRepository;
  72. _meetingSummaryRepository = meetingSummaryRepository;
  73. _folderUserRepository = folderUserRepository;
  74. _analyzeService = analyzeService;
  75. this.fileLibraryRepository = fileLibraryRepository;
  76. _userMiddleService = userMiddleService;
  77. }
  78. /// <summary>
  79. /// 插入
  80. /// </summary>
  81. /// <param name="request"></param>
  82. /// <returns></returns>
  83. public async Task<bool> Insert(CollectionInRequest request)
  84. {
  85. var collection = new Entity.Collection
  86. {
  87. CollectionDataId = request.CollectionDataId,
  88. CollectionType = request.CollectionType,
  89. UserId = request.UserId,
  90. SourceUserId = request.SourceUserId,
  91. EndCollectionDataId = request.CollectionDataId,
  92. EndCollectionType = request.CollectionType
  93. };
  94. var query = new SqlKata.Query();
  95. query.Where(nameof(Entity.Collection.UserId), request.UserId)
  96. .Where(nameof(Entity.Collection.CollectionType), request.CollectionType)
  97. .Where(nameof(Entity.Collection.CollectionDataId), request.CollectionDataId);
  98. if (request.SourceUserId > 0)
  99. query.Where(nameof(Entity.Collection.SourceUserId), request.SourceUserId);
  100. //查询是否存在
  101. var findCollection = await _collectionRepository.GetAsync(query);
  102. var analyzeRequest = new AnalyzeRequest
  103. {
  104. UserId = request.UserId,
  105. AnalyzeType = 3,
  106. SourceId = request.CollectionDataId,
  107. TypeValue = request.CollectionType,// 10 会议纪要 0 文章 1 话题 2 通知 3 笔记 4站内信 12 收藏文件夹 13 笔记文件夹
  108. SourceUserId = request.SourceUserId
  109. };
  110. if (request.CollectionType == 1)
  111. analyzeRequest.TypeValue = 0;
  112. if (request.CollectionType == 2)
  113. analyzeRequest.TypeValue = 1;
  114. if (request.CollectionType == 4)
  115. analyzeRequest.TypeValue = 3;
  116. if (request.CollectionType == 5)
  117. analyzeRequest.TypeValue = 2;
  118. if (findCollection != null)
  119. {
  120. await _collectionRepository.DeleteAsync(findCollection.Id);
  121. await _middleRepository.DeleteAsync(Q.Where(nameof(Entity.Middle.Middle.FolderType), 3).Where(nameof(Entity.Middle.Middle.MiddleId), findCollection.Id).Where(nameof(Entity.Middle.Middle.UserId), request.UserId));
  122. var analyze = await _analyzeService.GetAnalyzeAsync(analyzeRequest);
  123. if (analyze != null)
  124. await _analyzeService.DeleteAsync(analyze.Id);
  125. return true;
  126. }
  127. //收藏文章
  128. if (request.CollectionType == 1)
  129. {
  130. var article = await _articleRepository.GetArticleAsync(request.CollectionDataId);
  131. collection.Title = article.Title;
  132. analyzeRequest.TypeValue = 0;
  133. await _analyzeService.SetAnalyzeAsync(analyzeRequest);
  134. }
  135. //话题
  136. else if (request.CollectionType == 2)
  137. {
  138. var topic = await _topicRepository.GetAsync(request.CollectionDataId);
  139. collection.Title = topic.Title;
  140. //收藏
  141. analyzeRequest.TypeValue = 1;
  142. await _analyzeService.SetAnalyzeAsync(analyzeRequest);
  143. }
  144. //收藏收藏
  145. else if (request.CollectionType == 3)
  146. {
  147. //获取
  148. var collectionEntity = await _collectionRepository.GetAsync(request.CollectionDataId);
  149. collection.EndCollectionDataId = collectionEntity.EndCollectionDataId;
  150. collection.EndCollectionType = collectionEntity.EndCollectionType;
  151. }
  152. //笔记
  153. else if (request.CollectionType == 4 || request.CollectionType == 21)
  154. {
  155. //收藏
  156. analyzeRequest.TypeValue = 3;
  157. await _analyzeService.SetAnalyzeAsync(analyzeRequest);
  158. var note = await _noteRepository.GetAsync(request.CollectionDataId);
  159. collection.Title = note.Title;
  160. }
  161. //通知
  162. else if (request.CollectionType == 5)
  163. {
  164. //通知
  165. analyzeRequest.TypeValue = 2;
  166. await _analyzeService.SetAnalyzeAsync(analyzeRequest);
  167. var notice = await _noticeRepository.GetAsync(request.CollectionDataId);
  168. collection.Title = notice.Title;
  169. }
  170. //站内信
  171. else if (request.CollectionType == 6)
  172. {
  173. var missive = await _missiveRepository.GetAsync(request.CollectionDataId);
  174. collection.Title = missive.Title;
  175. //站内信
  176. analyzeRequest.TypeValue = 4;
  177. await _analyzeService.SetAnalyzeAsync(analyzeRequest);
  178. }
  179. //收藏会议
  180. if (request.CollectionType == 8)
  181. {
  182. var meetingSummary = await _meetingSummaryRepository.GetAsync(Q.Where(nameof(MeetingSummary.MeetingId), request.CollectionDataId));
  183. if (meetingSummary == null)
  184. throw new BusinessException("会议无效");
  185. collection.Title = meetingSummary.Title;
  186. //收藏会议
  187. analyzeRequest.TypeValue = 10;
  188. await _analyzeService.SetAnalyzeAsync(analyzeRequest);
  189. }
  190. //文件
  191. if (request.CollectionType == 300)
  192. {
  193. //获取文件信息
  194. var fileLibrary = await fileLibraryRepository.GetFileLibraryByIdAsync(collection.CollectionDataId);
  195. if (fileLibrary == null)
  196. throw new BusinessException("文件不存在");
  197. collection.Title = fileLibrary.FileName;
  198. }
  199. //会议纪要
  200. if (request.CollectionType == 400)
  201. {
  202. var meetingSummary = await _meetingSummaryRepository.GetAsync(Q.Where(nameof(MeetingSummary.Id), request.CollectionDataId));
  203. if (meetingSummary == null)
  204. throw new BusinessException("会议无效");
  205. collection.Title = meetingSummary.Title;
  206. //会议纪要
  207. analyzeRequest.TypeValue = 10;
  208. await _analyzeService.SetAnalyzeAsync(analyzeRequest);
  209. }
  210. //收藏、笔记文件
  211. if (request.CollectionType == 12 || request.CollectionType == 13)
  212. {
  213. if (request.CollectionDataId > 0)
  214. {
  215. var middle = await _middleRepository.GetMiddleAsync(request.CollectionDataId);
  216. if (middle == null)
  217. throw new BusinessException("文件夹无效");
  218. collection.Title = middle.FolderName;
  219. }
  220. else
  221. {
  222. var user = await _userRepository.GetAsync(request.SourceUserId);
  223. if (user == null)
  224. throw new BusinessException("用户不存在!");
  225. collection.Title = $"{user.Name}的";
  226. collection.Title += request.CollectionType == 12 ? "收藏" : "笔记";
  227. }
  228. //笔记文件
  229. analyzeRequest.TypeValue = request.CollectionType;
  230. await _analyzeService.SetAnalyzeAsync(analyzeRequest);
  231. }
  232. var collectionId = await _collectionRepository.InsertAsync(collection);
  233. //添加收藏信息
  234. var middleInsertTypeRequest = new MiddleInsertTypeRequest
  235. {
  236. AttributeValue = 1,
  237. FolderId = request.FolderId,
  238. FolderType = 3,
  239. MiddleId = collectionId,
  240. MiddleSonId = 0,
  241. UserId = request.UserId
  242. };
  243. return await _middleService.AddOrUpdateAsync(middleInsertTypeRequest);
  244. }
  245. /// <summary>
  246. /// 查询结果
  247. /// </summary>
  248. /// <param name="request"></param>
  249. /// <returns></returns>
  250. public async Task<PagedList<CollectionListPageResult>> PageListAsync(CollectionPageSearchRequest request)
  251. {
  252. var result = await _collectionRepository.PageListAsync(request);
  253. if (request.FolderId > 0)
  254. {
  255. var middle = await _middleRepository.GetMiddleAsync(request.FolderId);
  256. result.RoleId = middle != null ? middle.RoleId : 0;
  257. }
  258. //是否收藏和转发数量
  259. if (request.VisitUserId > 0)
  260. {
  261. var analyzeRequest = new AnalyzeRequest();
  262. analyzeRequest.SourceUserId = request.VisitUserId;
  263. analyzeRequest.AnalyzeType = 3;
  264. analyzeRequest.CommentId = 0;
  265. analyzeRequest.SourceId = request.FolderId;
  266. analyzeRequest.UserId = request.UserId;
  267. analyzeRequest.TypeValue = 12;
  268. result.IsCollect = await _analyzeService.ExistsSourceUserAsync(analyzeRequest);
  269. analyzeRequest.AnalyzeType = 4;
  270. result.RetransmissionCount = await _analyzeService.RetransmissionCountAsync(analyzeRequest);
  271. }
  272. foreach (var item in result.Items)
  273. {
  274. item.Data = await StructCollectionData(item.CollectionDataId, item.CollectionType, item.SourceUserId);
  275. if (string.IsNullOrWhiteSpace(item.Title))
  276. {
  277. item.Title = "";
  278. if (item.Data.Type == 1)
  279. item.Title = item.Data.Title;
  280. else if (item.Data.Type == 400)
  281. item.Title = item.Data.Title;
  282. else
  283. {
  284. if (item.Data.Data != null)
  285. {
  286. if (item.Data.Type == 1)
  287. item.Title = item.Data.Text;
  288. else if (item.Data.Data.Type == 1)
  289. item.Title = item.Data.Data.Text;
  290. else if (item.Data.Data.Type == 2)
  291. item.Title = "[图片]";
  292. else
  293. item.Title = "[附件]";
  294. }
  295. }
  296. }
  297. // //获取文件夹数量
  298. // if (item.AttributeValue == 2)
  299. // {
  300. // var missiveCount =
  301. // await _middleRepository.CountAsync(
  302. // Q.Where(nameof(Entity.Middle.Middle.ParentId), item.Id)
  303. // .Where(nameof(Entity.Middle.Middle.IsDelete), false));
  304. // // //获取文件夹数量
  305. // // var missiveFolderCount =
  306. // // await _middleRepository.CountAsync(
  307. // // Q.Where(nameof(Entity.Middle.Middle.ParentId), item.Id)
  308. // // .Where(nameof(Entity.Middle.Middle.FolderType), 3)
  309. // // .Where(nameof(Entity.Middle.Middle.IsDelete), false).Where(nameof(Entity.Middle.Middle.AttributeValue),2));
  310. // //文件夹里面数量
  311. // item.FileCount = missiveCount;
  312. // }
  313. //获取共享人员
  314. // if (item.RoleId == 3)
  315. // {
  316. // var sourceId = item.Id;
  317. // if (item.ParentId > 0)
  318. // sourceId = item.MiddleSonId;
  319. // var userMiddles = await _userMiddleService.FindUserMiddlesAsync(item.FolderType, sourceId);
  320. // item.EnjoyUser = StringUtils.ObjectCollectionToString(userMiddles.Select(n => n.SourceName), "、");
  321. // // var folderUsers = await _folderUserRepository.GetAllAsync(Q.Where(nameof(FolderUser.MiddleId), item.Id).OrderByDesc(nameof(FolderUser.CreatedDate)).Take(10));
  322. // // item.EnjoyUser = StringUtils.ObjectCollectionToString(folderUsers.Select(n => n.UserName), "、");
  323. // }
  324. }
  325. return result;
  326. }
  327. /// <summary>
  328. /// 递归获取不是收藏的数据
  329. /// </summary>
  330. /// <param name="middleId"></param>
  331. /// <returns></returns>
  332. public async Task<Entity.Collection> GetCollectionRecursion(int middleId)
  333. {
  334. //var middle = await _middleRepository.GetMiddleAsync(middleId);
  335. var collection = await _collectionRepository.GetAsync(middleId);
  336. if (collection.CollectionType == 3)
  337. await GetCollectionRecursion(collection.CollectionType);
  338. return collection;
  339. }
  340. /// <summary>
  341. /// 笔记解析
  342. /// </summary>
  343. /// <param name="data"></param>
  344. /// <returns></returns>
  345. public async Task<CollectionContentJsonData> AnalyzeAsync(List<CollectionContentJsonData> data)
  346. {
  347. var result = new CollectionContentJsonData();
  348. var fileCount = data.Count(n => n.Type == 3);
  349. //提取图片
  350. if (data.Any(n => n.Type == 2))
  351. {
  352. var contentJsonData = new CollectionContentJsonData { FileCount = fileCount, Type = 2 };
  353. //获取图片
  354. var imgList = data.Where(n => n.Type == 2);
  355. contentJsonData.ArticleImgUrl = imgList.Select(n => StringUtils.AddDomain(n.File)).ToList();
  356. result = (contentJsonData);
  357. return result;
  358. }
  359. //提取文字
  360. if (data.Any(n => n.Type == 1))
  361. {
  362. var contentJsonData = new CollectionContentJsonData { FileCount = fileCount, Type = 1 };
  363. //获取图片
  364. var textList = data.Where(n => n.Type == 1);
  365. contentJsonData.Text = textList.FirstOrDefault().Text;
  366. result = (contentJsonData);
  367. return result;
  368. }
  369. //获取
  370. foreach (var item in data.Where(n => n.Type != 1 && n.Type != 3))
  371. {
  372. if (item.Type == 4)
  373. //4 Article:文章 5 notice通知 6 topic话题 7 note笔记 8 collection收藏 9站内信 10小组 11会议
  374. item.Type = 1;
  375. else if (item.Type == 6)
  376. item.Type = 2;
  377. else if (item.Type == 7)
  378. item.Type = 4;
  379. else if (item.Type == 8)
  380. item.Type = 3;
  381. else if (item.Type == 9)
  382. item.Type = 6;
  383. else if (item.Type == 10)
  384. item.Type = 7;
  385. else if (item.Type == 11)
  386. item.Type = 8;
  387. return await StructCollectionData(item.Id, item.Type, 0);
  388. }
  389. return result;
  390. }
  391. /// <summary>
  392. /// 构造收藏Data 收藏类型 1文章 2话题 3 收藏 4笔记 5通知 6站内信 7小组 8会议
  393. /// </summary>
  394. /// <param name="collectionDataId"></param>
  395. /// <param name="collectionType"></param>
  396. /// <param name="isReturn"></param>
  397. /// <returns></returns>
  398. public async Task<CollectionContentJsonData> StructCollectionData(int collectionDataId, int collectionType, int sourceUserId, bool isReturn = false)
  399. {
  400. var list = new CollectionContentJsonData();
  401. //1文章 2话题 3 收藏 4笔记 5通知 6站内信 7小组 8会议 14工作流审核 300 文件 400会议纪要
  402. //文章类型
  403. if (collectionType == 1)
  404. {
  405. var articleResult = await _articleService.GetAsync(collectionDataId, 0);
  406. if (articleResult == null)
  407. return new CollectionContentJsonData();
  408. var articleImgUrl = new List<string>();
  409. if (articleResult.ImageUrls != null)
  410. foreach (var block in articleResult.ImageUrls)
  411. articleImgUrl.Add(StringUtils.AddDomain(block));
  412. list = new CollectionContentJsonData
  413. {
  414. Author = articleResult.Source,
  415. Title = articleResult.Title,
  416. CreatedData = articleResult.AddDate,
  417. Type = 4,
  418. Id = articleResult.Id,
  419. ArticleImgUrl = articleImgUrl,
  420. ReadCount = articleResult.ReadCount
  421. };
  422. }
  423. //话题类型
  424. if (collectionType == AllTypeConst.Topic.GetHashCode())
  425. {
  426. var topic = await _topicRepository.GetAsync(collectionDataId);
  427. if (topic == null)
  428. return new CollectionContentJsonData();
  429. //获取是否存在小组
  430. var group = new Entity.Group();
  431. if (topic.GroupId > 0)
  432. {
  433. group = await _groupRepository.GetAsync(topic.GroupId);
  434. if (group == null)
  435. return new CollectionContentJsonData();
  436. }
  437. //查询ID
  438. var user = await _userRepository.GetAsync(topic.UserId);
  439. if (user == null)
  440. return new CollectionContentJsonData();
  441. list = new CollectionContentJsonData
  442. {
  443. Author = user.Name,
  444. Title = topic.Title,
  445. CreatedData = topic.CreatedDate,
  446. Type = 6,
  447. Id = topic.Id,
  448. File = StringUtils.AddDomain(user.AvatarUrl),
  449. ReadCount = topic.ReadCount,
  450. Name = user.Name,
  451. AvatarUrl = StringUtils.AddDomain(user.AvatarUrl),
  452. Data = await GetCollectionContentJsonData(topic.Content),
  453. NickName = user.Nick,
  454. IsGroup = group.Id > 0,
  455. GroupId = group.Id > 0 ? group.Id : 0,
  456. GroupName = group.Id > 0 ? group.Name : ""
  457. };
  458. }
  459. //收藏
  460. if (collectionType == AllTypeConst.Collect.GetHashCode())
  461. {
  462. var collection = await GetCollectionRecursion(collectionDataId);
  463. list = await StructCollectionData(collection.EndCollectionDataId, collection.EndCollectionType, collection.SourceUserId);
  464. //list.Type = 8;
  465. }
  466. //笔记
  467. if (collectionType == AllTypeConst.Note.GetHashCode() || collectionType == 21)
  468. {
  469. var note = await _noteRepository.GetAsync(collectionDataId);
  470. if (note != null)
  471. {
  472. var user = await _userRepository.GetAsync(note.UserId);
  473. if (user == null)
  474. return new CollectionContentJsonData();
  475. list = (new CollectionContentJsonData
  476. {
  477. Author = user.Name,
  478. NickName = user.Nick,
  479. Name = user.Name,
  480. Title = note.Title,
  481. CreatedData = note.CreatedDate,
  482. Type = collectionType == 4 ? 7 : 2,
  483. Id = note.Id,
  484. File = "",
  485. AvatarUrl = StringUtils.AddDomain(user.AvatarUrl),
  486. Data = await GetCollectionContentJsonData(note.Content)
  487. });
  488. }
  489. }
  490. //通知
  491. if (collectionType == 5)
  492. {
  493. var notice = await _noticeRepository.GetAsync(collectionDataId);
  494. if (notice == null)
  495. return new CollectionContentJsonData();
  496. var user = await _userRepository.GetAsync(notice.UserId);
  497. if (user == null)
  498. return new CollectionContentJsonData();
  499. list = (new CollectionContentJsonData
  500. {
  501. Author = user.Name,
  502. Title = notice.Title,
  503. CreatedData = notice.CreatedDate,
  504. Type = 5,
  505. Id = notice.Id,
  506. File = "",
  507. AvatarUrl = StringUtils.AddDomain(user.AvatarUrl),
  508. Name = user.Name,
  509. Data = await GetCollectionContentJsonData(notice.Content),
  510. NickName = user.Nick
  511. });
  512. }
  513. //站内信
  514. if (collectionType == 6)
  515. {
  516. var missive = await _missiveRepository.GetAsync(collectionDataId);
  517. if (missive == null)
  518. return new CollectionContentJsonData();
  519. var user = await _userRepository.GetAsync(missive.UserId);
  520. if (user == null)
  521. return new CollectionContentJsonData();
  522. list = new CollectionContentJsonData
  523. {
  524. Author = user.Name,
  525. Title = missive.Title,
  526. CreatedData = missive.CreatedDate,
  527. Type = 9,
  528. Id = missive.Id,
  529. File = "",
  530. AvatarUrl = StringUtils.AddDomain(user.AvatarUrl),
  531. Name = user.Name,
  532. Data = await GetCollectionContentJsonData(missive.Content),
  533. NickName = user.Nick,
  534. MissiveType = missive.MissiveType
  535. };
  536. }
  537. //小组
  538. if (collectionType == 7)
  539. {
  540. var group = await _groupRepository.GetAsync(collectionDataId);
  541. var user = await _userRepository.GetAsync(group.UserId);
  542. if (user == null)
  543. return new CollectionContentJsonData();
  544. list = new CollectionContentJsonData
  545. {
  546. Author = user.Name,
  547. Title = group.Name,
  548. CreatedData = group.CreatedDate,
  549. Type = 10,
  550. Id = group.Id,
  551. File = StringUtils.AddDomain(group.AvatarUrl),
  552. Name = user.Name,
  553. NickName = user.Nick
  554. };
  555. }
  556. //会议
  557. if (collectionType == 8)
  558. {
  559. var meetingSummary = await _meetingSummaryRepository.GetAsync(Q.Where(nameof(MeetingSummary.MeetingId), collectionDataId));
  560. if (meetingSummary == null)
  561. return new CollectionContentJsonData();
  562. var user = await _userRepository.GetAsync(meetingSummary.UserId);
  563. if (user == null)
  564. return new CollectionContentJsonData();
  565. list = new CollectionContentJsonData
  566. {
  567. Author = "",
  568. Title = meetingSummary.Title,
  569. CreatedData = meetingSummary.CreatedDate,
  570. Type = 11,
  571. Id = meetingSummary.Id,
  572. File = "",
  573. Name = user.Name,
  574. NickName = user.Nick
  575. };
  576. }
  577. //工作流
  578. //300 文件
  579. if (collectionType == 300)
  580. {
  581. var fileLibrary = await fileLibraryRepository.GetFileLibraryByIdAsync(collectionDataId);
  582. if (fileLibrary == null)
  583. return new CollectionContentJsonData();
  584. // var user = await _userRepository.GetAsync(fileLibrary.UserId);
  585. list = new CollectionContentJsonData
  586. {
  587. Author = "",
  588. Title = fileLibrary.FileName,
  589. CreatedData = fileLibrary.CreatedData,
  590. Type = 3,
  591. Id = fileLibrary.Id,
  592. File = StringUtils.AddDomain(fileLibrary.FileUrl),
  593. MinFile = fileLibrary.FileType == "image" ? StringUtils.AddDomainMin(fileLibrary.FileUrl) : "",
  594. AvatarUrl = "",
  595. FileName = fileLibrary.FileName,
  596. Name = "",
  597. Data = new CollectionContentJsonData(),
  598. NickName = "",
  599. FileSize = fileLibrary.Size
  600. };
  601. }
  602. //400 会议纪要
  603. if (collectionType == 400)
  604. {
  605. var meetingSummary = await _meetingSummaryRepository.GetAsync(collectionDataId);
  606. if (meetingSummary == null)
  607. return new CollectionContentJsonData();
  608. var user = await _userRepository.GetAsync(meetingSummary.UserId);
  609. if (user == null)
  610. return new CollectionContentJsonData();
  611. list = new CollectionContentJsonData
  612. {
  613. Author = user.Name,
  614. Title = meetingSummary.Title,
  615. CreatedData = meetingSummary.CreatedDate,
  616. Type = 400,
  617. Id = meetingSummary.Id,
  618. File = "",
  619. MinFile = "",
  620. AvatarUrl = "",
  621. FileName = "",
  622. Name = "",
  623. Data = new CollectionContentJsonData(),
  624. NickName = user.Nick,
  625. FileSize = 0
  626. };
  627. }
  628. //收藏笔记文件夹
  629. if (collectionType == 12 || collectionType == 13)
  630. {
  631. if (sourceUserId == 0)
  632. return new CollectionContentJsonData();
  633. var user = await _userRepository.GetAsync(sourceUserId);
  634. if (user == null)
  635. return new CollectionContentJsonData();
  636. list = new CollectionContentJsonData
  637. {
  638. Author = user.Name,
  639. Title = "",
  640. Type = collectionType,
  641. Id = 0,
  642. File = "",
  643. MinFile = "",
  644. AvatarUrl = "",
  645. FileName = "",
  646. Name = "",
  647. Data = new CollectionContentJsonData(),
  648. NickName = user.Nick,
  649. FileSize = 0
  650. };
  651. }
  652. return list;
  653. }
  654. /// <summary>
  655. /// 获取收藏详情
  656. /// </summary>
  657. /// <param name="id"></param>
  658. /// <returns></returns>
  659. public async Task<CollectionResult> GetCollectionDetailAsync(int id)
  660. {
  661. var collection = await _collectionRepository.GetAsync(id);
  662. if (collection == null)
  663. throw new BusinessException("收藏不存在");
  664. var result = _mapper.Map<CollectionResult>(collection);
  665. result.Data = await StructCollectionData(result.CollectionDataId, result.CollectionType, 0);
  666. return result;
  667. }
  668. public async Task<CollectionContentJsonData> GetCollectionContentJsonData(string json)
  669. {
  670. var data = JsonConvert.DeserializeObject<List<CollectionContentJsonData>>(json);
  671. return await AnalyzeAsync(data);
  672. }
  673. }
  674. }