diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/controller/FaceController.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/controller/FaceController.java index 4b82324..3502974 100644 --- a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/controller/FaceController.java +++ b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/controller/FaceController.java @@ -11,6 +11,8 @@ import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; +import com.bonus.system.api.RemoteFileService; + /** * @author bonus * 人脸识别控制层 diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/controller/KnowledgeController.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/controller/KnowledgeController.java index fb5335d..df58893 100644 --- a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/controller/KnowledgeController.java +++ b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/controller/KnowledgeController.java @@ -36,7 +36,7 @@ public class KnowledgeController { * @return 集合 */ @PostMapping("/insertChatWindow") - public AjaxResult insertChatWindow(@RequestBody KnowledgeChatWindowVo knowledgeChatWindowVo) { + public AjaxResult insertChatWindow(@RequestBody KnowledgeChatWindowVo knowledgeChatWindowVo) { return knowledgeService.insertChatWindow(knowledgeChatWindowVo); } @@ -58,7 +58,7 @@ public class KnowledgeController { * @return 受影响的行数 */ @PostMapping("/deleteChatWindow/{windowId}") - public AjaxResult deleteChatWindow(@PathVariable Long windowId) { + public AjaxResult deleteChatWindow(@PathVariable String windowId) { return knowledgeService.deleteChatWindow(windowId); } @@ -70,7 +70,7 @@ public class KnowledgeController { * @return 受影响的行数 */ @PostMapping("/getAllByWindowId/{windowId}") - public AjaxResult getAllByWindowId(@PathVariable Long windowId) { + public AjaxResult getAllByWindowId(@PathVariable String windowId) { return knowledgeService.getAllByWindowId(windowId); } @@ -81,7 +81,7 @@ public class KnowledgeController { * @return 受影响的行数 */ @PostMapping("/insertQuestionAnswer") - public AjaxResult insertQuestionAnswer(AiQuestionAnswer aiQuestionAnswer) { + public AjaxResult insertQuestionAnswer(@RequestBody AiQuestionAnswer aiQuestionAnswer) { return knowledgeService.insertQuestionAnswer(aiQuestionAnswer); } diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/domain/KnowledgeChatWindowVo.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/domain/KnowledgeChatWindowVo.java index 341fc59..442fe61 100644 --- a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/domain/KnowledgeChatWindowVo.java +++ b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/domain/KnowledgeChatWindowVo.java @@ -13,7 +13,7 @@ public class KnowledgeChatWindowVo { /** * 窗口id */ - private Long windowId; + private String windowId; /** * 知识库id */ diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/domain/vo/AiQuestionAnswer.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/domain/vo/AiQuestionAnswer.java index a366c1c..6928c1c 100644 --- a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/domain/vo/AiQuestionAnswer.java +++ b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/domain/vo/AiQuestionAnswer.java @@ -16,7 +16,7 @@ public class AiQuestionAnswer { /** * 窗口ID,可为空 */ - private Long windowId; + private String windowId; /** * 问题内容,使用长文本 */ @@ -36,7 +36,7 @@ public class AiQuestionAnswer { /** * 客户ID,不可为空 */ - private String customerId; + private Long customerId; /** * 更新时间 */ diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/mapper/KnowledgeMapper.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/mapper/KnowledgeMapper.java index edc0a29..ce25604 100644 --- a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/mapper/KnowledgeMapper.java +++ b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/mapper/KnowledgeMapper.java @@ -2,6 +2,7 @@ package com.bonus.ai.mapper; import com.bonus.ai.domain.KnowledgeChatWindowVo; import com.bonus.ai.domain.vo.AiQuestionAnswer; +import org.apache.ibatis.annotations.Options; import org.springframework.stereotype.Repository; import java.util.List; @@ -27,9 +28,10 @@ public interface KnowledgeMapper { * 新增窗口 * * @param knowledgeChatWindowVo 聊天窗口信息 - * @return 受影响的行数 + * @return 新增的聊天窗口对象(包含生成的 windowId) */ - int insertChatWindow(KnowledgeChatWindowVo knowledgeChatWindowVo); + Long insertChatWindow(KnowledgeChatWindowVo knowledgeChatWindowVo); + /** * 更新聊天窗口信息 @@ -45,7 +47,7 @@ public interface KnowledgeMapper { * @param windowId 窗口ID * @return 受影响的行数 */ - int deleteChatWindow(Long windowId); + int deleteChatWindow(String windowId); /** @@ -53,7 +55,7 @@ public interface KnowledgeMapper { * * @return 所有问答记录的列表 */ - List getAllByWindowId(Long windowId); + List getAllByWindowId(String windowId); /** * 插入问答信息 @@ -61,6 +63,6 @@ public interface KnowledgeMapper { * @param aiQuestionAnswer 问答信息 * @return 生成的窗口ID */ - Long insertQuestionAnswer(AiQuestionAnswer aiQuestionAnswer); + int insertQuestionAnswer(AiQuestionAnswer aiQuestionAnswer); } diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/KnowledgeService.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/KnowledgeService.java index 59b1798..ae344c3 100644 --- a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/KnowledgeService.java +++ b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/KnowledgeService.java @@ -39,7 +39,7 @@ public interface KnowledgeService { * @param windowId 窗口ID * @return 受影响的行数 */ - AjaxResult deleteChatWindow(Long windowId); + AjaxResult deleteChatWindow(String windowId); /** @@ -47,7 +47,7 @@ public interface KnowledgeService { * * @return 所有问答记录的列表 */ - AjaxResult getAllByWindowId(Long windowId); + AjaxResult getAllByWindowId(String windowId); /** * 插入问答信息 diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/impl/FaceServiceImpl.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/impl/FaceServiceImpl.java index 13e1512..d2ea547 100644 --- a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/impl/FaceServiceImpl.java +++ b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/impl/FaceServiceImpl.java @@ -7,8 +7,11 @@ import com.bonus.ai.domain.vo.FaceVo; import com.bonus.ai.mapper.FaceMapper; import com.bonus.ai.service.FaceService; import com.bonus.ai.utils.FaceUtils; +import com.bonus.common.core.domain.R; import com.bonus.common.core.web.domain.AjaxResult; import com.bonus.common.security.utils.SecurityUtils; +import com.bonus.system.api.RemoteFileService; +import com.bonus.system.api.domain.SysFile; import org.apache.commons.lang3.ObjectUtils; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; @@ -29,6 +32,8 @@ public class FaceServiceImpl implements FaceService { @Resource private FaceMapper faceMapper; + @Resource + private RemoteFileService remoteFileService; /** * 查询全部人脸信息 @@ -136,22 +141,17 @@ public class FaceServiceImpl implements FaceService { face.setUpdateBy(SecurityUtils.getUsername()); face.setUpdateTime(new Date()); try { - // 设置保存文件的目录,这里假设是在应用程序的根目录下的uploads文件夹 - String uploadDir = "uploads"; - Path uploadPath = Paths.get(uploadDir); - // 如果目录不存在,则创建 - if (!Files.exists(uploadPath)) { - Files.createDirectories(uploadPath); + R upload = remoteFileService.upload(file); + if (upload.getCode() == 200) { + face.setFaceAddress(upload.getData().getUrl().replaceFirst("http://[^/]+", "")); + return faceMapper.insertFace(face) > 0 ? AjaxResult.success() : AjaxResult.error(); + } else { + return AjaxResult.error(); } - byte[] bytes = file.getBytes(); - String fileName = UUID.randomUUID() + file.getOriginalFilename(); - String filePath = Paths.get("uploads").toAbsolutePath().normalize().toString() + File.separator + fileName; - java.nio.file.Files.write(java.nio.file.Paths.get(filePath), bytes); - face.setFaceAddress(filePath); + } catch (Exception e) { return AjaxResult.error(); } - return faceMapper.insertFace(face) > 0 ? AjaxResult.success() : AjaxResult.error(); case "30006": return AjaxResult.error("文件类型不支持"); case "30007": diff --git a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/impl/KnowledgeServiceImpl.java b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/impl/KnowledgeServiceImpl.java index d0ebf0d..df86954 100644 --- a/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/impl/KnowledgeServiceImpl.java +++ b/bonus-modules/bonus-ai/src/main/java/com/bonus/ai/service/impl/KnowledgeServiceImpl.java @@ -9,6 +9,7 @@ import com.bonus.common.security.utils.SecurityUtils; import io.swagger.models.auth.In; import org.apache.commons.lang3.ObjectUtils; import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.RequestBody; import javax.annotation.Resource; import java.util.Date; @@ -51,12 +52,13 @@ public class KnowledgeServiceImpl implements KnowledgeService { knowledgeChatWindowVo.setCustomerId(SecurityUtils.getUserId()); knowledgeChatWindowVo.setCreateTime(new Date()); knowledgeChatWindowVo.setUpdateTime(new Date()); - int l = knowledgeMapper.insertChatWindow(knowledgeChatWindowVo); + Long l = knowledgeMapper.insertChatWindow(knowledgeChatWindowVo); if (l > 0) { return AjaxResult.success(); } else { return AjaxResult.error(); } + } catch (Exception e) { return AjaxResult.error(); } @@ -89,7 +91,7 @@ public class KnowledgeServiceImpl implements KnowledgeService { * @return 受影响的行数 */ @Override - public AjaxResult deleteChatWindow(Long windowId) { + public AjaxResult deleteChatWindow(String windowId) { try { int i = knowledgeMapper.deleteChatWindow(windowId); if (i > 0) { @@ -110,7 +112,7 @@ public class KnowledgeServiceImpl implements KnowledgeService { * @return 所有问答记录的列表 */ @Override - public AjaxResult getAllByWindowId(Long windowId) { + public AjaxResult getAllByWindowId(String windowId) { try { List allByWindowId = knowledgeMapper.getAllByWindowId(windowId); return AjaxResult.success(allByWindowId); @@ -128,11 +130,13 @@ public class KnowledgeServiceImpl implements KnowledgeService { @Override public AjaxResult insertQuestionAnswer(AiQuestionAnswer aiQuestionAnswer) { try { - Long l = knowledgeMapper.insertQuestionAnswer(aiQuestionAnswer); - if (ObjectUtils.isEmpty(l)) { - return AjaxResult.error(); + aiQuestionAnswer.setCustomerId(SecurityUtils.getUserId()); + aiQuestionAnswer.setUpdateTime(new Date()); + int num = knowledgeMapper.insertQuestionAnswer(aiQuestionAnswer); + if (num > 0) { + return AjaxResult.success(); } else { - return AjaxResult.success(l); + return AjaxResult.error(); } } catch (Exception e) { return AjaxResult.error(); diff --git a/bonus-modules/bonus-ai/src/main/resources/mapper/ai/KnowledgeMapper.xml b/bonus-modules/bonus-ai/src/main/resources/mapper/ai/KnowledgeMapper.xml index aee8384..bdb6a6c 100644 --- a/bonus-modules/bonus-ai/src/main/resources/mapper/ai/KnowledgeMapper.xml +++ b/bonus-modules/bonus-ai/src/main/resources/mapper/ai/KnowledgeMapper.xml @@ -4,14 +4,14 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - insert into ai_chat_window (knowledge_id, window_name, chat_type, customer_id, create_time, + INSERT INTO ai_chat_window (window_id, knowledge_id, window_name, chat_type, customer_id, create_time, update_time, remark) - values (#{knowledgeId}, #{windowName}, #{chatType}, #{customerId}, now(), now(), #{remark}); + VALUES (#{windowId}, #{knowledgeId}, #{windowName}, #{chatType}, #{customerId}, NOW(), NOW(), #{remark}); - + INSERT INTO ai_question_answer (window_id, question, answer, knowledge, del_flag, customer_id, update_time, remark) - VALUES (#{windowId}, #{question}, #{answer}, #{knowledge}, #{delFlag}, #{customerId}, #{updateTime}, #{remark}); + VALUES (#{windowId}, #{question}, #{answer}, #{knowledge}, '0', #{customerId}, #{updateTime}, #{remark});