From 2b66ac70a801d9b010cc8c77abdd2b09cdf94ae5 Mon Sep 17 00:00:00 2001
From: chengf <cgf12138@163.com>
Date: 星期三, 11 二月 2026 10:16:27 +0800
Subject: [PATCH] 添加状态:停止服务-cgf
---
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/copywriting/controller/CopywritingController.java | 345 +++++++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 285 insertions(+), 60 deletions(-)
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/copywriting/controller/CopywritingController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/copywriting/controller/CopywritingController.java
index d146dab..76163fb 100644
--- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/copywriting/controller/CopywritingController.java
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/copywriting/controller/CopywritingController.java
@@ -3,12 +3,19 @@
import java.io.File;
import java.io.FileInputStream;
import java.util.*;
+import java.util.regex.Pattern;
import java.util.stream.Collectors;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import com.alibaba.fastjson2.JSONObject;
+import opennlp.tools.dictionary.serializer.Entry;
+import org.jeecg.modules.demo.copywritingScheme.entity.CopywritingScheme;
+import org.jeecg.modules.demo.copywritingScheme.service.ICopywritingSchemeService;
+import org.jeecg.modules.system.entity.SysUser;
+import org.jeecg.modules.system.service.ISysUserService;
+import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.http.*;
@@ -39,6 +46,8 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
+import org.springframework.http.client.SimpleClientHttpRequestFactory;
+import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.bind.annotation.*;
@@ -61,12 +70,17 @@
@RestController
@RequestMapping("/copywriting/copywriting")
@Slf4j
+@EnableAsync
public class CopywritingController extends JeecgController<Copywriting, ICopywritingService> {
- @Autowired
- private ICopywritingService copywritingService;
+ @Autowired
+ public ICopywritingService copywritingService;
@Autowired
- private ISemanticWordService semanticWordService;
-
+ private ISemanticWordService semanticWordService;;
+ @Autowired
+ private ISysUserService sysUserService;
+
+ @Autowired
+ private ICopywritingSchemeService copywritingSchemeService;
/**
* 鍒嗛〉鍒楄〃鏌ヨ
*
@@ -94,8 +108,19 @@
}
if (StringUtils.isNotBlank(copywriting.getWordLike())){
queryWrapper.exists("SELECT 1 FROM semantic_word WHERE semantic_word.id = copywriting.word_id " +
- "AND semantic_word.word LIKE '%" + copywriting.getWordLike() + "%'");
+ "AND semantic_word.word LIKE '%" + copywriting.getWordLike() + "%'");
+ }
+ if (StringUtils.isNotBlank(copywriting.getContractId())) {
+ // 1. 鎷兼帴鍏宠仈 contact 琛ㄧ殑 EXISTS 瀛愭煡璇紝浣跨敤 contact.id 浣滀负澶栭敭鍏宠仈
+ // 2. 浣跨敤 MyBatis-Plus 鐨勫弬鏁板崰浣嶇閬垮厤 SQL 娉ㄥ叆锛岃�屼笉鏄洿鎺ュ瓧绗︿覆鎷兼帴
+ String existsSql = "SELECT 1 FROM semantic_word " +
+ "LEFT JOIN contract ON semantic_word.contract_id = contract.id " + // 鍏宠仈 contact 琛紙澶栭敭鍏宠仈锛�
+ "WHERE semantic_word.id = copywriting.word_id " +
+ "AND contract.id = " + copywriting.getContractId(); // 浣跨敤 contact 琛ㄧ殑 id 浣滀负鏉′欢
+
+ // 缁� QueryWrapper 璁剧疆鍙傛暟锛岄伩鍏� SQL 娉ㄥ叆
+ queryWrapper.exists(existsSql);
}
Page<Copywriting> page = new Page<Copywriting>(pageNo, pageSize);
IPage<Copywriting> pageList = copywritingService.page(page, queryWrapper);
@@ -104,6 +129,47 @@
}
return Result.OK(pageList);
}
+
+
+ @Operation(summary="鏂囨-鏌ヨ鍙戦�侀棬鎴锋枃绔犳�婚噺")
+ @GetMapping(value = "/count")
+ public Result<IPage<Copywriting>> count(Copywriting copywriting,
+ @RequestParam(name="role", defaultValue="鏃�") String role,
+ @RequestParam(name="user", defaultValue="鏃�") String user,
+ HttpServletRequest req) {
+
+ QueryWrapper<Copywriting> queryWrapper = QueryGenerator.initQueryWrapper(copywriting, req.getParameterMap());
+
+ if (StringUtils.isNotBlank(copywriting.getTitleLike())) {
+ queryWrapper.like("title", copywriting.getTitleLike());
+ }
+ if (StringUtils.isNotBlank(copywriting.getTitleLike()) && StringUtils.isNotBlank(copywriting.getWordLike())) {
+ queryWrapper.or();
+ }
+ if (StringUtils.isNotBlank(copywriting.getWordLike())){
+ queryWrapper.exists("SELECT 1 FROM semantic_word WHERE semantic_word.id = copywriting.word_id " +
+ "AND semantic_word.word LIKE '%" + copywriting.getWordLike() + "%'");
+
+ }
+
+ if (!user.equals("鏃�")){
+ QueryWrapper qw = new QueryWrapper<SysUser>();
+ qw.eq("id", user);
+ String userName = ((SysUser)((Page) sysUserService.queryPageList(req, qw, 1, 1).getResult()).getRecords().get(0)).getUsername();
+ queryWrapper.eq("create_by", userName);
+ }
+ long count = copywritingService.count(queryWrapper);
+ return Result.OK(count+"");
+ }
+
+
+
+ @Operation(summary="鏂囨-鏌ヨ鍙戦�侀棬鎴锋枃绔犳�婚噺")
+ @GetMapping(value = "/upAvgTime")
+ public Result<IPage<Copywriting>> upAvgTime(Copywriting copywriting,
+ HttpServletRequest req) {
+ return Result.OK("5");
+ }
/**
* 娣诲姞
@@ -116,6 +182,9 @@
@RequiresPermissions("copywriting:copywriting:add")
@PostMapping(value = "/add")
public Result<String> add(@RequestBody Copywriting copywriting) {
+ if (copywriting.getOutStatus() == null) {
+ copywriting.setOutStatus("1");
+ }
copywritingService.save(copywriting);
return Result.OK("娣诲姞鎴愬姛锛�");
@@ -195,6 +264,9 @@
return super.exportXls(request, copywriting, Copywriting.class, "鏂囨");
}
+
+ @Value("${jeecg.path.upload}")
+ private String uploadPath;
/**
* 閫氳繃excel瀵煎叆鏁版嵁
*
@@ -212,74 +284,101 @@
@RequiresPermissions("copywriting:copywriting:aiCreateCopyWriting")
@RequestMapping(value = "/aiCreateCopyWriting", method = RequestMethod.POST)
public Result<?> aiCreateCopyWriting(
- @RequestParam("jianli") String jianli,
+ @RequestParam(name = "file", required = false) String jianli,
+ @RequestParam(name = "url", required = false) String jianli2,
@RequestParam String wenanyaoqiu,
@RequestParam String louchu,
@RequestParam String youshang,
@RequestParam String wenti,
- @RequestParam String user) {
- if (jianli == null || jianli.equals("")) {
- return Result.error("璇烽�夋嫨鏂囦欢");
- }
+ @RequestParam String user,
+ @RequestParam String csId) {
+ if (csId == null){
+ csId = "2020795745607319553";
+ }
+ CopywritingScheme copywritingScheme = new CopywritingScheme();
+ copywritingScheme.setId(csId);
+ return getResult(jianli, jianli2, wenanyaoqiu, louchu, youshang, wenti, user, copywritingScheme);
+ }
+
+ public Result<?> getResult(String jianli, String jianli2, String wenanyaoqiu, String louchu, String youshang, String wenti, String user, CopywritingScheme cs) {
+ QueryWrapper<CopywritingScheme> copywritingSchemeQueryWrapper = new QueryWrapper<>();
+
+ if (cs.getId() == null){
+ cs.setId("2020795745607319553");
+ }
+ copywritingSchemeQueryWrapper.eq("id", cs.getId());
+ List<CopywritingScheme> list = copywritingSchemeService.list(copywritingSchemeQueryWrapper);
+ if(list.size()==0) {
+ return Result.error("鏂规涓嶅瓨鍦�");
+ } else {
+ cs = list.get(0);
+ }
// 閰嶇疆淇℃伅
- String serverFileRoot = "D:\\opt\\upFiles\\";
- String workflowUrl = "http://14.103.174.44/v1/workflows/run";
- String fileUploadUrl = "http://14.103.174.44/v1/files/upload"; // 鏂囦欢涓婁紶鎺ュ彛锛堝亣璁撅級
- String authToken = "app-J1Tqytg0ZetcrVTF2fVHHY8B";
+ String serverFileRoot = uploadPath;
+ String workflowUrl = cs.getWorkflowUrl();
+ String fileUploadUrl = cs.getFileUploadUrl(); // 鏂囦欢涓婁紶鎺ュ彛锛堝亣璁撅級
+ String authToken = cs.getAuthToken();
String userId = user;
- String appId = "cf85fe4d-b76b-4c4c-801a-1336c880d473";
+ String appId = cs.getAppId();
try {
- // 姝ラ1锛氫笂浼犵畝鍘嗘枃浠讹紝鑾峰彇 upload_file_id 鍒楄〃
- List<String> jianliFileList = Arrays.asList(jianli.split(","));
- List<String> jianliFileIds = new ArrayList<>();
- for (String fileName : jianliFileList) {
- // 淇锛氬彧杩囨护璺緞閬嶅巻瀛楃锛屼繚鐣欏悎娉曠殑 /
- String safeFileName = fileName.trim()
- // 杩囨护 ../ 鍜� ./ 搴忓垪锛堥槻姝㈣闂笂绾х洰褰曪級
- .replaceAll("\\.\\./", "")
- .replaceAll("\\./", "");
+ Map<String, Object> inputs = new HashMap<>();
+ if (jianli != null) {
+ // 姝ラ2锛氭瀯寤� inputs 鍙傛暟锛堟寜鎺ュ彛瑕佹眰鏍煎紡锛�
+ List<String> jianliFileList = Arrays.asList(jianli.split(","));
+ if (jianliFileList != null && !jianliFileList.isEmpty()) {
+ // 姝ラ1锛氫笂浼犵畝鍘嗘枃浠讹紝鑾峰彇 upload_file_id 鍒楄〃
+ List<String> jianliFileIds = new ArrayList<>();
+ for (String fileName : jianliFileList) {
+ // 淇锛氬彧杩囨护璺緞閬嶅巻瀛楃锛屼繚鐣欏悎娉曠殑 /
+ String safeFileName = File.separator + fileName.trim()
+ // 杩囨护 ../ 鍜� ./ 搴忓垪锛堥槻姝㈣闂笂绾х洰褰曪級
+ .replaceAll("\\.\\./", "")
+ .replaceAll("\\./", "");
// 杩涗竴姝ュ畨鍏ㄦ牎楠岋細纭繚鎷兼帴鍚庣殑鏂囦欢璺緞鍦ㄦ湇鍔″櫒鏍圭洰褰曚笅锛堟牳蹇冨畨鍏ㄦ帾鏂斤級
- File file = new File(serverFileRoot + safeFileName);
- String canonicalPath = file.getCanonicalPath(); // 鑾峰彇鏍囧噯鍖栬矾寰勶紙鑷姩瑙f瀽 ../ 绛夛級
- String canonicalRootPath = new File(serverFileRoot).getCanonicalPath();
+ File file = new File(serverFileRoot + safeFileName);
+ String canonicalPath = file.getCanonicalPath(); // 鑾峰彇鏍囧噯鍖栬矾寰勶紙鑷姩瑙f瀽 ../ 绛夛級
+ String canonicalRootPath = new File(serverFileRoot).getCanonicalPath();
// 鏍¢獙锛氬鏋滄枃浠惰矾寰勪笉鍦ㄦ湇鍔″櫒鏍圭洰褰曚笅锛岃涓洪潪娉曡姹�
- if (!canonicalPath.startsWith(canonicalRootPath)) {
- throw new RuntimeException("闈炴硶鏂囦欢璁块棶锛�" + fileName);
- }
+ if (!canonicalPath.startsWith(canonicalRootPath)) {
+ throw new RuntimeException("闈炴硶鏂囦欢璁块棶锛�" + fileName);
+ }
// 鍐嶅垽鏂枃浠舵槸鍚﹀瓨鍦�
- if (!file.exists() || !file.isFile()) {
- return Result.error("鏈嶅姟鍣ㄤ笉瀛樺湪鏂囦欢锛�" + safeFileName + "锛岃矾寰勶細" + file.getAbsolutePath());
+ if (!file.exists() || !file.isFile()) {
+ return Result.error("鏈嶅姟鍣ㄤ笉瀛樺湪鏂囦欢锛�" + safeFileName + "锛岃矾寰勶細" + file.getAbsolutePath());
+ }
+ // 璋冪敤鏂囦欢涓婁紶鎺ュ彛锛岃幏鍙� upload_file_id
+ String fileId = uploadFileToServer(file, fileUploadUrl, authToken);
+ jianliFileIds.add(fileId);
+ }
+
+
+ // 澶勭悊绠�鍘嗘枃浠讹紙jianli 鏄� variable_name锛屽搴旀帴鍙g殑 {variable_name}锛�
+ if (!jianliFileIds.isEmpty()) {
+ // 鑻ユ敮鎸佸涓枃浠讹紝鍙兘闇�瑕佹暟缁勫舰寮忥紱鍗曚釜鏂囦欢鍒欑洿鎺ユ斁瀵硅薄
+ List<Map<String, String>> jianliFiles = new ArrayList<>();
+ for (String fileId : jianliFileIds) {
+ Map<String, String> fileInfo = new HashMap<>();
+ fileInfo.put("transfer_method", "local_file"); // 鍥哄畾鍊硷紝鎺ュ彛瑕佹眰
+ fileInfo.put("upload_file_id", fileId); // 涓婁紶鏂囦欢杩斿洖鐨処D
+ fileInfo.put("type", "document"); // 鏂囦欢绫诲瀷锛屽 document/image 绛夛紙鎸夋帴鍙h姹傦級
+ jianliFiles.add(fileInfo);
+ }
+ inputs.put("jianli", jianliFiles); // jianli 瀵瑰簲 {variable_name}
+ } else {
+ inputs.put("jianli", new ArrayList<>()); // 绌烘枃浠跺垪琛�
+ }
}
- // 璋冪敤鏂囦欢涓婁紶鎺ュ彛锛岃幏鍙� upload_file_id
- String fileId = uploadFileToServer(file, fileUploadUrl, authToken);
- jianliFileIds.add(fileId);
}
- // 姝ラ2锛氭瀯寤� inputs 鍙傛暟锛堟寜鎺ュ彛瑕佹眰鏍煎紡锛�
- Map<String, Object> inputs = new HashMap<>();
-
- // 澶勭悊绠�鍘嗘枃浠讹紙jianli 鏄� variable_name锛屽搴旀帴鍙g殑 {variable_name}锛�
- if (!jianliFileIds.isEmpty()) {
- // 鑻ユ敮鎸佸涓枃浠讹紝鍙兘闇�瑕佹暟缁勫舰寮忥紱鍗曚釜鏂囦欢鍒欑洿鎺ユ斁瀵硅薄
- List<Map<String, String>> jianliFiles = new ArrayList<>();
- for (String fileId : jianliFileIds) {
- Map<String, String> fileInfo = new HashMap<>();
- fileInfo.put("transfer_method", "local_file"); // 鍥哄畾鍊硷紝鎺ュ彛瑕佹眰
- fileInfo.put("upload_file_id", fileId); // 涓婁紶鏂囦欢杩斿洖鐨処D
- fileInfo.put("type", "document"); // 鏂囦欢绫诲瀷锛屽 document/image 绛夛紙鎸夋帴鍙h姹傦級
- jianliFiles.add(fileInfo);
- }
- inputs.put("jianli", jianliFiles); // jianli 瀵瑰簲 {variable_name}
- } else {
- inputs.put("jianli", new ArrayList<>()); // 绌烘枃浠跺垪琛�
+ if (jianli2 != null) {
+ inputs.put("jianli2", jianli2);
}
-
// 娣诲姞鍏朵粬鏂囨湰鍙傛暟
- inputs.put("wenanyaoqiu", wenanyaoqiu);
+ inputs.put("benchmarkUrl", wenanyaoqiu);
inputs.put("louchu", louchu);
inputs.put("youshang", youshang);
inputs.put("wenti", wenti);
@@ -293,7 +392,111 @@
requestBody.put("inputs", inputs); // 椤跺眰 inputs 瀹瑰櫒
requestBody.put("user", user); // 椤跺眰 inputs 瀹瑰櫒
+ SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
+// 杩炴帴瓒呮椂锛氬缓绔婽CP杩炴帴鐨勮秴鏃舵椂闂达紝鍗曚綅姣锛堝缓璁5绉掞級
+ factory.setConnectTimeout(5000);
+// 璇诲彇瓒呮椂锛氱瓑寰呮湇鍔$鍝嶅簲鏁版嵁鐨勮秴鏃舵椂闂达紝鍗曚綅姣锛堟牴鎹帴鍙h�楁椂璋冩暣锛岃繖閲岃30绉掞級
+ factory.setReadTimeout(200000);
// 姝ラ4锛氳皟鐢ㄥ伐浣滄祦鎺ュ彛
+ RestTemplate restTemplate = new RestTemplate(factory);
+ HttpHeaders headers = new HttpHeaders();
+ headers.setContentType(MediaType.APPLICATION_JSON);
+ headers.set("Authorization", "Bearer " + authToken);
+
+ HttpEntity<Map<String, Object>> requestEntity = new HttpEntity<>(requestBody, headers);
+ ResponseEntity<String> response = restTemplate.postForEntity(workflowUrl, requestEntity, String.class);
+
+ if (response.getStatusCode() == HttpStatus.OK) {
+ if (JSONObject.parseObject(response.getBody()).getJSONObject("data").get("outputs") == null) {
+ return Result.error(JSONObject.parseObject(response.getBody()).getJSONObject("data").getString("error"));
+ }
+ else{
+ String test = JSONObject.parseObject(response.getBody()).getJSONObject("data").getJSONObject("outputs").getString("http");
+
+// ========== 涓棿鎿嶄綔锛歁D杞琀TML鏍煎紡鏂囨湰锛堜繚鐣欐墍鏈夊洖杞︼紝鏂板####鍥涚骇鏍囬澶勭悊锛� ==========
+// 1. 瀹氫箟MD璇硶姝e垯锛堣ˉ鍏�####鍥涚骇鏍囬锛屽叾浠栦繚鐣欙級
+ Pattern h1Pattern = Pattern.compile("^# (.*)", Pattern.MULTILINE);
+ Pattern h2Pattern = Pattern.compile("^## (.*)", Pattern.MULTILINE);
+ Pattern h3Pattern = Pattern.compile("^### (.*)", Pattern.MULTILINE);
+ Pattern h4Pattern = Pattern.compile("^#### (.*)", Pattern.MULTILINE); // 鏂板锛氬洓绾ф爣棰樻鍒�
+ Pattern ulStartPattern = Pattern.compile("^- (.*)", Pattern.MULTILINE);
+ Pattern boldPattern = Pattern.compile("\\*\\*(.*?)\\*\\*");
+ Pattern hrPattern = Pattern.compile("^---+$", Pattern.MULTILINE);
+
+// 2. 閫愭鏇挎崲MD璇硶涓篐TML鏍囩锛堜繚鐣欐墍鏈夋崲琛岋紝鏂板鍥涚骇鏍囬杞崲锛�
+ test = h1Pattern.matcher(test).replaceAll("<h1>$1</h1>"); // 涓�绾ф爣棰樷啋<h1>
+ test = h2Pattern.matcher(test).replaceAll("<h2>$1</h2>"); // 浜岀骇鏍囬鈫�<h2>
+ test = h3Pattern.matcher(test).replaceAll("<h3>$1</h3>"); // 涓夌骇鏍囬鈫�<h3>
+ test = h4Pattern.matcher(test).replaceAll("<h4>$1</h4>"); // 鏂板锛氬洓绾ф爣棰樷啋<h4>
+ test = boldPattern.matcher(test).replaceAll("<strong>$1</strong>"); // 鍔犵矖鈫�<strong>
+ test = hrPattern.matcher(test).replaceAll("<hr/>"); // 鍒嗛殧绾库啋<hr/>
+
+// 澶勭悊鏃犲簭鍒楄〃锛堝厛鏍囪鍒楄〃椤癸紝鍐嶅寘瑁�<ul>锛�
+ test = ulStartPattern.matcher(test).replaceAll("<li>$1</li>");
+ test = test.replaceAll("(<li>.*?</li>\\r?\\n?)+", "<ul>$0</ul>");
+
+// 淇濈暀鍘熸湁鍥炶溅锛堝皢\n杞负HTML鎹㈣<br>锛屽悓鏃朵繚鐣欏師濮嬫崲琛岀锛�
+ test = test.replaceAll("\\r?\\n", "<br/>\n");
+
+// ========== 杞崲缁撴潫锛宼est涓篐TML鏍煎紡涓斿鐞嗕簡####鍥涚骇鏍囬 ==========
+
+ return Result.OK("鏂囨鐢熸垚鎴愬姛", test);
+ }
+
+ } else {
+ return Result.error("宸ヤ綔娴佹帴鍙e紓甯革紝鐘舵�佺爜锛�" + response.getStatusCodeValue());
+ }
+
+ } catch (NullPointerException e) {
+ e.printStackTrace();
+ return Result.error("涓嶆敮鎸佺殑鏂囦欢鏍煎紡锛�" + jianli.split("\\.")[jianli.split("\\.").length - 1]);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return Result.error("鐢熸垚鏂囨寮傚父锛�" + e.getMessage());
+ }
+ }
+
+
+ /**
+ * 鏂板鐨勭敓鎴愭爣棰樻帴鍙f柟娉�
+ */
+ @RequiresPermissions("copywriting:copywriting:aiCreateTitle")
+ @RequestMapping(value = "/aiCreateTitle", method = RequestMethod.POST)
+ public Result<?> aiCreateTitle(
+ @RequestParam String louchu,
+ @RequestParam String yuyici,
+ @RequestParam String startTime,
+ @RequestParam String endTime,
+ @RequestParam String user) { // 淇濈暀user鍙傛暟锛岀敤浜庢帴鍙i壌鏉�/褰掑睘
+
+ return getResult(louchu, yuyici, startTime, endTime, user);
+ }
+
+ public static Result<?> getResult(String louchu, String yuyici, String startTime, String endTime, String user) {
+ // 2. 閰嶇疆鍥哄畾鍙傛暟锛堝拰鍘熸湁鏂规硶淇濇寔涓�鑷达紝鍙牴鎹疄闄呮儏鍐佃皟鏁达級
+ String workflowUrl = "http://14.103.174.44/v1/workflows/run"; // 鏍囬鐢熸垚鐨勫伐浣滄祦鍦板潃锛岃嫢鍜屾枃妗堜笉鍚岄渶淇敼
+ String authToken = "app-F09iyl3p5448JoKufR2CRpWG";
+ String appId = "cf85fe4d-b76b-4c4c-801a-1336c880d473";
+
+ try {
+ // 3. 鏋勫缓inputs鍙傛暟锛堥�傞厤鏍囬鐢熸垚鎺ュ彛鐨勫弬鏁版牸寮忥級
+ Map<String, Object> inputs = new HashMap<>();
+ // 娣诲姞涓氬姟鍙傛暟
+ inputs.put("louchu", louchu); // 闇插嚭
+ inputs.put("yuyici", yuyici); // 璇皵璇�
+ inputs.put("startTime", startTime); // 寮�濮嬫椂闂�
+ inputs.put("endTime", endTime); // 缁撴潫鏃堕棿
+
+ // 娣诲姞绯荤粺鍙傛暟锛堝拰鍘熸湁鏂规硶涓�鑷达級
+ inputs.put("sys.user_id", user);
+ inputs.put("sys.app_id", appId);
+
+ // 4. 鏋勫缓瀹屾暣璇锋眰浣�
+ Map<String, Object> requestBody = new HashMap<>();
+ requestBody.put("inputs", inputs); // 椤跺眰inputs瀹瑰櫒
+ requestBody.put("user", user); // 椤跺眰user鍙傛暟锛堜繚鎸佸拰鍘熸湁鎺ュ彛涓�鑷达級
+
+ // 5. 璋冪敤宸ヤ綔娴佹帴鍙�
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
@@ -301,19 +504,41 @@
HttpEntity<Map<String, Object>> requestEntity = new HttpEntity<>(requestBody, headers);
ResponseEntity<String> response = restTemplate.postForEntity(workflowUrl, requestEntity, String.class);
+ // 6. 澶勭悊鎺ュ彛杩斿洖缁撴灉
if (response.getStatusCode() == HttpStatus.OK) {
- return Result.OK("鏂囨鐢熸垚鎴愬姛", JSONObject.parseObject(response.getBody()).getJSONObject("data").getJSONObject("outputs").getString("http"));
+ JSONObject responseJson = JSONObject.parseObject(response.getBody());
+ JSONObject dataJson = responseJson.getJSONObject("data");
+
+ // 鏍¢獙杩斿洖缁撴灉缁撴瀯
+ if (dataJson == null) {
+ return Result.error("鎺ュ彛杩斿洖鏁版嵁鏍煎紡寮傚父锛氭棤data瀛楁");
+ }
+ if (dataJson.get("outputs") == null) {
+ String errorMsg = dataJson.getString("error") != null ? dataJson.getString("error") : "鏍囬鐢熸垚澶辫触锛屾棤鍏蜂綋閿欒淇℃伅";
+ return Result.error(errorMsg);
+ }
+
+ // 鎻愬彇鏍囬缁撴灉锛堝亣璁緊utputs閲岀殑key鏄�"title"锛岄渶鏍规嵁瀹為檯鎺ュ彛杩斿洖璋冩暣锛�
+ String title = dataJson.getJSONObject("outputs").getString("title");
+ if (title != null) {
+ return Result.OK("鏍囬鐢熸垚鎴愬姛", title);
+ } else {
+ try {
+ return Result.OK(JSONObject.parseObject(dataJson.get("outputs").toString()).get("llm"));
+ } catch (Exception e ){
+
+ }
+
+ }
} else {
- return Result.error("宸ヤ綔娴佹帴鍙e紓甯革紝鐘舵�佺爜锛�" + response.getStatusCodeValue());
+ return Result.error("宸ヤ綔娴佹帴鍙h皟鐢ㄥ紓甯革紝鐘舵�佺爜锛�" + response.getStatusCodeValue());
}
- } catch (NullPointerException e) {
- e.printStackTrace();
- return Result.error("涓嶆敮鎸佺殑鏂囦欢鏍煎紡锛�"+jianli.split("\\.")[jianli.split("\\.").length-1]);
} catch (Exception e) {
e.printStackTrace();
- return Result.error("鐢熸垚鏂囨寮傚父锛�" + e.getMessage());
+ return Result.error("鐢熸垚鏍囬寮傚父锛�" + e.getMessage());
}
+ return Result.error("");
}
/**
--
Gitblit v1.8.0