This commit is contained in:
2025-12-22 11:24:30 +08:00
parent 1f37db80d8
commit 85e4513284
19 changed files with 1626 additions and 2 deletions

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>