SysUserMsgService.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. using Infrastructure.Attribute;
  2. using Mapster;
  3. using ZR.Model;
  4. using ZR.Model.Content.Dto;
  5. using ZR.Model.Dto;
  6. using ZR.Repository;
  7. namespace ZR.ServiceCore.Services
  8. {
  9. /// <summary>
  10. /// 用户系统消息Service业务层处理
  11. /// </summary>
  12. [AppService(ServiceType = typeof(ISysUserMsgService), ServiceLifetime = LifeTime.Transient)]
  13. public class SysUserMsgService : BaseService<SysUserMsg>, ISysUserMsgService
  14. {
  15. /// <summary>
  16. /// 查询用户系统消息列表
  17. /// </summary>
  18. /// <param name="parm"></param>
  19. /// <returns></returns>
  20. public PagedInfo<SysUserMsgDto> GetList(SysUserMsgQueryDto parm)
  21. {
  22. var predicate = QueryExp(parm);
  23. if (parm.MsgType == UserMsgType.COMMENT || parm.MsgType == UserMsgType.PRAISE)
  24. {
  25. return Queryable()
  26. .Where(predicate.ToExpression())
  27. .Includes(x => x.User)
  28. .Select((it) => new SysUserMsgDto()
  29. {
  30. User = it.User.Adapt<UserDto>()
  31. }, true)
  32. .ToPage(parm);
  33. }
  34. else
  35. {
  36. return Queryable()
  37. .Where(predicate.ToExpression())
  38. .Select(it => new SysUserMsgDto()
  39. {
  40. }, true)
  41. .ToPage(parm);
  42. }
  43. }
  44. /// <summary>
  45. /// 已读消息
  46. /// </summary>
  47. /// <param name="userId"></param>
  48. /// <param name="msgId"></param>
  49. /// <param name="msgType"></param>
  50. /// <returns></returns>
  51. public int ReadMsg(long userId, long msgId, UserMsgType msgType)
  52. {
  53. if (msgId == 0)
  54. {
  55. return Update(f => f.UserId == userId && f.MsgType == msgType, it => new SysUserMsg() { IsRead = 1 });
  56. }
  57. return Update(f => f.UserId == userId && f.MsgId == msgId, it => new SysUserMsg() { IsRead = 1 });
  58. }
  59. /// <summary>
  60. /// 获取详情
  61. /// </summary>
  62. /// <param name="MsgId"></param>
  63. /// <returns></returns>
  64. public SysUserMsg GetInfo(long MsgId)
  65. {
  66. var response = Queryable()
  67. .Where(x => x.MsgId == MsgId)
  68. .First();
  69. return response;
  70. }
  71. /// <summary>
  72. /// 添加用户系统消息
  73. /// </summary>
  74. /// <param name="model"></param>
  75. /// <returns></returns>
  76. public SysUserMsg AddSysUserMsg(SysUserMsg model)
  77. {
  78. Insertable(model).ExecuteReturnSnowflakeId();
  79. return model;
  80. }
  81. public SysUserMsg AddSysUserMsg(long userId, string content, UserMsgType msgType)
  82. {
  83. return AddSysUserMsg(new SysUserMsg()
  84. {
  85. UserId = userId,
  86. Content = content,
  87. MsgType = msgType
  88. });
  89. }
  90. /// <summary>
  91. /// 清空用户系统消息
  92. /// </summary>
  93. /// <returns></returns>
  94. public bool TruncateSysUserMsg()
  95. {
  96. var newTableName = $"sys_user_msg_{DateTime.Now:yyyyMMdd}";
  97. if (Queryable().Any() && !Context.DbMaintenance.IsAnyTable(newTableName))
  98. {
  99. Context.DbMaintenance.BackupTable("sys_user_msg", newTableName);
  100. }
  101. return Truncate();
  102. }
  103. /// <summary>
  104. /// 导出用户系统消息
  105. /// </summary>
  106. /// <param name="parm"></param>
  107. /// <returns></returns>
  108. public PagedInfo<SysUserMsgDto> ExportList(SysUserMsgQueryDto parm)
  109. {
  110. var predicate = QueryExp(parm);
  111. var response = Queryable()
  112. .Where(predicate.ToExpression())
  113. .Select((it) => new SysUserMsgDto()
  114. {
  115. }, true)
  116. .ToPage(parm);
  117. return response;
  118. }
  119. /// <summary>
  120. /// 查询导出表达式
  121. /// </summary>
  122. /// <param name="parm"></param>
  123. /// <returns></returns>
  124. private static Expressionable<SysUserMsg> QueryExp(SysUserMsgQueryDto parm)
  125. {
  126. var predicate = Expressionable.Create<SysUserMsg>();
  127. predicate = predicate.AndIF(parm.UserId != null, it => it.UserId == parm.UserId);
  128. predicate = predicate.AndIF(parm.IsRead != null, it => it.IsRead == parm.IsRead);
  129. predicate = predicate.AndIF(parm.MsgType != null, it => it.MsgType == parm.MsgType);
  130. //predicate = predicate.AndIF(parm.ClassifyId != null, it => it.ClassifyId == parm.ClassifyId);
  131. return predicate;
  132. }
  133. }
  134. }