|
|
@@ -8,9 +8,11 @@ import com.alibaba.fastjson2.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
+import com.inspur.device.domain.SmsbDeviceChatDetail;
|
|
|
import com.inspur.device.domain.SmsbDeviceChatRecord;
|
|
|
import com.inspur.device.domain.bo.SmsbDeviceChatRecordBo;
|
|
|
import com.inspur.device.domain.vo.*;
|
|
|
+import com.inspur.device.mapper.SmsbDeviceChatDetailMapper;
|
|
|
import com.inspur.device.mapper.SmsbDeviceChatKeyMapper;
|
|
|
import com.inspur.device.mapper.SmsbDeviceChatRecordMapper;
|
|
|
import com.inspur.device.service.ISmsbDeviceChatRecordService;
|
|
|
@@ -39,10 +41,13 @@ public class SmsbDeviceChatRecordServiceImpl implements ISmsbDeviceChatRecordSer
|
|
|
|
|
|
private final SmsbDeviceChatRecordMapper baseMapper;
|
|
|
private final SmsbDeviceChatKeyMapper smsbDeviceChatKeyMapper;
|
|
|
+ private final SmsbDeviceChatDetailMapper smsbDeviceChatDetailMapper;
|
|
|
@Value("${dify.url}")
|
|
|
private String difyBaseUrl;
|
|
|
private static final String SYNC_CHAT_RECORD_URL = "/v1/conversations";
|
|
|
|
|
|
+ private static final String SYNC_CHAT_DETAIL_URL = "/v1/messages";
|
|
|
+
|
|
|
/**
|
|
|
* 查询问答记录
|
|
|
*
|
|
|
@@ -149,6 +154,7 @@ public class SmsbDeviceChatRecordServiceImpl implements ISmsbDeviceChatRecordSer
|
|
|
return true;
|
|
|
}
|
|
|
List<SmsbDeviceChatRecord> addRecordList = new ArrayList<>();
|
|
|
+ List<SmsbDeviceChatDetail> addDetailList = new ArrayList<>();
|
|
|
for (SmsbDeviceChatKeyVo chatKey : chatKeyVOList) {
|
|
|
String requestUrl = difyBaseUrl + SYNC_CHAT_RECORD_URL + "?user=role&limit=20";
|
|
|
String apiKey = chatKey.getApiKey();
|
|
|
@@ -176,14 +182,45 @@ public class SmsbDeviceChatRecordServiceImpl implements ISmsbDeviceChatRecordSer
|
|
|
SmsbDeviceChatRecord addRecord = new SmsbDeviceChatRecord();
|
|
|
createNewAddRecord(addRecord,rspData,chatKey);
|
|
|
addRecordList.add(addRecord);
|
|
|
- // 5、需要插入 再获取对话内容 TODO
|
|
|
-
|
|
|
+ // 6、再获取对话内容
|
|
|
+ String requestDetailUrl = difyBaseUrl + SYNC_CHAT_DETAIL_URL + "?user=role&limit=100&conversation_id=" + difyId;
|
|
|
+ JSONObject difyResponseDetail = getRecordFromDify(requestDetailUrl,apiKey);
|
|
|
+ if (null == difyResponseDetail) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ List<DifyChatDetailRspData> rspDetailDataList = difyResponseDetail.getJSONArray("data").toJavaList(DifyChatDetailRspData.class);
|
|
|
+ if (CollectionUtils.isEmpty(rspDetailDataList)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ // 7 组装详情数据
|
|
|
+ for (DifyChatDetailRspData detailRspData : rspDetailDataList) {
|
|
|
+ SmsbDeviceChatDetail addDetail = new SmsbDeviceChatDetail();
|
|
|
+ createNewAddDetail(addDetail,detailRspData);
|
|
|
+ addDetailList.add(addDetail);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
baseMapper.insertBatch(addRecordList);
|
|
|
+ smsbDeviceChatDetailMapper.insertBatch(addDetailList);
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public List<SmsbDeviceChatDetailVo> listDetail(String conversationId) {
|
|
|
+ return smsbDeviceChatDetailMapper.selectVoList(new LambdaQueryWrapper<SmsbDeviceChatDetail>()
|
|
|
+ .eq(SmsbDeviceChatDetail::getConversationId,conversationId)
|
|
|
+ .orderByDesc(SmsbDeviceChatDetail::getId));
|
|
|
+ }
|
|
|
+
|
|
|
+ private void createNewAddDetail(SmsbDeviceChatDetail addDetail, DifyChatDetailRspData detailRspData) {
|
|
|
+ addDetail.setConversationId(detailRspData.getConversation_id());
|
|
|
+ addDetail.setDifyId(detailRspData.getId());
|
|
|
+ addDetail.setQuery(detailRspData.getQuery());
|
|
|
+ addDetail.setAnswer(detailRspData.getAnswer());
|
|
|
+ addDetail.setCreatedAt(detailRspData.getCreated_at());
|
|
|
+ addDetail.setCreateTime(DateUtil.date(detailRspData.getCreated_at() * 1000));
|
|
|
+ }
|
|
|
+
|
|
|
private void createNewAddRecord(SmsbDeviceChatRecord addRecord, DifyChatRecordRspData rspData, SmsbDeviceChatKeyVo chatKey) {
|
|
|
addRecord.setDeviceId(chatKey.getDeviceId());
|
|
|
addRecord.setDeviceName(chatKey.getDeviceName());
|