Browse Source

feat: 多人音视频功能

master
xsx 2 years ago
parent
commit
378afb8278
  1. 2
      im-commom/src/main/java/com/bx/imcommon/model/IMUserInfo.java
  2. 16
      im-platform/src/main/java/com/bx/implatform/annotation/OnlineCheck.java
  3. 43
      im-platform/src/main/java/com/bx/implatform/aspect/OnlineCheckAspect.java
  4. 2
      im-platform/src/main/java/com/bx/implatform/config/RedissonConfig.java
  5. 2
      im-platform/src/main/java/com/bx/implatform/controller/WebrtcGroupController.java
  6. 2
      im-platform/src/main/java/com/bx/implatform/controller/WebrtcPrivateController.java
  7. 2
      im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupAnswerDTO.java
  8. 2
      im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupCandidateDTO.java
  9. 2
      im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupDeviceDTO.java
  10. 2
      im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupFailedDTO.java
  11. 2
      im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupInviteDTO.java
  12. 2
      im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupJoinDTO.java
  13. 2
      im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupOfferDTO.java
  14. 2
      im-platform/src/main/java/com/bx/implatform/dto/WebrtcGroupSetupDTO.java
  15. 2
      im-platform/src/main/java/com/bx/implatform/enums/WebrtcMode.java
  16. 4
      im-platform/src/main/java/com/bx/implatform/service/impl/WebrtcGroupServiceImpl.java
  17. 2
      im-platform/src/main/java/com/bx/implatform/session/WebrtcGroupSession.java
  18. 2
      im-platform/src/main/java/com/bx/implatform/session/WebrtcUserInfo.java
  19. 2
      im-platform/src/main/java/com/bx/implatform/util/UserStateUtils.java
  20. 2
      im-platform/src/main/java/com/bx/implatform/vo/OnlineTerminalVO.java
  21. 2
      im-platform/src/main/java/com/bx/implatform/vo/WebrtcGroupFailedVO.java
  22. 2
      im-platform/src/main/java/com/bx/implatform/vo/WebrtcGroupInfoVO.java
  23. 2
      im-uniapp/manifest.json

2
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
*/

16
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 {
}

43
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();
}
}

2
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
*/

2
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
*/

2
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) {

2
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
*/

2
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
*/

2
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
*/

2
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
*/

2
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
*/

2
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
*/

2
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
*/

2
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
*/

2
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
*/

4
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) {

2
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
*/

2
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
*/

2
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
*/

2
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
*/

2
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
*/

2
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
*/

2
im-uniapp/manifest.json

@ -100,7 +100,7 @@
/* */
"mp-weixin" : {
"appid" : "wxda94f40bfad0262c",
"libVersion": "latest",
"libVersion" : "latest",
"setting" : {
"urlCheck" : false
},

Loading…
Cancel
Save