|
@@ -1,5 +1,8 @@
|
|
|
package com.bosshand.virgo.api.workark.service;
|
|
|
|
|
|
+import cn.hutool.core.util.StrUtil;
|
|
|
+import cn.hutool.http.HttpRequest;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.bosshand.virgo.api.workark.dao.*;
|
|
@@ -30,12 +33,11 @@ import io.github.imfangs.dify.client.model.workflow.WorkflowRunRequest;
|
|
|
import io.github.imfangs.dify.client.model.workflow.WorkflowRunStatusResponse;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
+import java.io.File;
|
|
|
import java.io.IOException;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.UUID;
|
|
|
+import java.util.*;
|
|
|
|
|
|
@Service
|
|
|
public class DifyService {
|
|
@@ -370,8 +372,14 @@ public class DifyService {
|
|
|
FileInfo info = new FileInfo();
|
|
|
String type = jsonObject.getString("type");
|
|
|
String transfer_method = jsonObject.getString("transfer_method");
|
|
|
- String url = jsonObject.getString("url");
|
|
|
- info.setUrl(url);
|
|
|
+ if(jsonObject.containsKey("url")){
|
|
|
+ String url = jsonObject.getString("url");
|
|
|
+ info.setUrl(url);
|
|
|
+ }
|
|
|
+ if(jsonObject.containsKey("upload_file_id")){
|
|
|
+ String upload_file_id = jsonObject.getString("upload_file_id");
|
|
|
+ info.setUploadFileId(upload_file_id);
|
|
|
+ }
|
|
|
for (FileType fileType : FileType.values()) {
|
|
|
if(fileType.getValue().equals(type)){
|
|
|
info.setType(fileType);
|
|
@@ -524,8 +532,14 @@ public class DifyService {
|
|
|
FileInfo info = new FileInfo();
|
|
|
String type = jsonObject.getString("type");
|
|
|
String transfer_method = jsonObject.getString("transfer_method");
|
|
|
- String url = jsonObject.getString("url");
|
|
|
- info.setUrl(url);
|
|
|
+ if(jsonObject.containsKey("url")){
|
|
|
+ String url = jsonObject.getString("url");
|
|
|
+ info.setUrl(url);
|
|
|
+ }
|
|
|
+ if(jsonObject.containsKey("upload_file_id")){
|
|
|
+ String upload_file_id = jsonObject.getString("upload_file_id");
|
|
|
+ info.setUploadFileId(upload_file_id);
|
|
|
+ }
|
|
|
for (FileType fileType : FileType.values()) {
|
|
|
if(fileType.getValue().equals(type)){
|
|
|
info.setType(fileType);
|
|
@@ -713,4 +727,45 @@ public class DifyService {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 上传文件
|
|
|
+ */
|
|
|
+ public Map upload(MultipartFile file, long difyTypeId) {
|
|
|
+
|
|
|
+ DifyType difyType = difyTypeDao.get(difyTypeId);
|
|
|
+
|
|
|
+ UserContext userContext = ContextUtils.getUserContext();
|
|
|
+ File toFile = transferToFile(file);
|
|
|
+ Map data = new HashMap();
|
|
|
+ data.put("file", toFile);
|
|
|
+ data.put("user", userContext.getUserName() + "-" + userContext.getUserId());
|
|
|
+ String body = HttpRequest.post("http://203.110.233.149:9000/v1/files/upload")
|
|
|
+ .header("Authorization", "Bearer "+ difyType.getApiKey())
|
|
|
+ .form(data)
|
|
|
+ .contentType("multipart/form-data")
|
|
|
+ .execute()
|
|
|
+ .body();
|
|
|
+ Map result = new HashMap();
|
|
|
+ if (StrUtil.isNotBlank(body)) {
|
|
|
+ result = JSON.parseObject(body, Map.class);
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ private File transferToFile(MultipartFile multipartFile) {
|
|
|
+ File file = null;
|
|
|
+ try {
|
|
|
+ String originalFilename = multipartFile.getOriginalFilename();
|
|
|
+ //获取文件后缀
|
|
|
+ String prefix = originalFilename.substring(originalFilename.lastIndexOf("."));
|
|
|
+ file = File.createTempFile(originalFilename, prefix);
|
|
|
+ multipartFile.transferTo(file);
|
|
|
+ //删除
|
|
|
+ file.deleteOnExit();
|
|
|
+ } catch (IOException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ return file;
|
|
|
+ }
|
|
|
+
|
|
|
}
|