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 43c3490f..e67471c2 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 @@ -15,6 +15,7 @@ import com.ruoyi.cai.ws.handler.IMessageHandler; import com.ruoyi.cai.ws.service.RoomService; import com.ruoyi.cai.ws.dto.WsRMsgGen; import com.ruoyi.cai.ws.handler.AbstractMessageHandle; +import com.ruoyi.yunxin.enums.CallNoticeEnum; import com.ruoyi.yunxin.service.YunxinWsService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -50,7 +51,7 @@ public class CancelMessageHandler extends AbstractMessageHandle implements IMess // IM Long receiverId = room.getReceiverId(); Long callerId = room.getCallId(); - yunxinWsService.sendToCallNotifyAsync(callerId,receiverId,1,0L); + yunxinWsService.sendToCallNotifyAsync(receiverId,callerId, CallNoticeEnum.CLOSE,0L); // 更新房间状态 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 e625024d..00914ab0 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 @@ -15,6 +15,7 @@ import com.ruoyi.cai.ws.handler.IMessageHandler; import com.ruoyi.cai.ws.service.RoomService; import com.ruoyi.cai.ws.dto.WsRMsgGen; import com.ruoyi.cai.ws.handler.AbstractMessageHandle; +import com.ruoyi.yunxin.enums.CallNoticeEnum; import com.ruoyi.yunxin.service.YunxinWsService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -29,7 +30,8 @@ public class RefuseMessageHandler extends AbstractMessageHandle implements IMess @Autowired private UserCallService userCallService; @Autowired - private Yunxin yunxin; + private YunxinWsService yunxinWsService; + @Override public void processOn(Room room, FdCtxData fdCtxData, JSONObject map) { if(!fdCtxData.isReceiver() || !RoomStatusEnums.STATUS_RECEIVER_CONNECT.getCode().equals(room.getStatus())){ @@ -46,7 +48,7 @@ public class RefuseMessageHandler extends AbstractMessageHandle implements IMess //发送IM通知 Long receiverId = room.getReceiverId(); Long callerId = room.getCallId(); - yunxinWsService.sendToCallNotifyAsync(callerId,receiverId,1,0L); + yunxinWsService.sendToCallNotifyAsync(callerId,receiverId, CallNoticeEnum.REFUSE,0L); // 更新房间状态 userCallService.update(Wrappers.lambdaUpdate(UserCall.class) @@ -54,6 +56,5 @@ public class RefuseMessageHandler extends AbstractMessageHandle implements IMess .set(UserCall::getStatus,RoomStatusEnums.STATUS_REFUSE.getCode())); } - @Autowired - private YunxinWsService yunxinWsService; + } diff --git a/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/job/RoomCheckJobService.java b/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/job/RoomCheckJobService.java index d7f4431b..35075c22 100644 --- a/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/job/RoomCheckJobService.java +++ b/ruoyi-cai/src/main/java/com/ruoyi/cai/ws/job/RoomCheckJobService.java @@ -18,6 +18,7 @@ import com.ruoyi.cai.ws.service.SettleResp; import com.ruoyi.cai.ws.service.SettleService; import com.ruoyi.cai.ws.util.RoomWebSocketUtil; import com.ruoyi.yunxin.Yunxin; +import com.ruoyi.yunxin.enums.CallNoticeEnum; import com.ruoyi.yunxin.service.YunxinWsService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -129,7 +130,7 @@ public class RoomCheckJobService { nextCreateJob = settleResp.isNextRun(); } roomService.closeAllFd(roomId); - yunxinWsService.sendToCallNotifyAsync(callUserData.getId(),receiverUserData.getId(),3,0L); + yunxinWsService.sendToCallNotifyAsync(callUserData.getId(),receiverUserData.getId(), CallNoticeEnum.TIMEOUT,0L); return JobResp.builder().nextCreateJob(nextCreateJob).build(); } return JobResp.builder().nextCreateJob(true).build(); 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 60e539af..50405947 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 @@ -18,6 +18,7 @@ import com.ruoyi.cai.ws.dto.WsR; import com.ruoyi.cai.ws.dto.WsRMsgGen; import com.ruoyi.cai.ws.util.RoomWebSocketUtil; import com.ruoyi.yunxin.Yunxin; +import com.ruoyi.yunxin.enums.CallNoticeEnum; import com.ruoyi.yunxin.service.YunxinWsService; import lombok.extern.slf4j.Slf4j; import org.redisson.api.RLock; @@ -156,12 +157,12 @@ public class SettleService { Long callId = room.getCallUserData().getId(); Long receiveId = room.getReceiverUserData().getId(); if(callTime > 0){ - yunxinWsService.sendToCallNotifyAsync(callId,receiveId,4,callTime); + yunxinWsService.sendToCallNotifyAsync(callId,receiveId, CallNoticeEnum.CALL_ALREADY,callTime); } // 接收方通知 Long anchorIncome = resp.getAnchorIncome(); if(anchorIncome > 0){ - yunxinWsService.sendToCallNotifyAsync(receiveId,callId,4,callTime); + yunxinWsService.sendToCallNotifyAsync(receiveId,callId,CallNoticeEnum.CALL_ALREADY,callTime); // 收入通知 // 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 203789ab..508281b9 100644 --- a/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/Yunxin.java +++ b/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/Yunxin.java @@ -27,6 +27,13 @@ public class Yunxin { @Resource private ImMessageClient messageClient; + /** + * + * @param toUid 接收者ID + * @param fromUid 发送者ID + * @param data 数据 + * @return + */ 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/data/ImMsgGen.java b/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/data/ImMsgGen.java index e090e509..ff37e3ec 100644 --- a/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/data/ImMsgGen.java +++ b/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/data/ImMsgGen.java @@ -1,5 +1,7 @@ package com.ruoyi.yunxin.data; +import com.ruoyi.yunxin.enums.CallNoticeEnum; + public class ImMsgGen { /** @@ -9,12 +11,12 @@ public class ImMsgGen { * @param to * @param callTime */ - public static ImDataRes callNotice(int status,Long from,Long to,long callTime){ + public static ImDataRes callNotice(CallNoticeEnum status, Long from, Long to, long callTime){ ImDataRes imDataRes = new ImDataRes(); imDataRes.setType(15); ImDataRes.ImData imData = new ImDataRes.ImData(); imData.setCalltype(1); - imData.setStatus(status); // 通话状态,1 取消 2 拒绝 3 超时 4 已通话 + imData.setStatus(status.getCode()); // 通话状态,1 取消 2 拒绝 3 超时 4 已通话 imData.setFrom_uid(from); imData.setTo_uid(to); imData.setCall_time(callTime); diff --git a/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/enums/CallNoticeEnum.java b/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/enums/CallNoticeEnum.java new file mode 100644 index 00000000..35970e7e --- /dev/null +++ b/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/enums/CallNoticeEnum.java @@ -0,0 +1,21 @@ +package com.ruoyi.yunxin.enums; + +import lombok.Getter; + +// // 通话状态,1 取消 2 拒绝 3 超时 4 已通话 +@Getter +public enum CallNoticeEnum { + CLOSE(1,"取消"), + REFUSE(2,"拒绝"), + TIMEOUT(3,"超时"), + CALL_ALREADY(4,"已通话"), + + ; + private final Integer code; + private final String name; + + CallNoticeEnum(Integer code, String name) { + this.code = code; + this.name = name; + } +} diff --git a/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/service/YunxinWsService.java b/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/service/YunxinWsService.java index 7a2a2f8a..2268d9ee 100644 --- a/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/service/YunxinWsService.java +++ b/ruoyi-yunxin/src/main/java/com/ruoyi/yunxin/service/YunxinWsService.java @@ -6,6 +6,7 @@ import com.ruoyi.yunxin.Yunxin; import com.ruoyi.yunxin.data.ImDataRes; import com.ruoyi.yunxin.data.ImMsgGen; import com.ruoyi.yunxin.data.WsSendAttachMsgData; +import com.ruoyi.yunxin.enums.CallNoticeEnum; import com.ruoyi.yunxin.resp.SendMsgResp; import com.ruoyi.yunxin.resp.YxCommonR; import com.ruoyi.yunxin.resp.YxDataR; @@ -32,10 +33,17 @@ public class YunxinWsService { }); } - public void sendToCallNotifyAsync(Long from,Long to,Integer status,Long calltime){ + /** + * 发送消息 + * @param toUid 接收着ID + * @param fromUid 发送着ID + * @param status 状态 // 通话状态,1 取消 2 拒绝 3 超时 4 已通话 + * @param calltime 通话时长 + */ + public void sendToCallNotifyAsync(Long toUid, Long fromUid, CallNoticeEnum status, Long calltime){ YunExecutor.YUN_EXECUTOR.execute(() -> { - ImDataRes imDataRes = ImMsgGen.callNotice(status, from, to, calltime); - YxDataR r = yunxin.sendTo(from, to, imDataRes); + ImDataRes imDataRes = ImMsgGen.callNotice(status, fromUid, toUid, calltime); + YxDataR r = yunxin.sendTo(toUid, fromUid, imDataRes); if(r == null || !r.isSuccess()){ log.error("云信发送失败【sendCallAsync】r={}", JSON.toJSONString(r)); }