From 7a6f9eecd363e5688c8b7fb2706061ab400a1de7 Mon Sep 17 00:00:00 2001 From: dute7liang <383200134@qq.com> Date: Sat, 13 Jan 2024 20:08:07 +0800 Subject: [PATCH] init --- .../test/java/com/ruoyi/test/CaiUnitTest.java | 13 +++++++ ...ImController.java => ImAppController.java} | 2 +- ...ller.java => UserMemberAppController.java} | 2 +- .../handler/message/CancelMessageHandler.java | 3 +- .../handler/message/RefuseMessageHandler.java | 2 +- .../com/ruoyi/cai/ws/job/CheckTimeOutJob.java | 2 +- .../ruoyi/cai/ws/service/SettleService.java | 4 +- .../main/java/com/ruoyi/yunxin/Yunxin.java | 7 ++++ .../yunxin/config/YunxinExecutorConstant.java | 38 +++++++++++++++++++ 9 files changed, 66 insertions(+), 7 deletions(-) create mode 100644 ruoyi-admin/src/test/java/com/ruoyi/test/CaiUnitTest.java rename ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/{ImController.java => ImAppController.java} (97%) rename ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/{UserMemberController.java => UserMemberAppController.java} (89%) create mode 100644 ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/config/YunxinExecutorConstant.java diff --git a/ruoyi-admin/src/test/java/com/ruoyi/test/CaiUnitTest.java b/ruoyi-admin/src/test/java/com/ruoyi/test/CaiUnitTest.java new file mode 100644 index 00000000..624462d0 --- /dev/null +++ b/ruoyi-admin/src/test/java/com/ruoyi/test/CaiUnitTest.java @@ -0,0 +1,13 @@ +package com.ruoyi.test; + +import org.springframework.boot.test.context.SpringBootTest; + +/** + * 带参数单元测试案例 + * + * @author Lion Li + */ +@SpringBootTest +public class CaiUnitTest { + +} diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/ImController.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/ImAppController.java similarity index 97% rename from ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/ImController.java rename to ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/ImAppController.java index 6c19adf9..834408fc 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/ImController.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/ImAppController.java @@ -17,7 +17,7 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/api/im") @Tag(name = "IM相关的接口") -public class ImController { +public class ImAppController { @Autowired private ImService imService; diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/UserMemberController.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/UserMemberAppController.java similarity index 89% rename from ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/UserMemberController.java rename to ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/UserMemberAppController.java index 4cc5a3c9..1b585a10 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/UserMemberController.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/controller/app/UserMemberAppController.java @@ -9,5 +9,5 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("/api/user/member") @Slf4j @Tag(name = "用户会员接口") -public class UserMemberController { +public class UserMemberAppController { } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/handler/message/CancelMessageHandler.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/handler/message/CancelMessageHandler.java index d188f0f8..44d79e2a 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/handler/message/CancelMessageHandler.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/handler/message/CancelMessageHandler.java @@ -3,6 +3,7 @@ package com.ruoyi.cai.ws.handler.message; import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.ruoyi.cai.domain.UserCall; +import com.ruoyi.cai.executor.ExecutorConstant; import com.ruoyi.cai.service.UserCallService; import com.ruoyi.cai.trd.ImDataRes; import com.ruoyi.cai.trd.ImMsgGen; @@ -51,7 +52,7 @@ public class CancelMessageHandler extends AbstractMessageHandle implements IMess Long receiverId = room.getReceiverUserData().getId(); Long callerId = room.getCallUserData().getId(); ImDataRes imDataRes = ImMsgGen.callNotice(1, callerId, receiverId, 0); - yunxin.sendTo(receiverId,callerId,imDataRes); + yunxin.sendToSync(receiverId,callerId,imDataRes); // 更新房间状态 userCallService.update(Wrappers.lambdaUpdate(UserCall.class) .eq(UserCall::getId,roomId) diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/handler/message/RefuseMessageHandler.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/handler/message/RefuseMessageHandler.java index d2749e94..2db08ddb 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/handler/message/RefuseMessageHandler.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/handler/message/RefuseMessageHandler.java @@ -47,7 +47,7 @@ public class RefuseMessageHandler extends AbstractMessageHandle implements IMess Long receiverId = room.getReceiverUserData().getId(); Long callerId = room.getCallUserData().getId(); ImDataRes imDataRes = ImMsgGen.callNotice(1, callerId, receiverId, 0); - yunxin.sendTo(receiverId,callerId,imDataRes); + yunxin.sendToSync(receiverId,callerId,imDataRes); // 更新房间状态 userCallService.update(Wrappers.lambdaUpdate(UserCall.class) diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/job/CheckTimeOutJob.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/job/CheckTimeOutJob.java index 36b59910..8dea5c52 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/job/CheckTimeOutJob.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/job/CheckTimeOutJob.java @@ -68,7 +68,7 @@ public class CheckTimeOutJob { .set(UserCall::getStatus, RoomStatusEnums.STATUS_TIMEOUT_CANCEL.getCode())); roomService.closeAllFd(roomId); ImDataRes imDataRes = ImMsgGen.callNotice(3, callUserData.getId(), receiverUserData.getId(), 0); - yunxin.sendTo(receiverUserData.getId(),callUserData.getId(),imDataRes); + yunxin.sendToSync(receiverUserData.getId(),callUserData.getId(),imDataRes); } } } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/service/SettleService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/service/SettleService.java index d980a814..17c03f53 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/service/SettleService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/service/SettleService.java @@ -156,13 +156,13 @@ public class SettleService { Long receiveId = room.getReceiverUserData().getId(); if(callTime > 0){ ImDataRes imDataRes = ImMsgGen.callNotice(4, callId, receiveId, callTime); - yunxin.sendTo(callId,receiveId,imDataRes); + yunxin.sendToSync(callId,receiveId,imDataRes); } // 接收方通知 Long anchorIncome = resp.getAnchorIncome(); if(anchorIncome > 0){ ImDataRes imDataRes = ImMsgGen.callNotice(4, receiveId, callId, callTime); - yunxin.sendTo(receiveId,callId,imDataRes); + yunxin.sendToSync(receiveId,callId,imDataRes); // 收入通知 // ImMsgGen.videoIncome(); // yunxin.sendTo(receiveId,null,) diff --git a/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/Yunxin.java b/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/Yunxin.java index df40f79d..1276beeb 100644 --- a/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/Yunxin.java +++ b/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/Yunxin.java @@ -2,6 +2,7 @@ package com.ruoyi.yunxin; import com.alibaba.fastjson2.JSON; import com.ruoyi.yunxin.client.ImMessageClient; +import com.ruoyi.yunxin.config.YunxinExecutorConstant; import com.ruoyi.yunxin.config.YunxinProperties; import com.ruoyi.yunxin.req.Option; import com.ruoyi.yunxin.req.SendAttachMsgReq; @@ -26,6 +27,12 @@ public class Yunxin { @Resource private ImMessageClient messageClient; + public void sendToSync(Long toUid,Long fromUid,Object data){ + YunxinExecutorConstant.COMMON_EXECUTOR.execute(() -> { + this.sendTo(toUid,fromUid,data); + }); + } + public YxDataR sendTo(Long toUid,Long fromUid,Object data){ SendMsgReq req = new SendMsgReq(); req.setFrom(fromUid == null ? yunxinProperties.getDefaultFromUid() : fromUid+""); diff --git a/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/config/YunxinExecutorConstant.java b/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/config/YunxinExecutorConstant.java new file mode 100644 index 00000000..336f4adf --- /dev/null +++ b/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/config/YunxinExecutorConstant.java @@ -0,0 +1,38 @@ +package com.ruoyi.yunxin.config; + +import com.alibaba.ttl.threadpool.TtlExecutors; +import com.google.common.util.concurrent.ThreadFactoryBuilder; + +import java.util.concurrent.*; + +/** + * 线程变量定义 + *

created on 2023/3/3 11:16

+ * @author ZL + */ +public class YunxinExecutorConstant { + + private final static int CPU_NUM = Runtime.getRuntime().availableProcessors(); + public static Executor COMMON_EXECUTOR; + + static { + ThreadPoolExecutor commonExecutor = new ThreadPoolExecutor(CPU_NUM, + CPU_NUM << 2, + 5, + TimeUnit.SECONDS, + new ArrayBlockingQueue<>(50), + init("commonThreadPool-%d"), + new ThreadPoolExecutor.CallerRunsPolicy()); + COMMON_EXECUTOR = TtlExecutors.getTtlExecutor(commonExecutor); + } + + private static ThreadFactory init(String nameFormat){ + return new ThreadFactoryBuilder().setNameFormat(nameFormat).build(); + } + + private static ThreadPoolExecutor initExecutor(int corePoolSize, int maxPoolSize, int keepAliveTime, TimeUnit timeUnit, + BlockingQueue workQueue, String nameFormat){ + return new ThreadPoolExecutor(corePoolSize, maxPoolSize, keepAliveTime, timeUnit, workQueue, + init(nameFormat)); + } +}