Pārlūkot izejas kodu

fix gpt出图域名

zoujiajian 1 gadu atpakaļ
vecāks
revīzija
b05e703191

+ 15 - 0
netflix-common/src/main/java/com/cyksj/common/constant/Constant.java

@@ -569,4 +569,19 @@ public interface Constant {
 	 * 车票邮箱密码展示key
 	 */
 	String EMAIL_PWD_SHOW_GID_KEY = "email_pwd_show_gid_key";
+
+	/**
+	 * openai 原图域名
+	 */
+	String GPT_VIDEO_DOMAIN = "videos.openai.com";
+
+	/**
+	 * openai 原图反代域名
+	 */
+	String GPT_VIDEO_REPLACE_DOMAIN = "imgs.bestaistore.com";
+
+	/**
+	 * openai file 域名
+	 */
+	String GPT_FILE_DOMAIN = "filesystem.site";
 }

+ 22 - 15
netflix-service/src/main/java/com/cyksj/server/listener/ConsoleStreamListener.java

@@ -2,7 +2,8 @@ package com.cyksj.server.listener;
 
 
 import cn.hutool.core.util.StrUtil;
-import com.cyksj.common.util.ImageUploadUtil;
+import com.cyksj.common.constant.Constant;
+import com.cyksj.common.util.StringUtil;
 import com.cyksj.model.entity.MiniPopularizeUserConversationChat;
 import com.cyksj.model.gpt.Message;
 import com.cyksj.server.SendMessageUtil;
@@ -10,7 +11,6 @@ import com.cyksj.service.mini.MiniPopularizeCommonService;
 import lombok.Builder;
 import lombok.extern.slf4j.Slf4j;
 
-import java.io.IOException;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -36,17 +36,19 @@ public class ConsoleStreamListener extends AbstractStreamListener {
 		String content = delta.getContent();
 		String img = null;
 		if (StrUtil.isNotBlank(content)) {
-			if (content.contains("file")) {
+			if (content.contains(Constant.GPT_FILE_DOMAIN) || content.contains(Constant.GPT_VIDEO_DOMAIN)) {
 				String urlPattern = "\\bhttps?://[^\\s/$.?#].[^\\s]*\\b";
 				Pattern pattern = Pattern.compile(urlPattern);
 				Matcher matcher = pattern.matcher(content);
 				while (matcher.find()) {
 					img = matcher.group();
+					break;
 				}
-				miniPopularizeCommonService.saveImgRecord(setImagRecord(imgRecordId, img, MiniPopularizeUserConversationChat.Status.success, content));
-				//返回图片
-				log.info("返回图片:{}", img);
-				SendMessageUtil.sendMessage(userId, img);
+				if (miniPopularizeCommonService.saveImgRecord(setImagRecord(imgRecordId, img, MiniPopularizeUserConversationChat.Status.success, content))) {
+					//返回图片
+					log.info("返回图片:{}", img);
+				}
+//				SendMessageUtil.sendMessage(userId, img);
 				return;
 			}
 
@@ -57,14 +59,14 @@ public class ConsoleStreamListener extends AbstractStreamListener {
 				miniPopularizeCommonService.recordChatEndOfAnswer(conversationId, userId, "图片生成异常", MiniPopularizeUserConversationChat.Role.assistant);
 			}
 		}
-		SendMessageUtil.sendMessage(userId, message);
+//		SendMessageUtil.sendMessage(userId, message);
 	}
 
 	@Override
 	public void onError(Throwable throwable, String response) {
 		//将用户使用次数返回
 		miniPopularizeCommonService.recoverUserLimit(userId, recoverNum);
-		miniPopularizeCommonService.saveImgRecord(setImagRecord(imgRecordId, null, MiniPopularizeUserConversationChat.Status.fail, "出图失败"));
+		miniPopularizeCommonService.saveImgRecord(setImagRecord(imgRecordId, null, MiniPopularizeUserConversationChat.Status.fail, StringUtil.getErrorText(throwable)));
 		log.error("gpt对话异常,异常:{}", response);
 		Message message = Message.ofAssistant("图片生成异常");
 		SendMessageUtil.sendMessage(userId, message);
@@ -74,12 +76,17 @@ public class ConsoleStreamListener extends AbstractStreamListener {
 	}
 
 	public MiniPopularizeUserConversationChat setImagRecord(Long imagRecordId, String img, MiniPopularizeUserConversationChat.Status status, String content) {
-		String url = null;
-		if (StrUtil.isNotBlank(img)) {
-			try {
-				url = ImageUploadUtil.upload(img, "mgpt");
-			} catch (IOException e) {
-				url = img;
+		String url = img;
+//		if (StrUtil.isNotBlank(img)) {
+//			try {
+//				url = ImageUploadUtil.upload(img, "mgpt");
+//			} catch (IOException e) {
+//				url = img;
+//			}
+//		}
+		if (StrUtil.isNotBlank(url)) {
+			if (url.contains(Constant.GPT_VIDEO_DOMAIN)) {
+				url = url.replaceAll(Constant.GPT_VIDEO_DOMAIN, Constant.GPT_VIDEO_REPLACE_DOMAIN);
 			}
 		}
 		MiniPopularizeUserConversationChat build = MiniPopularizeUserConversationChat.builder()

+ 1 - 1
netflix-service/src/main/java/com/cyksj/service/mini/MiniPopularizeCommonService.java

@@ -12,7 +12,7 @@ public interface MiniPopularizeCommonService {
 
 	void recoverUserLimit(Long userId, Boolean recoverNum);
 
-	void saveImgRecord(MiniPopularizeUserConversationChat record);
+	Boolean saveImgRecord(MiniPopularizeUserConversationChat record);
 
 	void recordChatEndOfAnswer(String conversationId, Long userId, String content, MiniPopularizeUserConversationChat.Role role);
 

+ 8 - 1
netflix-service/src/main/java/com/cyksj/service/mini/impl/MiniPopularizeCommonServiceImpl.java

@@ -1,5 +1,6 @@
 package com.cyksj.service.mini.impl;
 
+import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.cyksj.mapper.mini.MiniPopularizeUserConversationChatMapper;
 import com.cyksj.mapper.mini.MiniPopularizeUserMapper;
@@ -35,11 +36,17 @@ public class MiniPopularizeCommonServiceImpl implements MiniPopularizeCommonServ
 	}
 
 	@Override
-	public void saveImgRecord(MiniPopularizeUserConversationChat record) {
+	public Boolean saveImgRecord(MiniPopularizeUserConversationChat record) {
 		Long id = record.getId();
 		if (id != null) {
+			MiniPopularizeUserConversationChat dbChat = conversationChatMapper.selectById(id);
+			if (StrUtil.isNotBlank(dbChat.getImg())) {
+				//已更新 直接返回false
+				return false;
+			}
 			conversationChatMapper.updateById(record);
 		} else conversationChatMapper.insert(record);
+		return true;
 	}
 
 	@Override