SysNoticeService.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. using Infrastructure.Attribute;
  2. using ZR.Model;
  3. using ZR.Model.System;
  4. using ZR.Model.System.Dto;
  5. using ZR.Repository;
  6. namespace ZR.ServiceCore.Services
  7. {
  8. /// <summary>
  9. /// 通知公告表Service业务层处理
  10. ///
  11. /// @author zr
  12. /// @date 2021-12-15
  13. /// </summary>
  14. [AppService(ServiceType = typeof(ISysNoticeService), ServiceLifetime = LifeTime.Transient)]
  15. public class SysNoticeService : BaseService<SysNotice>, ISysNoticeService
  16. {
  17. /// <summary>
  18. /// 查询系统通知
  19. /// </summary>
  20. /// <returns></returns>
  21. public List<SysNotice> GetSysNotices()
  22. {
  23. var predicate = Expressionable.Create<SysNotice>();
  24. var now = DateTime.Now;
  25. predicate = predicate.And(m => m.Status == 0);
  26. predicate = predicate.Or(m => m.BeginTime != null && m.BeginTime <= now && m.EndTime >= now && m.Status == 0);
  27. return Queryable()
  28. .Where(predicate.ToExpression())
  29. .OrderByDescending(f => f.Create_time)
  30. .ToList();
  31. }
  32. public PagedInfo<SysNotice> GetPageList(SysNoticeQueryDto parm)
  33. {
  34. var predicate = QueryExp(parm);
  35. var response = GetPages(predicate.ToExpression(), parm);
  36. return response;
  37. }
  38. /// <summary>
  39. /// 导出通知公告表
  40. /// </summary>
  41. /// <param name="parm"></param>
  42. /// <returns></returns>
  43. public PagedInfo<SysNoticeDto> ExportList(SysNoticeQueryDto parm)
  44. {
  45. var predicate = QueryExp(parm);
  46. var response = Queryable()
  47. .Where(predicate.ToExpression())
  48. .Select((it) => new SysNoticeDto()
  49. {
  50. NoticeTypeLabel = it.NoticeType.GetConfigValue<SysDictData>("sys_notice_type"),
  51. StatusLabel = it.Status.GetConfigValue<SysDictData>("sys_notice_status"),
  52. }, true)
  53. .ToPage(parm);
  54. return response;
  55. }
  56. /// <summary>
  57. /// 查询导出表达式
  58. /// </summary>
  59. /// <param name="parm"></param>
  60. /// <returns></returns>
  61. private static Expressionable<SysNotice> QueryExp(SysNoticeQueryDto parm)
  62. {
  63. var predicate = Expressionable.Create<SysNotice>();
  64. predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.NoticeTitle), m => m.NoticeTitle.Contains(parm.NoticeTitle));
  65. predicate = predicate.AndIF(parm.NoticeType != null, m => m.NoticeType == parm.NoticeType);
  66. predicate = predicate.AndIF(!string.IsNullOrEmpty(parm.CreateBy), m => m.Create_by.Contains(parm.CreateBy) || m.Update_by.Contains(parm.CreateBy));
  67. predicate = predicate.AndIF(parm.Status != null, m => m.Status == parm.Status);
  68. return predicate;
  69. }
  70. }
  71. }