NoticeService.cs 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. using System.Transactions;
  6. using AutoMapper;
  7. using Datory;
  8. using GxPress.Common.Exceptions;
  9. using GxPress.Common.Page;
  10. using GxPress.Common.Tools;
  11. using GxPress.Entity;
  12. using GxPress.EnumConst;
  13. using GxPress.Repository.Interface;
  14. using GxPress.Request.Analyze;
  15. using GxPress.Request.App.Middle;
  16. using GxPress.Request.Notice;
  17. using GxPress.Result;
  18. using GxPress.Result.Notice;
  19. using GxPress.Service.Interface.Analyze;
  20. using GxPress.Service.Interface.Middle;
  21. using GxPress.Service.Interface.Notice;
  22. using GxPress.Service.Interface.Visit;
  23. using Newtonsoft.Json;
  24. using GxPress.Service.Interface.UserMiddle;
  25. using GxPress.Service.Interface.Sms;
  26. namespace GxPress.Service.Implement.Notice
  27. {
  28. public partial class NoticeService : INoticeService
  29. {
  30. private readonly IUserRepository _userRepository;
  31. private readonly INoticeRepository _noticeRepository;
  32. private readonly INoticeCcRepository _noticeCcRepository;
  33. private readonly INoticeAddresseeRepository _noticeAddresseeRepository;
  34. private readonly IDepartmentRepository _departmentRepository;
  35. private readonly IMiddleService _middleService;
  36. private readonly IMiddleRepository _middleRepository;
  37. private readonly IMapper _mapper;
  38. private readonly IAnalyzeService _analyzeService;
  39. private readonly IVisitService _visitService;
  40. private readonly ICommentRepository _commentRepository;
  41. private readonly IUserMiddleService _userMiddleService;
  42. private readonly ISmsService smsService;
  43. public NoticeService(IUserRepository userRepository, IMapper mapper, INoticeRepository noticeRepository,
  44. INoticeCcRepository noticeCcRepository, INoticeAddresseeRepository noticeAddresseeRepository,
  45. IDepartmentRepository departmentRepository, IMiddleService middleService,
  46. IMiddleRepository middleRepository, IAnalyzeService analyzeService,
  47. ICommentRepository commentRepository, IVisitService visitService,
  48. IUserMiddleService userMiddleService,ISmsService smsService)
  49. {
  50. _noticeRepository = noticeRepository;
  51. _userRepository = userRepository;
  52. _noticeAddresseeRepository = noticeAddresseeRepository;
  53. _noticeCcRepository = noticeCcRepository;
  54. _departmentRepository = departmentRepository;
  55. _mapper = mapper;
  56. _middleService = middleService;
  57. _middleRepository = middleRepository;
  58. _analyzeService = analyzeService;
  59. _commentRepository = commentRepository;
  60. _visitService = visitService;
  61. _userMiddleService = userMiddleService;
  62. this.smsService=smsService;
  63. }
  64. /// <summary>
  65. /// 获取通知的点赞列表
  66. /// </summary>
  67. /// <param name="id"></param>
  68. /// <param name="userId"></param>
  69. /// <returns></returns>
  70. public async Task<NoticeDetailResult> GetNoticeDetailAsync(int id, int userId)
  71. {
  72. var notice = await _noticeRepository.GetAsync(id);
  73. if (notice == null)
  74. throw new BusinessException("通知不存在");
  75. var noticeDetailResult = new Result.Notice.NoticeDetailResult();
  76. var result = _mapper.Map<Result.Notice.NoticeDetailResult>(notice);
  77. //获取新版
  78. result.AddresseeUserMiddles = await _userMiddleService.FindUserMiddlesAsync(10, id);
  79. result.CcUserMiddles = await _userMiddleService.FindUserMiddlesAsync(20, id);
  80. //json
  81. var contentJsonData = JsonConvert.DeserializeObject<List<ContentJsonData>>(result.Content);
  82. foreach (var item in contentJsonData)
  83. item.File = StringUtils.AddDomain(item.File);
  84. result.Data = contentJsonData;
  85. //获取用户
  86. var user = await _userRepository.GetAsync(result.UserId);
  87. result.UserName = user.Name;
  88. result.AllCount = await _noticeAddresseeRepository.CountAsync(Q.Where(nameof(NoticeAddressee.NoticeId), id));
  89. result.ReadCount = await _noticeAddresseeRepository.CountAsync(Q.Where(nameof(NoticeAddressee.NoticeId), id).Where(nameof(NoticeAddressee.IsRead), true));
  90. //获取收件人
  91. var noticeAddresseeList =
  92. await _noticeAddresseeRepository.GetUserByNoticeIdAsync(id);
  93. result.NoticeAddresseeNames = noticeAddresseeList.Select(n => n.Name).ToList();
  94. var IsRead = await _noticeAddresseeRepository.ExistsAsync(Q.Where(nameof(Entity.Middle.Middle.IsRead), true)
  95. .Where(nameof(NoticeAddressee.NoticeId), id)
  96. .Where(nameof(NoticeAddressee.UserId), userId));
  97. //修改阅读量
  98. if (IsRead == false)
  99. {
  100. if (await _noticeAddresseeRepository.UpdateAsync(Q.Set(nameof(Entity.Middle.Middle.IsRead), true)
  101. .Where(nameof(NoticeAddressee.NoticeId), id)
  102. .Where(nameof(NoticeAddressee.UserId), userId)))
  103. result.ReadCount++;
  104. }
  105. //修改访问量
  106. await _visitService.AddVisit(userId, 5, id);
  107. //修改middle的阅读
  108. // await _middleRepository.UpdateAsync(Q.Set(nameof(Entity.Middle.Middle.IsRead), true).Where(nameof(Entity.Middle.Middle.UserId), userId).Where(nameof(Entity.Middle.Middle.MiddleId), id).Where(nameof(Entity.Middle.Middle.FolderType), 1));
  109. var analyzeRequest = new Request.App.Analyze.AnalyzeRequest();
  110. analyzeRequest.TypeValue = 2;
  111. analyzeRequest.AnalyzeType = 1;
  112. analyzeRequest.SourceId = id;
  113. analyzeRequest.UserId = userId;
  114. //点赞数量
  115. result.PraiseCount = await _analyzeService.CountAsync(analyzeRequest);
  116. //获取话题的评论数量
  117. var commentCount =
  118. await _commentRepository.CountAsync(Q.Where(nameof(Entity.Comment.ArticleId), id).Where(nameof(Entity.Comment.TypeValue), analyzeRequest.TypeValue).Where(nameof(Entity.Comment.Pid), 0));
  119. result.CommentCount = commentCount;
  120. //获取话题的转发数量
  121. analyzeRequest.AnalyzeType = 4;
  122. var retransmissionCount = await _analyzeService.CountAsync(analyzeRequest);
  123. result.RetransmissionCount = retransmissionCount;
  124. result.IsRetransmission = await _analyzeService.ExistsAsync(analyzeRequest);
  125. //获取话题的收藏数量
  126. analyzeRequest.AnalyzeType = 3;
  127. var collectCount = await _analyzeService.CountAsync(analyzeRequest);
  128. result.CollectCount = collectCount;
  129. //是否收藏
  130. result.IsCollect = await _analyzeService.ExistsAsync(analyzeRequest);
  131. //获取话题的点赞数量
  132. analyzeRequest.AnalyzeType = 1;
  133. var praiseCount = await _analyzeService.CountAsync(analyzeRequest);
  134. result.PraiseCount = praiseCount;
  135. //是否点赞
  136. result.IsPraise = await _analyzeService.ExistsAsync(analyzeRequest);
  137. var request = new PraisePageSearchRequest { SourceId = id, TypeValue = 2, Page = 1, PerPage = 3 };
  138. result.NoticePraisePagedList = await _analyzeService.GetPraisePageAsync(request);
  139. //是否是当前用户创建
  140. result.IsAdmin = notice.UserId == userId;
  141. return result;
  142. }
  143. /// <summary>
  144. /// 根据通知ID获取通知详情
  145. /// </summary>
  146. /// <param name="request"></param>
  147. /// <returns></returns>
  148. public async Task<NoticeEditDetailResult> NoticeEditDetailAsync(int id)
  149. {
  150. var notice = await _noticeRepository.GetAsync(id);
  151. var result = _mapper.Map<NoticeEditDetailResult>(notice);
  152. //抄送人
  153. var noticeCcList = await _noticeCcRepository.GetNoticeCcByNoticeIdAsync(id);
  154. //收件人
  155. var noticeAddressee = await _noticeAddresseeRepository.GetNoticeAddresseeByNoticeIdAsync(id);
  156. //获取新版
  157. result.AddresseeUserMiddles = await _userMiddleService.FindUserMiddlesAsync(10, id);
  158. result.CcUserMiddles = await _userMiddleService.FindUserMiddlesAsync(20, id);
  159. var noticeAddresseeUsers =
  160. await _userRepository.UserListInsAsync(noticeAddressee.Select(n => n.UserId).ToList());
  161. result.NoticeAddresseeUsers =
  162. noticeAddresseeUsers.Select(n => _mapper.Map<NoticeAddresseeUser>(n)).ToList();
  163. var noticeCcUsers = await _userRepository.UserListInsAsync(noticeCcList.Select(n => n.UserId).ToList());
  164. result.NoticeCcUsers = noticeCcUsers.Select(n => _mapper.Map<NoticeCcUser>(n)).ToList();
  165. foreach (var noticeAddresseeUser in result.NoticeAddresseeUsers)
  166. {
  167. noticeAddresseeUser.AvatarUrl = StringUtils.AddDomainMin(noticeAddresseeUser.AvatarUrl);
  168. }
  169. foreach (var noticeCcUser in result.NoticeCcUsers)
  170. {
  171. noticeCcUser.AvatarUrl = StringUtils.AddDomainMin(noticeCcUser.AvatarUrl);
  172. }
  173. var jsonData = JsonConvert.DeserializeObject<List<ContentJsonData>>(result.Content);
  174. foreach (var item in jsonData)
  175. item.File = StringUtils.AddDomain(item.File);
  176. result.Data = jsonData;
  177. return result;
  178. }
  179. /// <summary>
  180. /// 获取通知详情
  181. /// </summary>
  182. /// <param name="request"></param>
  183. /// <returns></returns>
  184. public async Task<Result.Notice.NoticeDetailResult> GetNoticeDetailResultAsync(int id, int userId)
  185. {
  186. var notice = await _noticeRepository.GetAsync(id);
  187. if (notice == null)
  188. throw new BusinessException("通知不存在");
  189. var noticeDetailResult = new Result.Notice.NoticeDetailResult();
  190. var result = _mapper.Map<Result.Notice.NoticeDetailResult>(notice);
  191. //获取新版
  192. result.AddresseeUserMiddles = await _userMiddleService.FindUserMiddlesAsync(10, id);
  193. result.CcUserMiddles = await _userMiddleService.FindUserMiddlesAsync(20, id);
  194. //json
  195. var contentJsonData = JsonConvert.DeserializeObject<List<ContentJsonData>>(result.Content);
  196. foreach (var item in contentJsonData)
  197. item.File = StringUtils.AddDomain(item.File);
  198. result.Data = contentJsonData;
  199. //获取用户
  200. var user = await _userRepository.GetAsync(result.UserId);
  201. result.UserName = user.Name;
  202. result.AllCount =
  203. await _noticeAddresseeRepository.CountAsync(Q.Where(nameof(NoticeAddressee.NoticeId), id));
  204. result.ReadCount = await _noticeAddresseeRepository.CountAsync(Q
  205. .Where(nameof(NoticeAddressee.NoticeId), id).Where(nameof(NoticeAddressee.IsRead), true));
  206. //获取收件人
  207. var noticeAddresseeList =
  208. await _noticeAddresseeRepository.GetAllAsync(Q.Where(nameof(NoticeAddressee.NoticeId), id)
  209. .Where(nameof(Entity.Middle.Middle.IsAdmin), false));
  210. result.NoticeAddresseeNames = noticeAddresseeList.Select(n => n.UserName).ToList();
  211. //修改阅读量
  212. await _noticeAddresseeRepository.UpdateAsync(Q.Set(nameof(Entity.Middle.Middle.IsRead), true)
  213. .Where(nameof(NoticeAddressee.NoticeId), id)
  214. .Where(nameof(NoticeAddressee.UserId), userId));
  215. //修改middle的阅读
  216. await _middleRepository.UpdateAsync(Q.Set(nameof(Entity.Middle.Middle.IsRead), true).Where(nameof(Entity.Middle.Middle.UserId), userId).Where(nameof(Entity.Middle.Middle.MiddleId), id).Where(nameof(Entity.Middle.Middle.FolderType), 1));
  217. var analyzeRequest = new Request.App.Analyze.AnalyzeRequest();
  218. analyzeRequest.TypeValue = 2;
  219. analyzeRequest.AnalyzeType = 1;
  220. analyzeRequest.SourceId = id;
  221. analyzeRequest.UserId = userId;
  222. //点赞数量
  223. result.PraiseCount = await _analyzeService.CountAsync(analyzeRequest);
  224. //获取话题的评论数量
  225. var commentCount =
  226. await _commentRepository.CountAsync(Q.Where(nameof(Entity.Comment.ArticleId), id).Where(nameof(Entity.Comment.TypeValue), 1));
  227. result.CommentCount = commentCount;
  228. //获取话题的转发数量
  229. analyzeRequest.AnalyzeType = 4;
  230. var retransmissionCount = await _analyzeService.CountAsync(analyzeRequest);
  231. result.RetransmissionCount = retransmissionCount;
  232. result.IsRetransmission = await _analyzeService.ExistsAsync(analyzeRequest);
  233. //获取话题的收藏数量
  234. analyzeRequest.AnalyzeType = 3;
  235. var collectCount = await _analyzeService.CountAsync(analyzeRequest);
  236. result.CollectCount = collectCount;
  237. //是否收藏
  238. result.IsCollect = await _analyzeService.ExistsAsync(analyzeRequest);
  239. //获取话题的点赞数量
  240. analyzeRequest.AnalyzeType = 1;
  241. var praiseCount = await _analyzeService.CountAsync(analyzeRequest);
  242. result.PraiseCount = praiseCount;
  243. //是否点赞
  244. result.IsPraise = await _analyzeService.ExistsAsync(analyzeRequest);
  245. return result;
  246. }
  247. /// <summary>
  248. /// 编辑通知
  249. /// </summary>
  250. /// <param name="request"></param>
  251. /// <returns></returns>
  252. public async Task<bool> NoticeUpAsync(NoticeUpRequest request)
  253. {
  254. try
  255. {
  256. using (TransactionScope transactionScope = new TransactionScope())
  257. {
  258. var notice = await _noticeRepository.GetAsync(request.Id);
  259. if (notice == null)
  260. throw new BusinessException("通知不存在");
  261. var noticeInRequest = new NoticeInRequest();
  262. noticeInRequest.Content = request.Content;
  263. noticeInRequest.HtmlContent = request.HtmlContent;
  264. noticeInRequest.NoticeType = request.NoticeType;
  265. noticeInRequest.AddresseeUserMiddles = request.AddresseeUserMiddles;
  266. noticeInRequest.CcUserMiddles = request.CcUserMiddles;
  267. noticeInRequest.Title = request.Title;
  268. noticeInRequest.UserId = request.UserId;
  269. noticeInRequest.SoureId = 0;
  270. noticeInRequest.Id = request.Id;
  271. if (request.NoticeType == NoticeTypeConst.Send)
  272. {
  273. if (notice.NoticeType == NoticeTypeConst.Draft)
  274. {
  275. //删除
  276. await _noticeRepository.DeleteAsync(Q.Where(nameof(Entity.Notice.Id), notice.Id));
  277. //删除middle
  278. await _middleRepository.DeleteAsync(Q.Where(nameof(Entity.Middle.Middle.MiddleId), notice.Id).Where(nameof(Entity.Middle.Middle.FolderType), 1));
  279. if (notice.SourceId > 0)
  280. {
  281. var noticeSource = await _noticeRepository.GetAsync(notice.SourceId);
  282. if (noticeSource != null)
  283. noticeInRequest.Id = noticeSource.Id;
  284. else
  285. noticeInRequest.Id = 0;
  286. }
  287. else
  288. noticeInRequest.Id = 0;
  289. }
  290. }
  291. else
  292. {
  293. if (notice.NoticeType == NoticeTypeConst.Draft)
  294. noticeInRequest.Id = request.Id;
  295. else
  296. {
  297. noticeInRequest.SoureId = notice.Id;
  298. var noticeSource = await _noticeRepository.GetAsync(Q.Where(nameof(Entity.Notice.SourceId), notice.Id));
  299. if (noticeSource != null)
  300. noticeInRequest.Id = noticeSource.Id;
  301. else noticeInRequest.Id = 0;
  302. }
  303. }
  304. await InsertAsync(noticeInRequest);
  305. transactionScope.Complete();
  306. }
  307. }
  308. catch (Exception e)
  309. {
  310. Console.WriteLine(e);
  311. throw;
  312. }
  313. return true;
  314. }
  315. /// <summary>
  316. /// 发送通知
  317. /// </summary>
  318. /// <param name="request"></param>
  319. /// <returns></returns>
  320. public async Task<bool> SendNoticeAsync(NoticeUpRequest request)
  321. {
  322. if (request.AddresseeUserMiddles.Count > 0)
  323. {
  324. await _userMiddleService.DeleteAsync(Q.Where(nameof(Entity.UserMiddle.UserMiddle.MiddleType), 10).Where(nameof(Entity.UserMiddle.UserMiddle.DataSourceId), request.Id));
  325. foreach (var item in request.AddresseeUserMiddles)
  326. {
  327. item.DataSourceId = request.Id;
  328. item.MiddleType = 10;
  329. }
  330. await _userMiddleService.AddUserMiddleAsync(request.AddresseeUserMiddles);
  331. var users = await _userMiddleService.FindUsersAsync(request.AddresseeUserMiddles, request.UserId);
  332. request.NoticeAddresseeUserIds = users.Select(n => n.Id).ToList();
  333. request.NoticeAddresseeUserIds.Remove(request.UserId);
  334. }
  335. if (request.CcUserMiddles.Count > 0)
  336. {
  337. await _userMiddleService.DeleteAsync(Q.Where(nameof(Entity.UserMiddle.UserMiddle.MiddleType), 20).Where(nameof(Entity.UserMiddle.UserMiddle.DataSourceId), request.Id));
  338. foreach (var item in request.CcUserMiddles)
  339. {
  340. item.DataSourceId = request.Id;
  341. item.MiddleType = 20;
  342. }
  343. await _userMiddleService.AddUserMiddleAsync(request.CcUserMiddles);
  344. var users = await _userMiddleService.FindUsersAsync(request.CcUserMiddles, request.UserId);
  345. request.NoticeCcUserIds = users.Select(n => n.Id).ToList();
  346. request.NoticeCcUserIds.Remove(request.UserId);
  347. }
  348. if (request.NoticeAddresseeUserIds.Count > 0)
  349. {
  350. //删除接收人
  351. await _noticeAddresseeRepository.DeleteAsync(request.Id);
  352. //删除middle
  353. await _middleRepository.DeleteAsync(Q.Where(nameof(Entity.Middle.Middle.MiddleId), request.Id).Where(nameof(Entity.Middle.Middle.FolderType), 1));
  354. if (request.NoticeType == NoticeTypeConst.Send)
  355. {
  356. var userEntity = await _userRepository.GetAsync(request.UserId);
  357. //创建人
  358. var noticeAddresseeEntity = new NoticeAddressee
  359. {
  360. NoticeId = request.Id,
  361. UserId = request.UserId,
  362. UserName = userEntity.Name,
  363. IsAdmin = true,
  364. NoticeAddresseeType = request.NoticeType,
  365. IsTop = false
  366. };
  367. var noticeAddresseeId = await _noticeAddresseeRepository.InsertAsync(noticeAddresseeEntity);
  368. //添加文件
  369. var middleInsertTypes = new MiddleInsertTypeRequest
  370. {
  371. FolderId = 0,
  372. MiddleId = request.Id,
  373. FolderType = 1,
  374. UserId = request.UserId,
  375. MiddleSonId = noticeAddresseeId,
  376. NoticeAddresseeType = request.NoticeType,
  377. AttributeValue = 1,
  378. IsAdmin = true
  379. };
  380. await _middleService.InsertAsync(middleInsertTypes);
  381. }
  382. //收件人
  383. foreach (var noticeAddresseeUserId in request.NoticeAddresseeUserIds)
  384. {
  385. var user = await _userRepository.GetAsync(noticeAddresseeUserId);
  386. if (user.Id == request.UserId)
  387. continue;
  388. var noticeAddressee = new NoticeAddressee
  389. {
  390. NoticeId = request.Id,
  391. UserId = noticeAddresseeUserId,
  392. UserName = user.Name,
  393. NoticeAddresseeType = request.NoticeType
  394. };
  395. var noticeAddresseeId = await _noticeAddresseeRepository.InsertAsync(noticeAddressee);
  396. if (request.NoticeType == NoticeTypeConst.Send)
  397. {
  398. //添加文件
  399. var middleInsertType = new MiddleInsertTypeRequest
  400. {
  401. FolderId = 0,
  402. MiddleId = request.Id,
  403. FolderType = 1,
  404. UserId = noticeAddresseeUserId,
  405. MiddleSonId = noticeAddresseeId,
  406. AttributeValue = 1
  407. };
  408. await _middleService.InsertAsync(middleInsertType);
  409. }
  410. }
  411. }
  412. if (request.NoticeCcUserIds.Count > 0)
  413. {
  414. //删除抄送人
  415. await _noticeCcRepository.DeleteAsync(request.Id);
  416. //创建
  417. //抄送
  418. foreach (var noticeCcUserId in request.NoticeCcUserIds)
  419. {
  420. var user = await _userRepository.GetAsync(noticeCcUserId);
  421. var noticeCc = new NoticeCc
  422. {
  423. UserId = noticeCcUserId,
  424. NoticeId = request.Id,
  425. UserName = user.Name,
  426. NoticeCcType = request.NoticeType
  427. };
  428. await _noticeCcRepository.InsertAsync(noticeCc);
  429. }
  430. }
  431. return true;
  432. }
  433. /// <summary>
  434. /// 根据已读未读查询通知数据
  435. /// </summary>
  436. /// <param name="request"></param>
  437. /// <returns></returns>
  438. public async Task<IEnumerable<NoticeReadListResult>> NoticeReadListAsync(NoticeReadListRequest request)
  439. {
  440. var noticeReadListResults = await _noticeAddresseeRepository.GetNoticeAddresseeByUserIdIdAsync(request);
  441. return noticeReadListResults;
  442. }
  443. /// <summary>
  444. /// 获取通知列表
  445. /// </summary>
  446. /// <param name="request"></param>
  447. /// <returns></returns>
  448. public async Task<PagedList<NoticeListPageResult>> GetNoticeListPageAsync(NoticePageSearchRequest request)
  449. {
  450. var result = await _noticeRepository.GetNoticeListPageAsync(request);
  451. foreach (var item in result.Items)
  452. {
  453. // var userMiddles = await _userMiddleService.FindUserMiddlesAsync(10, item.MiddleId);
  454. // item.EnjoyUser = StringUtils.ObjectCollectionToString(userMiddles.Select(n => n.SourceName).ToList(), "、");
  455. //分析title
  456. if (string.IsNullOrWhiteSpace(item.Title))
  457. {
  458. var data = JsonConvert.DeserializeObject<List<ContentJsonData>>(item.Content);
  459. if (data.Count > 0)
  460. {
  461. var first = data.First();
  462. if (first.TypeValue == OldTextEditorTypeConst.Text.GetHashCode() && !string.IsNullOrWhiteSpace(first.Text))
  463. item.Title = first.Text;
  464. else
  465. {
  466. foreach (var contentJsonData in data)
  467. {
  468. //是否是文本
  469. if (contentJsonData.TypeValue == OldTextEditorTypeConst.Text.GetHashCode())
  470. continue;
  471. else if (contentJsonData.TypeValue == OldTextEditorTypeConst.Image.GetHashCode())
  472. {
  473. item.Title = "[图片]";
  474. break;
  475. }
  476. else if (contentJsonData.TypeValue == OldTextEditorTypeConst.File.GetHashCode())
  477. {
  478. item.Title = "[附件]";
  479. break;
  480. }
  481. else
  482. {
  483. item.Title = "[附件]";
  484. break;
  485. }
  486. }
  487. // //图片 文件类型
  488. // var typeList = new List<int> { OldTextEditorTypeConst.Image.GetHashCode(), OldTextEditorTypeConst.File.GetHashCode() };
  489. // if (data.Any(n => (n.TypeValue == OldTextEditorTypeConst.Image.GetHashCode() && n.TypeValue == OldTextEditorTypeConst.File.GetHashCode())))
  490. // item.Title = "[图片][附件]";
  491. // else
  492. // {
  493. // if (data.Any(n => n.TypeValue == OldTextEditorTypeConst.Image.GetHashCode()))
  494. // item.Title = "[图片]";
  495. // else if (data.Any(n => n.TypeValue == OldTextEditorTypeConst.File.GetHashCode()))
  496. // item.Title = "[附件]";
  497. // else
  498. // {
  499. // if (data.Any(n => !typeList.Contains(n.TypeValue)))
  500. // item.Title = "[附件]";
  501. // }
  502. // }
  503. }
  504. }
  505. }
  506. if (item.IsDelete == true)
  507. item.NoticeStatus = 0;
  508. else if (item.NoticeAddresseeType == NoticeTypeConst.Draft)
  509. item.NoticeStatus = 2;
  510. else
  511. item.NoticeStatus = 1;
  512. }
  513. return result;
  514. }
  515. /// <summary>
  516. /// 撤销通知
  517. /// </summary>
  518. /// <param name="id"></param>
  519. /// <returns></returns>
  520. public async Task<bool> RecallAsync(int id)
  521. {
  522. try
  523. {
  524. using (TransactionScope transactionScope = new TransactionScope())
  525. {
  526. //删除middle
  527. await _middleRepository.DeleteAsync(Q.Where(nameof(Entity.Middle.Middle.MiddleId), id).Where(nameof(Entity.Middle.Middle.FolderType), 1).Where(nameof(Entity.Middle.Middle.IsAdmin), false));
  528. //修改为草稿箱
  529. await _middleRepository.UpdateAsync(Q.Where(nameof(Entity.Middle.Middle.MiddleId), id).Where(nameof(Entity.Middle.Middle.FolderType), 1).Where(nameof(Entity.Middle.Middle.IsAdmin), true).Set(nameof(Entity.Middle.Middle.NoticeAddresseeType), 2));
  530. //修改
  531. await _noticeRepository.UpdateAsync(Q.Where(nameof(Entity.Notice.Id), id).Set(nameof(Entity.Notice.NoticeType), NoticeTypeConst.Draft.GetHashCode()));
  532. transactionScope.Complete();
  533. }
  534. }
  535. catch (System.Exception ex)
  536. {
  537. throw new BusinessException(ex.Message);
  538. }
  539. return true;
  540. }
  541. }
  542. }