From e310dfdc93c20ac0c3b5fcd1a95de298cfce2ae9 Mon Sep 17 00:00:00 2001
From: chengf <cgf12138@163.com>
Date: 星期六, 07 二月 2026 10:28:55 +0800
Subject: [PATCH] 添加状态:停止服务-cgf

---
 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/copywriting/entity/Copywriting.java               |    8 ++
 jeecg-module-system/jeecg-system-start/src/main/resources/application.yml                                                   |    2 
 jeecg-module-system/jeecg-system-start/src/main/resources/application-docker.yml                                            |    8 +-
 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/contract/controller/ExcelImportController.java    |   91 ++++++++++++++++++++++++++++++
 jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml                                               |    2 
 jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/copywriting/controller/CopywritingController.java |   13 ++++
 6 files changed, 117 insertions(+), 7 deletions(-)

diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/contract/controller/ExcelImportController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/contract/controller/ExcelImportController.java
index d62bd33..b4dc17b 100644
--- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/contract/controller/ExcelImportController.java
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/contract/controller/ExcelImportController.java
@@ -1,13 +1,18 @@
 package org.jeecg.modules.demo.contract.controller;
 
 import com.alibaba.excel.EasyExcel;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.SerializationUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.undertow.util.Headers;
 import jakarta.servlet.http.HttpServletRequest;
+import kong.unirest.Unirest;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.beanutils.BeanUtils;
+import org.apache.commons.lang.StringUtils;
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.modules.demo.contract.entity.Contract;
@@ -16,6 +21,8 @@
 import org.jeecg.modules.demo.contract.service.IContractService;
 import org.jeecg.modules.demo.contract.service.ISemanticWordService;
 import org.jeecg.modules.demo.copywriting.controller.CopywritingAsyncService;
+import org.jeecg.modules.demo.copywriting.entity.Copywriting;
+import org.jeecg.modules.demo.copywriting.service.ICopywritingService;
 import org.jeecg.modules.listener.ExcelDataListener;
 import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.system.service.ISysUserService;
@@ -26,8 +33,12 @@
 import org.springframework.web.multipart.MultipartFile;
 import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
+import java.net.http.HttpResponse;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Random;
 
 /**
  * 閫傞厤鏂癊xcel鍒楃殑瀵煎叆鎺ュ彛鎺у埗鍣�
@@ -43,6 +54,8 @@
     private ISemanticWordService semanticWordService;
     @Autowired
     private IContractService contractService;
+    @Autowired
+    public ICopywritingService copywritingService;
     /**
      * Excel鏂囦欢瀵煎叆鎺ュ彛锛堥�傞厤澶х被銆佸搧鐗岀瓑浜斿垪锛�
      * @return 瀵煎叆缁撴灉
@@ -152,5 +165,83 @@
             return Result.OK("寮�濮嬬敓鎴愶紝浠诲姟宸叉彁浜よ嚦鍚庡彴澶勭悊");
         }
     }
+
+    public static String getRandomElementFromArray(String[] strArray) {
+        // 1. 鏍¢獙鏁扮粍鍚堟硶鎬э細绌烘暟缁�/Null鐩存帴杩斿洖null锛岄伩鍏嶅紓甯�
+        if (strArray == null || strArray.length == 0) {
+            return null;
+        }
+        // 2. 鍒涘缓闅忔満鏁扮敓鎴愬櫒锛岀敓鎴�0鍒版暟缁勯暱搴�-1鐨勯殢鏈虹储寮�
+        Random random = new Random();
+        int randomIndex = random.nextInt(strArray.length);
+        // 3. 鏍规嵁闅忔満绱㈠紩杩斿洖瀵瑰簲鍏冪礌
+        return strArray[randomIndex];
+    }
+
+    private static final DateTimeFormatter DEFAULT_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+
+    /**
+     * 鏂规硶1锛氳繑鍥炲綋鍓嶆椂闂寸殑瀹屾暣鏍煎紡鍖栧瓧绗︿覆锛坹yyy-MM-dd HH:mm:ss锛�
+     * @return 鏍煎紡鍖栧悗鐨勬椂闂村瓧绗︿覆锛屽锛�2026-02-06 20:15:30
+     */
+    public static String getCurrentTimeStr() {
+        return LocalDateTime.now().format(DEFAULT_FORMATTER);
+    }
+
+    @RequiresPermissions("contract:contract:batchPublish")
+    @PostMapping("/batchPublish")
+    public Result<String> batchPublish(@RequestParam("contractId") String contractId) {
+        if (contractId.isEmpty()) {
+            return Result.error("鍚堝悓缂栧彿涓嶈兘涓虹┖锛�");
+        }
+        String[] arr = new String[]{"14457","28879","20838"};
+        QueryWrapper<Copywriting> wrapper = new QueryWrapper<>();
+// 鎵嬪姩鎷兼帴 LEFT JOIN 鍜岀瓫閫夋潯浠�
+        wrapper.select("copywriting.*")
+                .inSql("word_id",  // 浣跨敤姝g‘鐨勫叧鑱斿瓧娈� word_id
+                        "SELECT id FROM semantic_word WHERE contract_id = '" + contractId + "'");
+        wrapper.isNull("order_nid");
+        wrapper.eq("status",3);
+        List<Copywriting> copywritingList = copywritingService.list(wrapper);
+        if (copywritingList.isEmpty()) {
+            return Result.error("璇ュ悎鍚屼笉瀛樺湪鐘舵�佷负瀹℃牳鍙彂绋跨殑鏂囨");
+        }
+        for (Copywriting copywriting : copywritingList) {
+            kong.unirest.HttpResponse<String> response = Unirest.post("http://8.138.187.158:8082/api/media/send")
+                    .field("api_key", "sk_4c8f6a970de896e232909e2959254441")
+                    .field("resource_id", getRandomElementFromArray(arr))
+                    .field("title", copywriting.getTitle())
+                    .field("content", copywriting.getText())
+                    .field("remark", getCurrentTimeStr())
+                    .field("third_id", copywriting.getCreateBy())
+                    .asString();
+            // 1. 鏍¢獙鍝嶅簲鐘舵�佸拰鍝嶅簲浣撻潪绌�
+            if (response != null && response.getStatus() == 200 && StringUtils.isNotBlank(response.getBody())) {
+                // 2. 瑙f瀽JSON鍝嶅簲浣�
+                JSONObject responseJson = JSON.parseObject(response.getBody());
+
+                // 3. 鏍¢獙code鏄惁涓�1锛堟姇绋挎垚鍔燂級锛屽啀鎻愬彇order_nid
+                if (responseJson.getInteger("code") == 1) {
+                    JSONObject dataObj = responseJson.getJSONObject("data");
+                    if (dataObj != null && dataObj.containsKey("order_nid")) {
+                        // 鑾峰彇order_nid锛堣浆涓篠tring锛岄�傞厤Copywriting鐨刼rderNid瀛楁绫诲瀷锛�
+                        String orderNid = dataObj.get("order_nid").toString();
+
+                        // 4. 璧嬪�煎苟鏇存柊鏁版嵁搴�
+                        copywriting.setOrderNid(orderNid);
+                        copywriting.setStatus("4");
+                        copywritingService.updateById(copywriting);
+                    } else {
+                        // 鏃ュ織璁板綍锛氬搷搴斾綋鏃燿ata鎴杘rder_nid瀛楁
+                        System.err.println("鎶曠鎴愬姛浣嗘湭鑾峰彇鍒皁rder_nid锛屽搷搴斾綋锛�" + response.getBody());
+                    }
+                } else {
+                    // 鏃ュ織璁板綍锛氭帴鍙h繑鍥為潪鎴愬姛鐘舵��
+                    System.err.println("鎶曠澶辫触锛屽搷搴斾綋锛�" + response.getBody());
+                }
+            }
+        }
+        return Result.ok("鎵归噺鎶曠鎴愬姛锛�");
+    }
 }
 
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 bdcc1f2..76eb289 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
@@ -104,9 +104,20 @@
         }
         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);
         for (Copywriting item : pageList.getRecords()) {
diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/copywriting/entity/Copywriting.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/copywriting/entity/Copywriting.java
index 15ccc84..ed17113 100644
--- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/copywriting/entity/Copywriting.java
+++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/demo/copywriting/entity/Copywriting.java
@@ -96,6 +96,10 @@
     @Dict(dicCode = "fb_status")
     @Schema(description = "鍙戝竷鐘舵��")
     private java.lang.String outStatus;
+
+    @Excel(name = "璁㈠崟缂栧彿", width = 15)
+    @Schema(description = "璁㈠崟缂栧彿")
+    private java.lang.String orderNid;
     /**鍙戝竷鏃堕棿*/
     @Excel(name = "鍙戝竷鏃堕棿", width = 20, format = "yyyy-MM-dd HH:mm:ss")
     @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
@@ -111,4 +115,8 @@
 
     @TableField(exist = false)
     private String wordLike;
+
+
+    @TableField(exist = false)
+    private String contractId;
 }
