diff --git a/server/src/main/java/com/emotion/service/impl/EpicScriptServiceImpl.java b/server/src/main/java/com/emotion/service/impl/EpicScriptServiceImpl.java index 4a97253..0077625 100644 --- a/server/src/main/java/com/emotion/service/impl/EpicScriptServiceImpl.java +++ b/server/src/main/java/com/emotion/service/impl/EpicScriptServiceImpl.java @@ -14,11 +14,15 @@ import com.emotion.dto.response.ai.AiRuntimeTestResponse; import com.emotion.dto.response.EpicScriptInspirationResponse; import com.emotion.dto.response.EpicScriptResponse; import com.emotion.dto.response.InspirationSuggestionResponse; +import com.emotion.entity.Conversation; import com.emotion.entity.EpicScript; +import com.emotion.entity.Message; import com.emotion.mapper.EpicScriptMapper; import com.emotion.service.AiRuntimeService; +import com.emotion.service.ConversationService; import com.emotion.service.EpicScriptService; import com.emotion.service.LifePathService; +import com.emotion.service.MessageService; import com.emotion.service.ScriptContextService; import com.emotion.service.TtsTaskService; import com.emotion.util.UserContextHolder; @@ -79,6 +83,12 @@ public class EpicScriptServiceImpl extends ServiceImpl getPageByCurrentUser(EpicScriptPageRequest request) { String currentUserId = UserContextHolder.getCurrentUserId(); @@ -675,6 +685,46 @@ public class EpicScriptServiceImpl extends ServiceImpl metadata = parseMetadata(message.getMetadata()); + script.setTitle((String) metadata.getOrDefault("title", script.getTitle())); + script.setPlotIntro((String) metadata.getOrDefault("plotIntro", "")); + script.setPlotTurning((String) metadata.getOrDefault("plotTurning", "")); + script.setPlotClimax((String) metadata.getOrDefault("plotClimax", "")); + script.setPlotEnding((String) metadata.getOrDefault("plotEnding", "")); + + Map plotJson = script.getPlotJson(); + if (plotJson == null) { + plotJson = new java.util.HashMap<>(); + } + plotJson.putAll(metadata); + script.setPlotJson(plotJson); + this.updateById(script); + + Conversation conversation = conversationService.getById(script.getConversationId()); + if (conversation != null) { + conversation.setCurrentMessageId(messageId); + conversationService.updateById(conversation); + } + + return convertToResponse(script); + } + @Override public boolean deleteScript(String id) { EpicScript script = this.getById(id); @@ -695,6 +745,20 @@ public class EpicScriptServiceImpl extends ServiceImpl parseMetadata(String metadataJson) { + if (!StringUtils.hasText(metadataJson)) { + return new java.util.HashMap<>(); + } + try { + return com.alibaba.fastjson2.JSON.parseObject(metadataJson, Map.class); + } catch (Exception e) { + return new java.util.HashMap<>(); + } + } + /** * 转换为响应对象 */