diff --git a/LMS.Tools/MJPackage/TaskStatusCheckService.cs b/LMS.Tools/MJPackage/TaskStatusCheckService.cs index afeadd4..fe97d03 100644 --- a/LMS.Tools/MJPackage/TaskStatusCheckService.cs +++ b/LMS.Tools/MJPackage/TaskStatusCheckService.cs @@ -4,7 +4,6 @@ using LMS.Repository.DB; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Logging; using Newtonsoft.Json; -using Newtonsoft.Json.Linq; using Quartz; namespace LMS.Tools.MJPackage @@ -80,8 +79,29 @@ namespace LMS.Tools.MJPackage } task.Status = status; + if (properties.TryGetValue("isPartner", out var isPartner)) + { + if ((bool)isPartner == true) + { + properties = ProcessPartnerTaskDataAsync(properties); + } + } + else if (properties.TryGetValue("isOfficial", out var isOfficial)) + { + if ((bool)isOfficial == true) + { + properties = ProcessOfficialTaskDataAsync(properties); + } + } + else if (properties.TryGetValue("isYouChuan", out var isYouChuan)) + { + if ((bool)isYouChuan == true) + { + properties = ProcessYouChuanTaskDataAsync(properties); + } + } + - properties = ProcessTaskDataAsync(properties); if (status == MJTaskStatus.SUCCESS || status == MJTaskStatus.FAILURE || status == MJTaskStatus.CANCEL) { @@ -133,60 +153,46 @@ namespace LMS.Tools.MJPackage } /// - /// 单独处理生图包,将参数xie'chu'l + /// 合作伙伴任务数据处理 /// /// /// - public Dictionary ProcessTaskDataAsync(Dictionary properties) + public Dictionary ProcessPartnerTaskDataAsync(Dictionary properties) { try { - // 转换为JObject以简化访问 string jsonStr = JsonConvert.SerializeObject(properties); - JObject jObj = JObject.Parse(jsonStr); + dynamic data = JsonConvert.DeserializeObject(jsonStr) ?? new object { }; // 检查是否是合作伙伴任务 - bool isPartner = jObj["isPartner"]?.Value() ?? false; - string? partnerTaskId = jObj["partnerTaskId"]?.ToString(); + // 直接用dynamic访问,不做类型判断 + bool isPartner = data?.isPartner ?? false; + string partnerTaskId = data?.partnerTaskId ?? string.Empty; if (isPartner && !string.IsNullOrEmpty(partnerTaskId)) { _logger.LogInformation($"处理合作伙伴任务: {partnerTaskId}"); - // 获取partnerTaskInfo和imgUrls - JToken? partnerTaskInfo = jObj["partnerTaskInfo"]; - if (partnerTaskInfo != null) - { - if (partnerTaskInfo["imgUrls"] is JArray imgUrlsArray && imgUrlsArray.Count > 0) - { - var imageUrls = new List(); + // 直接遍历,让异常处理兜底 + var imageUrls = new List(); - foreach (JToken item in imgUrlsArray) - { - string? url = item["url"]?.ToString(); - if (!string.IsNullOrEmpty(url)) - { - imageUrls.Add(new - { - url = url ?? string.Empty - }); - } - } - if (imageUrls.Count > 0) - { - // 直接添加到原始properties字典 - properties["imgUrls"] = imageUrls; - _logger.LogInformation($"成功提取了{imageUrls.Count}个图片URL"); - } - } - else + foreach (var item in data?.partnerTaskInfo?.imgUrls ?? Array.Empty()) + { + string url = item?.url ?? string.Empty; + if (!string.IsNullOrEmpty(url)) { - _logger.LogInformation("未找到图片URL数组或数组为空"); + imageUrls.Add(new { url }); } } + + if (imageUrls.Count > 0) + { + properties["imageUrls"] = imageUrls; + _logger.LogInformation($"成功提取了{imageUrls.Count}个图片URL"); + } else { - _logger.LogInformation("未找到partnerTaskInfo信息"); + _logger.LogInformation("未找到partnerTaskInfo或者是图片信信息"); } } else @@ -202,5 +208,119 @@ namespace LMS.Tools.MJPackage return properties; // 返回原始数据,避免处理错误导致数据丢失 } } + + /// + /// 官方任务数据处理 + /// + /// + /// + public Dictionary ProcessOfficialTaskDataAsync(Dictionary properties) + { + try + { + string jsonStr = JsonConvert.SerializeObject(properties); + dynamic data = JsonConvert.DeserializeObject(jsonStr) ?? new object { }; + + // 检查是否是合作伙伴任务 + // 直接用dynamic访问,不做类型判断 + bool isOfficial = data?.isOfficial ?? false; + string officialTaskId = data?.officialTaskId ?? string.Empty; + + if (isOfficial && !string.IsNullOrEmpty(officialTaskId)) + { + _logger.LogInformation($"处理官方任务: {officialTaskId}"); + + // 直接遍历,让异常处理兜底 + var imageUrls = new List(); + + foreach (var item in data?.officialTaskInfo?.imgUrls ?? Array.Empty()) + { + string url = item?.url ?? string.Empty; + if (!string.IsNullOrEmpty(url)) + { + imageUrls.Add(new { url }); + } + } + + if (imageUrls.Count > 0) + { + properties["imageUrls"] = imageUrls; + _logger.LogInformation($"成功提取了{imageUrls.Count}个图片URL"); + } + else + { + _logger.LogInformation("未找到officialTaskInfo或者是图片信信息"); + } + } + else + { + _logger.LogInformation($"任务不是official任务或缺少必要信息: isOfficial={isOfficial}, officialTaskId={officialTaskId}"); + } + + return properties; + } + catch (Exception ex) + { + _logger.LogError(ex, "处理任务数据时发生错误"); + return properties; // 返回原始数据,避免处理错误导致数据丢失 + } + } + + /// + /// 悠船任务数据处理 + /// + /// + /// + public Dictionary ProcessYouChuanTaskDataAsync(Dictionary properties) + { + try + { + string jsonStr = JsonConvert.SerializeObject(properties); + dynamic data = JsonConvert.DeserializeObject(jsonStr) ?? new object { }; + + // 检查是否是合作伙伴任务 + // 直接用dynamic访问,不做类型判断 + bool isYouChuan = data?.isYouChuan ?? false; + string youChuanTaskId = data?.youChuanTaskId ?? string.Empty; + + if (isYouChuan && !string.IsNullOrEmpty(youChuanTaskId)) + { + _logger.LogInformation($"处理悠船任务: {youChuanTaskId}"); + + // 直接遍历,让异常处理兜底 + var imageUrls = new List(); + + foreach (var item in data?.youChuanTaskInfo?.imgUrls ?? Array.Empty()) + { + string url = item?.url ?? string.Empty; + if (!string.IsNullOrEmpty(url)) + { + imageUrls.Add(new { url }); + } + } + + if (imageUrls.Count > 0) + { + properties["imageUrls"] = imageUrls; + _logger.LogInformation($"成功提取了{imageUrls.Count}个图片URL"); + } + else + { + _logger.LogInformation("未找到youChuanTaskInfo或者是图片信信息"); + } + } + else + { + _logger.LogInformation($"任务不是YouChuan任务或缺少必要信息: isYouChuan={isYouChuan}, youChuanTaskId={youChuanTaskId}"); + } + + return properties; + } + catch (Exception ex) + { + _logger.LogError(ex, "处理任务数据时发生错误"); + return properties; // 返回原始数据,避免处理错误导致数据丢失 + } + } } } diff --git a/LMS.service/Program.cs b/LMS.service/Program.cs index 0a9b528..61d0d7b 100644 --- a/LMS.service/Program.cs +++ b/LMS.service/Program.cs @@ -4,9 +4,7 @@ using LMS.DAO; using LMS.Repository.FileUpload; using LMS.Repository.Models.DB; using LMS.service.Configuration; -using LMS.service.Configuration.InitConfiguration; using LMS.service.Extensions.Middleware; -using LMS.Tools.MJPackage; using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; diff --git a/LMS.service/Service/MJPackage/MJPackageService.cs b/LMS.service/Service/MJPackage/MJPackageService.cs index cd1ee18..fab142d 100644 --- a/LMS.service/Service/MJPackage/MJPackageService.cs +++ b/LMS.service/Service/MJPackage/MJPackageService.cs @@ -6,7 +6,6 @@ using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using System.Net.Sockets; using System.Text.Json; -using static Betalgo.Ranul.OpenAI.ObjectModels.StaticValues.AssistantsStatics.MessageStatics; namespace LMS.service.Service.MJPackage {