mapper
This commit is contained in:
@@ -185,8 +185,8 @@ CREATE TABLE workcase.tb_meeting_transcription(
|
||||
content_raw TEXT DEFAULT NULL, -- 原始转录结果(含标点前)
|
||||
language VARCHAR(10) DEFAULT 'zh-CN', -- 语言:zh-CN en-US等
|
||||
confidence NUMERIC(3,2) DEFAULT NULL, -- 识别置信度(0-1)
|
||||
start_time TIMESTAMPTZ NOT NULL, -- 语音开始时间
|
||||
end_time TIMESTAMPTZ NOT NULL, -- 语音结束时间
|
||||
speech_start_time TIMESTAMPTZ NOT NULL, -- 语音开始时间
|
||||
speech_end_time TIMESTAMPTZ NOT NULL, -- 语音结束时间
|
||||
duration_ms INTEGER NOT NULL, -- 语音时长(毫秒)
|
||||
audio_url VARCHAR(500) DEFAULT NULL, -- 音频片段URL(可选)
|
||||
segment_index INTEGER NOT NULL DEFAULT 0, -- 片段序号(按时间排序)
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
package org.xyzh.api.workcase.dto;
|
||||
|
||||
import java.time.OffsetDateTime;
|
||||
|
||||
import org.xyzh.common.dto.BaseDTO;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @description 会议转录记录表数据对象DTO
|
||||
* @filename TbMeetingTranscriptionDTO.java
|
||||
* @author cascade
|
||||
* @copyright xyzh
|
||||
* @since 2025-12-22
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "会议转录记录表对象")
|
||||
public class TbMeetingTranscriptionDTO extends BaseDTO {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Schema(description = "转录记录ID")
|
||||
private String transcriptionId;
|
||||
|
||||
@Schema(description = "会议ID")
|
||||
private String meetingId;
|
||||
|
||||
@Schema(description = "说话人ID")
|
||||
private String speakerId;
|
||||
|
||||
@Schema(description = "说话人名称")
|
||||
private String speakerName;
|
||||
|
||||
@Schema(description = "说话人类型:guest-来客 agent-客服")
|
||||
private String speakerType;
|
||||
|
||||
@Schema(description = "转录文本内容")
|
||||
private String content;
|
||||
|
||||
@Schema(description = "原始转录结果")
|
||||
private String contentRaw;
|
||||
|
||||
@Schema(description = "语言")
|
||||
private String language;
|
||||
|
||||
@Schema(description = "识别置信度(0-1)")
|
||||
private Double confidence;
|
||||
|
||||
@Schema(description = "语音开始时间")
|
||||
private OffsetDateTime speechStartTime;
|
||||
|
||||
@Schema(description = "语音结束时间")
|
||||
private OffsetDateTime speechEndTime;
|
||||
|
||||
@Schema(description = "语音时长(毫秒)")
|
||||
private Integer durationMs;
|
||||
|
||||
@Schema(description = "音频片段URL")
|
||||
private String audioUrl;
|
||||
|
||||
@Schema(description = "片段序号")
|
||||
private Integer segmentIndex;
|
||||
|
||||
@Schema(description = "是否最终结果")
|
||||
private Boolean isFinal;
|
||||
|
||||
@Schema(description = "服务提供商")
|
||||
private String serviceProvider;
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package org.xyzh.api.workcase.vo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.xyzh.common.vo.BaseVO;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import java.time.OffsetDateTime;
|
||||
|
||||
/**
|
||||
* 会议参与记录VO
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Schema(description = "会议参与记录VO")
|
||||
public class MeetingParticipantVO extends BaseVO {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Schema(description = "参与记录ID")
|
||||
private String participantId;
|
||||
|
||||
@Schema(description = "会议ID")
|
||||
private String meetingId;
|
||||
|
||||
@Schema(description = "用户ID")
|
||||
private String userId;
|
||||
|
||||
@Schema(description = "用户类型:guest-来客 agent-客服")
|
||||
private String userType;
|
||||
|
||||
@Schema(description = "用户名称")
|
||||
private String userName;
|
||||
|
||||
@Schema(description = "加入时间")
|
||||
private OffsetDateTime joinTime;
|
||||
|
||||
@Schema(description = "离开时间")
|
||||
private OffsetDateTime leaveTime;
|
||||
|
||||
@Schema(description = "参与时长(秒)")
|
||||
private Integer durationSeconds;
|
||||
|
||||
@Schema(description = "参与时长(格式化)")
|
||||
private String durationFormatted;
|
||||
|
||||
@Schema(description = "是否主持人")
|
||||
private Boolean isModerator;
|
||||
|
||||
@Schema(description = "加入方式:web-网页 mobile-移动端 desktop-桌面端")
|
||||
private String joinMethod;
|
||||
|
||||
@Schema(description = "设备信息")
|
||||
private String deviceInfo;
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
package org.xyzh.api.workcase.vo;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import org.xyzh.common.vo.BaseVO;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import java.time.OffsetDateTime;
|
||||
|
||||
/**
|
||||
* 会议转录记录VO
|
||||
*/
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Schema(description = "会议转录记录VO")
|
||||
public class MeetingTranscriptionVO extends BaseVO {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@Schema(description = "转录记录ID")
|
||||
private String transcriptionId;
|
||||
|
||||
@Schema(description = "会议ID")
|
||||
private String meetingId;
|
||||
|
||||
@Schema(description = "说话人ID")
|
||||
private String speakerId;
|
||||
|
||||
@Schema(description = "说话人名称")
|
||||
private String speakerName;
|
||||
|
||||
@Schema(description = "说话人类型:guest-来客 agent-客服")
|
||||
private String speakerType;
|
||||
|
||||
@Schema(description = "转录文本内容")
|
||||
private String content;
|
||||
|
||||
@Schema(description = "原始转录结果")
|
||||
private String contentRaw;
|
||||
|
||||
@Schema(description = "语言")
|
||||
private String language;
|
||||
|
||||
@Schema(description = "识别置信度(0-1)")
|
||||
private Double confidence;
|
||||
|
||||
@Schema(description = "语音开始时间")
|
||||
private OffsetDateTime speechStartTime;
|
||||
|
||||
@Schema(description = "语音结束时间")
|
||||
private OffsetDateTime speechEndTime;
|
||||
|
||||
@Schema(description = "语音时长(毫秒)")
|
||||
private Integer durationMs;
|
||||
|
||||
@Schema(description = "音频片段URL")
|
||||
private String audioUrl;
|
||||
|
||||
@Schema(description = "片段序号")
|
||||
private Integer segmentIndex;
|
||||
|
||||
@Schema(description = "是否最终结果")
|
||||
private Boolean isFinal;
|
||||
|
||||
@Schema(description = "服务提供商")
|
||||
private String serviceProvider;
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package org.xyzh.workcase.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.xyzh.api.workcase.dto.TbChatMessageDTO;
|
||||
import org.xyzh.api.workcase.vo.ChatMessageVO;
|
||||
import org.xyzh.common.core.page.PageParam;
|
||||
|
||||
/**
|
||||
* @description 聊天消息数据访问层
|
||||
* @filename TbChatMessageMapper.java
|
||||
* @author cascade
|
||||
* @copyright xyzh
|
||||
* @since 2025-12-22
|
||||
*/
|
||||
@Mapper
|
||||
public interface TbChatMessageMapper {
|
||||
|
||||
/**
|
||||
* 插入聊天消息
|
||||
*/
|
||||
int insertChatMessage(TbChatMessageDTO message);
|
||||
|
||||
/**
|
||||
* 更新聊天消息(只更新非null字段)
|
||||
*/
|
||||
int updateChatMessage(TbChatMessageDTO message);
|
||||
|
||||
/**
|
||||
* 删除聊天消息
|
||||
*/
|
||||
int deleteChatMessage(TbChatMessageDTO message);
|
||||
|
||||
/**
|
||||
* 根据ID查询聊天消息
|
||||
*/
|
||||
TbChatMessageDTO selectChatMessageById(@Param("messageId") String messageId);
|
||||
|
||||
/**
|
||||
* 查询聊天消息列表
|
||||
*/
|
||||
List<ChatMessageVO> selectChatMessageList(@Param("filter") TbChatMessageDTO filter);
|
||||
|
||||
/**
|
||||
* 分页查询聊天消息
|
||||
*/
|
||||
List<ChatMessageVO> selectChatMessagePage(@Param("filter") TbChatMessageDTO filter, @Param("pageParam") PageParam pageParam);
|
||||
|
||||
/**
|
||||
* 统计聊天消息数量
|
||||
*/
|
||||
long countChatMessages(@Param("filter") TbChatMessageDTO filter);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package org.xyzh.workcase.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.xyzh.api.workcase.dto.TbChatRoomDTO;
|
||||
import org.xyzh.api.workcase.vo.ChatRoomVO;
|
||||
import org.xyzh.common.core.page.PageParam;
|
||||
|
||||
/**
|
||||
* @description 聊天室数据访问层
|
||||
* @filename TbChatRoomMapper.java
|
||||
* @author cascade
|
||||
* @copyright xyzh
|
||||
* @since 2025-12-22
|
||||
*/
|
||||
@Mapper
|
||||
public interface TbChatRoomMapper {
|
||||
|
||||
/**
|
||||
* 插入聊天室
|
||||
*/
|
||||
int insertChatRoom(TbChatRoomDTO chatRoom);
|
||||
|
||||
/**
|
||||
* 更新聊天室(只更新非null字段)
|
||||
*/
|
||||
int updateChatRoom(TbChatRoomDTO chatRoom);
|
||||
|
||||
/**
|
||||
* 逻辑删除聊天室
|
||||
*/
|
||||
int deleteChatRoom(TbChatRoomDTO chatRoom);
|
||||
|
||||
/**
|
||||
* 根据ID查询聊天室
|
||||
*/
|
||||
TbChatRoomDTO selectChatRoomById(@Param("roomId") String roomId);
|
||||
|
||||
/**
|
||||
* 查询聊天室列表
|
||||
*/
|
||||
List<ChatRoomVO> selectChatRoomList(@Param("filter") TbChatRoomDTO filter);
|
||||
|
||||
/**
|
||||
* 分页查询聊天室
|
||||
*/
|
||||
List<ChatRoomVO> selectChatRoomPage(@Param("filter") TbChatRoomDTO filter, @Param("pageParam") PageParam pageParam);
|
||||
|
||||
/**
|
||||
* 统计聊天室数量
|
||||
*/
|
||||
long countChatRooms(@Param("filter") TbChatRoomDTO filter);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package org.xyzh.workcase.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.xyzh.api.workcase.dto.TbChatRoomMemberDTO;
|
||||
import org.xyzh.api.workcase.vo.ChatMemberVO;
|
||||
import org.xyzh.common.core.page.PageParam;
|
||||
|
||||
/**
|
||||
* @description 聊天室成员数据访问层
|
||||
* @filename TbChatRoomMemberMapper.java
|
||||
* @author cascade
|
||||
* @copyright xyzh
|
||||
* @since 2025-12-22
|
||||
*/
|
||||
@Mapper
|
||||
public interface TbChatRoomMemberMapper {
|
||||
|
||||
/**
|
||||
* 插入聊天室成员
|
||||
*/
|
||||
int insertChatRoomMember(TbChatRoomMemberDTO member);
|
||||
|
||||
/**
|
||||
* 更新聊天室成员(只更新非null字段)
|
||||
*/
|
||||
int updateChatRoomMember(TbChatRoomMemberDTO member);
|
||||
|
||||
/**
|
||||
* 删除聊天室成员
|
||||
*/
|
||||
int deleteChatRoomMember(TbChatRoomMemberDTO member);
|
||||
|
||||
/**
|
||||
* 根据ID查询聊天室成员
|
||||
*/
|
||||
TbChatRoomMemberDTO selectChatRoomMemberById(@Param("memberId") String memberId);
|
||||
|
||||
/**
|
||||
* 查询聊天室成员列表
|
||||
*/
|
||||
List<ChatMemberVO> selectChatRoomMemberList(@Param("filter") TbChatRoomMemberDTO filter);
|
||||
|
||||
/**
|
||||
* 分页查询聊天室成员
|
||||
*/
|
||||
List<ChatMemberVO> selectChatRoomMemberPage(@Param("filter") TbChatRoomMemberDTO filter, @Param("pageParam") PageParam pageParam);
|
||||
|
||||
/**
|
||||
* 统计聊天室成员数量
|
||||
*/
|
||||
long countChatRoomMembers(@Param("filter") TbChatRoomMemberDTO filter);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package org.xyzh.workcase.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.xyzh.api.workcase.dto.TbCustomerServiceDTO;
|
||||
import org.xyzh.api.workcase.vo.CustomerServiceVO;
|
||||
import org.xyzh.common.core.page.PageParam;
|
||||
|
||||
/**
|
||||
* @description 客服人员配置数据访问层
|
||||
* @filename TbCustomerServiceMapper.java
|
||||
* @author cascade
|
||||
* @copyright xyzh
|
||||
* @since 2025-12-22
|
||||
*/
|
||||
@Mapper
|
||||
public interface TbCustomerServiceMapper {
|
||||
|
||||
/**
|
||||
* 插入客服人员配置
|
||||
*/
|
||||
int insertCustomerService(TbCustomerServiceDTO customerService);
|
||||
|
||||
/**
|
||||
* 更新客服人员配置(只更新非null字段)
|
||||
*/
|
||||
int updateCustomerService(TbCustomerServiceDTO customerService);
|
||||
|
||||
/**
|
||||
* 逻辑删除客服人员配置
|
||||
*/
|
||||
int deleteCustomerService(TbCustomerServiceDTO customerService);
|
||||
|
||||
/**
|
||||
* 根据ID查询客服人员配置
|
||||
*/
|
||||
TbCustomerServiceDTO selectCustomerServiceById(@Param("userId") String userId);
|
||||
|
||||
/**
|
||||
* 查询客服人员配置列表
|
||||
*/
|
||||
List<CustomerServiceVO> selectCustomerServiceList(@Param("filter") TbCustomerServiceDTO filter);
|
||||
|
||||
/**
|
||||
* 分页查询客服人员配置
|
||||
*/
|
||||
List<CustomerServiceVO> selectCustomerServicePage(@Param("filter") TbCustomerServiceDTO filter, @Param("pageParam") PageParam pageParam);
|
||||
|
||||
/**
|
||||
* 统计客服人员配置数量
|
||||
*/
|
||||
long countCustomerServices(@Param("filter") TbCustomerServiceDTO filter);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package org.xyzh.workcase.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.xyzh.api.workcase.dto.TbMeetingParticipantDTO;
|
||||
import org.xyzh.api.workcase.vo.MeetingParticipantVO;
|
||||
import org.xyzh.common.core.page.PageParam;
|
||||
|
||||
/**
|
||||
* @description 会议参与记录数据访问层
|
||||
* @filename TbMeetingParticipantMapper.java
|
||||
* @author cascade
|
||||
* @copyright xyzh
|
||||
* @since 2025-12-22
|
||||
*/
|
||||
@Mapper
|
||||
public interface TbMeetingParticipantMapper {
|
||||
|
||||
/**
|
||||
* 插入会议参与记录
|
||||
*/
|
||||
int insertMeetingParticipant(TbMeetingParticipantDTO participant);
|
||||
|
||||
/**
|
||||
* 更新会议参与记录(只更新非null字段)
|
||||
*/
|
||||
int updateMeetingParticipant(TbMeetingParticipantDTO participant);
|
||||
|
||||
/**
|
||||
* 删除会议参与记录
|
||||
*/
|
||||
int deleteMeetingParticipant(TbMeetingParticipantDTO participant);
|
||||
|
||||
/**
|
||||
* 根据ID查询会议参与记录
|
||||
*/
|
||||
TbMeetingParticipantDTO selectMeetingParticipantById(@Param("participantId") String participantId);
|
||||
|
||||
/**
|
||||
* 查询会议参与记录列表
|
||||
*/
|
||||
List<MeetingParticipantVO> selectMeetingParticipantList(@Param("filter") TbMeetingParticipantDTO filter);
|
||||
|
||||
/**
|
||||
* 分页查询会议参与记录
|
||||
*/
|
||||
List<MeetingParticipantVO> selectMeetingParticipantPage(@Param("filter") TbMeetingParticipantDTO filter, @Param("pageParam") PageParam pageParam);
|
||||
|
||||
/**
|
||||
* 统计会议参与记录数量
|
||||
*/
|
||||
long countMeetingParticipants(@Param("filter") TbMeetingParticipantDTO filter);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package org.xyzh.workcase.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.xyzh.api.workcase.dto.TbMeetingTranscriptionDTO;
|
||||
import org.xyzh.api.workcase.vo.MeetingTranscriptionVO;
|
||||
import org.xyzh.common.core.page.PageParam;
|
||||
|
||||
/**
|
||||
* @description 会议转录记录数据访问层
|
||||
* @filename TbMeetingTranscriptionMapper.java
|
||||
* @author cascade
|
||||
* @copyright xyzh
|
||||
* @since 2025-12-22
|
||||
*/
|
||||
@Mapper
|
||||
public interface TbMeetingTranscriptionMapper {
|
||||
|
||||
/**
|
||||
* 插入会议转录记录
|
||||
*/
|
||||
int insertMeetingTranscription(TbMeetingTranscriptionDTO transcription);
|
||||
|
||||
/**
|
||||
* 更新会议转录记录(只更新非null字段)
|
||||
*/
|
||||
int updateMeetingTranscription(TbMeetingTranscriptionDTO transcription);
|
||||
|
||||
/**
|
||||
* 删除会议转录记录
|
||||
*/
|
||||
int deleteMeetingTranscription(TbMeetingTranscriptionDTO transcription);
|
||||
|
||||
/**
|
||||
* 根据ID查询会议转录记录
|
||||
*/
|
||||
TbMeetingTranscriptionDTO selectMeetingTranscriptionById(@Param("transcriptionId") String transcriptionId);
|
||||
|
||||
/**
|
||||
* 查询会议转录记录列表
|
||||
*/
|
||||
List<MeetingTranscriptionVO> selectMeetingTranscriptionList(@Param("filter") TbMeetingTranscriptionDTO filter);
|
||||
|
||||
/**
|
||||
* 分页查询会议转录记录
|
||||
*/
|
||||
List<MeetingTranscriptionVO> selectMeetingTranscriptionPage(@Param("filter") TbMeetingTranscriptionDTO filter, @Param("pageParam") PageParam pageParam);
|
||||
|
||||
/**
|
||||
* 统计会议转录记录数量
|
||||
*/
|
||||
long countMeetingTranscriptions(@Param("filter") TbMeetingTranscriptionDTO filter);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
package org.xyzh.workcase.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.xyzh.api.workcase.dto.TbVideoMeetingDTO;
|
||||
import org.xyzh.api.workcase.vo.VideoMeetingVO;
|
||||
import org.xyzh.common.core.page.PageParam;
|
||||
|
||||
/**
|
||||
* @description 视频会议数据访问层
|
||||
* @filename TbVideoMeetingMapper.java
|
||||
* @author cascade
|
||||
* @copyright xyzh
|
||||
* @since 2025-12-22
|
||||
*/
|
||||
@Mapper
|
||||
public interface TbVideoMeetingMapper {
|
||||
|
||||
/**
|
||||
* 插入视频会议
|
||||
*/
|
||||
int insertVideoMeeting(TbVideoMeetingDTO meeting);
|
||||
|
||||
/**
|
||||
* 更新视频会议(只更新非null字段)
|
||||
*/
|
||||
int updateVideoMeeting(TbVideoMeetingDTO meeting);
|
||||
|
||||
/**
|
||||
* 逻辑删除视频会议
|
||||
*/
|
||||
int deleteVideoMeeting(TbVideoMeetingDTO meeting);
|
||||
|
||||
/**
|
||||
* 根据ID查询视频会议
|
||||
*/
|
||||
TbVideoMeetingDTO selectVideoMeetingById(@Param("meetingId") String meetingId);
|
||||
|
||||
/**
|
||||
* 查询视频会议列表
|
||||
*/
|
||||
List<VideoMeetingVO> selectVideoMeetingList(@Param("filter") TbVideoMeetingDTO filter);
|
||||
|
||||
/**
|
||||
* 分页查询视频会议
|
||||
*/
|
||||
List<VideoMeetingVO> selectVideoMeetingPage(@Param("filter") TbVideoMeetingDTO filter, @Param("pageParam") PageParam pageParam);
|
||||
|
||||
/**
|
||||
* 统计视频会议数量
|
||||
*/
|
||||
long countVideoMeetings(@Param("filter") TbVideoMeetingDTO filter);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,144 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.xyzh.workcase.mapper.TbChatMessageMapper">
|
||||
|
||||
<resultMap id="BaseResultMap" type="org.xyzh.api.workcase.dto.TbChatMessageDTO">
|
||||
<id column="message_id" property="messageId" jdbcType="VARCHAR"/>
|
||||
<result column="optsn" property="optsn" jdbcType="VARCHAR"/>
|
||||
<result column="room_id" property="roomId" jdbcType="VARCHAR"/>
|
||||
<result column="sender_id" property="senderId" jdbcType="VARCHAR"/>
|
||||
<result column="sender_type" property="senderType" jdbcType="VARCHAR"/>
|
||||
<result column="sender_name" property="senderName" jdbcType="VARCHAR"/>
|
||||
<result column="message_type" property="messageType" jdbcType="VARCHAR"/>
|
||||
<result column="content" property="content" jdbcType="VARCHAR"/>
|
||||
<result column="files" property="files" jdbcType="ARRAY" typeHandler="org.xyzh.common.jdbc.handler.StringArrayTypeHandler"/>
|
||||
<result column="content_extra" property="contentExtra" jdbcType="OTHER" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
|
||||
<result column="reply_to_msg_id" property="replyToMsgId" jdbcType="VARCHAR"/>
|
||||
<result column="is_ai_message" property="isAiMessage" jdbcType="BOOLEAN"/>
|
||||
<result column="ai_message_id" property="aiMessageId" jdbcType="VARCHAR"/>
|
||||
<result column="status" property="status" jdbcType="VARCHAR"/>
|
||||
<result column="read_count" property="readCount" jdbcType="INTEGER"/>
|
||||
<result column="send_time" property="sendTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="creator" property="creator" jdbcType="VARCHAR"/>
|
||||
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="VOResultMap" type="org.xyzh.api.workcase.vo.ChatMessageVO">
|
||||
<id column="message_id" property="messageId" jdbcType="VARCHAR"/>
|
||||
<result column="optsn" property="optsn" jdbcType="VARCHAR"/>
|
||||
<result column="room_id" property="roomId" jdbcType="VARCHAR"/>
|
||||
<result column="sender_id" property="senderId" jdbcType="VARCHAR"/>
|
||||
<result column="sender_type" property="senderType" jdbcType="VARCHAR"/>
|
||||
<result column="sender_name" property="senderName" jdbcType="VARCHAR"/>
|
||||
<result column="message_type" property="messageType" jdbcType="VARCHAR"/>
|
||||
<result column="content" property="content" jdbcType="VARCHAR"/>
|
||||
<result column="files" property="files" jdbcType="ARRAY" typeHandler="org.xyzh.common.jdbc.handler.StringArrayTypeHandler"/>
|
||||
<result column="content_extra" property="contentExtra" jdbcType="OTHER" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
|
||||
<result column="reply_to_msg_id" property="replyToMsgId" jdbcType="VARCHAR"/>
|
||||
<result column="is_ai_message" property="isAiMessage" jdbcType="BOOLEAN"/>
|
||||
<result column="ai_message_id" property="aiMessageId" jdbcType="VARCHAR"/>
|
||||
<result column="status" property="status" jdbcType="VARCHAR"/>
|
||||
<result column="read_count" property="readCount" jdbcType="INTEGER"/>
|
||||
<result column="send_time" property="sendTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="creator" property="creator" jdbcType="VARCHAR"/>
|
||||
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
message_id, optsn, room_id, sender_id, sender_type, sender_name, message_type,
|
||||
content, files, content_extra, reply_to_msg_id, is_ai_message, ai_message_id,
|
||||
status, read_count, send_time, creator, create_time, update_time
|
||||
</sql>
|
||||
|
||||
<insert id="insertChatMessage" parameterType="org.xyzh.api.workcase.dto.TbChatMessageDTO">
|
||||
INSERT INTO workcase.tb_chat_message (
|
||||
optsn, message_id, room_id, sender_id, sender_type, sender_name, content, creator
|
||||
<if test="messageType != null">, message_type</if>
|
||||
<if test="files != null">, files</if>
|
||||
<if test="contentExtra != null">, content_extra</if>
|
||||
<if test="replyToMsgId != null">, reply_to_msg_id</if>
|
||||
<if test="isAiMessage != null">, is_ai_message</if>
|
||||
<if test="aiMessageId != null">, ai_message_id</if>
|
||||
<if test="status != null">, status</if>
|
||||
) VALUES (
|
||||
#{optsn}, #{messageId}, #{roomId}, #{senderId}, #{senderType}, #{senderName}, #{content}, #{creator}
|
||||
<if test="messageType != null">, #{messageType}</if>
|
||||
<if test="files != null">, #{files, typeHandler=org.xyzh.common.jdbc.handler.StringArrayTypeHandler}</if>
|
||||
<if test="contentExtra != null">, #{contentExtra, typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler}</if>
|
||||
<if test="replyToMsgId != null">, #{replyToMsgId}</if>
|
||||
<if test="isAiMessage != null">, #{isAiMessage}</if>
|
||||
<if test="aiMessageId != null">, #{aiMessageId}</if>
|
||||
<if test="status != null">, #{status}</if>
|
||||
)
|
||||
</insert>
|
||||
|
||||
<update id="updateChatMessage" parameterType="org.xyzh.api.workcase.dto.TbChatMessageDTO">
|
||||
UPDATE workcase.tb_chat_message
|
||||
<set>
|
||||
<if test="content != null">content = #{content},</if>
|
||||
<if test="status != null and status != ''">status = #{status},</if>
|
||||
<if test="readCount != null">read_count = #{readCount},</if>
|
||||
update_time = now()
|
||||
</set>
|
||||
WHERE message_id = #{messageId}
|
||||
</update>
|
||||
|
||||
<delete id="deleteChatMessage" parameterType="org.xyzh.api.workcase.dto.TbChatMessageDTO">
|
||||
DELETE FROM workcase.tb_chat_message
|
||||
WHERE message_id = #{messageId}
|
||||
</delete>
|
||||
|
||||
<select id="selectChatMessageById" resultMap="BaseResultMap">
|
||||
SELECT <include refid="Base_Column_List"/>
|
||||
FROM workcase.tb_chat_message
|
||||
WHERE message_id = #{messageId}
|
||||
</select>
|
||||
|
||||
<select id="selectChatMessageList" resultMap="VOResultMap">
|
||||
SELECT <include refid="Base_Column_List"/>
|
||||
FROM workcase.tb_chat_message
|
||||
<where>
|
||||
<if test="filter.messageId != null and filter.messageId != ''">AND message_id = #{filter.messageId}</if>
|
||||
<if test="filter.roomId != null and filter.roomId != ''">AND room_id = #{filter.roomId}</if>
|
||||
<if test="filter.senderId != null and filter.senderId != ''">AND sender_id = #{filter.senderId}</if>
|
||||
<if test="filter.senderType != null and filter.senderType != ''">AND sender_type = #{filter.senderType}</if>
|
||||
<if test="filter.messageType != null and filter.messageType != ''">AND message_type = #{filter.messageType}</if>
|
||||
<if test="filter.isAiMessage != null">AND is_ai_message = #{filter.isAiMessage}</if>
|
||||
<if test="filter.status != null and filter.status != ''">AND status = #{filter.status}</if>
|
||||
</where>
|
||||
ORDER BY send_time DESC
|
||||
</select>
|
||||
|
||||
<select id="selectChatMessagePage" resultMap="VOResultMap">
|
||||
SELECT <include refid="Base_Column_List"/>
|
||||
FROM workcase.tb_chat_message
|
||||
<where>
|
||||
<if test="filter.messageId != null and filter.messageId != ''">AND message_id = #{filter.messageId}</if>
|
||||
<if test="filter.roomId != null and filter.roomId != ''">AND room_id = #{filter.roomId}</if>
|
||||
<if test="filter.senderId != null and filter.senderId != ''">AND sender_id = #{filter.senderId}</if>
|
||||
<if test="filter.senderType != null and filter.senderType != ''">AND sender_type = #{filter.senderType}</if>
|
||||
<if test="filter.messageType != null and filter.messageType != ''">AND message_type = #{filter.messageType}</if>
|
||||
<if test="filter.isAiMessage != null">AND is_ai_message = #{filter.isAiMessage}</if>
|
||||
<if test="filter.status != null and filter.status != ''">AND status = #{filter.status}</if>
|
||||
</where>
|
||||
ORDER BY send_time DESC
|
||||
LIMIT #{pageParam.pageSize} OFFSET #{pageParam.offset}
|
||||
</select>
|
||||
|
||||
<select id="countChatMessages" resultType="long">
|
||||
SELECT COUNT(*)
|
||||
FROM workcase.tb_chat_message
|
||||
<where>
|
||||
<if test="filter.messageId != null and filter.messageId != ''">AND message_id = #{filter.messageId}</if>
|
||||
<if test="filter.roomId != null and filter.roomId != ''">AND room_id = #{filter.roomId}</if>
|
||||
<if test="filter.senderId != null and filter.senderId != ''">AND sender_id = #{filter.senderId}</if>
|
||||
<if test="filter.senderType != null and filter.senderType != ''">AND sender_type = #{filter.senderType}</if>
|
||||
<if test="filter.messageType != null and filter.messageType != ''">AND message_type = #{filter.messageType}</if>
|
||||
<if test="filter.isAiMessage != null">AND is_ai_message = #{filter.isAiMessage}</if>
|
||||
<if test="filter.status != null and filter.status != ''">AND status = #{filter.status}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,152 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.xyzh.workcase.mapper.TbChatRoomMapper">
|
||||
|
||||
<resultMap id="BaseResultMap" type="org.xyzh.api.workcase.dto.TbChatRoomDTO">
|
||||
<id column="room_id" property="roomId" jdbcType="VARCHAR"/>
|
||||
<result column="optsn" property="optsn" jdbcType="VARCHAR"/>
|
||||
<result column="workcase_id" property="workcaseId" jdbcType="VARCHAR"/>
|
||||
<result column="room_name" property="roomName" jdbcType="VARCHAR"/>
|
||||
<result column="room_type" property="roomType" jdbcType="VARCHAR"/>
|
||||
<result column="status" property="status" jdbcType="VARCHAR"/>
|
||||
<result column="guest_id" property="guestId" jdbcType="VARCHAR"/>
|
||||
<result column="guest_name" property="guestName" jdbcType="VARCHAR"/>
|
||||
<result column="ai_session_id" property="aiSessionId" jdbcType="VARCHAR"/>
|
||||
<result column="message_count" property="messageCount" jdbcType="INTEGER"/>
|
||||
<result column="last_message_time" property="lastMessageTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="last_message" property="lastMessage" jdbcType="VARCHAR"/>
|
||||
<result column="closed_by" property="closedBy" jdbcType="VARCHAR"/>
|
||||
<result column="closed_time" property="closedTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="creator" property="creator" jdbcType="VARCHAR"/>
|
||||
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="delete_time" property="deleteTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="deleted" property="deleted" jdbcType="BOOLEAN"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="VOResultMap" type="org.xyzh.api.workcase.vo.ChatRoomVO">
|
||||
<id column="room_id" property="roomId" jdbcType="VARCHAR"/>
|
||||
<result column="optsn" property="optsn" jdbcType="VARCHAR"/>
|
||||
<result column="workcase_id" property="workcaseId" jdbcType="VARCHAR"/>
|
||||
<result column="room_name" property="roomName" jdbcType="VARCHAR"/>
|
||||
<result column="room_type" property="roomType" jdbcType="VARCHAR"/>
|
||||
<result column="status" property="status" jdbcType="VARCHAR"/>
|
||||
<result column="guest_id" property="guestId" jdbcType="VARCHAR"/>
|
||||
<result column="guest_name" property="guestName" jdbcType="VARCHAR"/>
|
||||
<result column="ai_session_id" property="aiSessionId" jdbcType="VARCHAR"/>
|
||||
<result column="message_count" property="messageCount" jdbcType="INTEGER"/>
|
||||
<result column="last_message_time" property="lastMessageTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="last_message" property="lastMessage" jdbcType="VARCHAR"/>
|
||||
<result column="closed_by" property="closedBy" jdbcType="VARCHAR"/>
|
||||
<result column="closed_time" property="closedTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="creator" property="creator" jdbcType="VARCHAR"/>
|
||||
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="delete_time" property="deleteTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="deleted" property="deleted" jdbcType="BOOLEAN"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
room_id, optsn, workcase_id, room_name, room_type, status, guest_id, guest_name,
|
||||
ai_session_id, message_count, last_message_time, last_message, closed_by, closed_time,
|
||||
creator, create_time, update_time, delete_time, deleted
|
||||
</sql>
|
||||
|
||||
<insert id="insertChatRoom" parameterType="org.xyzh.api.workcase.dto.TbChatRoomDTO">
|
||||
INSERT INTO workcase.tb_chat_room (
|
||||
optsn, room_id, workcase_id, room_name, guest_id, guest_name, creator
|
||||
<if test="roomType != null">, room_type</if>
|
||||
<if test="status != null">, status</if>
|
||||
<if test="aiSessionId != null">, ai_session_id</if>
|
||||
<if test="messageCount != null">, message_count</if>
|
||||
<if test="lastMessageTime != null">, last_message_time</if>
|
||||
<if test="lastMessage != null">, last_message</if>
|
||||
) VALUES (
|
||||
#{optsn}, #{roomId}, #{workcaseId}, #{roomName}, #{guestId}, #{guestName}, #{creator}
|
||||
<if test="roomType != null">, #{roomType}</if>
|
||||
<if test="status != null">, #{status}</if>
|
||||
<if test="aiSessionId != null">, #{aiSessionId}</if>
|
||||
<if test="messageCount != null">, #{messageCount}</if>
|
||||
<if test="lastMessageTime != null">, #{lastMessageTime}</if>
|
||||
<if test="lastMessage != null">, #{lastMessage}</if>
|
||||
)
|
||||
</insert>
|
||||
|
||||
<update id="updateChatRoom" parameterType="org.xyzh.api.workcase.dto.TbChatRoomDTO">
|
||||
UPDATE workcase.tb_chat_room
|
||||
<set>
|
||||
<if test="roomName != null and roomName != ''">room_name = #{roomName},</if>
|
||||
<if test="roomType != null and roomType != ''">room_type = #{roomType},</if>
|
||||
<if test="status != null and status != ''">status = #{status},</if>
|
||||
<if test="aiSessionId != null">ai_session_id = #{aiSessionId},</if>
|
||||
<if test="messageCount != null">message_count = #{messageCount},</if>
|
||||
<if test="lastMessageTime != null">last_message_time = #{lastMessageTime},</if>
|
||||
<if test="lastMessage != null">last_message = #{lastMessage},</if>
|
||||
<if test="closedBy != null">closed_by = #{closedBy},</if>
|
||||
<if test="closedTime != null">closed_time = #{closedTime},</if>
|
||||
update_time = now()
|
||||
</set>
|
||||
WHERE room_id = #{roomId} AND deleted = false
|
||||
</update>
|
||||
|
||||
<update id="deleteChatRoom" parameterType="org.xyzh.api.workcase.dto.TbChatRoomDTO">
|
||||
UPDATE workcase.tb_chat_room
|
||||
SET deleted = true, delete_time = now()
|
||||
WHERE room_id = #{roomId} AND deleted = false
|
||||
</update>
|
||||
|
||||
<select id="selectChatRoomById" resultMap="BaseResultMap">
|
||||
SELECT <include refid="Base_Column_List"/>
|
||||
FROM workcase.tb_chat_room
|
||||
WHERE room_id = #{roomId} AND deleted = false
|
||||
</select>
|
||||
|
||||
<select id="selectChatRoomList" resultMap="VOResultMap">
|
||||
SELECT <include refid="Base_Column_List"/>
|
||||
FROM workcase.tb_chat_room
|
||||
<where>
|
||||
<if test="filter.roomId != null and filter.roomId != ''">AND room_id = #{filter.roomId}</if>
|
||||
<if test="filter.workcaseId != null and filter.workcaseId != ''">AND workcase_id = #{filter.workcaseId}</if>
|
||||
<if test="filter.roomName != null and filter.roomName != ''">AND room_name LIKE CONCAT('%', #{filter.roomName}, '%')</if>
|
||||
<if test="filter.roomType != null and filter.roomType != ''">AND room_type = #{filter.roomType}</if>
|
||||
<if test="filter.status != null and filter.status != ''">AND status = #{filter.status}</if>
|
||||
<if test="filter.guestId != null and filter.guestId != ''">AND guest_id = #{filter.guestId}</if>
|
||||
<if test="filter.guestName != null and filter.guestName != ''">AND guest_name LIKE CONCAT('%', #{filter.guestName}, '%')</if>
|
||||
AND deleted = false
|
||||
</where>
|
||||
ORDER BY create_time DESC
|
||||
</select>
|
||||
|
||||
<select id="selectChatRoomPage" resultMap="VOResultMap">
|
||||
SELECT <include refid="Base_Column_List"/>
|
||||
FROM workcase.tb_chat_room
|
||||
<where>
|
||||
<if test="filter.roomId != null and filter.roomId != ''">AND room_id = #{filter.roomId}</if>
|
||||
<if test="filter.workcaseId != null and filter.workcaseId != ''">AND workcase_id = #{filter.workcaseId}</if>
|
||||
<if test="filter.roomName != null and filter.roomName != ''">AND room_name LIKE CONCAT('%', #{filter.roomName}, '%')</if>
|
||||
<if test="filter.roomType != null and filter.roomType != ''">AND room_type = #{filter.roomType}</if>
|
||||
<if test="filter.status != null and filter.status != ''">AND status = #{filter.status}</if>
|
||||
<if test="filter.guestId != null and filter.guestId != ''">AND guest_id = #{filter.guestId}</if>
|
||||
<if test="filter.guestName != null and filter.guestName != ''">AND guest_name LIKE CONCAT('%', #{filter.guestName}, '%')</if>
|
||||
AND deleted = false
|
||||
</where>
|
||||
ORDER BY create_time DESC
|
||||
LIMIT #{pageParam.pageSize} OFFSET #{pageParam.offset}
|
||||
</select>
|
||||
|
||||
<select id="countChatRooms" resultType="long">
|
||||
SELECT COUNT(*)
|
||||
FROM workcase.tb_chat_room
|
||||
<where>
|
||||
<if test="filter.roomId != null and filter.roomId != ''">AND room_id = #{filter.roomId}</if>
|
||||
<if test="filter.workcaseId != null and filter.workcaseId != ''">AND workcase_id = #{filter.workcaseId}</if>
|
||||
<if test="filter.roomName != null and filter.roomName != ''">AND room_name LIKE CONCAT('%', #{filter.roomName}, '%')</if>
|
||||
<if test="filter.roomType != null and filter.roomType != ''">AND room_type = #{filter.roomType}</if>
|
||||
<if test="filter.status != null and filter.status != ''">AND status = #{filter.status}</if>
|
||||
<if test="filter.guestId != null and filter.guestId != ''">AND guest_id = #{filter.guestId}</if>
|
||||
<if test="filter.guestName != null and filter.guestName != ''">AND guest_name LIKE CONCAT('%', #{filter.guestName}, '%')</if>
|
||||
AND deleted = false
|
||||
</where>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,133 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.xyzh.workcase.mapper.TbChatRoomMemberMapper">
|
||||
|
||||
<resultMap id="BaseResultMap" type="org.xyzh.api.workcase.dto.TbChatRoomMemberDTO">
|
||||
<id column="member_id" property="memberId" jdbcType="VARCHAR"/>
|
||||
<result column="optsn" property="optsn" jdbcType="VARCHAR"/>
|
||||
<result column="room_id" property="roomId" jdbcType="VARCHAR"/>
|
||||
<result column="user_id" property="userId" jdbcType="VARCHAR"/>
|
||||
<result column="user_type" property="userType" jdbcType="VARCHAR"/>
|
||||
<result column="user_name" property="userName" jdbcType="VARCHAR"/>
|
||||
<result column="role" property="role" jdbcType="VARCHAR"/>
|
||||
<result column="status" property="status" jdbcType="VARCHAR"/>
|
||||
<result column="unread_count" property="unreadCount" jdbcType="INTEGER"/>
|
||||
<result column="last_read_time" property="lastReadTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="last_read_msg_id" property="lastReadMsgId" jdbcType="VARCHAR"/>
|
||||
<result column="join_time" property="joinTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="leave_time" property="leaveTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="creator" property="creator" jdbcType="VARCHAR"/>
|
||||
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="VOResultMap" type="org.xyzh.api.workcase.vo.ChatMemberVO">
|
||||
<id column="member_id" property="memberId" jdbcType="VARCHAR"/>
|
||||
<result column="optsn" property="optsn" jdbcType="VARCHAR"/>
|
||||
<result column="room_id" property="roomId" jdbcType="VARCHAR"/>
|
||||
<result column="user_id" property="userId" jdbcType="VARCHAR"/>
|
||||
<result column="user_type" property="userType" jdbcType="VARCHAR"/>
|
||||
<result column="user_name" property="userName" jdbcType="VARCHAR"/>
|
||||
<result column="role" property="role" jdbcType="VARCHAR"/>
|
||||
<result column="status" property="status" jdbcType="VARCHAR"/>
|
||||
<result column="unread_count" property="unreadCount" jdbcType="INTEGER"/>
|
||||
<result column="last_read_time" property="lastReadTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="last_read_msg_id" property="lastReadMsgId" jdbcType="VARCHAR"/>
|
||||
<result column="join_time" property="joinTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="leave_time" property="leaveTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="creator" property="creator" jdbcType="VARCHAR"/>
|
||||
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
member_id, optsn, room_id, user_id, user_type, user_name, role, status,
|
||||
unread_count, last_read_time, last_read_msg_id, join_time, leave_time,
|
||||
creator, create_time, update_time
|
||||
</sql>
|
||||
|
||||
<insert id="insertChatRoomMember" parameterType="org.xyzh.api.workcase.dto.TbChatRoomMemberDTO">
|
||||
INSERT INTO workcase.tb_chat_room_member (
|
||||
optsn, member_id, room_id, user_id, user_type, user_name, creator
|
||||
<if test="role != null">, role</if>
|
||||
<if test="status != null">, status</if>
|
||||
<if test="unreadCount != null">, unread_count</if>
|
||||
) VALUES (
|
||||
#{optsn}, #{memberId}, #{roomId}, #{userId}, #{userType}, #{userName}, #{creator}
|
||||
<if test="role != null">, #{role}</if>
|
||||
<if test="status != null">, #{status}</if>
|
||||
<if test="unreadCount != null">, #{unreadCount}</if>
|
||||
)
|
||||
</insert>
|
||||
|
||||
<update id="updateChatRoomMember" parameterType="org.xyzh.api.workcase.dto.TbChatRoomMemberDTO">
|
||||
UPDATE workcase.tb_chat_room_member
|
||||
<set>
|
||||
<if test="role != null and role != ''">role = #{role},</if>
|
||||
<if test="status != null and status != ''">status = #{status},</if>
|
||||
<if test="unreadCount != null">unread_count = #{unreadCount},</if>
|
||||
<if test="lastReadTime != null">last_read_time = #{lastReadTime},</if>
|
||||
<if test="lastReadMsgId != null">last_read_msg_id = #{lastReadMsgId},</if>
|
||||
<if test="leaveTime != null">leave_time = #{leaveTime},</if>
|
||||
update_time = now()
|
||||
</set>
|
||||
WHERE member_id = #{memberId}
|
||||
</update>
|
||||
|
||||
<delete id="deleteChatRoomMember" parameterType="org.xyzh.api.workcase.dto.TbChatRoomMemberDTO">
|
||||
DELETE FROM workcase.tb_chat_room_member
|
||||
WHERE member_id = #{memberId}
|
||||
</delete>
|
||||
|
||||
<select id="selectChatRoomMemberById" resultMap="BaseResultMap">
|
||||
SELECT <include refid="Base_Column_List"/>
|
||||
FROM workcase.tb_chat_room_member
|
||||
WHERE member_id = #{memberId}
|
||||
</select>
|
||||
|
||||
<select id="selectChatRoomMemberList" resultMap="VOResultMap">
|
||||
SELECT <include refid="Base_Column_List"/>
|
||||
FROM workcase.tb_chat_room_member
|
||||
<where>
|
||||
<if test="filter.memberId != null and filter.memberId != ''">AND member_id = #{filter.memberId}</if>
|
||||
<if test="filter.roomId != null and filter.roomId != ''">AND room_id = #{filter.roomId}</if>
|
||||
<if test="filter.userId != null and filter.userId != ''">AND user_id = #{filter.userId}</if>
|
||||
<if test="filter.userType != null and filter.userType != ''">AND user_type = #{filter.userType}</if>
|
||||
<if test="filter.userName != null and filter.userName != ''">AND user_name LIKE CONCAT('%', #{filter.userName}, '%')</if>
|
||||
<if test="filter.role != null and filter.role != ''">AND role = #{filter.role}</if>
|
||||
<if test="filter.status != null and filter.status != ''">AND status = #{filter.status}</if>
|
||||
</where>
|
||||
ORDER BY join_time DESC
|
||||
</select>
|
||||
|
||||
<select id="selectChatRoomMemberPage" resultMap="VOResultMap">
|
||||
SELECT <include refid="Base_Column_List"/>
|
||||
FROM workcase.tb_chat_room_member
|
||||
<where>
|
||||
<if test="filter.memberId != null and filter.memberId != ''">AND member_id = #{filter.memberId}</if>
|
||||
<if test="filter.roomId != null and filter.roomId != ''">AND room_id = #{filter.roomId}</if>
|
||||
<if test="filter.userId != null and filter.userId != ''">AND user_id = #{filter.userId}</if>
|
||||
<if test="filter.userType != null and filter.userType != ''">AND user_type = #{filter.userType}</if>
|
||||
<if test="filter.userName != null and filter.userName != ''">AND user_name LIKE CONCAT('%', #{filter.userName}, '%')</if>
|
||||
<if test="filter.role != null and filter.role != ''">AND role = #{filter.role}</if>
|
||||
<if test="filter.status != null and filter.status != ''">AND status = #{filter.status}</if>
|
||||
</where>
|
||||
ORDER BY join_time DESC
|
||||
LIMIT #{pageParam.pageSize} OFFSET #{pageParam.offset}
|
||||
</select>
|
||||
|
||||
<select id="countChatRoomMembers" resultType="long">
|
||||
SELECT COUNT(*)
|
||||
FROM workcase.tb_chat_room_member
|
||||
<where>
|
||||
<if test="filter.memberId != null and filter.memberId != ''">AND member_id = #{filter.memberId}</if>
|
||||
<if test="filter.roomId != null and filter.roomId != ''">AND room_id = #{filter.roomId}</if>
|
||||
<if test="filter.userId != null and filter.userId != ''">AND user_id = #{filter.userId}</if>
|
||||
<if test="filter.userType != null and filter.userType != ''">AND user_type = #{filter.userType}</if>
|
||||
<if test="filter.userName != null and filter.userName != ''">AND user_name LIKE CONCAT('%', #{filter.userName}, '%')</if>
|
||||
<if test="filter.role != null and filter.role != ''">AND role = #{filter.role}</if>
|
||||
<if test="filter.status != null and filter.status != ''">AND status = #{filter.status}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,141 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.xyzh.workcase.mapper.TbCustomerServiceMapper">
|
||||
|
||||
<resultMap id="BaseResultMap" type="org.xyzh.api.workcase.dto.TbCustomerServiceDTO">
|
||||
<id column="user_id" property="userId" jdbcType="VARCHAR"/>
|
||||
<result column="optsn" property="optsn" jdbcType="VARCHAR"/>
|
||||
<result column="username" property="username" jdbcType="VARCHAR"/>
|
||||
<result column="user_code" property="userCode" jdbcType="VARCHAR"/>
|
||||
<result column="status" property="status" jdbcType="VARCHAR"/>
|
||||
<result column="skill_tags" property="skillTags" jdbcType="ARRAY" typeHandler="org.xyzh.common.jdbc.handler.StringArrayTypeHandler"/>
|
||||
<result column="max_concurrent" property="maxConcurrent" jdbcType="INTEGER"/>
|
||||
<result column="current_workload" property="currentWorkload" jdbcType="INTEGER"/>
|
||||
<result column="total_served" property="totalServed" jdbcType="INTEGER"/>
|
||||
<result column="avg_response_time" property="avgResponseTime" jdbcType="INTEGER"/>
|
||||
<result column="satisfaction_score" property="satisfactionScore" jdbcType="NUMERIC"/>
|
||||
<result column="creator" property="creator" jdbcType="VARCHAR"/>
|
||||
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="delete_time" property="deleteTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="deleted" property="deleted" jdbcType="BOOLEAN"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="VOResultMap" type="org.xyzh.api.workcase.vo.CustomerServiceVO">
|
||||
<id column="user_id" property="userId" jdbcType="VARCHAR"/>
|
||||
<result column="optsn" property="optsn" jdbcType="VARCHAR"/>
|
||||
<result column="username" property="username" jdbcType="VARCHAR"/>
|
||||
<result column="user_code" property="userCode" jdbcType="VARCHAR"/>
|
||||
<result column="status" property="status" jdbcType="VARCHAR"/>
|
||||
<result column="skill_tags" property="skillTags" jdbcType="ARRAY" typeHandler="org.xyzh.common.jdbc.handler.StringArrayTypeHandler"/>
|
||||
<result column="max_concurrent" property="maxConcurrent" jdbcType="INTEGER"/>
|
||||
<result column="current_workload" property="currentWorkload" jdbcType="INTEGER"/>
|
||||
<result column="total_served" property="totalServed" jdbcType="INTEGER"/>
|
||||
<result column="avg_response_time" property="avgResponseTime" jdbcType="INTEGER"/>
|
||||
<result column="satisfaction_score" property="satisfactionScore" jdbcType="NUMERIC"/>
|
||||
<result column="creator" property="creator" jdbcType="VARCHAR"/>
|
||||
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="delete_time" property="deleteTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="deleted" property="deleted" jdbcType="BOOLEAN"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
user_id, optsn, username, user_code, status, skill_tags, max_concurrent, current_workload,
|
||||
total_served, avg_response_time, satisfaction_score, creator, create_time, update_time,
|
||||
delete_time, deleted
|
||||
</sql>
|
||||
|
||||
<insert id="insertCustomerService" parameterType="org.xyzh.api.workcase.dto.TbCustomerServiceDTO">
|
||||
INSERT INTO workcase.tb_customer_service (
|
||||
optsn, user_id, username, creator
|
||||
<if test="userCode != null">, user_code</if>
|
||||
<if test="status != null">, status</if>
|
||||
<if test="skillTags != null">, skill_tags</if>
|
||||
<if test="maxConcurrent != null">, max_concurrent</if>
|
||||
<if test="currentWorkload != null">, current_workload</if>
|
||||
<if test="totalServed != null">, total_served</if>
|
||||
<if test="avgResponseTime != null">, avg_response_time</if>
|
||||
<if test="satisfactionScore != null">, satisfaction_score</if>
|
||||
) VALUES (
|
||||
#{optsn}, #{userId}, #{username}, #{creator}
|
||||
<if test="userCode != null">, #{userCode}</if>
|
||||
<if test="status != null">, #{status}</if>
|
||||
<if test="skillTags != null">, #{skillTags, typeHandler=org.xyzh.common.jdbc.handler.StringArrayTypeHandler}</if>
|
||||
<if test="maxConcurrent != null">, #{maxConcurrent}</if>
|
||||
<if test="currentWorkload != null">, #{currentWorkload}</if>
|
||||
<if test="totalServed != null">, #{totalServed}</if>
|
||||
<if test="avgResponseTime != null">, #{avgResponseTime}</if>
|
||||
<if test="satisfactionScore != null">, #{satisfactionScore}</if>
|
||||
)
|
||||
</insert>
|
||||
|
||||
<update id="updateCustomerService" parameterType="org.xyzh.api.workcase.dto.TbCustomerServiceDTO">
|
||||
UPDATE workcase.tb_customer_service
|
||||
<set>
|
||||
<if test="username != null and username != ''">username = #{username},</if>
|
||||
<if test="userCode != null">user_code = #{userCode},</if>
|
||||
<if test="status != null and status != ''">status = #{status},</if>
|
||||
<if test="skillTags != null">skill_tags = #{skillTags, typeHandler=org.xyzh.common.jdbc.handler.StringArrayTypeHandler},</if>
|
||||
<if test="maxConcurrent != null">max_concurrent = #{maxConcurrent},</if>
|
||||
<if test="currentWorkload != null">current_workload = #{currentWorkload},</if>
|
||||
<if test="totalServed != null">total_served = #{totalServed},</if>
|
||||
<if test="avgResponseTime != null">avg_response_time = #{avgResponseTime},</if>
|
||||
<if test="satisfactionScore != null">satisfaction_score = #{satisfactionScore},</if>
|
||||
update_time = now()
|
||||
</set>
|
||||
WHERE user_id = #{userId} AND deleted = false
|
||||
</update>
|
||||
|
||||
<update id="deleteCustomerService" parameterType="org.xyzh.api.workcase.dto.TbCustomerServiceDTO">
|
||||
UPDATE workcase.tb_customer_service
|
||||
SET deleted = true, delete_time = now()
|
||||
WHERE user_id = #{userId} AND deleted = false
|
||||
</update>
|
||||
|
||||
<select id="selectCustomerServiceById" resultMap="BaseResultMap">
|
||||
SELECT <include refid="Base_Column_List"/>
|
||||
FROM workcase.tb_customer_service
|
||||
WHERE user_id = #{userId} AND deleted = false
|
||||
</select>
|
||||
|
||||
<select id="selectCustomerServiceList" resultMap="VOResultMap">
|
||||
SELECT <include refid="Base_Column_List"/>
|
||||
FROM workcase.tb_customer_service
|
||||
<where>
|
||||
<if test="filter.userId != null and filter.userId != ''">AND user_id = #{filter.userId}</if>
|
||||
<if test="filter.username != null and filter.username != ''">AND username LIKE CONCAT('%', #{filter.username}, '%')</if>
|
||||
<if test="filter.userCode != null and filter.userCode != ''">AND user_code = #{filter.userCode}</if>
|
||||
<if test="filter.status != null and filter.status != ''">AND status = #{filter.status}</if>
|
||||
AND deleted = false
|
||||
</where>
|
||||
ORDER BY create_time DESC
|
||||
</select>
|
||||
|
||||
<select id="selectCustomerServicePage" resultMap="VOResultMap">
|
||||
SELECT <include refid="Base_Column_List"/>
|
||||
FROM workcase.tb_customer_service
|
||||
<where>
|
||||
<if test="filter.userId != null and filter.userId != ''">AND user_id = #{filter.userId}</if>
|
||||
<if test="filter.username != null and filter.username != ''">AND username LIKE CONCAT('%', #{filter.username}, '%')</if>
|
||||
<if test="filter.userCode != null and filter.userCode != ''">AND user_code = #{filter.userCode}</if>
|
||||
<if test="filter.status != null and filter.status != ''">AND status = #{filter.status}</if>
|
||||
AND deleted = false
|
||||
</where>
|
||||
ORDER BY create_time DESC
|
||||
LIMIT #{pageParam.pageSize} OFFSET #{pageParam.offset}
|
||||
</select>
|
||||
|
||||
<select id="countCustomerServices" resultType="long">
|
||||
SELECT COUNT(*)
|
||||
FROM workcase.tb_customer_service
|
||||
<where>
|
||||
<if test="filter.userId != null and filter.userId != ''">AND user_id = #{filter.userId}</if>
|
||||
<if test="filter.username != null and filter.username != ''">AND username LIKE CONCAT('%', #{filter.username}, '%')</if>
|
||||
<if test="filter.userCode != null and filter.userCode != ''">AND user_code = #{filter.userCode}</if>
|
||||
<if test="filter.status != null and filter.status != ''">AND status = #{filter.status}</if>
|
||||
AND deleted = false
|
||||
</where>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,126 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.xyzh.workcase.mapper.TbMeetingParticipantMapper">
|
||||
|
||||
<resultMap id="BaseResultMap" type="org.xyzh.api.workcase.dto.TbMeetingParticipantDTO">
|
||||
<id column="participant_id" property="participantId" jdbcType="VARCHAR"/>
|
||||
<result column="optsn" property="optsn" jdbcType="VARCHAR"/>
|
||||
<result column="meeting_id" property="meetingId" jdbcType="VARCHAR"/>
|
||||
<result column="user_id" property="userId" jdbcType="VARCHAR"/>
|
||||
<result column="user_type" property="userType" jdbcType="VARCHAR"/>
|
||||
<result column="user_name" property="userName" jdbcType="VARCHAR"/>
|
||||
<result column="join_time" property="joinTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="leave_time" property="leaveTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="duration_seconds" property="durationSeconds" jdbcType="INTEGER"/>
|
||||
<result column="is_moderator" property="isModerator" jdbcType="BOOLEAN"/>
|
||||
<result column="join_method" property="joinMethod" jdbcType="VARCHAR"/>
|
||||
<result column="device_info" property="deviceInfo" jdbcType="VARCHAR"/>
|
||||
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="VOResultMap" type="org.xyzh.api.workcase.vo.MeetingParticipantVO">
|
||||
<id column="participant_id" property="participantId" jdbcType="VARCHAR"/>
|
||||
<result column="optsn" property="optsn" jdbcType="VARCHAR"/>
|
||||
<result column="meeting_id" property="meetingId" jdbcType="VARCHAR"/>
|
||||
<result column="user_id" property="userId" jdbcType="VARCHAR"/>
|
||||
<result column="user_type" property="userType" jdbcType="VARCHAR"/>
|
||||
<result column="user_name" property="userName" jdbcType="VARCHAR"/>
|
||||
<result column="join_time" property="joinTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="leave_time" property="leaveTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="duration_seconds" property="durationSeconds" jdbcType="INTEGER"/>
|
||||
<result column="is_moderator" property="isModerator" jdbcType="BOOLEAN"/>
|
||||
<result column="join_method" property="joinMethod" jdbcType="VARCHAR"/>
|
||||
<result column="device_info" property="deviceInfo" jdbcType="VARCHAR"/>
|
||||
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
participant_id, optsn, meeting_id, user_id, user_type, user_name, join_time, leave_time,
|
||||
duration_seconds, is_moderator, join_method, device_info, create_time, update_time
|
||||
</sql>
|
||||
|
||||
<insert id="insertMeetingParticipant" parameterType="org.xyzh.api.workcase.dto.TbMeetingParticipantDTO">
|
||||
INSERT INTO workcase.tb_meeting_participant (
|
||||
optsn, participant_id, meeting_id, user_id, user_type, user_name
|
||||
<if test="isModerator != null">, is_moderator</if>
|
||||
<if test="joinMethod != null">, join_method</if>
|
||||
<if test="deviceInfo != null">, device_info</if>
|
||||
) VALUES (
|
||||
#{optsn}, #{participantId}, #{meetingId}, #{userId}, #{userType}, #{userName}
|
||||
<if test="isModerator != null">, #{isModerator}</if>
|
||||
<if test="joinMethod != null">, #{joinMethod}</if>
|
||||
<if test="deviceInfo != null">, #{deviceInfo}</if>
|
||||
)
|
||||
</insert>
|
||||
|
||||
<update id="updateMeetingParticipant" parameterType="org.xyzh.api.workcase.dto.TbMeetingParticipantDTO">
|
||||
UPDATE workcase.tb_meeting_participant
|
||||
<set>
|
||||
<if test="leaveTime != null">leave_time = #{leaveTime},</if>
|
||||
<if test="durationSeconds != null">duration_seconds = #{durationSeconds},</if>
|
||||
<if test="isModerator != null">is_moderator = #{isModerator},</if>
|
||||
<if test="deviceInfo != null">device_info = #{deviceInfo},</if>
|
||||
update_time = now()
|
||||
</set>
|
||||
WHERE participant_id = #{participantId}
|
||||
</update>
|
||||
|
||||
<delete id="deleteMeetingParticipant" parameterType="org.xyzh.api.workcase.dto.TbMeetingParticipantDTO">
|
||||
DELETE FROM workcase.tb_meeting_participant
|
||||
WHERE participant_id = #{participantId}
|
||||
</delete>
|
||||
|
||||
<select id="selectMeetingParticipantById" resultMap="BaseResultMap">
|
||||
SELECT <include refid="Base_Column_List"/>
|
||||
FROM workcase.tb_meeting_participant
|
||||
WHERE participant_id = #{participantId}
|
||||
</select>
|
||||
|
||||
<select id="selectMeetingParticipantList" resultMap="VOResultMap">
|
||||
SELECT <include refid="Base_Column_List"/>
|
||||
FROM workcase.tb_meeting_participant
|
||||
<where>
|
||||
<if test="filter.participantId != null and filter.participantId != ''">AND participant_id = #{filter.participantId}</if>
|
||||
<if test="filter.meetingId != null and filter.meetingId != ''">AND meeting_id = #{filter.meetingId}</if>
|
||||
<if test="filter.userId != null and filter.userId != ''">AND user_id = #{filter.userId}</if>
|
||||
<if test="filter.userType != null and filter.userType != ''">AND user_type = #{filter.userType}</if>
|
||||
<if test="filter.userName != null and filter.userName != ''">AND user_name LIKE CONCAT('%', #{filter.userName}, '%')</if>
|
||||
<if test="filter.isModerator != null">AND is_moderator = #{filter.isModerator}</if>
|
||||
<if test="filter.joinMethod != null and filter.joinMethod != ''">AND join_method = #{filter.joinMethod}</if>
|
||||
</where>
|
||||
ORDER BY join_time DESC
|
||||
</select>
|
||||
|
||||
<select id="selectMeetingParticipantPage" resultMap="VOResultMap">
|
||||
SELECT <include refid="Base_Column_List"/>
|
||||
FROM workcase.tb_meeting_participant
|
||||
<where>
|
||||
<if test="filter.participantId != null and filter.participantId != ''">AND participant_id = #{filter.participantId}</if>
|
||||
<if test="filter.meetingId != null and filter.meetingId != ''">AND meeting_id = #{filter.meetingId}</if>
|
||||
<if test="filter.userId != null and filter.userId != ''">AND user_id = #{filter.userId}</if>
|
||||
<if test="filter.userType != null and filter.userType != ''">AND user_type = #{filter.userType}</if>
|
||||
<if test="filter.userName != null and filter.userName != ''">AND user_name LIKE CONCAT('%', #{filter.userName}, '%')</if>
|
||||
<if test="filter.isModerator != null">AND is_moderator = #{filter.isModerator}</if>
|
||||
<if test="filter.joinMethod != null and filter.joinMethod != ''">AND join_method = #{filter.joinMethod}</if>
|
||||
</where>
|
||||
ORDER BY join_time DESC
|
||||
LIMIT #{pageParam.pageSize} OFFSET #{pageParam.offset}
|
||||
</select>
|
||||
|
||||
<select id="countMeetingParticipants" resultType="long">
|
||||
SELECT COUNT(*)
|
||||
FROM workcase.tb_meeting_participant
|
||||
<where>
|
||||
<if test="filter.participantId != null and filter.participantId != ''">AND participant_id = #{filter.participantId}</if>
|
||||
<if test="filter.meetingId != null and filter.meetingId != ''">AND meeting_id = #{filter.meetingId}</if>
|
||||
<if test="filter.userId != null and filter.userId != ''">AND user_id = #{filter.userId}</if>
|
||||
<if test="filter.userType != null and filter.userType != ''">AND user_type = #{filter.userType}</if>
|
||||
<if test="filter.userName != null and filter.userName != ''">AND user_name LIKE CONCAT('%', #{filter.userName}, '%')</if>
|
||||
<if test="filter.isModerator != null">AND is_moderator = #{filter.isModerator}</if>
|
||||
<if test="filter.joinMethod != null and filter.joinMethod != ''">AND join_method = #{filter.joinMethod}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,144 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.xyzh.workcase.mapper.TbMeetingTranscriptionMapper">
|
||||
|
||||
<resultMap id="BaseResultMap" type="org.xyzh.api.workcase.dto.TbMeetingTranscriptionDTO">
|
||||
<id column="transcription_id" property="transcriptionId" jdbcType="VARCHAR"/>
|
||||
<result column="optsn" property="optsn" jdbcType="VARCHAR"/>
|
||||
<result column="meeting_id" property="meetingId" jdbcType="VARCHAR"/>
|
||||
<result column="speaker_id" property="speakerId" jdbcType="VARCHAR"/>
|
||||
<result column="speaker_name" property="speakerName" jdbcType="VARCHAR"/>
|
||||
<result column="speaker_type" property="speakerType" jdbcType="VARCHAR"/>
|
||||
<result column="content" property="content" jdbcType="VARCHAR"/>
|
||||
<result column="content_raw" property="contentRaw" jdbcType="VARCHAR"/>
|
||||
<result column="language" property="language" jdbcType="VARCHAR"/>
|
||||
<result column="confidence" property="confidence" jdbcType="NUMERIC"/>
|
||||
<result column="speech_start_time" property="speechStartTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="speech_end_time" property="speechEndTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="duration_ms" property="durationMs" jdbcType="INTEGER"/>
|
||||
<result column="audio_url" property="audioUrl" jdbcType="VARCHAR"/>
|
||||
<result column="segment_index" property="segmentIndex" jdbcType="INTEGER"/>
|
||||
<result column="is_final" property="isFinal" jdbcType="BOOLEAN"/>
|
||||
<result column="service_provider" property="serviceProvider" jdbcType="VARCHAR"/>
|
||||
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="VOResultMap" type="org.xyzh.api.workcase.vo.MeetingTranscriptionVO">
|
||||
<id column="transcription_id" property="transcriptionId" jdbcType="VARCHAR"/>
|
||||
<result column="optsn" property="optsn" jdbcType="VARCHAR"/>
|
||||
<result column="meeting_id" property="meetingId" jdbcType="VARCHAR"/>
|
||||
<result column="speaker_id" property="speakerId" jdbcType="VARCHAR"/>
|
||||
<result column="speaker_name" property="speakerName" jdbcType="VARCHAR"/>
|
||||
<result column="speaker_type" property="speakerType" jdbcType="VARCHAR"/>
|
||||
<result column="content" property="content" jdbcType="VARCHAR"/>
|
||||
<result column="content_raw" property="contentRaw" jdbcType="VARCHAR"/>
|
||||
<result column="language" property="language" jdbcType="VARCHAR"/>
|
||||
<result column="confidence" property="confidence" jdbcType="NUMERIC"/>
|
||||
<result column="speech_start_time" property="speechStartTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="speech_end_time" property="speechEndTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="duration_ms" property="durationMs" jdbcType="INTEGER"/>
|
||||
<result column="audio_url" property="audioUrl" jdbcType="VARCHAR"/>
|
||||
<result column="segment_index" property="segmentIndex" jdbcType="INTEGER"/>
|
||||
<result column="is_final" property="isFinal" jdbcType="BOOLEAN"/>
|
||||
<result column="service_provider" property="serviceProvider" jdbcType="VARCHAR"/>
|
||||
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
transcription_id, optsn, meeting_id, speaker_id, speaker_name, speaker_type,
|
||||
content, content_raw, language, confidence, speech_start_time, speech_end_time, duration_ms,
|
||||
audio_url, segment_index, is_final, service_provider, create_time
|
||||
</sql>
|
||||
|
||||
<insert id="insertMeetingTranscription" parameterType="org.xyzh.api.workcase.dto.TbMeetingTranscriptionDTO">
|
||||
INSERT INTO workcase.tb_meeting_transcription (
|
||||
optsn, transcription_id, meeting_id, speaker_id, speaker_name, speaker_type,
|
||||
content, speech_start_time, speech_end_time, duration_ms
|
||||
<if test="contentRaw != null">, content_raw</if>
|
||||
<if test="language != null">, language</if>
|
||||
<if test="confidence != null">, confidence</if>
|
||||
<if test="audioUrl != null">, audio_url</if>
|
||||
<if test="segmentIndex != null">, segment_index</if>
|
||||
<if test="isFinal != null">, is_final</if>
|
||||
<if test="serviceProvider != null">, service_provider</if>
|
||||
) VALUES (
|
||||
#{optsn}, #{transcriptionId}, #{meetingId}, #{speakerId}, #{speakerName}, #{speakerType},
|
||||
#{content}, #{speechStartTime}, #{speechEndTime}, #{durationMs}
|
||||
<if test="contentRaw != null">, #{contentRaw}</if>
|
||||
<if test="language != null">, #{language}</if>
|
||||
<if test="confidence != null">, #{confidence}</if>
|
||||
<if test="audioUrl != null">, #{audioUrl}</if>
|
||||
<if test="segmentIndex != null">, #{segmentIndex}</if>
|
||||
<if test="isFinal != null">, #{isFinal}</if>
|
||||
<if test="serviceProvider != null">, #{serviceProvider}</if>
|
||||
)
|
||||
</insert>
|
||||
|
||||
<update id="updateMeetingTranscription" parameterType="org.xyzh.api.workcase.dto.TbMeetingTranscriptionDTO">
|
||||
UPDATE workcase.tb_meeting_transcription
|
||||
<set>
|
||||
<if test="content != null">content = #{content},</if>
|
||||
<if test="contentRaw != null">content_raw = #{contentRaw},</if>
|
||||
<if test="confidence != null">confidence = #{confidence},</if>
|
||||
<if test="isFinal != null">is_final = #{isFinal},</if>
|
||||
</set>
|
||||
WHERE transcription_id = #{transcriptionId}
|
||||
</update>
|
||||
|
||||
<delete id="deleteMeetingTranscription" parameterType="org.xyzh.api.workcase.dto.TbMeetingTranscriptionDTO">
|
||||
DELETE FROM workcase.tb_meeting_transcription
|
||||
WHERE transcription_id = #{transcriptionId}
|
||||
</delete>
|
||||
|
||||
<select id="selectMeetingTranscriptionById" resultMap="BaseResultMap">
|
||||
SELECT <include refid="Base_Column_List"/>
|
||||
FROM workcase.tb_meeting_transcription
|
||||
WHERE transcription_id = #{transcriptionId}
|
||||
</select>
|
||||
|
||||
<select id="selectMeetingTranscriptionList" resultMap="VOResultMap">
|
||||
SELECT <include refid="Base_Column_List"/>
|
||||
FROM workcase.tb_meeting_transcription
|
||||
<where>
|
||||
<if test="filter.transcriptionId != null and filter.transcriptionId != ''">AND transcription_id = #{filter.transcriptionId}</if>
|
||||
<if test="filter.meetingId != null and filter.meetingId != ''">AND meeting_id = #{filter.meetingId}</if>
|
||||
<if test="filter.speakerId != null and filter.speakerId != ''">AND speaker_id = #{filter.speakerId}</if>
|
||||
<if test="filter.speakerType != null and filter.speakerType != ''">AND speaker_type = #{filter.speakerType}</if>
|
||||
<if test="filter.language != null and filter.language != ''">AND language = #{filter.language}</if>
|
||||
<if test="filter.isFinal != null">AND is_final = #{filter.isFinal}</if>
|
||||
<if test="filter.serviceProvider != null and filter.serviceProvider != ''">AND service_provider = #{filter.serviceProvider}</if>
|
||||
</where>
|
||||
ORDER BY segment_index ASC
|
||||
</select>
|
||||
|
||||
<select id="selectMeetingTranscriptionPage" resultMap="VOResultMap">
|
||||
SELECT <include refid="Base_Column_List"/>
|
||||
FROM workcase.tb_meeting_transcription
|
||||
<where>
|
||||
<if test="filter.transcriptionId != null and filter.transcriptionId != ''">AND transcription_id = #{filter.transcriptionId}</if>
|
||||
<if test="filter.meetingId != null and filter.meetingId != ''">AND meeting_id = #{filter.meetingId}</if>
|
||||
<if test="filter.speakerId != null and filter.speakerId != ''">AND speaker_id = #{filter.speakerId}</if>
|
||||
<if test="filter.speakerType != null and filter.speakerType != ''">AND speaker_type = #{filter.speakerType}</if>
|
||||
<if test="filter.language != null and filter.language != ''">AND language = #{filter.language}</if>
|
||||
<if test="filter.isFinal != null">AND is_final = #{filter.isFinal}</if>
|
||||
<if test="filter.serviceProvider != null and filter.serviceProvider != ''">AND service_provider = #{filter.serviceProvider}</if>
|
||||
</where>
|
||||
ORDER BY segment_index ASC
|
||||
LIMIT #{pageParam.pageSize} OFFSET #{pageParam.offset}
|
||||
</select>
|
||||
|
||||
<select id="countMeetingTranscriptions" resultType="long">
|
||||
SELECT COUNT(*)
|
||||
FROM workcase.tb_meeting_transcription
|
||||
<where>
|
||||
<if test="filter.transcriptionId != null and filter.transcriptionId != ''">AND transcription_id = #{filter.transcriptionId}</if>
|
||||
<if test="filter.meetingId != null and filter.meetingId != ''">AND meeting_id = #{filter.meetingId}</if>
|
||||
<if test="filter.speakerId != null and filter.speakerId != ''">AND speaker_id = #{filter.speakerId}</if>
|
||||
<if test="filter.speakerType != null and filter.speakerType != ''">AND speaker_type = #{filter.speakerType}</if>
|
||||
<if test="filter.language != null and filter.language != ''">AND language = #{filter.language}</if>
|
||||
<if test="filter.isFinal != null">AND is_final = #{filter.isFinal}</if>
|
||||
<if test="filter.serviceProvider != null and filter.serviceProvider != ''">AND service_provider = #{filter.serviceProvider}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,168 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="org.xyzh.workcase.mapper.TbVideoMeetingMapper">
|
||||
|
||||
<resultMap id="BaseResultMap" type="org.xyzh.api.workcase.dto.TbVideoMeetingDTO">
|
||||
<id column="meeting_id" property="meetingId" jdbcType="VARCHAR"/>
|
||||
<result column="optsn" property="optsn" jdbcType="VARCHAR"/>
|
||||
<result column="room_id" property="roomId" jdbcType="VARCHAR"/>
|
||||
<result column="workcase_id" property="workcaseId" jdbcType="VARCHAR"/>
|
||||
<result column="meeting_name" property="meetingName" jdbcType="VARCHAR"/>
|
||||
<result column="meeting_password" property="meetingPassword" jdbcType="VARCHAR"/>
|
||||
<result column="jwt_token" property="jwtToken" jdbcType="VARCHAR"/>
|
||||
<result column="jitsi_room_name" property="jitsiRoomName" jdbcType="VARCHAR"/>
|
||||
<result column="jitsi_server_url" property="jitsiServerUrl" jdbcType="VARCHAR"/>
|
||||
<result column="status" property="status" jdbcType="VARCHAR"/>
|
||||
<result column="creator_id" property="creatorId" jdbcType="VARCHAR"/>
|
||||
<result column="creator_type" property="creatorType" jdbcType="VARCHAR"/>
|
||||
<result column="creator_name" property="creatorName" jdbcType="VARCHAR"/>
|
||||
<result column="participant_count" property="participantCount" jdbcType="INTEGER"/>
|
||||
<result column="max_participants" property="maxParticipants" jdbcType="INTEGER"/>
|
||||
<result column="start_time" property="actualStartTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="end_time" property="actualEndTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="duration_seconds" property="durationSeconds" jdbcType="INTEGER"/>
|
||||
<result column="iframe_url" property="iframeUrl" jdbcType="VARCHAR"/>
|
||||
<result column="config" property="config" jdbcType="OTHER" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
|
||||
<result column="creator" property="creator" jdbcType="VARCHAR"/>
|
||||
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="delete_time" property="deleteTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="deleted" property="deleted" jdbcType="BOOLEAN"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="VOResultMap" type="org.xyzh.api.workcase.vo.VideoMeetingVO">
|
||||
<id column="meeting_id" property="meetingId" jdbcType="VARCHAR"/>
|
||||
<result column="optsn" property="optsn" jdbcType="VARCHAR"/>
|
||||
<result column="room_id" property="roomId" jdbcType="VARCHAR"/>
|
||||
<result column="workcase_id" property="workcaseId" jdbcType="VARCHAR"/>
|
||||
<result column="meeting_name" property="meetingName" jdbcType="VARCHAR"/>
|
||||
<result column="meeting_password" property="meetingPassword" jdbcType="VARCHAR"/>
|
||||
<result column="jwt_token" property="jwtToken" jdbcType="VARCHAR"/>
|
||||
<result column="jitsi_room_name" property="jitsiRoomName" jdbcType="VARCHAR"/>
|
||||
<result column="jitsi_server_url" property="jitsiServerUrl" jdbcType="VARCHAR"/>
|
||||
<result column="status" property="status" jdbcType="VARCHAR"/>
|
||||
<result column="creator_id" property="creatorId" jdbcType="VARCHAR"/>
|
||||
<result column="creator_type" property="creatorType" jdbcType="VARCHAR"/>
|
||||
<result column="creator_name" property="creatorName" jdbcType="VARCHAR"/>
|
||||
<result column="participant_count" property="participantCount" jdbcType="INTEGER"/>
|
||||
<result column="max_participants" property="maxParticipants" jdbcType="INTEGER"/>
|
||||
<result column="start_time" property="actualStartTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="end_time" property="actualEndTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="duration_seconds" property="durationSeconds" jdbcType="INTEGER"/>
|
||||
<result column="iframe_url" property="iframeUrl" jdbcType="VARCHAR"/>
|
||||
<result column="config" property="config" jdbcType="OTHER" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
|
||||
<result column="creator" property="creator" jdbcType="VARCHAR"/>
|
||||
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="delete_time" property="deleteTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="deleted" property="deleted" jdbcType="BOOLEAN"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
meeting_id, optsn, room_id, workcase_id, meeting_name, meeting_password, jwt_token,
|
||||
jitsi_room_name, jitsi_server_url, status, creator_id, creator_type, creator_name,
|
||||
participant_count, max_participants, start_time, end_time, duration_seconds, iframe_url,
|
||||
config, creator, create_time, update_time, delete_time, deleted
|
||||
</sql>
|
||||
|
||||
<insert id="insertVideoMeeting" parameterType="org.xyzh.api.workcase.dto.TbVideoMeetingDTO">
|
||||
INSERT INTO workcase.tb_video_meeting (
|
||||
optsn, meeting_id, room_id, workcase_id, meeting_name, jitsi_room_name, creator_id, creator_type, creator_name, creator
|
||||
<if test="meetingPassword != null">, meeting_password</if>
|
||||
<if test="jwtToken != null">, jwt_token</if>
|
||||
<if test="jitsiServerUrl != null">, jitsi_server_url</if>
|
||||
<if test="status != null">, status</if>
|
||||
<if test="maxParticipants != null">, max_participants</if>
|
||||
<if test="iframeUrl != null">, iframe_url</if>
|
||||
<if test="config != null">, config</if>
|
||||
) VALUES (
|
||||
#{optsn}, #{meetingId}, #{roomId}, #{workcaseId}, #{meetingName}, #{jitsiRoomName}, #{creatorId}, #{creatorType}, #{creatorName}, #{creator}
|
||||
<if test="meetingPassword != null">, #{meetingPassword}</if>
|
||||
<if test="jwtToken != null">, #{jwtToken}</if>
|
||||
<if test="jitsiServerUrl != null">, #{jitsiServerUrl}</if>
|
||||
<if test="status != null">, #{status}</if>
|
||||
<if test="maxParticipants != null">, #{maxParticipants}</if>
|
||||
<if test="iframeUrl != null">, #{iframeUrl}</if>
|
||||
<if test="config != null">, #{config, typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler}</if>
|
||||
)
|
||||
</insert>
|
||||
|
||||
<update id="updateVideoMeeting" parameterType="org.xyzh.api.workcase.dto.TbVideoMeetingDTO">
|
||||
UPDATE workcase.tb_video_meeting
|
||||
<set>
|
||||
<if test="meetingName != null and meetingName != ''">meeting_name = #{meetingName},</if>
|
||||
<if test="meetingPassword != null">meeting_password = #{meetingPassword},</if>
|
||||
<if test="jwtToken != null">jwt_token = #{jwtToken},</if>
|
||||
<if test="status != null and status != ''">status = #{status},</if>
|
||||
<if test="participantCount != null">participant_count = #{participantCount},</if>
|
||||
<if test="actualStartTime != null">start_time = #{actualStartTime},</if>
|
||||
<if test="actualEndTime != null">end_time = #{actualEndTime},</if>
|
||||
<if test="durationSeconds != null">duration_seconds = #{durationSeconds},</if>
|
||||
<if test="iframeUrl != null">iframe_url = #{iframeUrl},</if>
|
||||
<if test="config != null">config = #{config, typeHandler=com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler},</if>
|
||||
update_time = now()
|
||||
</set>
|
||||
WHERE meeting_id = #{meetingId} AND deleted = false
|
||||
</update>
|
||||
|
||||
<update id="deleteVideoMeeting" parameterType="org.xyzh.api.workcase.dto.TbVideoMeetingDTO">
|
||||
UPDATE workcase.tb_video_meeting
|
||||
SET deleted = true, delete_time = now()
|
||||
WHERE meeting_id = #{meetingId} AND deleted = false
|
||||
</update>
|
||||
|
||||
<select id="selectVideoMeetingById" resultMap="BaseResultMap">
|
||||
SELECT <include refid="Base_Column_List"/>
|
||||
FROM workcase.tb_video_meeting
|
||||
WHERE meeting_id = #{meetingId} AND deleted = false
|
||||
</select>
|
||||
|
||||
<select id="selectVideoMeetingList" resultMap="VOResultMap">
|
||||
SELECT <include refid="Base_Column_List"/>
|
||||
FROM workcase.tb_video_meeting
|
||||
<where>
|
||||
<if test="filter.meetingId != null and filter.meetingId != ''">AND meeting_id = #{filter.meetingId}</if>
|
||||
<if test="filter.roomId != null and filter.roomId != ''">AND room_id = #{filter.roomId}</if>
|
||||
<if test="filter.workcaseId != null and filter.workcaseId != ''">AND workcase_id = #{filter.workcaseId}</if>
|
||||
<if test="filter.meetingName != null and filter.meetingName != ''">AND meeting_name LIKE CONCAT('%', #{filter.meetingName}, '%')</if>
|
||||
<if test="filter.status != null and filter.status != ''">AND status = #{filter.status}</if>
|
||||
<if test="filter.creatorId != null and filter.creatorId != ''">AND creator_id = #{filter.creatorId}</if>
|
||||
<if test="filter.creatorType != null and filter.creatorType != ''">AND creator_type = #{filter.creatorType}</if>
|
||||
AND deleted = false
|
||||
</where>
|
||||
ORDER BY create_time DESC
|
||||
</select>
|
||||
|
||||
<select id="selectVideoMeetingPage" resultMap="VOResultMap">
|
||||
SELECT <include refid="Base_Column_List"/>
|
||||
FROM workcase.tb_video_meeting
|
||||
<where>
|
||||
<if test="filter.meetingId != null and filter.meetingId != ''">AND meeting_id = #{filter.meetingId}</if>
|
||||
<if test="filter.roomId != null and filter.roomId != ''">AND room_id = #{filter.roomId}</if>
|
||||
<if test="filter.workcaseId != null and filter.workcaseId != ''">AND workcase_id = #{filter.workcaseId}</if>
|
||||
<if test="filter.meetingName != null and filter.meetingName != ''">AND meeting_name LIKE CONCAT('%', #{filter.meetingName}, '%')</if>
|
||||
<if test="filter.status != null and filter.status != ''">AND status = #{filter.status}</if>
|
||||
<if test="filter.creatorId != null and filter.creatorId != ''">AND creator_id = #{filter.creatorId}</if>
|
||||
<if test="filter.creatorType != null and filter.creatorType != ''">AND creator_type = #{filter.creatorType}</if>
|
||||
AND deleted = false
|
||||
</where>
|
||||
ORDER BY create_time DESC
|
||||
LIMIT #{pageParam.pageSize} OFFSET #{pageParam.offset}
|
||||
</select>
|
||||
|
||||
<select id="countVideoMeetings" resultType="long">
|
||||
SELECT COUNT(*)
|
||||
FROM workcase.tb_video_meeting
|
||||
<where>
|
||||
<if test="filter.meetingId != null and filter.meetingId != ''">AND meeting_id = #{filter.meetingId}</if>
|
||||
<if test="filter.roomId != null and filter.roomId != ''">AND room_id = #{filter.roomId}</if>
|
||||
<if test="filter.workcaseId != null and filter.workcaseId != ''">AND workcase_id = #{filter.workcaseId}</if>
|
||||
<if test="filter.meetingName != null and filter.meetingName != ''">AND meeting_name LIKE CONCAT('%', #{filter.meetingName}, '%')</if>
|
||||
<if test="filter.status != null and filter.status != ''">AND status = #{filter.status}</if>
|
||||
<if test="filter.creatorId != null and filter.creatorId != ''">AND creator_id = #{filter.creatorId}</if>
|
||||
<if test="filter.creatorType != null and filter.creatorType != ''">AND creator_type = #{filter.creatorType}</if>
|
||||
AND deleted = false
|
||||
</where>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
@@ -106,6 +106,44 @@ export interface TbMeetingParticipantDTO extends BaseDTO {
|
||||
deviceInfo?: string
|
||||
}
|
||||
|
||||
/**
|
||||
* 会议转录记录表数据对象DTO
|
||||
*/
|
||||
export interface TbMeetingTranscriptionDTO extends BaseDTO {
|
||||
/** 转录记录ID */
|
||||
transcriptionId?: string
|
||||
/** 会议ID */
|
||||
meetingId?: string
|
||||
/** 说话人ID */
|
||||
speakerId?: string
|
||||
/** 说话人名称 */
|
||||
speakerName?: string
|
||||
/** 说话人类型:guest-来客 agent-客服 */
|
||||
speakerType?: string
|
||||
/** 转录文本内容 */
|
||||
content?: string
|
||||
/** 原始转录结果 */
|
||||
contentRaw?: string
|
||||
/** 语言 */
|
||||
language?: string
|
||||
/** 识别置信度(0-1) */
|
||||
confidence?: number
|
||||
/** 语音开始时间 */
|
||||
speechStartTime?: string
|
||||
/** 语音结束时间 */
|
||||
speechEndTime?: string
|
||||
/** 语音时长(毫秒) */
|
||||
durationMs?: number
|
||||
/** 音频片段URL */
|
||||
audioUrl?: string
|
||||
/** 片段序号 */
|
||||
segmentIndex?: number
|
||||
/** 是否最终结果 */
|
||||
isFinal?: boolean
|
||||
/** 服务提供商 */
|
||||
serviceProvider?: string
|
||||
}
|
||||
|
||||
// ==================== VO ====================
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user