temp jitsi

This commit is contained in:
2025-12-26 10:37:52 +08:00
parent e39dc03f92
commit c2b37503fc
22 changed files with 1710 additions and 416 deletions

View File

@@ -0,0 +1,54 @@
package org.xyzh.api.workcase.service;
import com.alibaba.fastjson2.JSONObject;
/**
* @description Jitsi Meet JWT Token服务接口
* @filename JitsiTokenService.java
* @author claude
* @copyright xyzh
* @since 2025-12-25
*/
public interface JitsiTokenService {
/**
* @description 生成Jitsi Meet JWT Token
* @param roomName Jitsi房间名
* @param userId 用户ID
* @param userName 用户名称
* @param isModerator 是否为主持人
* @return JWT Token字符串
* @author claude
* @since 2025-12-25
*/
String generateJwtToken(String roomName, String userId, String userName, boolean isModerator);
/**
* @description 验证JWT Token是否有效
* @param token JWT Token
* @return boolean
* @author claude
* @since 2025-12-25
*/
boolean validateJwtToken(String token);
/**
* @description 构建Jitsi Meet iframe URL
* @param roomName Jitsi房间名
* @param jwtToken JWT Token
* @param config Jitsi配置项可选
* @return iframe URL字符串
* @author claude
* @since 2025-12-25
*/
String buildIframeUrl(String roomName, String jwtToken, JSONObject config);
/**
* @description 生成唯一的Jitsi房间名
* @param workcaseId 工单ID
* @return 房间名字符串
* @author claude
* @since 2025-12-25
*/
String generateRoomName(String workcaseId);
}

View File

@@ -0,0 +1,92 @@
package org.xyzh.api.workcase.service;
import org.xyzh.api.workcase.dto.TbVideoMeetingDTO;
import org.xyzh.api.workcase.vo.VideoMeetingVO;
import org.xyzh.common.core.domain.ResultDomain;
/**
* @description 视频会议服务接口管理Jitsi Meet视频会议
* @filename VideoMeetingService.java
* @author claude
* @copyright xyzh
* @since 2025-12-25
*/
public interface VideoMeetingService {
/**
* @description 创建视频会议
* @param meetingDTO 会议信息
* @param userId 创建者用户ID
* @return ResultDomain<VideoMeetingVO>
* @author claude
* @since 2025-12-25
*/
ResultDomain<VideoMeetingVO> createMeeting(TbVideoMeetingDTO meetingDTO);
/**
* @description 获取会议信息
* @param meetingId 会议ID
* @param userId 请求用户ID用于权限验证
* @return ResultDomain<VideoMeetingVO>
* @author claude
* @since 2025-12-25
*/
ResultDomain<VideoMeetingVO> getMeetingInfo(String meetingId, String userId);
/**
* @description 验证用户是否有权访问会议
* @param meetingId 会议ID
* @param userId 用户ID
* @return ResultDomain<Boolean>
* @author claude
* @since 2025-12-25
*/
ResultDomain<Boolean> validateMeetingAccess(String meetingId, String userId);
/**
* @description 生成用户专属的会议访问URL包含用户专属JWT Token
* @param meetingId 会议ID
* @param userId 用户ID
* @return ResultDomain<VideoMeetingVO>
* @author claude
* @since 2025-12-25
*/
ResultDomain<VideoMeetingVO> generateUserMeetingUrl(String meetingId, String userId);
/**
* @description 开始会议更新状态为ongoing
* @param meetingId 会议ID
* @return ResultDomain<Boolean>
* @author claude
* @since 2025-12-25
*/
ResultDomain<Boolean> startMeeting(String meetingId);
/**
* @description 结束会议更新状态为ended
* @param meetingId 会议ID
* @return ResultDomain<VideoMeetingVO>
* @author claude
* @since 2025-12-25
*/
ResultDomain<VideoMeetingVO> endMeeting(String meetingId);
/**
* @description 获取聊天室当前活跃的会议
* @param roomId 聊天室ID
* @return ResultDomain<VideoMeetingVO>
* @author claude
* @since 2025-12-25
*/
ResultDomain<VideoMeetingVO> getActiveMeetingByRoom(String roomId);
/**
* @description 检查用户是否为聊天室成员(内部方法)
* @param roomId 聊天室ID
* @param userId 用户ID
* @return boolean
* @author claude
* @since 2025-12-25
*/
boolean isMemberOfRoom(String roomId, String userId);
}