diff --git a/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml b/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml
index 8636646..54803b0 100644
--- a/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml
+++ b/jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml
@@ -178,7 +178,7 @@
   data:
     redis:
       database: 0
-      host: 172.19.0.1
+      host: 47.92.103.110
       port: 6379
       password: 'win2020!'
 #mybatis plus 璁剧疆
diff --git a/jeecg-module-system/jeecg-system-start/src/main/resources/application-docker.yml b/jeecg-module-system/jeecg-system-start/src/main/resources/application-docker.yml
index 7cd649d..cb94cb8 100644
--- a/jeecg-module-system/jeecg-system-start/src/main/resources/application-docker.yml
+++ b/jeecg-module-system/jeecg-system-start/src/main/resources/application-docker.yml
@@ -161,9 +161,9 @@
           slow-sql-millis: 5000
       datasource:
         master:
-          url: jdbc:mysql://jeecg-boot-mysql:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
+          url: jdbc:mysql://172.28.46.15:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
           username: root
-          password: root
+          password: win2020!
           driver-class-name: com.mysql.cj.jdbc.Driver
           # 澶氭暟鎹簮閰嶇疆
           #multi-datasource1:
@@ -175,9 +175,9 @@
   data:
     redis:
       database: 0
-      host: 127.0.0.1
+      host: 172.28.46.15
       port: 6379
-      password:
+      password: 'win2020!'
 #mybatis plus 璁剧疆
 mybatis-plus:
   mapper-locations: classpath*:org/jeecg/**/xml/*Mapper.xml
diff --git a/jeecg-module-system/jeecg-system-start/src/main/resources/application.yml b/jeecg-module-system/jeecg-system-start/src/main/resources/application.yml
index d14059f..96fa617 100644
--- a/jeecg-module-system/jeecg-system-start/src/main/resources/application.yml
+++ b/jeecg-module-system/jeecg-system-start/src/main/resources/application.yml
@@ -2,7 +2,7 @@
   application:
     name: jeecg-system
   profiles:
-    active: 'dev'
+    active: 'docker'
 
 robinsql:
   url: jdbc:mysql://114.215.124.206:3306/geo?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai

--
Gitblit v1.8.0