public async Task ExecuteAsync() { _logger.LogInformation("开始执行【StatisticsMatchIntentCountTask】任务..."); var length = await _redis.LLenAsync(Constants.RedisKey.MatchIntents); if (length > 0) { length = length > 20 ? 20 : length; var sql = new StringBuilder(); var now = DateTime.Now; var existedIntents = new List <string>(); for (var i = 0; i < length; i++) { var intent = await _redis.LPopAsync <string>(Constants.RedisKey.MatchIntents); if (string.IsNullOrEmpty(intent)) { break; } if (existedIntents.Any(e => e == intent) || _dbContext.HotIntents.Any(h => h.Intent == intent)) { sql.Append($"UPDATE \"HotIntents\" SET \"Count\" = \"Count\"+1, \"UpdateTime\" ='{now}' WHERE \"Intent\"='{intent.Replace('\'', ' ')}';"); } else { sql.Append($"INSERT INTO \"HotIntents\" (\"Intent\",\"Count\",\"UpdateTime\") VALUES ('{intent.Replace('\'', ' ')}',1,'{now}');"); } existedIntents.Add(intent); } if (sql.Length > 0) { await _dbContext.ExecuteSqlAsync(sql.ToString()); } } _logger.LogInformation($"记录{length}条"); }
public async Task SyncPermisions() { var sql = "UPDATE \"Answers\" SET \"IsPublic\"=TRUE WHERE \"IsPublic\"<>TRUE AND \"Id\" NOT IN( SELECT \"QAId\" FROM \"QAPermissions\" GROUP BY \"QAPermissions\".\"QAId\");UPDATE \"Modulars\" SET \"IsPublic\"=TRUE WHERE \"IsPublic\"<>TRUE AND \"Id\" NOT IN( SELECT \"ModularId\" FROM \"ModularPermissions\" GROUP BY \"ModularId\");"; await _dbContext.ExecuteSqlAsync(sql); }