CommonSqlKataService.cs 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. using GxPress.EnumConst;
  2. using GxPress.Service.Interface.CommonSqlKata;
  3. namespace GxPress.Service.Implement.CommonSqlKataService
  4. {
  5. public class CommonSqlKataService : ICommonSqlKataService
  6. {
  7. /// <summary>
  8. /// 通用
  9. /// </summary>
  10. /// <param name="noticeTypeValue"></param>
  11. /// <param name="userId"></param>
  12. /// <param name="query"></param>
  13. /// <returns></returns>
  14. public SqlKata.Query GetCommonQueryAsync(int noticeTypeValue, int userId, SqlKata.Query query, string whereColumnSql)
  15. {
  16. var PraiseCount = new SqlKata.Query("tede_analyze");
  17. PraiseCount.WhereColumns("tede_analyze.SourceId", "=", whereColumnSql);
  18. PraiseCount.Where("tede_analyze.TypeValue", noticeTypeValue);
  19. PraiseCount.Where("tede_analyze.AnalyzeType", 1);
  20. PraiseCount.AsCount();
  21. query.Select(PraiseCount, "PraiseCount");
  22. var IsLaud = new SqlKata.Query("tede_analyze");
  23. IsLaud.WhereColumns("tede_analyze.SourceId", "=", whereColumnSql);
  24. IsLaud.Where("tede_analyze.TypeValue", noticeTypeValue);
  25. IsLaud.Where("tede_analyze.UserId", userId);
  26. IsLaud.Where("tede_analyze.AnalyzeType", 1);
  27. IsLaud.Limit(1);
  28. IsLaud.AsCount();
  29. query.Select(IsLaud, "IsLaud");
  30. var CommentCount = new SqlKata.Query("tede_comment");
  31. CommentCount.WhereColumns("tede_comment.ArticleId", "=", whereColumnSql);
  32. CommentCount.Where("tede_comment.pid", 0);
  33. CommentCount.Where("tede_comment.TypeValue", noticeTypeValue);
  34. CommentCount.AsCount();
  35. query.Select(CommentCount, "CommentCount");
  36. var RetransmissionCount = new SqlKata.Query("tede_analyze");
  37. RetransmissionCount.WhereColumns("tede_analyze.SourceId", "=", whereColumnSql);
  38. RetransmissionCount.Where("tede_analyze.TypeValue", noticeTypeValue);
  39. RetransmissionCount.Where("tede_analyze.UserId", userId);
  40. RetransmissionCount.Where("tede_analyze.AnalyzeType", 4);
  41. RetransmissionCount.AsCount();
  42. query.Select(RetransmissionCount, "RetransmissionCount");
  43. var IsRetransmission = new SqlKata.Query("tede_analyze");
  44. IsRetransmission.WhereColumns("tede_analyze.SourceId", "=", whereColumnSql);
  45. IsRetransmission.Where("tede_analyze.TypeValue", noticeTypeValue);
  46. IsRetransmission.Where("tede_analyze.UserId", userId);
  47. IsRetransmission.Where("tede_analyze.AnalyzeType", 4);
  48. IsRetransmission.Limit(1);
  49. IsRetransmission.AsCount();
  50. query.Select(IsRetransmission, "IsRetransmission");
  51. var IsCollect = new SqlKata.Query("tede_analyze");
  52. IsCollect.WhereColumns("tede_analyze.SourceId", "=", whereColumnSql);
  53. IsCollect.Where("tede_analyze.TypeValue", noticeTypeValue);
  54. IsCollect.Where("tede_analyze.UserId", userId);
  55. IsCollect.Where("tede_analyze.AnalyzeType", 3);
  56. IsCollect.Limit(1);
  57. IsCollect.AsCount();
  58. query.Select(IsCollect, "IsCollect");
  59. var CollectCount = new SqlKata.Query("tede_analyze");
  60. CollectCount.WhereColumns("tede_analyze.SourceId", "=", whereColumnSql);
  61. CollectCount.Where("tede_analyze.TypeValue", noticeTypeValue);
  62. CollectCount.Where("tede_analyze.UserId", userId);
  63. CollectCount.Where("tede_analyze.AnalyzeType", 3);
  64. CollectCount.AsCount();
  65. query.Select(CollectCount, "CollectCount");
  66. return query;
  67. }
  68. /// <summary>
  69. /// 收件箱
  70. /// </summary>
  71. /// <param name="query"></param>
  72. /// <returns></returns>
  73. public SqlKata.Query NoticeQueryAsync(SqlKata.Query query, int userId)
  74. {
  75. var enjoyUser = new SqlKata.Query("tede_user_middle");
  76. enjoyUser.Where("MiddleType", 10);
  77. enjoyUser.WhereColumns("DataSourceId", "=", "tede_middle.MiddleId");
  78. enjoyUser.SelectRaw("GROUP_CONCAT(SourceName Separator'、')");
  79. query.Select(enjoyUser, "EnjoyUser");
  80. var flowUserName = new SqlKata.Query("tede_user");
  81. flowUserName.SelectRaw("GROUP_CONCAT(Name Separator'、')");
  82. var flowTodo = new SqlKata.Query("tede_flow_todo");
  83. flowTodo.WhereColumns("tede_flow_todo.FlowId", "=", "tede_notice.SourceId");
  84. flowTodo.Where("tede_flow_todo.type", "ApproverCheck");
  85. flowTodo.Select("tede_flow_todo.UserId");
  86. flowUserName.WhereIn("tede_user.Id", flowTodo);
  87. query.Select(flowUserName, "FlowUserName");
  88. var uCheckedCount = new SqlKata.Query("tede_flow_todo");
  89. uCheckedCount.WhereColumns("tede_flow_todo.FlowId", "=", "tede_notice.SourceId");
  90. uCheckedCount.Where("tede_flow_todo.type", "ApproverCheck");
  91. uCheckedCount.AsCount();
  92. query.Select(uCheckedCount, "UCheckedCount");
  93. var checkedCount = new SqlKata.Query("tede_flow_todo");
  94. checkedCount.WhereColumns("tede_flow_todo.FlowId", "=", "tede_notice.SourceId");
  95. checkedCount.Where("tede_flow_todo.type", "ApproverCheck");
  96. checkedCount.Where("tede_flow_todo.IsRead", true);
  97. checkedCount.AsCount();
  98. query.Select(checkedCount, "CheckedCount");
  99. var isFlowRead = new SqlKata.Query("tede_flow_todo");
  100. isFlowRead.WhereColumns("tede_flow_todo.FlowId", "=", "tede_notice.SourceId");
  101. isFlowRead.WhereColumns("tede_flow_todo.UserId", "=", "tede_middle.UserId");
  102. isFlowRead.Where("tede_flow_todo.type", "CarbonCopy");
  103. isFlowRead.Limit(1);
  104. isFlowRead.Select("IsRead");
  105. query.Select(isFlowRead, "IsFlowRead");
  106. var isFlowChecked = new SqlKata.Query("tede_flow_todo");
  107. isFlowChecked.WhereColumns("tede_flow_todo.FlowId", "=", "tede_notice.SourceId");
  108. isFlowChecked.Where("tede_flow_todo.type", "ApproverCheck");
  109. isFlowChecked.Where("tede_flow_todo.IsRead", true);
  110. isFlowChecked.Limit(1);
  111. isFlowChecked.Select("IsRead");
  112. query.Select(isFlowChecked, "IsFlowChecked");
  113. var IsMyFlowRead = new SqlKata.Query("tede_flow");
  114. IsMyFlowRead.WhereColumns("tede_flow.Id", "=", "tede_notice.SourceId");
  115. IsMyFlowRead.WhereColumns("tede_flow.UserId", "=", "tede_notice.UserId");
  116. IsMyFlowRead.Select("IsRead");
  117. query.Select(IsMyFlowRead, "IsMyFlowRead");
  118. var IsDone = new SqlKata.Query("tede_flow_todo");
  119. IsDone.WhereColumns("tede_flow_todo.FlowId", "=", "tede_notice.SourceId");
  120. IsDone.WhereColumns("tede_flow_todo.UserId", "=", "tede_middle.UserId");
  121. IsDone.Where("tede_flow_todo.type", "ApproverCheck");
  122. IsDone.Limit(1);
  123. IsDone.Select("IsDone");
  124. query.Select(IsDone, "IsDone");
  125. var IsChecked = new SqlKata.Query("tede_flow_todo");
  126. IsChecked.WhereColumns("tede_flow_todo.UserId", "=", "tede_middle.UserId");
  127. IsChecked.WhereColumns("tede_flow_todo.FlowId", "=", "tede_notice.SourceId");
  128. IsChecked.Where("tede_flow_todo.type", "ApproverCheck");
  129. IsChecked.Limit(1);
  130. IsChecked.Select("IsChecked");
  131. query.Select(IsChecked, "IsChecked");
  132. var DoneType = new SqlKata.Query("tede_flow_todo");
  133. DoneType.WhereColumns("tede_flow_todo.UserId", "=", "tede_middle.UserId");
  134. DoneType.WhereColumns("tede_flow_todo.FlowId", "=", "tede_notice.SourceId");
  135. DoneType.Where("tede_flow_todo.type", "ApproverCheck");
  136. DoneType.Limit(1);
  137. DoneType.Select("DoneType");
  138. query.Select(DoneType, "DoneType");
  139. var userName = new SqlKata.Query("tede_user");
  140. var tedeFlow = new SqlKata.Query("tede_flow");
  141. tedeFlow.WhereColumns("tede_flow.Id", "=", "tede_notice.SourceId");
  142. tedeFlow.Select("tede_flow.UserId");
  143. userName.WhereIn("tede_user.Id", tedeFlow);
  144. userName.Limit(1);
  145. userName.Select("Name");
  146. query.Select(userName, "Name");
  147. var IsFlowAdmin = new SqlKata.Query("tede_flow");
  148. IsFlowAdmin.WhereColumns("tede_flow.Id", "=", "tede_notice.SourceId");
  149. IsFlowAdmin.Where("tede_flow.UserId", userId);
  150. IsFlowAdmin.AsCount();
  151. query.Select(IsFlowAdmin, "IsFlowAdmin");
  152. var FileCount = new SqlKata.Query().From("tede_middle as a");
  153. FileCount.WhereColumns("a.ParentId", "=", "tede_middle.Id");
  154. FileCount.Where("a.IsDelete", false);
  155. FileCount.WhereNot("a.NoticeAddresseeType", NoticeTypeConst.Draft.GetHashCode()); ;
  156. FileCount.AsCount();
  157. query.Select(FileCount, "FileCount");
  158. var ReadCount = new SqlKata.Query("tede_addressee");
  159. ReadCount.WhereColumns("tede_addressee.SourceId", "=", "tede_middle.MiddleId");
  160. ReadCount.Where("tede_addressee.IsRead", true);
  161. ReadCount.AsCount();
  162. query.Select(ReadCount, "ReadCount");
  163. var AllCount = new SqlKata.Query("tede_addressee");
  164. AllCount.WhereColumns("tede_addressee.SourceId", "=", "tede_middle.MiddleId");
  165. AllCount.AsCount();
  166. query.Select(AllCount, "AllCount");
  167. var IsRead = new SqlKata.Query("tede_addressee");
  168. IsRead.WhereColumns("tede_addressee.SourceId", "=", "tede_middle.MiddleId");
  169. IsRead.Where("tede_addressee.IsRead", true);
  170. IsRead.Where("tede_addressee.UserId", userId);
  171. IsRead.Limit(1);
  172. IsRead.Select("IsRead");
  173. query.Select(IsRead, "IsRead");
  174. return query;
  175. }
  176. }
  177. }