From 89c233ca9f8ee48e23e7337633375261db00f046 Mon Sep 17 00:00:00 2001 From: liwq <122639653@qq.com> Date: Wed, 15 Oct 2025 09:27:51 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=20ai=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sql/mysql/ai-manage.sql | 46 +++++++++++-------- .../app/dialog/vo/AiDialogMessageRespVo.java | 4 ++ .../dataobject/dialog/AiDialogMessageDO.java | 4 ++ .../service/dialog/AiDialogServiceImpl.java | 44 ++++++++++-------- 4 files changed, 60 insertions(+), 38 deletions(-) diff --git a/sql/mysql/ai-manage.sql b/sql/mysql/ai-manage.sql index ebf0d63..3cc9615 100644 --- a/sql/mysql/ai-manage.sql +++ b/sql/mysql/ai-manage.sql @@ -75,29 +75,39 @@ CREATE TABLE `tz_ai_sample_tag_group_relate` DROP TABLE IF EXISTS `tz_ai_dialog`; CREATE TABLE `tz_ai_dialog` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `title` varchar(128) NULL DEFAULT '' COMMENT '对话标题', - `user_id` bigint NOT NULL COMMENT '用户id', - `dialog_status` int(8) NULL COMMENT '对话状态(1active, 2archived, 3deleted)', - `creator` varchar(64) NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `updater` varchar(64) NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', - `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `title` varchar(128) DEFAULT '' COMMENT '对话标题', + `user_id` bigint NOT NULL COMMENT '用户id', + `dialog_status` int DEFAULT NULL COMMENT '对话状态(1active, 2archived, 3deleted)', + `creator` varchar(64) DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT '0' COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB COMMENT = 'ai-对话表'; +) ENGINE = InnoDB COMMENT ='ai-对话表'; DROP TABLE IF EXISTS `tz_ai_dialog_message`; CREATE TABLE `tz_ai_dialog_message` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', - `dialog_id` bigint NOT NULL COMMENT '对话id', - `content_text` varchar(64) NULL DEFAULT '' COMMENT '内容', - `content_type` int(8) NULL COMMENT '文本类型(1text,2image,3file,4audio)', - `message_order` int(8) NULL COMMENT '对话中的顺序', - `message_status` int(8) NULL COMMENT '消息状态 1正常 0删除', + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键', + `dialog_id` bigint NOT NULL COMMENT '对话id', + `content_text` text COMMENT '内容', + `content_type` int DEFAULT NULL COMMENT '文本类型(1text,2file)', + `message_order` int DEFAULT NULL COMMENT '对话中的顺序', + `message_status` int DEFAULT NULL COMMENT '消息状态 1正常 0删除', + `pet_id` bigint DEFAULT NULL COMMENT '宠物id', + `pet_name` varchar(255) DEFAULT NULL COMMENT '宠物名称', + `pet_avatar` varchar(255) DEFAULT NULL COMMENT '宠物头像', + `pet_type` varchar(64) DEFAULT NULL COMMENT '宠物类型', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `trans_result` text COMMENT '回答结果', + `content_duration` bigint DEFAULT NULL COMMENT '文件时长', + `trans_status` int DEFAULT NULL COMMENT '翻译状态(1成功 0失败)', + `source_result` text COMMENT '原始结果', + `file_name` varchar(255) DEFAULT NULL COMMENT '文件名称', PRIMARY KEY (`id`) USING BTREE -) ENGINE = InnoDB COMMENT = 'ai-对话消息表'; +) ENGINE = InnoDB COMMENT ='ai-对话消息表'; diff --git a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/vo/AiDialogMessageRespVo.java b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/vo/AiDialogMessageRespVo.java index 2789041..18bf676 100644 --- a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/vo/AiDialogMessageRespVo.java +++ b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/controller/app/dialog/vo/AiDialogMessageRespVo.java @@ -63,6 +63,10 @@ public class AiDialogMessageRespVo { * 翻译结果 */ private String transResult; + /** + * 翻译结果 + */ + private Integer transStatus; /** * 创建时间 */ diff --git a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/dal/dataobject/dialog/AiDialogMessageDO.java b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/dal/dataobject/dialog/AiDialogMessageDO.java index fe9508c..d84ae69 100644 --- a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/dal/dataobject/dialog/AiDialogMessageDO.java +++ b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/dal/dataobject/dialog/AiDialogMessageDO.java @@ -32,6 +32,10 @@ public class AiDialogMessageDO { * 内容 */ private String contentText; + /** + * 文件名 + */ + private String fileName; /** * 文件时长 */ diff --git a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/service/dialog/AiDialogServiceImpl.java b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/service/dialog/AiDialogServiceImpl.java index 1578bf8..6e963dc 100644 --- a/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/service/dialog/AiDialogServiceImpl.java +++ b/tashow-module/tashow-module-ai/src/main/java/com/tashow/cloud/ai/service/dialog/AiDialogServiceImpl.java @@ -75,31 +75,34 @@ public class AiDialogServiceImpl extends ServiceImpl if (messageDO == null) { messageDO = new AiDialogMessageDO(); } - + String fileName =StrUtil.isBlank(messageDO.getFileName())?fileReqVo.getFile().getOriginalFilename():messageDO.getFileName(); //上传文件获取文件地址 - String fileName = fileReqVo.getFile().getOriginalFilename(); - String fileUrl = fileServer + fileApi.createFile(fileReqVo.getFile().getBytes()); + String fileUrl =StrUtil.isBlank(messageDO.getContentText())? fileServer + fileApi.createFile(fileName,"",fileReqVo.getFile().getBytes()):messageDO.getContentText(); + log.info(fileUrl); //翻译结果 translate(messageDO,fileUrl, fileName); + //创建消息 持久化消息 - messageDO.setDialogId(fileReqVo.getDialogId()); - messageDO.setContentDuration(fileReqVo.getContentDuration()); + if (messageDO.getId()==null){ + messageDO.setFileName(fileName); + messageDO.setDialogId(fileReqVo.getDialogId()); + messageDO.setContentDuration(fileReqVo.getContentDuration()); - messageDO.setContentText(fileUrl); - messageDO.setContentType(2); - //宠物档案 todo - messageDO.setPetId(1l); - messageDO.setPetName("猫猫翻译"); - messageDO.setPetAvatar("https://img1.baidu.com/it/u=1224902049,3440357835&fm=253&app=138&f=JPEG?w=801&h=800"); - - //获取当前最后的排序 - AiDialogMessageDO aiDialogMessageDO = aiDialogMessageMapper.selectOne(new LambdaQueryWrapper() - .eq(AiDialogMessageDO::getDialogId, fileReqVo.getDialogId()) - .orderByDesc(AiDialogMessageDO::getMessageOrder) - .last("limit 1") - ); - messageDO.setMessageOrder(aiDialogMessageDO == null ? 1 : aiDialogMessageDO.getMessageOrder() + 1); - messageDO.setCreateTime(LocalDateTime.now()); + messageDO.setContentText(fileUrl); + messageDO.setContentType(2); + //宠物档案 todo + messageDO.setPetId(1l); + messageDO.setPetName("猫猫翻译"); + messageDO.setPetAvatar("https://img1.baidu.com/it/u=1224902049,3440357835&fm=253&app=138&f=JPEG?w=801&h=800"); + //获取当前最后的排序 + AiDialogMessageDO aiDialogMessageDO = aiDialogMessageMapper.selectOne(new LambdaQueryWrapper() + .eq(AiDialogMessageDO::getDialogId, fileReqVo.getDialogId()) + .orderByDesc(AiDialogMessageDO::getMessageOrder) + .last("limit 1") + ); + messageDO.setMessageOrder(aiDialogMessageDO == null ? 1 : aiDialogMessageDO.getMessageOrder() + 1); + messageDO.setCreateTime(LocalDateTime.now()); + } int i = messageDO.getId()==null? aiDialogMessageMapper.insert(messageDO):aiDialogMessageMapper.updateById(messageDO); TranslateRespVo bean = BeanUtils.toBean(messageDO, TranslateRespVo.class); bean.setId(messageDO.getId()); @@ -111,6 +114,7 @@ public class AiDialogServiceImpl extends ServiceImpl //调用大模型接口 String result = ""; try { + log.info(translateServer); result = HttpRequest.post(translateServer).form("audio_data", HttpUtil.downloadBytes(file), fileName).timeout(20000) //20秒超时时间 .execute().body(); } catch (Exception e) {