人脸识别与大模型问答
This commit is contained in:
parent
a94dd76e9d
commit
cf9abe48d5
|
|
@ -11,6 +11,8 @@ import org.springframework.web.multipart.MultipartFile;
|
|||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import com.bonus.system.api.RemoteFileService;
|
||||
|
||||
/**
|
||||
* @author bonus
|
||||
* 人脸识别控制层
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ public class KnowledgeChatWindowVo {
|
|||
/**
|
||||
* 窗口id
|
||||
*/
|
||||
private Long windowId;
|
||||
private String windowId;
|
||||
/**
|
||||
* 知识库id
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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<AiQuestionAnswer> getAllByWindowId(Long windowId);
|
||||
List<AiQuestionAnswer> getAllByWindowId(String windowId);
|
||||
|
||||
/**
|
||||
* 插入问答信息
|
||||
|
|
@ -61,6 +63,6 @@ public interface KnowledgeMapper {
|
|||
* @param aiQuestionAnswer 问答信息
|
||||
* @return 生成的窗口ID
|
||||
*/
|
||||
Long insertQuestionAnswer(AiQuestionAnswer aiQuestionAnswer);
|
||||
int insertQuestionAnswer(AiQuestionAnswer aiQuestionAnswer);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
/**
|
||||
* 插入问答信息
|
||||
|
|
|
|||
|
|
@ -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<SysFile> 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":
|
||||
|
|
|
|||
|
|
@ -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<AiQuestionAnswer> 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();
|
||||
|
|
|
|||
|
|
@ -4,14 +4,14 @@
|
|||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.bonus.ai.mapper.KnowledgeMapper">
|
||||
<insert id="insertChatWindow">
|
||||
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>
|
||||
<insert id="insertQuestionAnswer" useGeneratedKeys="true" keyProperty="recordId">
|
||||
<insert id="insertQuestionAnswer">
|
||||
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});
|
||||
</insert>
|
||||
|
||||
<select id="getList" resultType="com.bonus.ai.domain.KnowledgeChatWindowVo">
|
||||
|
|
|
|||
Loading…
Reference in New Issue