jisti-meet服务开启

This commit is contained in:
2025-12-26 18:55:54 +08:00
parent c2b37503fc
commit 0658b82f39
43 changed files with 3979 additions and 1208 deletions

View File

@@ -34,6 +34,9 @@ public class TbVideoMeetingDTO extends BaseDTO {
@Schema(description = "会议密码")
private String meetingPassword;
@Schema(description = "会议模式")
private String description;
@Schema(description = "JWT Token")
private String jwtToken;
@@ -46,9 +49,6 @@ public class TbVideoMeetingDTO extends BaseDTO {
@Schema(description = "状态scheduled-已安排 ongoing-进行中 ended-已结束 cancelled-已取消")
private String status;
@Schema(description = "创建者ID")
private String creatorId;
@Schema(description = "创建者类型guest-来客 agent-客服")
private String creatorType;
@@ -61,6 +61,15 @@ public class TbVideoMeetingDTO extends BaseDTO {
@Schema(description = "最大参与人数")
private Integer maxParticipants;
@Schema(description = "定义会议开始时间")
private Date startTime;
@Schema(description = "定义会议结束时间")
private Date endTime;
@Schema(description = "提前入会时间(分钟)")
private Integer advance;
@Schema(description = "实际开始时间")
private Date actualStartTime;

View File

@@ -1,186 +0,0 @@
package org.xyzh.api.workcase.service;
import org.xyzh.api.workcase.dto.TbVideoMeetingDTO;
import org.xyzh.api.workcase.dto.TbMeetingParticipantDTO;
import org.xyzh.api.workcase.dto.TbMeetingTranscriptionDTO;
import org.xyzh.api.workcase.vo.VideoMeetingVO;
import org.xyzh.api.workcase.vo.MeetingParticipantVO;
import org.xyzh.api.workcase.vo.MeetingTranscriptionVO;
import org.xyzh.common.core.domain.ResultDomain;
import org.xyzh.common.core.page.PageRequest;
/**
* @description 视频会议服务接口管理Jitsi Meet会议、参与者和转录
* @filename MeetService.java
* @author cascade
* @copyright xyzh
* @since 2025-12-22
*/
public interface MeetService {
// ========================= 会议管理 ==========================
/**
* @description 创建视频会议
* @param meeting 会议信息
* @author cascade
* @since 2025-12-22
*/
ResultDomain<TbVideoMeetingDTO> createMeeting(TbVideoMeetingDTO meeting);
/**
* @description 更新会议信息
* @param meeting 会议信息
* @author cascade
* @since 2025-12-22
*/
ResultDomain<TbVideoMeetingDTO> updateMeeting(TbVideoMeetingDTO meeting);
/**
* @description 开始会议
* @param meetingId 会议ID
* @author cascade
* @since 2025-12-22
*/
ResultDomain<TbVideoMeetingDTO> startMeeting(String meetingId);
/**
* @description 结束会议
* @param meetingId 会议ID
* @author cascade
* @since 2025-12-22
*/
ResultDomain<TbVideoMeetingDTO> endMeeting(String meetingId);
/**
* @description 删除会议
* @param meetingId 会议ID
* @author cascade
* @since 2025-12-22
*/
ResultDomain<Boolean> deleteMeeting(String meetingId);
/**
* @description 根据ID获取会议
* @param meetingId 会议ID
* @author cascade
* @since 2025-12-22
*/
ResultDomain<TbVideoMeetingDTO> getMeetingById(String meetingId);
/**
* @description 获取会议列表/分页
* @param pageRequest 分页请求
* @author cascade
* @since 2025-12-22
*/
ResultDomain<VideoMeetingVO> getMeetingPage(PageRequest<TbVideoMeetingDTO> pageRequest);
/**
* @description 生成会议加入链接/iframe URL
* @param meetingId 会议ID
* @param userId 用户ID
* @param userName 用户名称
* @author cascade
* @since 2025-12-22
*/
ResultDomain<String> generateMeetingJoinUrl(String meetingId, String userId, String userName);
/**
* @description 生成会议JWT Token
* @param meetingId 会议ID
* @param userId 用户ID
* @param isModerator 是否主持人
* @author cascade
* @since 2025-12-22
*/
ResultDomain<String> generateMeetingToken(String meetingId, String userId, boolean isModerator);
// ========================= 参与者管理 ==========================
/**
* @description 参与者加入会议
* @param participant 参与者信息
* @author cascade
* @since 2025-12-22
*/
ResultDomain<TbMeetingParticipantDTO> joinMeeting(TbMeetingParticipantDTO participant);
/**
* @description 参与者离开会议
* @param participantId 参与者ID
* @author cascade
* @since 2025-12-22
*/
ResultDomain<Boolean> leaveMeeting(String participantId);
/**
* @description 获取会议参与者列表
* @param meetingId 会议ID
* @author cascade
* @since 2025-12-22
*/
ResultDomain<MeetingParticipantVO> getMeetingParticipantList(String meetingId);
/**
* @description 更新参与者信息
* @param participant 参与者信息
* @author cascade
* @since 2025-12-22
*/
ResultDomain<TbMeetingParticipantDTO> updateParticipant(TbMeetingParticipantDTO participant);
/**
* @description 设置参与者为主持人
* @param participantId 参与者ID
* @param isModerator 是否主持人
* @author cascade
* @since 2025-12-22
*/
ResultDomain<Boolean> setModerator(String participantId, boolean isModerator);
// ========================= 转录管理 ==========================
/**
* @description 添加转录记录
* @param transcription 转录内容
* @author cascade
* @since 2025-12-22
*/
ResultDomain<TbMeetingTranscriptionDTO> addTranscription(TbMeetingTranscriptionDTO transcription);
/**
* @description 获取会议转录列表/分页
* @param pageRequest 分页请求
* @author cascade
* @since 2025-12-22
*/
ResultDomain<MeetingTranscriptionVO> getTranscriptionPage(PageRequest<TbMeetingTranscriptionDTO> pageRequest);
/**
* @description 获取会议完整转录文本
* @param meetingId 会议ID
* @author cascade
* @since 2025-12-22
*/
ResultDomain<String> getFullTranscriptionText(String meetingId);
/**
* @description 删除转录记录
* @param transcriptionId 转录ID
* @author cascade
* @since 2025-12-22
*/
ResultDomain<Boolean> deleteTranscription(String transcriptionId);
// ========================= 会议统计 ==========================
/**
* @description 获取会议统计信息(参与人数、时长等)
* @param meetingId 会议ID
* @author cascade
* @since 2025-12-22
*/
ResultDomain<VideoMeetingVO> getMeetingStatistics(String meetingId);
}

View File

@@ -33,6 +33,10 @@ public class VideoMeetingVO extends BaseVO {
@Schema(description = "会议密码")
private String meetingPassword;
@Schema(description = "会议模式")
private String description;
@Schema(description = "JWT Token用于身份验证")
private String jwtToken;
@@ -45,9 +49,6 @@ public class VideoMeetingVO extends BaseVO {
@Schema(description = "状态scheduled-已安排 ongoing-进行中 ended-已结束 cancelled-已取消")
private String status;
@Schema(description = "创建者ID")
private String creatorId;
@Schema(description = "创建者类型guest-来客 agent-客服")
private String creatorType;
@@ -59,6 +60,17 @@ public class VideoMeetingVO extends BaseVO {
@Schema(description = "最大参与人数")
private Integer maxParticipants;
@Schema(description = "定义会议开始时间", format = "date-time")
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date startTime;
@Schema(description = "定义会议结束时间", format = "date-time")
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
private Date endTime;
@Schema(description = "提前入会时间(分钟)")
private Integer advance;
@Schema(description = "实际开始时间", format = "date-time")
@JSONField(format = "yyyy-MM-dd HH:mm:ss")