From 378afb827840665c8ac1d5bbae5793a146e955c4 Mon Sep 17 00:00:00 2001 From: xsx <825657193@qq.com> Date: Sun, 16 Jun 2024 19:30:50 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A4=9A=E4=BA=BA=E9=9F=B3=E8=A7=86?= =?UTF-8?q?=E9=A2=91=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/bx/imcommon/model/IMUserInfo.java | 2 +- .../bx/implatform/annotation/OnlineCheck.java | 16 +++++++ .../implatform/aspect/OnlineCheckAspect.java | 43 +++++++++++++++++++ .../bx/implatform/config/RedissonConfig.java | 2 +- .../controller/WebrtcGroupController.java | 2 +- .../controller/WebrtcPrivateController.java | 2 + .../implatform/dto/WebrtcGroupAnswerDTO.java | 2 +- .../dto/WebrtcGroupCandidateDTO.java | 2 +- .../implatform/dto/WebrtcGroupDeviceDTO.java | 2 +- .../implatform/dto/WebrtcGroupFailedDTO.java | 2 +- .../implatform/dto/WebrtcGroupInviteDTO.java | 2 +- .../bx/implatform/dto/WebrtcGroupJoinDTO.java | 2 +- .../implatform/dto/WebrtcGroupOfferDTO.java | 2 +- .../implatform/dto/WebrtcGroupSetupDTO.java | 2 +- .../com/bx/implatform/enums/WebrtcMode.java | 2 +- .../service/impl/WebrtcGroupServiceImpl.java | 4 ++ .../session/WebrtcGroupSession.java | 2 +- .../bx/implatform/session/WebrtcUserInfo.java | 2 +- .../bx/implatform/util/UserStateUtils.java | 2 +- .../bx/implatform/vo/OnlineTerminalVO.java | 2 +- .../bx/implatform/vo/WebrtcGroupFailedVO.java | 2 +- .../bx/implatform/vo/WebrtcGroupInfoVO.java | 2 +- im-uniapp/manifest.json | 2 +- 23 files changed, 84 insertions(+), 19 deletions(-) create mode 100644 im-platform/src/main/java/com/bx/implatform/annotation/OnlineCheck.java create mode 100644 im-platform/src/main/java/com/bx/implatform/aspect/OnlineCheckAspect.java diff --git a/im-commom/src/main/java/com/bx/imcommon/model/IMUserInfo.java b/im-commom/src/main/java/com/bx/imcommon/model/IMUserInfo.java index a25cd0f..680cda6 100644 --- a/im-commom/src/main/java/com/bx/imcommon/model/IMUserInfo.java +++ b/im-commom/src/main/java/com/bx/imcommon/model/IMUserInfo.java @@ -5,7 +5,7 @@ import lombok.Data; import lombok.NoArgsConstructor; /** - * @author: 谢绍许 + * @author: Blue * @date: 2023-09-24 09:23:11 * @version: 1.0 */ diff --git a/im-platform/src/main/java/com/bx/implatform/annotation/OnlineCheck.java b/im-platform/src/main/java/com/bx/implatform/annotation/OnlineCheck.java new file mode 100644 index 0000000..f616002 --- /dev/null +++ b/im-platform/src/main/java/com/bx/implatform/annotation/OnlineCheck.java @@ -0,0 +1,16 @@ +package com.bx.implatform.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import java.util.concurrent.TimeUnit; + +/** + * 在线校验,标注此注解的接口用户必须保持长连接,否则将抛异常 + */ +@Retention(RetentionPolicy.RUNTIME)//运行时生效 +@Target(ElementType.METHOD)//作用在方法上 +public @interface OnlineCheck { + +} diff --git a/im-platform/src/main/java/com/bx/implatform/aspect/OnlineCheckAspect.java b/im-platform/src/main/java/com/bx/implatform/aspect/OnlineCheckAspect.java new file mode 100644 index 0000000..b81124c --- /dev/null +++ b/im-platform/src/main/java/com/bx/implatform/aspect/OnlineCheckAspect.java @@ -0,0 +1,43 @@ +package com.bx.implatform.aspect; + +import cn.hutool.core.util.StrUtil; +import com.bx.imclient.IMClient; +import com.bx.implatform.annotation.RedisLock; +import com.bx.implatform.exception.GlobalException; +import com.bx.implatform.session.SessionContext; +import com.bx.implatform.session.UserSession; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.reflect.MethodSignature; +import org.redisson.api.RLock; +import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; + +import java.lang.reflect.Method; + +/** + * @author: blue + * @date: 2024-06-16 + * @version: 1.0 + */ +@Slf4j +@Aspect +@Component +@RequiredArgsConstructor +public class OnlineCheckAspect { + + private final IMClient imClient; + + @Around("@annotation(com.bx.implatform.annotation.OnlineCheck)") + public Object around(ProceedingJoinPoint joinPoint) throws Throwable { + UserSession session = SessionContext.getSession(); + if(!imClient.isOnline(session.getUserId())){ + throw new GlobalException("您当前的网络连接已断开,请稍后重试"); + } + return joinPoint.proceed(); + } + +} diff --git a/im-platform/src/main/java/com/bx/implatform/config/RedissonConfig.java b/im-platform/src/main/java/com/bx/implatform/config/RedissonConfig.java index 6e7dc87..7dc1c92 100644 --- a/im-platform/src/main/java/com/bx/implatform/config/RedissonConfig.java +++ b/im-platform/src/main/java/com/bx/implatform/config/RedissonConfig.java @@ -13,7 +13,7 @@ import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** - * @author: 谢绍许 + * @author: Blue * @date: 2024-06-09 * @version: 1.0 */ diff --git a/im-platform/src/main/java/com/bx/implatform/controller/WebrtcGroupController.java b/im-platform/src/main/java/com/bx/implatform/controller/WebrtcGroupController.java index 03361be..c9fb6b7 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/WebrtcGroupController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/WebrtcGroupController.java @@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.*; import javax.validation.Valid; /** - * @author: 谢绍许 + * @author: Blue * @date: 2024-06-01 * @version: 1.0 */ diff --git a/im-platform/src/main/java/com/bx/implatform/controller/WebrtcPrivateController.java b/im-platform/src/main/java/com/bx/implatform/controller/WebrtcPrivateController.java index 40cca08..7d583c6 100644 --- a/im-platform/src/main/java/com/bx/implatform/controller/WebrtcPrivateController.java +++ b/im-platform/src/main/java/com/bx/implatform/controller/WebrtcPrivateController.java @@ -1,5 +1,6 @@ package com.bx.implatform.controller; +import com.bx.implatform.annotation.OnlineCheck; import com.bx.implatform.config.ICEServer; import com.bx.implatform.result.Result; import com.bx.implatform.result.ResultUtils; @@ -19,6 +20,7 @@ public class WebrtcPrivateController { private final IWebrtcPrivateService webrtcPrivateService; + @OnlineCheck @ApiOperation(httpMethod = "POST", value = "呼叫视频通话") @PostMapping("/call") public Result call(@RequestParam Long uid, @RequestParam(defaultValue = "video") String mode, @RequestBody String offer) { diff --git a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupAnswerDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupAnswerDTO.java index 3f98c4f..b66e68e 100644 --- a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupAnswerDTO.java +++ b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupAnswerDTO.java @@ -8,7 +8,7 @@ import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; /** - * @author: 谢绍许 + * @author: Blue * @date: 2024-06-01 * @version: 1.0 */ diff --git a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupCandidateDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupCandidateDTO.java index 93cda08..fd04e94 100644 --- a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupCandidateDTO.java +++ b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupCandidateDTO.java @@ -9,7 +9,7 @@ import javax.validation.constraints.NotNull; import java.util.List; /** - * @author: 谢绍许 + * @author: Blue * @date: 2024-06-01 * @version: 1.0 */ diff --git a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupDeviceDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupDeviceDTO.java index bc8ec79..5d87b4d 100644 --- a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupDeviceDTO.java +++ b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupDeviceDTO.java @@ -8,7 +8,7 @@ import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; /** - * @author: 谢绍许 + * @author: Blue * @date: 2024-06-01 * @version: 1.0 */ diff --git a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupFailedDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupFailedDTO.java index e9fa69f..3df2cb9 100644 --- a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupFailedDTO.java +++ b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupFailedDTO.java @@ -7,7 +7,7 @@ import lombok.Data; import javax.validation.constraints.NotNull; /** - * @author: 谢绍许 + * @author: Blue * @date: 2024-06-01 * @version: 1.0 */ diff --git a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupInviteDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupInviteDTO.java index e5ea7b8..7719a39 100644 --- a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupInviteDTO.java +++ b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupInviteDTO.java @@ -10,7 +10,7 @@ import javax.validation.constraints.NotNull; import java.util.List; /** - * @author: 谢绍许 + * @author: Blue * @date: 2024-06-01 * @version: 1.0 */ diff --git a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupJoinDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupJoinDTO.java index 6d4e212..adbc066 100644 --- a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupJoinDTO.java +++ b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupJoinDTO.java @@ -8,7 +8,7 @@ import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; /** - * @author: 谢绍许 + * @author: Blue * @date: 2024-06-01 * @version: 1.0 */ diff --git a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupOfferDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupOfferDTO.java index fbf9de5..057fe20 100644 --- a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupOfferDTO.java +++ b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupOfferDTO.java @@ -8,7 +8,7 @@ import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; /** - * @author: 谢绍许 + * @author: Blue * @date: 2024-06-01 * @version: 1.0 */ diff --git a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupSetupDTO.java b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupSetupDTO.java index 9736bba..f59989f 100644 --- a/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupSetupDTO.java +++ b/im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupSetupDTO.java @@ -10,7 +10,7 @@ import javax.validation.constraints.NotNull; import java.util.List; /** - * @author: 谢绍许 + * @author: Blue * @date: 2024-06-01 * @version: 1.0 */ diff --git a/im-platform/src/main/java/com/bx/implatform/enums/WebrtcMode.java b/im-platform/src/main/java/com/bx/implatform/enums/WebrtcMode.java index 1aa50de..ebaf099 100644 --- a/im-platform/src/main/java/com/bx/implatform/enums/WebrtcMode.java +++ b/im-platform/src/main/java/com/bx/implatform/enums/WebrtcMode.java @@ -4,7 +4,7 @@ import lombok.AllArgsConstructor; import lombok.Getter; /** - * @author: 谢绍许 + * @author: Blue * @date: 2024-06-01 * @version: 1.0 */ diff --git a/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcGroupServiceImpl.java b/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcGroupServiceImpl.java index c5a2635..8851b32 100644 --- a/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcGroupServiceImpl.java +++ b/im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcGroupServiceImpl.java @@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSON; import com.bx.imclient.IMClient; import com.bx.imcommon.model.IMGroupMessage; import com.bx.imcommon.model.IMUserInfo; +import com.bx.implatform.annotation.OnlineCheck; import com.bx.implatform.annotation.RedisLock; import com.bx.implatform.config.WebrtcConfig; import com.bx.implatform.contant.RedisKey; @@ -55,6 +56,7 @@ public class WebrtcGroupServiceImpl implements IWebrtcGroupService { private final WebrtcConfig webrtcConfig; + @OnlineCheck @RedisLock(prefixKey = RedisKey.IM_LOCK_RTC_GROUP, key = "#dto.groupId") @Override public void setup(WebrtcGroupSetupDTO dto) { @@ -200,6 +202,7 @@ public class WebrtcGroupServiceImpl implements IWebrtcGroupService { log.info("群通话失败,userId:{},groupId:{},原因:{}", userSession.getUserId(), dto.getReason()); } + @OnlineCheck @RedisLock(prefixKey = RedisKey.IM_LOCK_RTC_GROUP, key = "#groupId") @Override public void join(Long groupId) { @@ -239,6 +242,7 @@ public class WebrtcGroupServiceImpl implements IWebrtcGroupService { log.info("加入群通话,userId:{},groupId:{}", userSession.getUserId(), groupId); } + @OnlineCheck @RedisLock(prefixKey = RedisKey.IM_LOCK_RTC_GROUP, key = "#dto.groupId") @Override public void invite(WebrtcGroupInviteDTO dto) { diff --git a/im-platform/src/main/java/com/bx/implatform/session/WebrtcGroupSession.java b/im-platform/src/main/java/com/bx/implatform/session/WebrtcGroupSession.java index f6343bf..098c724 100644 --- a/im-platform/src/main/java/com/bx/implatform/session/WebrtcGroupSession.java +++ b/im-platform/src/main/java/com/bx/implatform/session/WebrtcGroupSession.java @@ -7,7 +7,7 @@ import java.util.LinkedList; import java.util.List; /** - * @author: 谢绍许 + * @author: Blue * @date: 2024-06-01 * @version: 1.0 */ diff --git a/im-platform/src/main/java/com/bx/implatform/session/WebrtcUserInfo.java b/im-platform/src/main/java/com/bx/implatform/session/WebrtcUserInfo.java index 75b16fb..5bae898 100644 --- a/im-platform/src/main/java/com/bx/implatform/session/WebrtcUserInfo.java +++ b/im-platform/src/main/java/com/bx/implatform/session/WebrtcUserInfo.java @@ -5,7 +5,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; /** - * @author: 谢绍许 + * @author: Blue * @date: 2024-06-02 * @version: 1.0 */ diff --git a/im-platform/src/main/java/com/bx/implatform/util/UserStateUtils.java b/im-platform/src/main/java/com/bx/implatform/util/UserStateUtils.java index 40678b2..567737e 100644 --- a/im-platform/src/main/java/com/bx/implatform/util/UserStateUtils.java +++ b/im-platform/src/main/java/com/bx/implatform/util/UserStateUtils.java @@ -10,7 +10,7 @@ import org.springframework.stereotype.Component; import java.util.concurrent.TimeUnit; /** - * @author: 谢绍许 + * @author: Blue * @date: 2024-06-10 * @version: 1.0 */ diff --git a/im-platform/src/main/java/com/bx/implatform/vo/OnlineTerminalVO.java b/im-platform/src/main/java/com/bx/implatform/vo/OnlineTerminalVO.java index 4aed6c1..67e5413 100644 --- a/im-platform/src/main/java/com/bx/implatform/vo/OnlineTerminalVO.java +++ b/im-platform/src/main/java/com/bx/implatform/vo/OnlineTerminalVO.java @@ -7,7 +7,7 @@ import lombok.Data; import java.util.List; /** - * @author: 谢绍许 + * @author: Blue * @date: 2023-10-28 21:17:59 * @version: 1.0 */ diff --git a/im-platform/src/main/java/com/bx/implatform/vo/WebrtcGroupFailedVO.java b/im-platform/src/main/java/com/bx/implatform/vo/WebrtcGroupFailedVO.java index 78548b0..5c7b988 100644 --- a/im-platform/src/main/java/com/bx/implatform/vo/WebrtcGroupFailedVO.java +++ b/im-platform/src/main/java/com/bx/implatform/vo/WebrtcGroupFailedVO.java @@ -7,7 +7,7 @@ import lombok.Data; import java.util.List; /** - * @author: 谢绍许 + * @author: Blue * @date: 2024-06-09 * @version: 1.0 */ diff --git a/im-platform/src/main/java/com/bx/implatform/vo/WebrtcGroupInfoVO.java b/im-platform/src/main/java/com/bx/implatform/vo/WebrtcGroupInfoVO.java index 8706b41..bf27527 100644 --- a/im-platform/src/main/java/com/bx/implatform/vo/WebrtcGroupInfoVO.java +++ b/im-platform/src/main/java/com/bx/implatform/vo/WebrtcGroupInfoVO.java @@ -8,7 +8,7 @@ import lombok.Data; import java.util.List; /** - * @author: 谢绍许 + * @author: Blue * @date: 2024-06-09 * @version: 1.0 */ diff --git a/im-uniapp/manifest.json b/im-uniapp/manifest.json index e5d7646..d69c7ad 100644 --- a/im-uniapp/manifest.json +++ b/im-uniapp/manifest.json @@ -100,7 +100,7 @@ /* 小程序特有相关 */ "mp-weixin" : { "appid" : "wxda94f40bfad0262c", - "libVersion": "latest", + "libVersion" : "latest", "setting" : { "urlCheck" : false },