using GxPress.EnumConst; using GxPress.Service.Interface.CommonSqlKata; namespace GxPress.Service.Implement.CommonSqlKataService { public class CommonSqlKataService : ICommonSqlKataService { /// /// 通用 /// /// /// /// /// public SqlKata.Query GetCommonQueryAsync(int noticeTypeValue, int userId, SqlKata.Query query, string whereColumnSql) { var PraiseCount = new SqlKata.Query("tede_analyze"); PraiseCount.WhereColumns("tede_analyze.SourceId", "=", whereColumnSql); PraiseCount.Where("tede_analyze.TypeValue", noticeTypeValue); PraiseCount.Where("tede_analyze.AnalyzeType", 1); PraiseCount.AsCount(); query.Select(PraiseCount, "PraiseCount"); var IsLaud = new SqlKata.Query("tede_analyze"); IsLaud.WhereColumns("tede_analyze.SourceId", "=", whereColumnSql); IsLaud.Where("tede_analyze.TypeValue", noticeTypeValue); IsLaud.Where("tede_analyze.UserId", userId); IsLaud.Where("tede_analyze.AnalyzeType", 1); IsLaud.Limit(1); IsLaud.AsCount(); query.Select(IsLaud, "IsLaud"); var CommentCount = new SqlKata.Query("tede_comment"); CommentCount.WhereColumns("tede_comment.ArticleId", "=", whereColumnSql); CommentCount.Where("tede_comment.pid", 0); CommentCount.Where("tede_comment.TypeValue", noticeTypeValue); CommentCount.AsCount(); query.Select(CommentCount, "CommentCount"); var RetransmissionCount = new SqlKata.Query("tede_analyze"); RetransmissionCount.WhereColumns("tede_analyze.SourceId", "=", whereColumnSql); RetransmissionCount.Where("tede_analyze.TypeValue", noticeTypeValue); RetransmissionCount.Where("tede_analyze.UserId", userId); RetransmissionCount.Where("tede_analyze.AnalyzeType", 4); RetransmissionCount.AsCount(); query.Select(RetransmissionCount, "RetransmissionCount"); var IsRetransmission = new SqlKata.Query("tede_analyze"); IsRetransmission.WhereColumns("tede_analyze.SourceId", "=", whereColumnSql); IsRetransmission.Where("tede_analyze.TypeValue", noticeTypeValue); IsRetransmission.Where("tede_analyze.UserId", userId); IsRetransmission.Where("tede_analyze.AnalyzeType", 4); IsRetransmission.Limit(1); IsRetransmission.AsCount(); query.Select(IsRetransmission, "IsRetransmission"); var IsCollect = new SqlKata.Query("tede_analyze"); IsCollect.WhereColumns("tede_analyze.SourceId", "=", whereColumnSql); IsCollect.Where("tede_analyze.TypeValue", noticeTypeValue); IsCollect.Where("tede_analyze.UserId", userId); IsCollect.Where("tede_analyze.AnalyzeType", 3); IsCollect.Limit(1); IsCollect.AsCount(); query.Select(IsCollect, "IsCollect"); var CollectCount = new SqlKata.Query("tede_analyze"); CollectCount.WhereColumns("tede_analyze.SourceId", "=", whereColumnSql); CollectCount.Where("tede_analyze.TypeValue", noticeTypeValue); CollectCount.Where("tede_analyze.UserId", userId); CollectCount.Where("tede_analyze.AnalyzeType", 3); CollectCount.AsCount(); query.Select(CollectCount, "CollectCount"); return query; } /// /// 收件箱 /// /// /// public SqlKata.Query NoticeQueryAsync(SqlKata.Query query, int userId) { var enjoyUser = new SqlKata.Query("tede_user_middle"); enjoyUser.Where("MiddleType", 10); enjoyUser.WhereColumns("DataSourceId", "=", "tede_middle.MiddleId"); enjoyUser.SelectRaw("GROUP_CONCAT(SourceName Separator'、')"); query.Select(enjoyUser, "EnjoyUser"); var flowUserName = new SqlKata.Query("tede_user"); flowUserName.SelectRaw("GROUP_CONCAT(Name Separator'、')"); var flowTodo = new SqlKata.Query("tede_flow_todo"); flowTodo.WhereColumns("tede_flow_todo.FlowId", "=", "tede_notice.SourceId"); flowTodo.Where("tede_flow_todo.type", "ApproverCheck"); flowTodo.Select("tede_flow_todo.UserId"); flowUserName.WhereIn("tede_user.Id", flowTodo); query.Select(flowUserName, "FlowUserName"); var uCheckedCount = new SqlKata.Query("tede_flow_todo"); uCheckedCount.WhereColumns("tede_flow_todo.FlowId", "=", "tede_notice.SourceId"); uCheckedCount.Where("tede_flow_todo.type", "ApproverCheck"); uCheckedCount.AsCount(); query.Select(uCheckedCount, "UCheckedCount"); var checkedCount = new SqlKata.Query("tede_flow_todo"); checkedCount.WhereColumns("tede_flow_todo.FlowId", "=", "tede_notice.SourceId"); checkedCount.Where("tede_flow_todo.type", "ApproverCheck"); checkedCount.Where("tede_flow_todo.IsRead", true); checkedCount.AsCount(); query.Select(checkedCount, "CheckedCount"); var isFlowRead = new SqlKata.Query("tede_flow_todo"); isFlowRead.WhereColumns("tede_flow_todo.FlowId", "=", "tede_notice.SourceId"); isFlowRead.WhereColumns("tede_flow_todo.UserId", "=", "tede_middle.UserId"); isFlowRead.Where("tede_flow_todo.type", "CarbonCopy"); isFlowRead.Limit(1); isFlowRead.Select("IsRead"); query.Select(isFlowRead, "IsFlowRead"); var isFlowChecked = new SqlKata.Query("tede_flow_todo"); isFlowChecked.WhereColumns("tede_flow_todo.FlowId", "=", "tede_notice.SourceId"); isFlowChecked.Where("tede_flow_todo.type", "ApproverCheck"); isFlowChecked.Where("tede_flow_todo.IsRead", true); isFlowChecked.Limit(1); isFlowChecked.Select("IsRead"); query.Select(isFlowChecked, "IsFlowChecked"); var IsMyFlowRead = new SqlKata.Query("tede_flow"); IsMyFlowRead.WhereColumns("tede_flow.Id", "=", "tede_notice.SourceId"); IsMyFlowRead.WhereColumns("tede_flow.UserId", "=", "tede_notice.UserId"); IsMyFlowRead.Select("IsRead"); query.Select(IsMyFlowRead, "IsMyFlowRead"); var IsDone = new SqlKata.Query("tede_flow_todo"); IsDone.WhereColumns("tede_flow_todo.FlowId", "=", "tede_notice.SourceId"); IsDone.WhereColumns("tede_flow_todo.UserId", "=", "tede_middle.UserId"); IsDone.Where("tede_flow_todo.type", "ApproverCheck"); IsDone.Limit(1); IsDone.Select("IsDone"); query.Select(IsDone, "IsDone"); var IsChecked = new SqlKata.Query("tede_flow_todo"); IsChecked.WhereColumns("tede_flow_todo.UserId", "=", "tede_middle.UserId"); IsChecked.WhereColumns("tede_flow_todo.FlowId", "=", "tede_notice.SourceId"); IsChecked.Where("tede_flow_todo.type", "ApproverCheck"); IsChecked.Limit(1); IsChecked.Select("IsChecked"); query.Select(IsChecked, "IsChecked"); var DoneType = new SqlKata.Query("tede_flow_todo"); DoneType.WhereColumns("tede_flow_todo.UserId", "=", "tede_middle.UserId"); DoneType.WhereColumns("tede_flow_todo.FlowId", "=", "tede_notice.SourceId"); DoneType.Where("tede_flow_todo.type", "ApproverCheck"); DoneType.Limit(1); DoneType.Select("DoneType"); query.Select(DoneType, "DoneType"); var userName = new SqlKata.Query("tede_user"); var tedeFlow = new SqlKata.Query("tede_flow"); tedeFlow.WhereColumns("tede_flow.Id", "=", "tede_notice.SourceId"); tedeFlow.Select("tede_flow.UserId"); userName.WhereIn("tede_user.Id", tedeFlow); userName.Limit(1); userName.Select("Name"); query.Select(userName, "Name"); var IsFlowAdmin = new SqlKata.Query("tede_flow"); IsFlowAdmin.WhereColumns("tede_flow.Id", "=", "tede_notice.SourceId"); IsFlowAdmin.Where("tede_flow.UserId", userId); IsFlowAdmin.AsCount(); query.Select(IsFlowAdmin, "IsFlowAdmin"); var FileCount = new SqlKata.Query().From("tede_middle as a"); FileCount.WhereColumns("a.ParentId", "=", "tede_middle.Id"); FileCount.Where("a.IsDelete", false); FileCount.WhereNot("a.NoticeAddresseeType", NoticeTypeConst.Draft.GetHashCode()); ; FileCount.AsCount(); query.Select(FileCount, "FileCount"); var ReadCount = new SqlKata.Query("tede_addressee"); ReadCount.WhereColumns("tede_addressee.SourceId", "=", "tede_middle.MiddleId"); ReadCount.Where("tede_addressee.IsRead", true); ReadCount.AsCount(); query.Select(ReadCount, "ReadCount"); var AllCount = new SqlKata.Query("tede_addressee"); AllCount.WhereColumns("tede_addressee.SourceId", "=", "tede_middle.MiddleId"); AllCount.AsCount(); query.Select(AllCount, "AllCount"); var IsRead = new SqlKata.Query("tede_addressee"); IsRead.WhereColumns("tede_addressee.SourceId", "=", "tede_middle.MiddleId"); IsRead.Where("tede_addressee.IsRead", true); IsRead.Where("tede_addressee.UserId", userId); IsRead.Limit(1); IsRead.Select("IsRead"); query.Select(IsRead, "IsRead"); return query; } } }