2 Commits 0ea29835ad ... 8e8ea4f9f1

Autor SHA1 Mensagem Data
  赵越越 8e8ea4f9f1 Merge remote-tracking branch 'origin/master' 3 semanas atrás
  赵越越 fbe9c2e864 bug优化 3 semanas atrás

+ 6 - 1
assembly/pom.xml

@@ -120,7 +120,12 @@
 			<artifactId>api-server</artifactId>
 			<version>${parent.version}</version>
 		</dependency>
-
+		<!--中台对接数据初始化依赖-->
+		<dependency>
+			<groupId>com.integration</groupId>
+			<artifactId>oauth2-sdk</artifactId>
+			<version>1.0</version>
+		</dependency>
 		<dependency>
 			<groupId>com.hotent</groupId>
 			<artifactId>pricing</artifactId>

+ 74 - 0
pricing/src/main/java/com/hotent/pricing/common/MyAsyncExecutor.java

@@ -0,0 +1,74 @@
+package com.hotent.pricing.common;/**
+ * @program: cbjs-mvue-master
+ * @description:
+ * @author: zhao yue yue
+ * @create: 2025-12-16 09:14
+ */
+
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import java.util.concurrent.*;
+
+/**
+ *@author: zhao yue yue
+ *@create: 2025-12-16 09:14
+ */
+@Component
+public class MyAsyncExecutor {
+    private ThreadPoolExecutor threadPool;
+
+    @PostConstruct
+    public void init() {
+        // 创建线程池
+        threadPool = new ThreadPoolExecutor(
+                5,      // 核心线程数
+                20,     // 最大线程数
+                60L,    // 空闲线程存活时间(秒)
+                TimeUnit.SECONDS,
+                new LinkedBlockingQueue<>(100),  // 任务队列
+                r -> {
+                    Thread t = new Thread(r);
+                    t.setName("async-thread-" + System.currentTimeMillis());
+                    t.setDaemon(false);  // 设置为非守护线程
+                    return t;
+                },
+                new ThreadPoolExecutor.CallerRunsPolicy()  // 拒绝策略:调用者线程执行
+        );
+    }
+
+    /**
+     * 执行异步任务(最常用)
+     */
+    public void execute(Runnable task) {
+        threadPool.execute(task);
+    }
+
+    /**
+     * 执行异步任务(带返回值)
+     */
+    public <T> Future<T> submit(Callable<T> task) {
+        return threadPool.submit(task);
+    }
+
+    /**
+     * 优雅关闭
+     */
+    @PreDestroy
+    public void shutdown() {
+        if (threadPool != null) {
+            threadPool.shutdown();  // 不再接受新任务
+            try {
+                // 等待现有任务完成,最多等待30秒
+                if (!threadPool.awaitTermination(30, TimeUnit.SECONDS)) {
+                    threadPool.shutdownNow();  // 取消尚未开始的任务
+                }
+            } catch (InterruptedException e) {
+                threadPool.shutdownNow();
+                Thread.currentThread().interrupt();
+            }
+            System.out.println("异步执行器已安全关闭");
+        }
+    }
+}

+ 2 - 0
pricing/src/main/java/com/hotent/pricing/manager/DataMiddlePlatformManager.java

@@ -30,4 +30,6 @@ public interface DataMiddlePlatformManager {
      * @return 登录结果
      */
     ResponseEntity<?> ssoForFront(String code);
+
+    String  sendMsg(String subject,String description,String content,String receiverId);
 }

+ 26 - 0
pricing/src/main/java/com/hotent/pricing/manager/impl/DataMiddlePlatformManagerImpl.java

@@ -9,6 +9,7 @@ import com.hotent.base.jwt.JwtAuthenticationResponse;
 import com.hotent.base.jwt.JwtTokenHandler;
 import com.hotent.base.model.CommonResult;
 import com.hotent.base.util.*;
+import com.hotent.pricing.common.MyAsyncExecutor;
 import com.hotent.pricing.manager.DataMiddlePlatformManager;
 import com.hotent.uc.api.model.IUser;
 import com.hotent.uc.manager.OrgManager;
@@ -80,6 +81,8 @@ public class DataMiddlePlatformManagerImpl implements DataMiddlePlatformManager
     @Value("${oauth2.front.redirect-uri:}")
     private String frontRedirectUri;
 
+    @Autowired
+    private MyAsyncExecutor myAsyncExecutor;
 
     @Autowired
     private OrgManager orgManager;
@@ -126,6 +129,7 @@ public class DataMiddlePlatformManagerImpl implements DataMiddlePlatformManager
                     UserVo userVo = new UserVo();
                     BeanUtils.copyProperties(u, userVo);
                     userVo.setOrgId(u.getDeptId());
+                    userVo.setId(u.getId());
                     return userVo;
                 }).collect(Collectors.toList());
                 userService.addUsers(userVos);
@@ -238,6 +242,28 @@ public class DataMiddlePlatformManagerImpl implements DataMiddlePlatformManager
         }
     }
 
+    /**
+     * 异步推送消息通知
+     * @param subject 标题
+     * @param description 简介
+     * @param content 内容
+     * @param receiverId 接收人id(中台用户id)
+     * @return
+     */
+    @Override
+    public String sendMsg(String subject, String description, String content, String receiverId) {
+
+        // 将同步调用改为异步执行
+        myAsyncExecutor.execute(() -> {
+            String openApiToken = OAuth2ToMethod.getOpenApiToken("");
+            com.integration.oauth2.sdk.response.CommonResult result = OAuth2ToMethod.sendMsg(openApiToken, subject, description, content, receiverId);
+            System.out.println("消息id: " + result.getValue().toString());
+        });
+
+        // 立即返回,不等待消息发送完成
+        return "消息发送任务已提交";
+    }
+
     @Override
     public ResponseEntity<?> ssoForFront(String code) {
         if (StringUtil.isEmpty(code)) {

+ 5 - 0
pricing/src/main/java/com/hotent/pricing/manager/impl/FapMessageManagerImpl.java

@@ -5,6 +5,7 @@ import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.hotent.base.util.AuthenticationUtil;
 import com.hotent.base.util.StringUtil;
+import com.hotent.pricing.manager.DataMiddlePlatformManager;
 import com.hotent.pricing.model.entity.message.FapMessage;
 import com.hotent.pricing.model.entity.message.FapMessageHistory;
 import com.hotent.pricing.dao.FapMessageDao;
@@ -49,6 +50,9 @@ public class FapMessageManagerImpl extends BaseManagerImpl<FapMessageDao, FapMes
     @Autowired
     private UcGroupUserManager ucGroupUserManager;
 
+    @Autowired
+    private DataMiddlePlatformManager dataMiddlePlatformManager;
+
 
     @Override
     public PageList<FapMessage> queryMessageList(Integer pageNum, Integer pageSize, String messageType,
@@ -222,6 +226,7 @@ public class FapMessageManagerImpl extends BaseManagerImpl<FapMessageDao, FapMes
             history.setTitle(title);
             history.setMessageStatus("0");
             historyList.add(history);
+            dataMiddlePlatformManager.sendMsg(title,null,content,user.getId());
         }
 
         messageHisManager.saveBatch(historyList);