!22 1.更新版本 2.新增 移除不存在的会话 Test 3.调整排序方式 4.修改公告时同步roomId的入参 5.修改新增编辑公告时推送逻辑

Merge pull request !22 from Dawn/dev
This commit is contained in:
Dawn
2025-05-05 18:10:58 +00:00
committed by Gitee
30 changed files with 560 additions and 236 deletions

View File

@@ -1,5 +1,5 @@
FROM openjdk:21
EXPOSE 9190
ADD hula-im-service-v2.6.8.jar app.jar
ADD hula-im-service-v2.6.10.jar app.jar
RUN sh -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","-Djava.security.egd=file:/dev/./urandom","/app.jar"]

View File

@@ -23,9 +23,11 @@ import com.hula.core.chat.domain.vo.request.room.AnnouncementsParam;
import com.hula.core.chat.domain.vo.request.room.ReadAnnouncementsParam;
import com.hula.core.chat.domain.vo.request.room.RoomGroupReq;
import com.hula.core.chat.domain.vo.response.ChatMemberListResp;
import com.hula.core.chat.domain.vo.response.ChatMessageResp;
import com.hula.core.chat.domain.vo.response.MemberResp;
import com.hula.core.chat.service.IGroupMemberService;
import com.hula.core.chat.service.RoomAppService;
import com.hula.core.user.domain.vo.req.MergeMessageReq;
import com.hula.core.user.domain.vo.resp.ws.ChatMemberResp;
import com.hula.domain.vo.res.ApiResult;
import com.hula.utils.RequestHolder;
@@ -34,6 +36,7 @@ import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.annotation.Resource;
import jakarta.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -196,4 +199,9 @@ public class RoomController {
return ApiResult.success(roomService.readAnnouncement(RequestHolder.get().getUid(), param));
}
@Operation(summary = "合并消息")
@PostMapping("mergeMessage")
public ApiResult<ChatMessageResp> mergeMessage(@Validated @RequestBody MergeMessageReq req){
return ApiResult.success(roomService.mergeMessage(RequestHolder.get().getUid(), req));
}
}

View File

@@ -105,13 +105,11 @@ public class ContactDao extends ServiceImpl<ContactMapper, Contact> {
* @return 是否删除成功
*/
public Boolean removeByRoomId(Long roomId, List<Long> uidList) {
LambdaQueryWrapper<Contact> wrapper = new QueryWrapper<Contact>().lambda().eq(Contact::getRoomId, roomId);
if (CollectionUtil.isNotEmpty(uidList)) {
LambdaQueryWrapper<Contact> wrapper = new QueryWrapper<Contact>().lambda()
.eq(Contact::getRoomId, roomId)
.in(Contact::getUid, uidList);
return this.remove(wrapper);
wrapper.in(Contact::getUid, uidList);
}
return false;
return this.remove(wrapper);
}
/**

View File

@@ -89,11 +89,10 @@ public class GroupMemberDao extends ServiceImpl<GroupMemberMapper, GroupMember>
LambdaQueryChainWrapper<GroupMember> wrapper = lambdaQuery();
if (isSpecial){
wrapper.in(GroupMember::getRole, GroupRoleEnum.MANAGER.getType(), GroupRoleEnum.LEADER.getType());
} else {
wrapper.in(GroupMember::getRole, GroupRoleEnum.MANAGER.getType(), GroupRoleEnum.LEADER.getType(), GroupRoleEnum.MEMBER.getType());
}
return
wrapper.select(GroupMember::getUid)
.eq(GroupMember::getGroupId, id)
.in(GroupMember::getRole, GroupRoleEnum.MANAGER.getType(), GroupRoleEnum.LEADER.getType()).list().stream().map(GroupMember::getUid).toList();
return wrapper.select(GroupMember::getUid).eq(GroupMember::getGroupId, id).list().stream().map(GroupMember::getUid).toList();
}
/**
@@ -212,14 +211,11 @@ public class GroupMemberDao extends ServiceImpl<GroupMemberMapper, GroupMember>
* @return 是否删除成功
*/
public Boolean removeByGroupId(Long groupId, List<Long> uidList) {
LambdaQueryWrapper<GroupMember> wrapper = new QueryWrapper<GroupMember>().lambda().eq(GroupMember::getGroupId, groupId);
if (CollectionUtil.isNotEmpty(uidList)) {
LambdaQueryWrapper<GroupMember> wrapper = new QueryWrapper<GroupMember>()
.lambda()
.eq(GroupMember::getGroupId, groupId)
.in(GroupMember::getUid, uidList);
return this.remove(wrapper);
wrapper.in(GroupMember::getUid, uidList);
}
return false;
return this.remove(wrapper);
}
/**

View File

@@ -75,13 +75,13 @@ public class MessageDao extends ServiceImpl<MessageMapper, Message> {
* @return 是否删除成功
*/
public Boolean removeByRoomId(Long roomId, List<Long> uidList) {
LambdaUpdateWrapper<Message> wrapper = new UpdateWrapper<Message>().lambda()
.eq(Message::getRoomId, roomId)
.set(Message::getStatus, MessageStatusEnum.DELETE.getStatus());
if (CollectionUtil.isNotEmpty(uidList)) {
LambdaUpdateWrapper<Message> wrapper = new UpdateWrapper<Message>().lambda()
.eq(Message::getRoomId, roomId)
.in(Message::getFromUid, uidList)
.set(Message::getStatus, MessageStatusEnum.DELETE.getStatus());
return this.update(wrapper);
wrapper.in(Message::getFromUid, uidList);
}
return false;
return this.update(wrapper);
}
}

View File

@@ -7,7 +7,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
/**
* 聊天公告
@@ -29,7 +29,10 @@ public class Announcements implements Serializable {
private String content;
@Schema(description = "发布时间")
private LocalDateTime publishTime;
private Date createdTime;
@Schema(description = "更新时间")
private Date updatedTime;
@Schema(description = "置顶")
private Boolean top;

View File

@@ -24,6 +24,9 @@ public class AnnouncementsReadRecord implements Serializable {
@Schema(description = "阅读人ID")
private Long uid;
@Schema(description = "发布人")
private Long createdBy;
@Schema(description = "是否已读 0未读 1已读")
private Boolean isCheck;
}

View File

@@ -0,0 +1,34 @@
package com.hula.core.chat.domain.entity.msg;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
/**
* 合并消息实体
* @author 乾乾
*/
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public class MergeMsg implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description ="内容")
private String content;
@Schema(description = "发送时间")
private Date createdTime;
@Schema(description ="发送人名称")
private String name;
}

View File

@@ -0,0 +1,33 @@
package com.hula.core.chat.domain.entity.msg;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.io.Serial;
import java.io.Serializable;
import java.util.List;
/**
* 合并消息入参
* @author 乾乾
*/
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public class MergeMsgDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description ="合并的内容")
private List<MergeMsg> messages;
@Schema(description ="回复的消息id")
private Long replyMsgId;
@Schema(description ="父消息如果没有父消息返回的是null")
private ReplyMsg reply;
}

View File

@@ -39,8 +39,12 @@ public class MessageExtra implements Serializable {
private SoundMsgDTO soundMsgDTO;
//文件消息
private VideoMsgDTO videoMsgDTO;
//公告消息
private NoticeMsgDTO noticeMsgDTO;
//合并的消息
private MergeMsgDTO mergeMsgDTO;
/**
/**
* 表情图片信息
*/
private EmojisMsgDTO emojisMsgDTO;

View File

@@ -0,0 +1,48 @@
package com.hula.core.chat.domain.entity.msg;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 公告消息入参
* @author 乾乾
*/
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public class NoticeMsgDTO implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
@Schema(description ="公告id")
private Long id;
@Schema(description = "房间id")
private Long roomId;
@Schema(description = "公告发布人")
private Long uid;
@Schema(description ="公告内容")
private String content;
@Schema(description = "发布时间")
private Date createdTime;
@Schema(description = "置顶")
private Boolean top;
@Schema(description ="回复的消息id")
private Long replyMsgId;
@Schema(description ="父消息如果没有父消息返回的是null")
private ReplyMsg reply;
}

View File

@@ -23,6 +23,8 @@ public enum MessageTypeEnum {
VIDEO(6, "视频"),
EMOJI(7, "表情"),
SYSTEM(8, "系统消息"),
MERGE(9, "合并消息"),
NOTICE(10, "公告消息"),
;
private final Integer type;

View File

@@ -71,4 +71,6 @@ public interface ChatService {
CursorPageBaseResp<ChatMessageReadResp> getReadPage(Long uid, ChatMessageReadReq request);
void msgRead(Long uid, ChatMessageMemberReq request);
List<Message> getMsgByIds(List<Long> messageIds);
}

View File

@@ -24,8 +24,10 @@ import com.hula.core.chat.domain.vo.request.room.ReadAnnouncementsParam;
import com.hula.core.chat.domain.vo.request.room.RoomGroupReq;
import com.hula.core.chat.domain.vo.response.AnnouncementsResp;
import com.hula.core.chat.domain.vo.response.ChatMemberListResp;
import com.hula.core.chat.domain.vo.response.ChatMessageResp;
import com.hula.core.chat.domain.vo.response.ChatRoomResp;
import com.hula.core.chat.domain.vo.response.MemberResp;
import com.hula.core.user.domain.vo.req.MergeMessageReq;
import com.hula.core.user.domain.vo.resp.ws.ChatMemberResp;
import jakarta.validation.Valid;
import org.springframework.web.bind.annotation.RequestParam;
@@ -141,4 +143,10 @@ public interface RoomAppService {
* @return
*/
Boolean setShield(Long uid, ContactShieldReq request);
/**
* 合并消息
* @return
*/
ChatMessageResp mergeMessage(Long uid, MergeMessageReq req);
}

View File

@@ -5,6 +5,9 @@ import com.hula.common.enums.YesOrNoEnum;
import com.hula.core.chat.domain.entity.Announcements;
import com.hula.core.chat.domain.entity.Message;
import com.hula.core.chat.domain.entity.MessageMark;
import com.hula.core.chat.domain.entity.msg.MergeMsg;
import com.hula.core.chat.domain.entity.msg.MergeMsgDTO;
import com.hula.core.chat.domain.entity.msg.NoticeMsgDTO;
import com.hula.core.chat.domain.enums.MessageMarkTypeEnum;
import com.hula.core.chat.domain.enums.MessageStatusEnum;
import com.hula.core.chat.domain.enums.MessageTypeEnum;
@@ -89,6 +92,37 @@ public class MessageAdapter {
return chatMessageReq;
}
/**
* 合并消息
*/
public static ChatMessageReq buildMergeMsg(Long roomId, List<MergeMsg> messages) {
ChatMessageReq chatMessageReq = new ChatMessageReq();
chatMessageReq.setRoomId(roomId);
chatMessageReq.setMsgType(MessageTypeEnum.MERGE.getType());
MergeMsgDTO mergeMsgDTO = new MergeMsgDTO();
mergeMsgDTO.setMessages(messages);
chatMessageReq.setBody(mergeMsgDTO);
return chatMessageReq;
}
/**
* 群公告消息
*/
public static ChatMessageReq buildAnnouncementsMsg(Long roomId, Announcements announcements) {
ChatMessageReq chatMessageReq = new ChatMessageReq();
chatMessageReq.setRoomId(roomId);
chatMessageReq.setMsgType(MessageTypeEnum.NOTICE.getType());
NoticeMsgDTO noticeMsgDTO = new NoticeMsgDTO();
noticeMsgDTO.setId(announcements.getId());
noticeMsgDTO.setUid(announcements.getUid());
noticeMsgDTO.setTop(announcements.getTop());
noticeMsgDTO.setRoomId(announcements.getRoomId());
noticeMsgDTO.setContent(announcements.getContent());
noticeMsgDTO.setCreatedTime(announcements.getCreatedTime());
chatMessageReq.setBody(noticeMsgDTO);
return chatMessageReq;
}
/**
* 群通知
*/
@@ -99,24 +133,6 @@ public class MessageAdapter {
return wsBaseResp;
}
/**
* 群公告
*/
public static WsBaseResp<String> buildRoomGroupAnnouncement(String msg) {
WsBaseResp<String> wsBaseResp = new WsBaseResp<>();
wsBaseResp.setType(WSRespTypeEnum.ROOM_GROUP_NOTICE_MSG.getType());
wsBaseResp.setData(msg);
return wsBaseResp;
}
public static WsBaseResp<Announcements> buildEditRoomGroupAnnouncement(Announcements msg) {
WsBaseResp<Announcements> WsBaseResp = new WsBaseResp<>();
WsBaseResp.setType(WSRespTypeEnum.ROOM_EDIT_GROUP_NOTICE_MSG.getType());
WsBaseResp.setData(msg);
return WsBaseResp;
}
/**
* 已读群公告
*/

View File

@@ -102,6 +102,7 @@ public class ChatServiceImpl implements ChatService {
private void checkDeFriend(Long roomId, Long uid) {
Room room = roomCache.get(roomId);
Assert.notNull(room, "房间不存在!");
if (room.isRoomGroup()) {
RoomGroup roomGroup = roomGroupCache.get(roomId);
GroupMember member = groupMemberDao.getMember(roomGroup.getId(), uid);
@@ -256,9 +257,7 @@ public class ChatServiceImpl implements ChatService {
@Override
public Collection<MsgReadInfoDTO> getMsgReadInfo(Long uid, ChatMessageReadInfoReq request) {
List<Message> messages = messageDao.listByIds(request.getMsgIds());
messages.forEach(message -> {
AssertUtil.equal(uid, message.getFromUid(), "只能查询自己发送的消息");
});
messages.forEach(message -> AssertUtil.equal(uid, message.getFromUid(), "只能查询自己发送的消息"));
return contactService.getMsgReadInfo(messages).values();
}
@@ -291,11 +290,17 @@ public class ChatServiceImpl implements ChatService {
update.setReadTime(new Date());
contactDao.updateById(update);
} else {
contactDao.save(uid, request.getRoomId());
log.error("uid --> ", uid, "roomId --> ", request.getRoomId());
// contactDao.save(uid, request.getRoomId());
}
}
private void checkRecall(Long uid, Message message) {
@Override
public List<Message> getMsgByIds(List<Long> msgIds) {
return messageDao.listByIds(msgIds);
}
private void checkRecall(Long uid, Message message) {
AssertUtil.isNotEmpty(message, "消息有误");
AssertUtil.notEqual(message.getType(), MessageTypeEnum.RECALL.getType(), "消息无法撤回");
boolean isChatManager = roleService.hasRole(uid, RoleTypeEnum.CHAT_MANAGER);

View File

@@ -129,7 +129,8 @@ public class GroupMemberServiceImpl implements IGroupMemberService {
// 4.2 删除会话
Boolean isDelContact = contactDao.removeByRoomId(roomId, Collections.EMPTY_LIST);
AssertUtil.isTrue(isDelContact, CommonErrorEnum.SYSTEM_ERROR);
// 4.3 删除群成员
// 4.3 获取并删除群成员
List<Long> memberUidList = groupMemberDao.getMemberUidList(roomGroup.getId(), null);
Boolean isDelGroupMember = groupMemberDao.removeByGroupId(roomGroup.getId(), Collections.EMPTY_LIST);
AssertUtil.isTrue(isDelGroupMember, CommonErrorEnum.SYSTEM_ERROR);
// 4.4 删除消息记录 (逻辑删除)
@@ -138,7 +139,6 @@ public class GroupMemberServiceImpl implements IGroupMemberService {
// 4.5 告知所有人群已经被解散, 这里要走groupMemberDao查询缓存中可能没有屏蔽群的用户
groupMemberCache.evictMemberUidList(room.getId());
groupMemberCache.evictAllMemberDetails();
List<Long> memberUidList = groupMemberDao.getMemberUidList(roomGroup.getId(), null);
pushService.sendPushMsg(RoomAdapter.buildGroupDissolution(roomGroup.getName()), memberUidList, uid);
} else {
// 4.6 删除会话

View File

@@ -16,17 +16,12 @@ import com.hula.core.chat.dao.GroupMemberDao;
import com.hula.core.chat.dao.MessageDao;
import com.hula.core.chat.domain.dto.RoomBaseInfo;
import com.hula.core.chat.domain.entity.*;
import com.hula.core.chat.domain.entity.msg.MergeMsg;
import com.hula.core.chat.domain.enums.GroupRoleAPPEnum;
import com.hula.core.chat.domain.enums.GroupRoleEnum;
import com.hula.core.chat.domain.enums.HotFlagEnum;
import com.hula.core.chat.domain.enums.RoomTypeEnum;
import com.hula.core.chat.domain.vo.request.ChatMessageMemberReq;
import com.hula.core.chat.domain.vo.request.ChatMessageReq;
import com.hula.core.chat.domain.vo.request.ContactFriendReq;
import com.hula.core.chat.domain.vo.request.GroupAddReq;
import com.hula.core.chat.domain.vo.request.RoomApplyReq;
import com.hula.core.chat.domain.vo.request.RoomInfoReq;
import com.hula.core.chat.domain.vo.request.RoomMyInfoReq;
import com.hula.core.chat.domain.vo.request.*;
import com.hula.core.chat.domain.vo.request.contact.ContactHideReq;
import com.hula.core.chat.domain.vo.request.contact.ContactNotificationReq;
import com.hula.core.chat.domain.vo.request.contact.ContactShieldReq;
@@ -37,11 +32,7 @@ import com.hula.core.chat.domain.vo.request.member.MemberReq;
import com.hula.core.chat.domain.vo.request.room.AnnouncementsParam;
import com.hula.core.chat.domain.vo.request.room.ReadAnnouncementsParam;
import com.hula.core.chat.domain.vo.request.room.RoomGroupReq;
import com.hula.core.chat.domain.vo.response.AnnouncementsResp;
import com.hula.core.chat.domain.vo.response.ChatMemberListResp;
import com.hula.core.chat.domain.vo.response.ChatRoomResp;
import com.hula.core.chat.domain.vo.response.MemberResp;
import com.hula.core.chat.domain.vo.response.ReadAnnouncementsResp;
import com.hula.core.chat.domain.vo.response.*;
import com.hula.core.chat.service.ChatService;
import com.hula.core.chat.service.RoomAppService;
import com.hula.core.chat.service.RoomService;
@@ -56,6 +47,7 @@ import com.hula.core.user.dao.UserDao;
import com.hula.core.user.domain.entity.User;
import com.hula.core.user.domain.enums.RoleTypeEnum;
import com.hula.core.user.domain.enums.WsBaseResp;
import com.hula.core.user.domain.vo.req.MergeMessageReq;
import com.hula.core.user.domain.vo.resp.ws.ChatMemberResp;
import com.hula.core.user.domain.vo.resp.ws.WSMemberChange;
import com.hula.core.user.service.FriendService;
@@ -65,6 +57,7 @@ import com.hula.core.user.service.cache.UserCache;
import com.hula.core.user.service.cache.UserInfoCache;
import com.hula.core.user.service.impl.PushService;
import com.hula.enums.GroupErrorEnum;
import com.hula.exception.BizException;
import com.hula.utils.AssertUtil;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotNull;
@@ -76,7 +69,6 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.time.LocalDateTime;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -280,15 +272,13 @@ public class RoomAppServiceImpl implements RoomAppService {
RoomGroup roomGroup = roomGroupCache.get(param.getRoomId());
List<Long> uids = roomService.getGroupUsers(roomGroup.getId(), false);
if(CollUtil.isNotEmpty(uids)){
LocalDateTime now = LocalDateTime.now();
pushService.sendPushMsg(MessageAdapter.buildRoomGroupAnnouncement(param.getContent()), uids, uid);
Date now = new Date();
Announcements announcements = new Announcements();
announcements.setContent(param.getContent());
announcements.setRoomId(param.getRoomId());
announcements.setUid(uid);
announcements.setTop(param.getTop());
announcements.setPublishTime(now);
announcements.setCreatedTime(now);
roomService.saveAnnouncements(announcements);
// 创建已读的信息
@@ -298,10 +288,16 @@ public class RoomAppServiceImpl implements RoomAppService {
readRecord.setAnnouncementsId(announcements.getId());
readRecord.setUid(item);
readRecord.setIsCheck(false);
readRecord.setCreatedBy(uid);
announcementsReadRecordList.add(readRecord);
});
// 批量添加未读消息
return roomService.saveBatchAnnouncementsRecord(announcementsReadRecordList);
Boolean saved = roomService.saveBatchAnnouncementsRecord(announcementsReadRecordList);
if(saved){
// 发送公告消息、推送群成员公告内容
chatService.sendMsg(MessageAdapter.buildAnnouncementsMsg(param.getRoomId(), announcements), uid);
}
return saved;
}
return false;
}
@@ -317,11 +313,13 @@ public class RoomAppServiceImpl implements RoomAppService {
}
Announcements announcements = new Announcements();
announcements.setId(announcement.getId());
announcements.setRoomId(param.getRoomId());
announcements.setContent(param.getContent());
announcements.setTop(param.getTop());
announcements.setUpdatedTime(new Date());
Boolean edit = roomService.updateAnnouncement(announcements);
if(edit){
pushService.sendPushMsg(MessageAdapter.buildEditRoomGroupAnnouncement(announcements), uids, uid);
chatService.sendMsg(MessageAdapter.buildAnnouncementsMsg(param.getRoomId(), announcements), uid);
}
return edit;
}
@@ -433,6 +431,33 @@ public class RoomAppServiceImpl implements RoomAppService {
return contactDao.updateById(contact);
}
@Override
public ChatMessageResp mergeMessage(Long uid, MergeMessageReq req) {
// 1. 校验人员是否在群里、或者有没有对方的好友
Room room = roomCache.get(req.getFromRoomId());
if(ObjectUtil.isNull(room)){
throw new BizException("房间不存在");
}
if(room.getType().equals(RoomTypeEnum.GROUP.getType())){
RoomGroup sourceRoomGroup = roomGroupCache.get(req.getFromRoomId());
verifyGroupPermissions(uid, sourceRoomGroup);
} else {
RoomFriend roomFriend = roomFriendCache.get(req.getFromRoomId());
if(ObjectUtil.isNull(roomFriend) || !roomFriend.getUid1().equals(uid) && !roomFriend.getUid1().equals(uid)) {
throw new BizException("你们不是好友关系");
}
}
// 2. 当是转发单条消息的时候
List<Message> messagess = chatService.getMsgByIds(req.getMessageIds());
List<MergeMsg> msgs = messagess.stream().filter(message -> message.getRoomId().equals(req.getFromRoomId())).map(message -> new MergeMsg(message.getContent(), message.getCreateTime(), userInfoCache.get(message.getFromUid()).getName())).collect(Collectors.toUnmodifiableList());
// 3. 发布合并消息
Long msgId = chatService.sendMsg(MessageAdapter.buildMergeMsg(req.getRoomId(), msgs), uid);
return chatService.getMsgResp(msgId, uid);
}
@Override
public List<RoomGroup> searchGroup(RoomGroupReq req) {
return roomGroupCache.searchGroup(req.getAccount());

View File

@@ -157,7 +157,7 @@ public class RoomServiceImpl implements RoomService {
@Override
public Boolean saveAnnouncements(Announcements announcements) {
if(announcements.getTop()){
announcementsDao.update(new UpdateWrapper<Announcements>().set("top", false).eq("top", true));
announcementsDao.update(new UpdateWrapper<Announcements>().set("top", false).eq("top", true).eq("room_id", announcements.getRoomId()));
}
return announcementsDao.save(announcements);
}
@@ -215,13 +215,13 @@ public class RoomServiceImpl implements RoomService {
@Override
public Boolean updateAnnouncement(Announcements announcement) {
if(announcement.getTop()){
announcementsDao.update(new UpdateWrapper<Announcements>().set("top", false).eq("top", true));
announcementsDao.update(new UpdateWrapper<Announcements>().set("top", false).eq("top", true).eq("room_id", announcement.getRoomId()));
}
return announcementsDao.updateById(announcement);
}
@Override
public IPage<Announcements> announcementList(Long roomId, IPage<Announcements> page) {
return announcementsDao.getBaseMapper().selectPage(page, new QueryWrapper<Announcements>().eq("room_id", roomId).orderByDesc("publish_time"));
return announcementsDao.getBaseMapper().selectPage(page, new QueryWrapper<Announcements>().eq("room_id", roomId).orderByDesc("top").orderByDesc("created_time"));
}
}

View File

@@ -4,7 +4,6 @@ import com.hula.core.chat.dao.MessageDao;
import com.hula.core.chat.domain.entity.Message;
import com.hula.core.chat.domain.entity.msg.EmojisMsgDTO;
import com.hula.core.chat.domain.entity.msg.MessageExtra;
import com.hula.core.chat.domain.entity.msg.ReplyMsg;
import com.hula.core.chat.domain.enums.MessageTypeEnum;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Component;

View File

@@ -0,0 +1,54 @@
package com.hula.core.chat.service.strategy.msg;
import com.hula.core.chat.dao.MessageDao;
import com.hula.core.chat.domain.entity.Message;
import com.hula.core.chat.domain.entity.msg.MergeMsgDTO;
import com.hula.core.chat.domain.entity.msg.MessageExtra;
import com.hula.core.chat.domain.enums.MessageTypeEnum;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.Optional;
/**
* 合并消息
* @author 乾乾
*/
@Component
@AllArgsConstructor
public class MergeMsgHandler extends AbstractMsgHandler<MergeMsgDTO> {
private MessageDao messageDao;
@Override
MessageTypeEnum getMsgTypeEnum() {
return MessageTypeEnum.MERGE;
}
@Override
protected void saveMsg(Message message, MergeMsgDTO body) {
MessageExtra extra = Optional.ofNullable(message.getExtra()).orElse(new MessageExtra());
Message update = new Message();
update.setId(message.getId());
extra.setMergeMsgDTO(body);
update.setExtra(extra);
update.setReplyMsgId(body.getReplyMsgId());
messageDao.updateById(update);
}
@Override
public Object showMsg(Message msg) {
MergeMsgDTO resp = msg.getExtra().getMergeMsgDTO();
resp.setReply(replyMsg(msg));
return resp;
}
@Override
public Object showReplyMsg(Message msg) {
return "合并消息";
}
@Override
public String showContactMsg(Message msg) {
return "[合并消息]";
}
}

View File

@@ -0,0 +1,66 @@
package com.hula.core.chat.service.strategy.msg;
import com.hula.common.utils.discover.PrioritizedUrlDiscover;
import com.hula.common.utils.discover.domain.UrlInfo;
import com.hula.common.utils.sensitiveword.SensitiveWordBs;
import com.hula.core.chat.dao.MessageDao;
import com.hula.core.chat.domain.entity.Message;
import com.hula.core.chat.domain.entity.msg.MessageExtra;
import com.hula.core.chat.domain.entity.msg.NoticeMsgDTO;
import com.hula.core.chat.domain.enums.MessageTypeEnum;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.Map;
import java.util.Optional;
/**
* 公告消息
* @author 乾乾
*/
@Component
@AllArgsConstructor
public class NoticeMsgHandler extends AbstractMsgHandler<NoticeMsgDTO> {
private MessageDao messageDao;
private SensitiveWordBs sensitiveWordBs;
private static final PrioritizedUrlDiscover URL_TITLE_DISCOVER = new PrioritizedUrlDiscover();
@Override
MessageTypeEnum getMsgTypeEnum() {
return MessageTypeEnum.NOTICE;
}
@Override
protected void saveMsg(Message message, NoticeMsgDTO body) {
MessageExtra extra = Optional.ofNullable(message.getExtra()).orElse(new MessageExtra());
Message update = new Message();
update.setId(message.getId());
// 过滤公告消息的某些字符
body.setContent(sensitiveWordBs.filter(body.getContent()));
extra.setNoticeMsgDTO(body);
update.setExtra(extra);
update.setReplyMsgId(body.getReplyMsgId());
// 判断消息url跳转
Map<String, UrlInfo> urlContentMap = URL_TITLE_DISCOVER.getUrlContentMap(body.getContent());
extra.setUrlContentMap(urlContentMap);
messageDao.updateById(update);
}
@Override
public Object showMsg(Message msg) {
NoticeMsgDTO resp = msg.getExtra().getNoticeMsgDTO();
resp.setReply(replyMsg(msg));
return resp;
}
@Override
public Object showReplyMsg(Message msg) {
return "公告";
}
@Override
public String showContactMsg(Message msg) {
return "[公告]";
}
}

View File

@@ -1,8 +1,6 @@
package com.hula.core.chat.service.strategy.msg;
import cn.hutool.core.collection.CollectionUtil;
import com.hula.common.enums.YesOrNoEnum;
import com.hula.core.chat.domain.entity.msg.ReplyMsg;
import com.hula.utils.AssertUtil;
import com.hula.common.utils.discover.PrioritizedUrlDiscover;
import com.hula.common.utils.discover.domain.UrlInfo;
@@ -10,17 +8,12 @@ import com.hula.common.utils.sensitiveword.SensitiveWordBs;
import com.hula.core.chat.dao.MessageDao;
import com.hula.core.chat.domain.entity.Message;
import com.hula.core.chat.domain.entity.msg.MessageExtra;
import com.hula.core.chat.domain.enums.MessageStatusEnum;
import com.hula.core.chat.domain.enums.MessageTypeEnum;
import com.hula.core.chat.domain.vo.request.msg.TextMsgReq;
import com.hula.core.chat.domain.vo.response.msg.TextMsgResp;
import com.hula.core.chat.service.adapter.MessageAdapter;
import com.hula.core.chat.service.cache.MsgCache;
import com.hula.core.chat.service.cache.MsgPlusCache;
import com.hula.core.user.domain.entity.User;
import com.hula.core.user.domain.enums.RoleTypeEnum;
import com.hula.core.user.service.RoleService;
import com.hula.core.user.service.cache.UserCache;
import com.hula.core.user.service.cache.UserInfoCache;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
@@ -40,12 +33,9 @@ import java.util.stream.Collectors;
public class TextMsgHandler extends AbstractMsgHandler<TextMsgReq> {
private MessageDao messageDao;
private MsgCache msgCache;
private UserCache userCache;
private UserInfoCache userInfoCache;
private RoleService roleService;
private SensitiveWordBs sensitiveWordBs;
private MsgPlusCache msgPlusCache;
private static final PrioritizedUrlDiscover URL_TITLE_DISCOVER = new PrioritizedUrlDiscover();
@@ -94,7 +84,6 @@ public class TextMsgHandler extends AbstractMsgHandler<TextMsgReq> {
//艾特功能
if (CollectionUtil.isNotEmpty(body.getAtUidList())) {
extra.setAtUidList(body.getAtUidList());
}
messageDao.updateById(update);

View File

@@ -5,7 +5,7 @@ import com.hula.core.chat.domain.entity.Message;
import com.hula.core.chat.domain.entity.msg.MessageExtra;
import com.hula.core.chat.domain.entity.msg.VideoMsgDTO;
import com.hula.core.chat.domain.enums.MessageTypeEnum;
import jakarta.annotation.Resource;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Component;
import java.util.Optional;
@@ -15,8 +15,8 @@ import java.util.Optional;
* @author nyh
*/
@Component
@AllArgsConstructor
public class VideoMsgHandler extends AbstractMsgHandler<VideoMsgDTO> {
@Resource
private MessageDao messageDao;
@Override

View File

@@ -36,8 +36,6 @@ public enum WSRespTypeEnum {
MSG_RECALL("msgRecall", "消息撤回", WSMsgRecall.class),
VIDEO("video", "视频消息", ConverseMessageDto.class),
PHONE("phone", "语音消息", null),
ROOM_GROUP_NOTICE_MSG("roomGroupNoticeMsg", "群公告消息", null),
ROOM_EDIT_GROUP_NOTICE_MSG("roomEditGroupNoticeMsg", "编辑群公告消息", null),
ROOM_GROUP_NOTICE_READ_MSG("roomGroupNoticeReadMsg", "群公告已读", null),
FEED_SEND_MSG("feedSendMsg", "朋友圈发布", null),
ROOM_DISSOLUTION("roomDissolution", "群解散", null),

View File

@@ -0,0 +1,29 @@
package com.hula.core.user.domain.vo.req;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 转发时只校验用户是否具备 sourceRoomId 房间的权限; 发送消息时会校验 roomId 的权限
* 消息实体
*/
@Data
public class MergeMessageReq implements Serializable {
@Schema(description = "消息来源房间id")
@NotNull(message = "请选择消息来源房间")
private Long fromRoomId;
@Schema(description = "接收的房间ID")
@NotNull(message = "房间不能为空")
private Long roomId;
@Schema(description = "合并消息的子消息列表")
@NotEmpty(message = "请选择要转发的消息")
private List<Long> messageIds;
}

View File

@@ -1,4 +1,4 @@
version: 2.6.8
version: 2.6.10
HuLa-IM:
HOST: 127.0.0.1 #域名
MYSQL_PORT: 3306 #端口

View File

@@ -1,8 +1,17 @@
package com.hula.common;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.hula.HuLaImServiceApplication;
import com.hula.core.chat.dao.ContactDao;
import com.hula.core.chat.dao.RoomGroupDao;
import com.hula.core.chat.domain.entity.Contact;
import com.hula.core.chat.domain.entity.Room;
import com.hula.core.chat.domain.entity.RoomFriend;
import com.hula.core.chat.domain.entity.RoomGroup;
import com.hula.core.chat.domain.enums.RoomTypeEnum;
import com.hula.core.chat.service.cache.GroupMemberCache;
import com.hula.core.chat.service.cache.RoomCache;
import com.hula.core.chat.service.cache.RoomFriendCache;
import com.hula.core.user.dao.UserDao;
import com.hula.core.user.domain.entity.User;
import com.hula.snowflake.uid.UidGenerator;
@@ -14,6 +23,7 @@ import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.ArrayList;
import java.util.List;
@@ -28,6 +38,49 @@ public class CreateAccount {
@Resource
private UidGenerator uidGenerator;
@Resource
private ContactDao contactDao;
@Resource
private RoomCache roomCache;
@Resource
private RoomFriendCache roomFriendCache;
@Resource
private GroupMemberCache groupMemberCache;
/**
* 移除不存在的会话
*/
@Test
public void removeContacts() {
List<Contact> contacts = contactDao.getBaseMapper().selectList(new QueryWrapper<>());
// 需要移除的会话
List<Long> ids = new ArrayList<>();
for (Contact contact : contacts) {
Room room = roomCache.get(contact.getRoomId());
if(room == null){
ids.add(contact.getId());
} else {
if(room.getType().equals(RoomTypeEnum.FRIEND.getType())){
RoomFriend roomFriend = roomFriendCache.get(contact.getRoomId());
if(roomFriend == null || !roomFriend.getUid1().equals(contact.getUid()) && !roomFriend.getUid2().equals(contact.getUid())){
ids.add(contact.getId());
}
} else {
List<Long> uidList = groupMemberCache.getMemberUidList(contact.getRoomId());
if(uidList.isEmpty() || !uidList.contains(contact.getUid())){
ids.add(contact.getId());
}
}
}
}
System.out.println("需要移除的会话:" + ids);
}
/**
* 批量填充群账号
*/

View File

@@ -15,7 +15,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<revision>v2.6.8</revision>
<revision>v2.6.10</revision>
<java.version>21</java.version>
<spring-boot.version>3.4.4</spring-boot.version>
<hutool.version>5.8.27</hutool.version>

View File

@@ -11,7 +11,7 @@
Target Server Version : 80031 (8.0.31)
File Encoding : 65001
Date: 22/04/2025 21:22:52
Date: 27/04/2025 16:00:45
*/
SET NAMES utf8mb4;
@@ -34,7 +34,7 @@ CREATE TABLE `ai_gpt_agreement` (
`updated_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`is_del` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '内容管理' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '内容管理' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of ai_gpt_agreement
@@ -70,7 +70,7 @@ CREATE TABLE `ai_gpt_assistant` (
`is_del` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
PRIMARY KEY (`id`) USING BTREE,
INDEX `type_id`(`type_id` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = 'AI助理功能' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 10 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'AI助理功能' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of ai_gpt_assistant
@@ -102,7 +102,7 @@ CREATE TABLE `ai_gpt_assistant_type` (
`updated_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`is_del` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 12 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '助手分类' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 12 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '助手分类' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of ai_gpt_assistant_type
@@ -136,11 +136,12 @@ CREATE TABLE `ai_gpt_chat` (
`updated_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`is_del` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '聊天摘要' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 83706726461169702 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '聊天摘要' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of ai_gpt_chat
-- ----------------------------
INSERT INTO `ai_gpt_chat` VALUES (78189355637862400, '1897572772838768640', 0, 3, '你是一名资深的婚礼文案师,需要为一对新人撰写一份婚礼请柬。\n', '', 3, '2025-03-07 10:20:12', NULL, NULL, 1);
-- ----------------------------
-- Table structure for ai_gpt_chat_message
@@ -168,12 +169,12 @@ CREATE TABLE `ai_gpt_chat_message` (
`updated_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`is_del` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '对话消息' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 83706726461169735 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '对话消息' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of ai_gpt_chat_message
-- ----------------------------
INSERT INTO `ai_gpt_chat_message` VALUES (78095167005053952, 78094677378781184, 'f34e52b5-c853-4355-b70d-f0186fe2d356', '', 'LocalLM', 'chatglm3-6b', '32131', 'text', 'user', '', 1, '', 0, NULL, '', 3, '2025-03-06 10:49:40', NULL, NULL, 0);
-- ----------------------------
-- Table structure for ai_gpt_comb
-- ----------------------------
@@ -193,7 +194,7 @@ CREATE TABLE `ai_gpt_comb` (
`updated_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`is_del` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '会员套餐' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '会员套餐' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of ai_gpt_comb
@@ -226,7 +227,7 @@ CREATE TABLE `ai_gpt_model` (
`updated_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`is_del` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '大模型信息' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '大模型信息' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of ai_gpt_model
@@ -275,7 +276,7 @@ INSERT INTO `ai_gpt_openkey` VALUES (2, 'WENXIN', '', '', '', 100000, 0, 0, 1, '
INSERT INTO `ai_gpt_openkey` VALUES (3, 'QIANWEN', '', '', '', 100000, 0, 0, 1, '', 0, '2025-03-05 20:33:20', NULL, NULL, 0);
INSERT INTO `ai_gpt_openkey` VALUES (4, 'SPARK', '', '', '', 100000, 0, 0, 1, '', 0, '2025-03-05 20:33:20', NULL, NULL, 0);
INSERT INTO `ai_gpt_openkey` VALUES (5, 'ChatGLM', '', '', '', 100000, 0, 0, 1, '', 0, '2025-03-05 20:33:20', NULL, NULL, 0);
INSERT INTO `ai_gpt_openkey` VALUES (6, 'Moonshot', '', 'sk-', 'sk-', 100000, 0, 0, 1, '', 0, '2025-04-01 19:42:35', NULL, NULL, 0);
INSERT INTO `ai_gpt_openkey` VALUES (6, 'Moonshot', 'sk-QBy0gcN1RBgQ8X7CCD8HYFo1WRoxACOXoOC0RZvLMrGlsyqh', 'sk-QBy0gcN1RBgQ8X7CCD8HYFo1WRoxACOXoOC0RZvLMrGlsyqh', 'sk-QBy0gcN1RBgQ8X7CCD8HYFo1WRoxACOXoOC0RZvLMrGlsyqh', 100000, 0, 0, 1, '', 0, '2025-03-05 20:33:20', NULL, NULL, 0);
INSERT INTO `ai_gpt_openkey` VALUES (7, 'Internlm', '', '', '', 100000, 0, 0, 1, '', 0, '2025-03-05 20:33:20', NULL, NULL, 0);
INSERT INTO `ai_gpt_openkey` VALUES (8, 'LocalLM', '', '', '', 100000, 0, 0, 1, '', 0, '2025-03-05 20:33:20', NULL, NULL, 0);
@@ -300,7 +301,7 @@ CREATE TABLE `ai_gpt_order` (
`updated_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`is_del` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '订单' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '订单' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of ai_gpt_order
@@ -324,7 +325,7 @@ CREATE TABLE `ai_gpt_redemption` (
`updated_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`is_del` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb3 COLLATE = utf8mb3_general_ci COMMENT = '兑换码' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '兑换码' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of ai_gpt_redemption
@@ -363,15 +364,14 @@ CREATE TABLE `announcements` (
`room_id` bigint NOT NULL COMMENT '群id',
`uid` bigint NOT NULL COMMENT '发布者id',
`content` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_ci NOT NULL COMMENT '公告内容',
`publish_time` datetime NOT NULL COMMENT '发布时间',
`top` tinyint(1) NOT NULL DEFAULT 0 COMMENT '顶置公告',
`created_by` bigint NOT NULL DEFAULT 0 COMMENT '创建者',
`created_time` datetime NOT NULL COMMENT '创建时间',
`created_time` datetime NOT NULL COMMENT '发布时间',
`updated_by` bigint NULL DEFAULT NULL COMMENT '更新者',
`updated_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`is_del` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_as_ci COMMENT = '聊天公告表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_as_ci COMMENT = '聊天公告表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of announcements
@@ -384,13 +384,10 @@ DROP TABLE IF EXISTS `announcements_read_records`;
CREATE TABLE `announcements_read_records` (
`id` bigint NOT NULL,
`announcements_id` bigint NOT NULL COMMENT '公告id',
`u_id` bigint NOT NULL COMMENT '阅读人id',
`uid` bigint NOT NULL COMMENT '阅读人id',
`is_check` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否已读 0未读 1已读',
`created_by` bigint NOT NULL COMMENT '创建者',
`created_time` datetime NOT NULL COMMENT '创建时间',
`updated_by` bigint NULL DEFAULT NULL COMMENT '更新者',
`updated_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`is_del` tinyint(1) NOT NULL COMMENT '是否删除',
`is_del` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否删除',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_as_ci COMMENT = '公告是否已读表' ROW_FORMAT = DYNAMIC;
@@ -410,7 +407,7 @@ CREATE TABLE `black` (
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `idx_type_target`(`type` ASC, `target` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '黑名单' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '黑名单' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of black
@@ -437,8 +434,8 @@ CREATE TABLE `config` (
INSERT INTO `config` VALUES (1, 'system', '{\"title\":\"系统名称\",\"componentType\":\"text\",\"value\":\"Hula-IM\",\"configKey\":\"systemName\",\"type\":\"system\"}', 'systemName', 'HuLa', 0);
INSERT INTO `config` VALUES (2, 'system', '{\"title\":\"系统Logo\",\"componentType\":\"text\",\"value\":\"/static/img/Iogo.png\",\"configKey\":\"logo\",\"type\":\"system\"}', 'logo', '/static/img/Iogo.png', 0);
INSERT INTO `config` VALUES (3, 'qiniu_up_config', '{\"title\":\"空间域名 Domain\",\"componentType\":\"text\",\"value\":\"https://upload-z2.qiniup.com\",\"configKey\":\"qnUploadUrl\",\"type\":\"qiniu_up_config\"}', 'qnUploadUrl', 'https://up-as0.qiniup.com', 0);
INSERT INTO `config` VALUES (4, 'qiniu_up_config', '{\"title\":\"accessKey\",\"componentType\":\"text\",\"value\":\"LXrRo61111111111111AQaUGUJ\",\"configKey\":\"qnAccessKey\",\"type\":\"qiniu_up_config\"}', 'qnAccessKey', 'LXrRo61111111111111AQaUGUJ', 0);
INSERT INTO `config` VALUES (5, 'qiniu_up_config', '{\"title\":\"SecretKey\",\"componentType\":\"text\",\"value\":\"BY22222222LKgX6C300BlVS-llemF2Hg\",\"configKey\":\"qnSecretKey\",\"type\":\"qiniu_up_config\"}', 'qnSecretKey', 'BY22222222LKgX6C300BlVS-llemF2Hg', 0);
INSERT INTO `config` VALUES (4, 'qiniu_up_config', '{\"title\":\"accessKey\",\"componentType\":\"text\",\"value\":\"LXrRo6Yh1111111111y5yScLzQJAQaUGUJ\",\"configKey\":\"qnAccessKey\",\"type\":\"qiniu_up_config\"}', 'qnAccessKey', 'LXrRo6Yh1111111111y5yScLzQJAQaUGUJ', 0);
INSERT INTO `config` VALUES (5, 'qiniu_up_config', '{\"title\":\"SecretKey\",\"componentType\":\"text\",\"value\":\"BYKKz6nI111111111LarEQxLKgX6C300BlVS-llemF2Hg\",\"configKey\":\"qnSecretKey\",\"type\":\"qiniu_up_config\"}', 'qnSecretKey', 'BYKKz6nI111111111LarEQxLKgX6C300BlVS-llemF2Hg', 0);
INSERT INTO `config` VALUES (6, 'qiniu_up_config', '{\"title\":\"存储空间名称\",\"componentType\":\"text\",\"value\":\"hula\",\"configKey\":\"qnStorageName\",\"type\":\"qiniu_up_config\"}', 'qnStorageName', 'hula-spark', 0);
INSERT INTO `config` VALUES (7, 'qiniu_up_config', '{\"title\":\"七牛云CDN访问图片用的\",\"componentType\":\"text\",\"value\":\"https://file.hula.com/\",\"configKey\":\"qnStorageCDN\",\"type\":\"qiniu_up_config\"}', 'qnStorageCDN', 'https://cdn.hulaspark.com', 0);
INSERT INTO `config` VALUES (8, 'system', '{\"title\":\"大群ID\",\"componentType\":\"text\",\"value\":\"1\",\"configKey\":\"roomGroupId\",\"type\":\"system\"}', 'roomGroupId', '1', 0);
@@ -447,7 +444,7 @@ INSERT INTO `config` VALUES (10, 'qiniu_up_config', '{\"title\":\"分片大小\"
INSERT INTO `config` VALUES (11, 'qiniu_up_config', '{\"title\":\"OSS引擎\",\"componentType\":\"text\",\"value\":\"qiniu\",\"configKey\":\"storageDefault\",\"type\":\"shop_config\"}', 'storageDefault', 'qiniu', 0);
INSERT INTO `config` VALUES (12, 'system', '{\"title\":\"Hula注册邮箱模板\",\"componentType\":\"text\",\"value\":\"\",\"configKey\":\"codeHtmlTemplate\",\"type\":\"shop_config\"}', 'codeHtmlTemplate', '<!doctype html><html lang=\"en\"><head><meta charset=\"UTF-8\" /><title>{}</title></head><body><div style=\"background-color: #ececec; padding: 15px\"><table cellpadding=\"0\" align=\"center\" style=\"width: 600px; margin: 0px auto; text-align: left; position: relative; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; font-size: 14px; font-family: 微软雅黑, 黑体; line-height: 1.5; box-shadow: rgb(153, 153, 153) 0px 0px 5px; border-collapse: collapse; background-position: initial initial; background-repeat: initial initial; background: #fff\"><tbody><tr><th valign=\"middle\" style=\"height: 25px; line-height: 25px; padding: 15px 35px; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom-right-radius: 0px; border-bottom-left-radius: 0px; text-align: center\"><img src=\"https://cdn.hulaspark.com/avatar/logo.png\" width=\"180\" height=\"80\" alt=\"HuLa Logo\" /></th></tr><tr><td><div style=\"padding: 6px 35px 10px; background-color: #fff\"><h2 style=\"margin: 5px 0px\"><font color=\"#333333\" style=\"line-height: 20px\"><font style=\"line-height: 22px\" size=\"4\">亲爱的<b>{}</b>用户,您好:</font></font></h2><p>首先感谢您使用{},请在验证页面输入以下验证码:<br /><p style=\"font-size: 18px; text-align: center; font-weight: bold\">{}</p>本验证码{}分钟内有效,为了保障您的账户安全,请不要告诉别人<br />如果您有什么疑问可以联系管理员Email: {} </p><p align=\"right\">{}</p><p align=\"right\">{}</p><div style=\"width: 700px; margin: 0 auto\"><div style=\"padding: 10px 10px 0; border-top: 1px solid #ccc; color: #747474; margin-bottom: 20px; line-height: 1.3em; font-size: 12px\"><p>本邮件系统自动发送,请勿回复<br />请保管好您的邮箱,避免账号被他人盗用</p></div></div></div></td></tr></tbody></table></div></body></html>', 0);
INSERT INTO `config` VALUES (13, 'system', '{\"title\":\"Hula管理员邮箱\",\"componentType\":\"text\",\"value\":\"\",\"configKey\":\"masterEmail\",\"type\":\"system\"}', 'masterEmail', '', 0);
INSERT INTO `config` VALUES (14, 'system', '{\"title\":\"AI基础信息\",\"componentType\":\"text\",\"value\":\"system/material/20250305/aX3YYCCpDf.png\",\"configKey\":\"baseInfo\",\"type\":\"site_config\"}', 'baseInfo', '{\"contentSecurity\":0,\"copyright\":\"© 2025 earth 湘ICP备2022002234号-1 xxxx技有限公司\",\"descrip\":\"HulaAi基于AI大模型api实现的ChatGPT服务支持ChatGPT(3.5、4.0)模型,同时也支持国内文心一言(支持Stable-Diffusion-XL作图)、通义千问、讯飞星火、智谱清言(ChatGLM)等主流模型,支出同步响应及流式响应,完美呈现打印机效果。\",\"keywords\":[\"通义千问\",\"ChatGPT\",\"文心一言\",\"智谱清言\"],\"proxyServer\":\"\",\"siteTitle\":\"HulaAi\",\"domain\":\"https://gpt.panday94.xyz\",\"proxyType\":2,\"siteLogo\":\"\"}', 0);
INSERT INTO `config` VALUES (14, 'system', '{\"title\":\"AI基础信息\",\"componentType\":\"text\",\"value\":\"system/material/20250305/aX3YYCCpDf.png\",\"configKey\":\"baseInfo\",\"type\":\"site_config\"}', 'baseInfo', '{\"contentSecurity\":0,\"copyright\":\"© 2025 earth 湘ICP备2022011114号-1 xxxx技有限公司\",\"descrip\":\"HulaAi基于AI大模型api实现的ChatGPT服务支持ChatGPT(3.5、4.0)模型,同时也支持国内文心一言(支持Stable-Diffusion-XL作图)、通义千问、讯飞星火、智谱清言(ChatGLM)等主流模型,支出同步响应及流式响应,完美呈现打印机效果。\",\"keywords\":[\"通义千问\",\"ChatGPT\",\"文心一言\",\"智谱清言\"],\"proxyServer\":\"\",\"siteTitle\":\"HulaAi\",\"domain\":\"https://gpt.panday94.xyz\",\"proxyType\":2,\"siteLogo\":\"\"}', 0);
INSERT INTO `config` VALUES (15, 'system', '{\"title\":\"AI 扩展配置\",\"componentType\":\"text\",\"value\":\"system/material/20250305/aX3YYCCpDf.png\",\"configKey\":\"extraInfo\",\"type\":\"site_config\"}', 'extraInfo', '{\"ossType\":1,\"smsType\":0}', 0);
INSERT INTO `config` VALUES (16, 'system', '{\"title\":\"AI AppInfo\",\"componentType\":\"text\",\"value\":\"system/material/20250305/aX3YYCCpDf.png\",\"configKey\":\"appInfo\",\"type\":\"site_config\"}', 'appInfo', '{\"h5Url\":\"https://gpt.panday94.xyz/h5\",\"isSms\":1,\"homeNotice\":\"确保合法合规使用,在运营过程中产生的一切问题后果自负,与作者无关。!\",\"isGptLimit\":0,\"isShare\":1,\"shareRewardNum\":\"20\",\"freeNum\":\"5\",\"isRedemption\":1}', 0);
INSERT INTO `config` VALUES (17, 'system', '{\"title\":\"AI 微信配置\",\"componentType\":\"text\",\"value\":\"system/material/20250305/aX3YYCCpDf.png\",\"configKey\":\"wxInfo\",\"type\":\"site_config\"}', 'wxInfo', '{\"mpLogin\":0,\"mpPay\":0,\"maAppId\":\"xx\",\"maSecret\":\"xx\",\"mpAppId\":\"xx\",\"mpSecret\":\"xx\",\"mchNo\":\"xx\",\"v3Secret\":\"xx\"}', 0);
@@ -474,12 +471,12 @@ CREATE TABLE `contact` (
INDEX `idx_room_id_read_time`(`room_id` ASC, `read_time` ASC) USING BTREE,
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 10937855681026 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '会话列表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 20876670062084 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '会话列表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of contact
-- ----------------------------
INSERT INTO `contact` VALUES (10937855681025, 10937855681024, 1, 0, 0, '2025-04-01 19:15:16.811', 1, 0, NULL, NULL, '2025-03-27 04:23:08.420', '2025-04-01 19:15:16.818');
INSERT INTO `contact` VALUES (10937855681025, 10937855681024, 1, 0, 0, '2025-04-27 16:00:36.619', 0, 0, NULL, NULL, '2025-03-27 04:23:08.420', '2025-04-27 16:00:36.622');
-- ----------------------------
-- Table structure for feed
@@ -550,79 +547,12 @@ CREATE TABLE `group_member` (
INDEX `idx_group_id_role`(`group_id` ASC, `role` ASC) USING BTREE,
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 13045623464963 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '群成员表' ROW_FORMAT = Dynamic;
) ENGINE = InnoDB AUTO_INCREMENT = 20876670062086 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '群成员表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of group_member
-- ----------------------------
INSERT INTO `group_member` VALUES (10937855681026, 1, 10937855681024, 3, '', 0, 'zhend', '2025-03-27 04:23:08.435', '2025-03-27 04:23:08.435');
INSERT INTO `group_member` VALUES (11002917724674, 1, 11002917724672, 3, '', 0, '', '2025-03-27 08:41:40.945', '2025-03-27 08:41:40.945');
INSERT INTO `group_member` VALUES (11003672699394, 1, 11003672699392, 3, '', 0, '', '2025-03-27 08:44:40.377', '2025-03-27 08:44:40.377');
INSERT INTO `group_member` VALUES (11007351104002, 1, 11007351104000, 3, '', 0, '', '2025-03-27 08:59:17.568', '2025-03-27 08:59:17.568');
INSERT INTO `group_member` VALUES (11008177381890, 1, 11008177381888, 3, '', 0, '', '2025-03-27 09:02:34.637', '2025-03-27 09:02:34.637');
INSERT INTO `group_member` VALUES (11013365735938, 1, 11013365735936, 3, '官方群', 0, '', '2025-03-27 09:23:11.060', '2025-03-27 09:23:11.060');
INSERT INTO `group_member` VALUES (11013617394178, 1, 11013617394176, 3, '', 0, '', '2025-03-27 09:24:11.038', '2025-03-27 09:24:11.038');
INSERT INTO `group_member` VALUES (11014041018882, 1, 11014041018880, 3, '', 0, '', '2025-03-27 09:25:52.464', '2025-03-27 09:25:52.464');
INSERT INTO `group_member` VALUES (11015097983490, 1, 11015097983488, 3, '', 0, '', '2025-03-27 09:30:04.145', '2025-03-27 09:30:04.145');
INSERT INTO `group_member` VALUES (11015165092354, 1, 11015165092352, 3, '', 0, '', '2025-03-27 09:30:20.036', '2025-03-27 09:30:20.036');
INSERT INTO `group_member` VALUES (11026913337858, 1, 11026913337856, 3, '', 0, '', '2025-03-27 10:17:01.046', '2025-03-27 10:17:01.046');
INSERT INTO `group_member` VALUES (11035343888898, 1, 11035343888896, 3, '', 0, '', '2025-03-27 10:50:31.075', '2025-03-27 10:50:31.075');
INSERT INTO `group_member` VALUES (11036111446530, 1, 11036111446528, 3, '', 0, '', '2025-03-27 10:53:34.257', '2025-03-27 10:53:34.257');
INSERT INTO `group_member` VALUES (11048136516098, 1, 11048136516096, 3, '', 0, '', '2025-03-27 11:41:21.304', '2025-03-27 11:41:21.304');
INSERT INTO `group_member` VALUES (11049889735170, 1, 11049889735168, 3, '', 0, '', '2025-03-27 11:48:19.278', '2025-03-27 11:48:19.278');
INSERT INTO `group_member` VALUES (11081330237954, 1, 11081330237952, 3, '', 0, '', '2025-03-27 13:53:15.529', '2025-03-27 13:53:15.529');
INSERT INTO `group_member` VALUES (11103727821826, 1, 11103727821824, 3, '', 0, '', '2025-03-27 15:22:15.056', '2025-03-27 15:22:15.056');
INSERT INTO `group_member` VALUES (11225442329602, 1, 11225442329600, 3, '', 0, '', '2025-03-27 23:25:54.668', '2025-03-27 23:25:54.668');
INSERT INTO `group_member` VALUES (11365754381314, 1, 11365754381312, 3, '', 0, '', '2025-03-28 08:43:27.177', '2025-03-28 08:43:27.177');
INSERT INTO `group_member` VALUES (11390353974274, 1, 11390353974272, 3, '', 0, '', '2025-03-28 10:21:12.680', '2025-03-28 10:21:12.680');
INSERT INTO `group_member` VALUES (11406543987714, 1, 11406543987712, 3, '', 0, '', '2025-03-28 11:25:32.692', '2025-03-28 11:25:32.692');
INSERT INTO `group_member` VALUES (11406854366210, 1, 11406854366208, 3, '', 0, '', '2025-03-28 11:26:46.503', '2025-03-28 11:26:46.503');
INSERT INTO `group_member` VALUES (11419261117442, 1, 11419261117440, 3, '', 0, '阿星', '2025-03-28 12:16:04.341', '2025-03-28 12:16:04.341');
INSERT INTO `group_member` VALUES (11439028872194, 1, 11439028872192, 3, '', 0, '', '2025-03-28 13:34:37.276', '2025-03-28 13:34:37.276');
INSERT INTO `group_member` VALUES (11448809989122, 1, 11448809989120, 3, '', 0, '', '2025-03-28 14:13:29.298', '2025-03-28 14:13:29.298');
INSERT INTO `group_member` VALUES (11460939916290, 1, 11460939916288, 3, '', 0, '', '2025-03-28 15:01:41.543', '2025-03-28 15:01:41.543');
INSERT INTO `group_member` VALUES (11495769416706, 1, 11495769416704, 3, '', 0, '', '2025-03-28 17:20:05.052', '2025-03-28 17:20:05.052');
INSERT INTO `group_member` VALUES (11586563515394, 1, 11586563515392, 3, '', 0, '', '2025-03-28 23:20:52.142', '2025-03-28 23:20:52.142');
INSERT INTO `group_member` VALUES (11740758713346, 1, 11740758713344, 3, '', 0, '', '2025-03-29 09:33:35.882', '2025-03-29 09:33:35.882');
INSERT INTO `group_member` VALUES (11792579339266, 1, 11792579339264, 3, '', 0, '', '2025-03-29 12:59:30.445', '2025-03-29 12:59:30.445');
INSERT INTO `group_member` VALUES (11793372062722, 1, 11793372062720, 3, '', 0, '', '2025-03-29 13:02:39.116', '2025-03-29 13:02:39.116');
INSERT INTO `group_member` VALUES (11794630353923, 11794630353922, 10937855681024, 1, '', 0, '', '2025-03-29 13:07:39.217', '2025-03-29 13:07:39.217');
INSERT INTO `group_member` VALUES (11794630353924, 11794630353922, 11793372062720, 3, '', 0, '', '2025-03-29 13:07:39.250', '2025-03-29 13:07:39.250');
INSERT INTO `group_member` VALUES (11794630353925, 11794630353922, 11792579339264, 3, '', 0, '', '2025-03-29 13:07:39.252', '2025-03-29 13:07:39.252');
INSERT INTO `group_member` VALUES (11794630353926, 11794630353922, 11225442329600, 2, '', 0, '', '2025-03-29 13:07:39.258', '2025-03-29 13:08:08.871');
INSERT INTO `group_member` VALUES (11803039933443, 11803039933442, 10937855681024, 1, '', 0, '', '2025-03-29 13:41:04.181', '2025-03-29 13:41:04.181');
INSERT INTO `group_member` VALUES (11803039933444, 11803039933442, 11793372062720, 3, '', 0, '', '2025-03-29 13:41:04.227', '2025-03-29 13:41:04.227');
INSERT INTO `group_member` VALUES (11803039933445, 11803039933442, 11792579339264, 3, '', 0, '', '2025-03-29 13:41:04.229', '2025-03-29 13:41:04.229');
INSERT INTO `group_member` VALUES (11804382110723, 11804382110722, 10937855681024, 1, '', 0, '', '2025-03-29 13:46:24.554', '2025-03-29 13:46:24.554');
INSERT INTO `group_member` VALUES (11804382110724, 11804382110722, 11793372062720, 3, '', 0, '', '2025-03-29 13:46:24.575', '2025-03-29 13:46:24.575');
INSERT INTO `group_member` VALUES (11804382110725, 11804382110722, 11225442329600, 3, '', 0, '', '2025-03-29 13:46:24.579', '2025-03-29 13:46:24.579');
INSERT INTO `group_member` VALUES (11804382110726, 11804382110722, 11419261117440, 3, '', 0, '', '2025-03-29 13:46:24.580', '2025-03-29 13:46:24.580');
INSERT INTO `group_member` VALUES (11890658944002, 1, 11890658944000, 3, '', 0, '', '2025-03-29 19:29:14.071', '2025-03-29 19:29:14.071');
INSERT INTO `group_member` VALUES (11922229470210, 1, 11922229470208, 3, '', 0, '', '2025-03-29 21:34:41.354', '2025-03-29 21:34:41.354');
INSERT INTO `group_member` VALUES (11976851891202, 1, 11976851891200, 3, '', 0, '', '2025-03-30 01:11:44.356', '2025-03-30 01:11:44.356');
INSERT INTO `group_member` VALUES (12034808783874, 1, 12034808783872, 3, '', 0, '', '2025-03-30 05:02:02.387', '2025-03-30 05:02:02.387');
INSERT INTO `group_member` VALUES (12045030302722, 1, 12045030302720, 3, '', 0, '', '2025-03-30 05:42:39.864', '2025-03-30 05:42:39.864');
INSERT INTO `group_member` VALUES (12112525042690, 1, 12112525042688, 3, '', 0, '', '2025-03-30 10:10:51.698', '2025-03-30 10:10:51.698');
INSERT INTO `group_member` VALUES (12147866248194, 1, 12147866248192, 3, '', 0, '', '2025-03-30 12:31:17.484', '2025-03-30 12:31:17.484');
INSERT INTO `group_member` VALUES (12149451695106, 1, 12149451695104, 3, '', 0, '', '2025-03-30 12:37:35.946', '2025-03-30 12:37:35.946');
INSERT INTO `group_member` VALUES (12162751833090, 1, 12162751833088, 3, '', 0, '', '2025-03-30 13:30:26.977', '2025-03-30 13:30:26.977');
INSERT INTO `group_member` VALUES (12225645421570, 1, 12225645421568, 3, '', 0, '', '2025-03-30 17:40:21.288', '2025-03-30 17:40:21.288');
INSERT INTO `group_member` VALUES (12257647961090, 1, 12257647961088, 3, '', 0, '', '2025-03-30 19:47:31.379', '2025-03-30 19:47:31.379');
INSERT INTO `group_member` VALUES (12299578418178, 1, 12299578418176, 3, '', 0, '', '2025-03-30 22:34:08.577', '2025-03-30 22:34:08.577');
INSERT INTO `group_member` VALUES (12307203662850, 1, 12307203662848, 3, '', 0, '', '2025-03-30 23:04:26.581', '2025-03-30 23:04:26.581');
INSERT INTO `group_member` VALUES (12309074322432, 1, 12309070128128, 3, '', 0, '', '2025-03-30 23:11:52.003', '2025-03-30 23:11:52.003');
INSERT INTO `group_member` VALUES (12354003706882, 1, 12354003706880, 3, '', 0, '', '2025-03-31 02:10:24.877', '2025-03-31 02:10:24.877');
INSERT INTO `group_member` VALUES (12371506537474, 1, 12371506537472, 3, '', 0, '', '2025-03-31 03:19:57.676', '2025-03-31 03:19:57.676');
INSERT INTO `group_member` VALUES (12462640374786, 1, 12462640374784, 3, '', 0, '', '2025-03-31 09:22:05.173', '2025-03-31 09:22:05.173');
INSERT INTO `group_member` VALUES (12496987530242, 1, 12496987530240, 3, '', 0, '', '2025-03-31 11:38:34.907', '2025-03-31 11:38:34.907');
INSERT INTO `group_member` VALUES (12678688973826, 1, 12678688973824, 3, '', 0, '', '2025-03-31 23:40:35.156', '2025-03-31 23:40:35.156');
INSERT INTO `group_member` VALUES (12684317729794, 1, 12684317729792, 3, '', 0, '', '2025-04-01 00:02:57.860', '2025-04-01 00:02:57.860');
INSERT INTO `group_member` VALUES (12699534664706, 1, 12699534664704, 3, '', 0, '', '2025-04-01 01:03:25.301', '2025-04-01 01:03:25.301');
INSERT INTO `group_member` VALUES (12817205863426, 1, 12817205863424, 3, '', 0, '', '2025-04-01 08:51:00.871', '2025-04-01 08:51:00.871');
INSERT INTO `group_member` VALUES (12821144314882, 1, 12821144314880, 3, '', 0, '', '2025-04-01 09:06:39.172', '2025-04-01 09:06:39.172');
INSERT INTO `group_member` VALUES (12953449440258, 1, 12953449440256, 3, '', 0, '', '2025-04-01 17:52:23.596', '2025-04-01 17:52:23.596');
INSERT INTO `group_member` VALUES (13030893069314, 1, 13030893069312, 3, '', 0, '', '2025-04-01 23:00:07.590', '2025-04-01 23:00:07.590');
INSERT INTO `group_member` VALUES (13045623464962, 1, 13045623464960, 3, '', 0, '', '2025-04-01 23:58:39.348', '2025-04-01 23:58:39.348');
INSERT INTO `group_member` VALUES (10937855681026, 1, 10937855681024, 3, '', 0, '', '2025-03-27 04:23:08.435', '2025-03-27 04:23:08.435');
-- ----------------------------
-- Table structure for item_config
@@ -671,11 +601,18 @@ CREATE TABLE `message` (
INDEX `idx_from_uid`(`from_uid` ASC) USING BTREE,
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '消息表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 22342910672068 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '消息表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of message
-- ----------------------------
INSERT INTO `message` VALUES (10939168498176, 1, 10937855681024, NULL, NULL, 0, NULL, 7, '{\"recall\": null, \"fileMsg\": null, \"atUidList\": null, \"imgMsgDTO\": null, \"soundMsgDTO\": null, \"videoMsgDTO\": null, \"emojisMsgDTO\": {\"url\": \"https://bbs-static.miyoushe.com/static/2024/10/24/1b9f7abf6e8338291f02e882a1ffec64_7988382128756120451.png\"}, \"urlContentMap\": null}', '2025-03-27 04:28:21.410', '2025-03-27 04:28:21.431');
INSERT INTO `message` VALUES (10939189469696, 1, 10937855681024, '更新咯', NULL, 0, NULL, 1, '{\"recall\": null, \"fileMsg\": null, \"atUidList\": null, \"imgMsgDTO\": null, \"soundMsgDTO\": null, \"videoMsgDTO\": null, \"emojisMsgDTO\": null, \"urlContentMap\": {}}', '2025-03-27 04:28:26.276', '2025-03-27 04:28:26.295');
INSERT INTO `message` VALUES (10939243995648, 1, 10937855681024, '大家快来占沙发', NULL, 0, NULL, 1, '{\"recall\": null, \"fileMsg\": null, \"atUidList\": null, \"imgMsgDTO\": null, \"soundMsgDTO\": null, \"videoMsgDTO\": null, \"emojisMsgDTO\": null, \"urlContentMap\": {}}', '2025-03-27 04:28:39.792', '2025-03-27 04:28:39.800');
INSERT INTO `message` VALUES (10940166742528, 1, 10937855681024, NULL, NULL, 0, NULL, 7, '{\"recall\": null, \"fileMsg\": null, \"atUidList\": null, \"imgMsgDTO\": null, \"soundMsgDTO\": null, \"videoMsgDTO\": null, \"emojisMsgDTO\": {\"url\": \"https://bbs-static.miyoushe.com/static/2023/11/16/e03be25a7b2bc86f2b1909dddb6ca915_6686505940047795068.png\"}, \"urlContentMap\": null}', '2025-03-27 04:32:19.702', '2025-03-27 04:32:19.709');
INSERT INTO `message` VALUES (10951671718400, 1, 10937855681024, NULL, NULL, 0, NULL, 2, '{\"recall\": {\"recallUid\": 10937855681024, \"recallTime\": 1743023902823}, \"fileMsg\": null, \"atUidList\": null, \"imgMsgDTO\": {\"url\": \"https://cdn.hulaspark.com/chat/2439646234/c64611c3bbbcd197552b7f84ac4b709b.jpg\", \"size\": 24498, \"width\": 310, \"height\": 320}, \"soundMsgDTO\": null, \"videoMsgDTO\": null, \"emojisMsgDTO\": null, \"urlContentMap\": null}', '2025-03-27 05:18:02.008', '2025-03-27 05:18:22.834');
INSERT INTO `message` VALUES (10951743021568, 1, 10937855681024, NULL, NULL, 0, NULL, 7, '{\"recall\": null, \"fileMsg\": null, \"atUidList\": null, \"imgMsgDTO\": null, \"soundMsgDTO\": null, \"videoMsgDTO\": null, \"emojisMsgDTO\": {\"url\": \"https://cdn.hulaspark.com/chat/2439646234/c64611c3bbbcd197552b7f84ac4b709b.jpg\"}, \"urlContentMap\": null}', '2025-03-27 05:18:19.996', '2025-03-27 05:18:20.004');
INSERT INTO `message` VALUES (19109362319360, 1, 10937855681024, '可以,终于有人活跃了', NULL, 0, NULL, 1, '{\"recall\": null, \"fileMsg\": null, \"atUidList\": null, \"imgMsgDTO\": null, \"soundMsgDTO\": null, \"videoMsgDTO\": null, \"emojisMsgDTO\": null, \"urlContentMap\": {}}', '2025-04-18 17:33:47.064', '2025-04-27 15:48:25.883');
-- ----------------------------
-- Table structure for message_mark
@@ -694,7 +631,7 @@ CREATE TABLE `message_mark` (
INDEX `idx_uid`(`uid` ASC) USING BTREE,
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '消息标记表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '消息标记表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of message_mark
@@ -736,21 +673,12 @@ CREATE TABLE `room` (
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 11804382110721 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '房间表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 19063229169155 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '房间表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of room
-- ----------------------------
INSERT INTO `room` VALUES (1, 1, 1, '2025-04-01 19:03:23.481', 12971317175296, NULL, '2024-07-10 11:17:15.521', '2025-04-01 19:03:23.563');
INSERT INTO `room` VALUES (11229133317122, 2, 0, '2025-03-29 12:54:31.331', 11791325242368, NULL, '2025-03-27 23:40:34.539', '2025-03-29 12:54:31.449');
INSERT INTO `room` VALUES (11367692149762, 2, 0, '2025-03-28 08:51:18.166', 11367729898496, NULL, '2025-03-28 08:51:09.404', '2025-03-28 08:51:18.214');
INSERT INTO `room` VALUES (11515000300546, 2, 0, '2025-03-28 22:11:20.627', 11569064879104, NULL, '2025-03-28 18:36:30.836', '2025-03-28 22:11:20.686');
INSERT INTO `room` VALUES (11515012883458, 2, 0, '2025-03-28 18:36:33.240', 11515012883460, NULL, '2025-03-28 18:36:33.219', '2025-03-28 18:36:33.291');
INSERT INTO `room` VALUES (11794076705794, 2, 0, '2025-03-29 13:05:27.817', 11794076705796, NULL, '2025-03-29 13:05:27.797', '2025-03-29 13:05:27.873');
INSERT INTO `room` VALUES (11794085094402, 2, 0, '2025-03-29 13:05:29.193', 11794085094404, NULL, '2025-03-29 13:05:29.175', '2025-03-29 13:05:29.234');
INSERT INTO `room` VALUES (11794630353920, 1, 0, '2025-03-29 13:07:39.457', 11794630353927, NULL, '2025-03-29 13:07:39.200', '2025-03-29 13:07:39.546');
INSERT INTO `room` VALUES (11803039933440, 1, 0, '2025-03-29 13:41:04.451', 11803039933446, NULL, '2025-03-29 13:41:04.169', '2025-03-29 13:41:04.542');
INSERT INTO `room` VALUES (11804382110720, 1, 0, '2025-04-01 14:18:46.547', 12899691045888, NULL, '2025-03-29 13:46:24.546', '2025-04-01 14:18:46.615');
INSERT INTO `room` VALUES (1, 1, 1, '2025-04-27 15:42:45.389', 22342910672067, NULL, '2024-07-10 11:17:15.521', '2025-04-27 15:42:45.464');
-- ----------------------------
-- Table structure for room_friend
@@ -771,17 +699,33 @@ CREATE TABLE `room_friend` (
INDEX `idx_room_id`(`room_id` ASC) USING BTREE,
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 11794085094404 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '单聊房间表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 19063229169156 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '单聊房间表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of room_friend
-- ----------------------------
INSERT INTO `room_friend` VALUES (11229133317123, 11229133317122, 10937855681024, 11225442329600, '10937855681024,11225442329600', 0, 0, '2025-03-27 23:40:34.548', '2025-03-27 23:40:34.548');
INSERT INTO `room_friend` VALUES (11367692149763, 11367692149762, 11003672699392, 11049889735168, '11003672699392,11049889735168', 0, 0, '2025-03-28 08:51:09.406', '2025-03-28 08:51:09.406');
INSERT INTO `room_friend` VALUES (11515000300547, 11515000300546, 10937855681024, 11419261117440, '10937855681024,11419261117440', 0, 0, '2025-03-28 18:36:30.839', '2025-03-28 18:36:30.839');
INSERT INTO `room_friend` VALUES (11515000300547, 11515000300546, 10937855681024, 11419261117440, '10937855681024,11419261117440', 0, 0, '2025-03-28 18:36:30.839', '2025-04-05 12:47:35.673');
INSERT INTO `room_friend` VALUES (11515012883459, 11515012883458, 10937855681024, 11406854366208, '10937855681024,11406854366208', 0, 0, '2025-03-28 18:36:33.221', '2025-03-28 18:36:33.221');
INSERT INTO `room_friend` VALUES (11794076705795, 11794076705794, 10937855681024, 11792579339264, '10937855681024,11792579339264', 0, 0, '2025-03-29 13:05:27.800', '2025-03-29 13:05:27.800');
INSERT INTO `room_friend` VALUES (11794085094403, 11794085094402, 10937855681024, 11793372062720, '10937855681024,11793372062720', 0, 0, '2025-03-29 13:05:29.179', '2025-03-29 13:05:29.179');
INSERT INTO `room_friend` VALUES (13279296530435, 13279296530434, 11460939916288, 11740758713344, '11460939916288,11740758713344', 0, 0, '2025-04-02 15:27:11.518', '2025-04-02 15:27:11.518');
INSERT INTO `room_friend` VALUES (13280454158337, 13280454158336, 10937855681024, 11002917724672, '10937855681024,11002917724672', 0, 0, '2025-04-02 15:31:47.025', '2025-04-02 15:31:47.025');
INSERT INTO `room_friend` VALUES (14347573179395, 14347573179394, 14321690129408, 14323925693440, '14321690129408,14323925693440', 0, 0, '2025-04-05 14:12:08.152', '2025-04-05 14:12:08.152');
INSERT INTO `room_friend` VALUES (14890651661315, 14890651661314, 11225442329600, 11419261117440, '11225442329600,11419261117440', 0, 0, '2025-04-07 02:10:08.873', '2025-04-07 02:10:08.873');
INSERT INTO `room_friend` VALUES (15007333004291, 15007333004290, 14997367337984, 15000081052672, '14997367337984,15000081052672', 0, 0, '2025-04-07 09:53:47.719', '2025-04-07 09:53:47.719');
INSERT INTO `room_friend` VALUES (15399794029571, 15399794029570, 15395377427456, 15396275008512, '15395377427456,15396275008512', 0, 0, '2025-04-08 11:53:17.777', '2025-04-08 11:53:17.777');
INSERT INTO `room_friend` VALUES (16252235985923, 16252235985922, 16208489395200, 16248800850944, '16208489395200,16248800850944', 0, 0, '2025-04-10 20:20:35.306', '2025-04-10 20:20:35.306');
INSERT INTO `room_friend` VALUES (17534522800131, 17534522800130, 16447564723200, 17529850345472, '16447564723200,17529850345472', 0, 0, '2025-04-14 09:15:56.660', '2025-04-14 09:15:56.660');
INSERT INTO `room_friend` VALUES (18278600718339, 18278600718338, 10937855681024, 17928829319168, '10937855681024,17928829319168', 0, 0, '2025-04-16 10:32:38.185', '2025-04-16 10:32:38.185');
INSERT INTO `room_friend` VALUES (18318480160771, 18318480160770, 10937855681024, 16523460654080, '10937855681024,16523460654080', 0, 0, '2025-04-16 13:11:06.464', '2025-04-18 00:34:56.167');
INSERT INTO `room_friend` VALUES (18657119877635, 18657119877634, 10937855681024, 18344988162048, '10937855681024,18344988162048', 0, 0, '2025-04-17 11:36:44.113', '2025-04-18 00:34:44.224');
INSERT INTO `room_friend` VALUES (18717006150147, 18717006150146, 18344988162048, 18715550726656, '18344988162048,18715550726656', 0, 0, '2025-04-17 15:34:42.309', '2025-04-17 15:34:42.309');
INSERT INTO `room_friend` VALUES (19003212873219, 19003212873218, 10937855681024, 11448809989120, '10937855681024,11448809989120', 0, 0, '2025-04-18 10:31:59.606', '2025-04-18 10:31:59.606');
INSERT INTO `room_friend` VALUES (19003217067523, 19003217067522, 11448809989120, 18750644468224, '11448809989120,18750644468224', 0, 0, '2025-04-18 10:32:00.632', '2025-04-18 10:32:00.632');
INSERT INTO `room_friend` VALUES (19050893721091, 19050893721090, 11448809989120, 18344988162048, '11448809989120,18344988162048', 0, 0, '2025-04-18 13:41:27.537', '2025-04-18 13:41:27.537');
INSERT INTO `room_friend` VALUES (19063229169155, 19063229169154, 18344988162048, 19059882114560, '18344988162048,19059882114560', 0, 0, '2025-04-18 14:30:28.048', '2025-04-18 14:30:28.048');
-- ----------------------------
-- Table structure for room_group
@@ -801,15 +745,12 @@ CREATE TABLE `room_group` (
INDEX `idx_room_id`(`room_id` ASC) USING BTREE,
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 11804382110723 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '群聊房间表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 19003653275139 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '群聊房间表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of room_group
-- ----------------------------
INSERT INTO `room_group` VALUES (1, 1, 'hula-ds240401', 'HuLa官方频道', 'https://cdn.hulaspark.com/avatar/hula.png', NULL, 0, '2024-07-10 11:17:15.523', '2025-03-31 20:59:45.523');
INSERT INTO `room_group` VALUES (11794630353922, 11794630353920, 'hula-3LeMkyQL', '测试群bug群', 'https://cdn.hulaspark.com/avatar/2439646234/cface6fcc52bae9c3d59bcf8014318b2.webp', NULL, 0, '2025-03-29 13:07:39.211', '2025-03-29 13:07:39.211');
INSERT INTO `room_group` VALUES (11803039933442, 11803039933440, 'hula-3LnXsiDh', '测试群bug2群', 'https://cdn.hulaspark.com/avatar/2439646234/5bc6e2e65225019c6b4a1cf974b2799b.webp', NULL, 0, '2025-03-29 13:41:04.175', '2025-03-29 13:41:04.175');
INSERT INTO `room_group` VALUES (11804382110722, 11804382110720, 'hula-3Lp0iLqL', 'bug反馈群', 'https://cdn.hulaspark.com/avatar/2439646234/cb0d74199060ed6d4f2720b8aa302432.webp', NULL, 0, '2025-03-29 13:46:24.551', '2025-03-29 13:46:24.551');
-- ----------------------------
-- Table structure for secure_invoke_record
@@ -827,7 +768,7 @@ CREATE TABLE `secure_invoke_record` (
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_next_retry_time`(`next_retry_time` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 235 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '本地消息表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 1342 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = '本地消息表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of secure_invoke_record
@@ -898,12 +839,12 @@ CREATE TABLE `user` (
INDEX `idx_update_time`(`update_time` ASC) USING BTREE,
INDEX `idx_active_status_last_opt_time`(`active_status` ASC, `last_opt_time` ASC) USING BTREE,
INDEX `account_UNIQUE`(`account` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 12953449440257 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 20876670062082 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (10937855681024, 'Dawn', 'https://cdn.hulaspark.com/avatar/2439646234/ae862ed84ac12da587d79c93ebbe9045.webp', '2439646234@qq.com', '2439646234', NULL, '', 2, 14, '2025-04-01 19:17:56.864', '{\"createIp\": \"206.237.119.215\", \"updateIp\": \"117.181.235.53\", \"createIpDetail\": {\"ip\": \"206.237.119.215\", \"isp\": \"XX\", \"area\": \"\", \"city\": \"XX\", \"isp_id\": \"xx\", \"region\": \"XX\", \"city_id\": \"xx\", \"country\": \"美国\", \"region_id\": \"xx\", \"country_id\": \"US\"}, \"updateIpDetail\": {\"ip\": \"117.181.235.53\", \"isp\": \"移动\", \"area\": \"\", \"city\": \"柳州\", \"isp_id\": \"100025\", \"region\": \"广西\", \"city_id\": \"450200\", \"country\": \"中国\", \"region_id\": \"450000\", \"country_id\": \"CN\"}}', 6, 0, '2025-03-27 04:23:08.393', '2025-04-01 19:17:56.882', 'k.23772439646234', '2025-03-29 13:24:17.085', 0, 0);
INSERT INTO `user` VALUES (10937855681024, 'Dawn', 'https://cdn.hulaspark.com/avatar/2439646234/ae862ed84ac12da587d79c93ebbe9045.webp', '2439646234@qq.com', 'Dawn', NULL, '', 1, 11, '2025-04-27 16:00:09.374', '{\"createIp\": \"206.237.119.215\", \"updateIp\": \"127.0.0.1\", \"createIpDetail\": {\"ip\": \"206.237.119.215\", \"isp\": \"XX\", \"area\": \"\", \"city\": \"XX\", \"isp_id\": \"xx\", \"region\": \"XX\", \"city_id\": \"xx\", \"country\": \"美国\", \"region_id\": \"xx\", \"country_id\": \"US\"}, \"updateIpDetail\": {\"ip\": \"127.0.0.1\", \"isp\": \"内网IP\", \"area\": \"\", \"city\": \"内网IP\", \"isp_id\": \"local\", \"region\": \"XX\", \"city_id\": \"local\", \"country\": \"XX\", \"region_id\": \"xx\", \"country_id\": \"xx\"}}', 6, 0, '2025-03-27 04:23:08.393', '2025-04-27 16:00:23.918', '123456', '2025-03-29 13:24:17.085', 0, 0);
-- ----------------------------
-- Table structure for user_apply
@@ -926,7 +867,7 @@ CREATE TABLE `user_apply` (
INDEX `idx_target_id`(`target_id` ASC) USING BTREE,
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户申请表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 20833527451137 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户申请表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of user_apply
@@ -949,14 +890,11 @@ CREATE TABLE `user_backpack` (
INDEX `idx_uid`(`uid` ASC) USING BTREE,
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 12953449440261 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户背包表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 20876670062088 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户背包表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of user_backpack
-- ----------------------------
INSERT INTO `user_backpack` VALUES (10937855681027, 10937855681024, 1, 0, '1_1_10937855681024', '2025-03-27 04:23:08.580', '2025-03-27 04:23:08.580');
INSERT INTO `user_backpack` VALUES (10937855681028, 10937855681024, 3, 0, '3_1_10937855681024', '2025-03-27 04:23:08.564', '2025-03-27 04:23:08.564');
INSERT INTO `user_backpack` VALUES (10937855681029, 10937855681024, 6, 0, '6_1_10937855681024', '2025-03-27 04:27:34.443', '2025-03-27 04:27:34.443');
-- ----------------------------
-- Table structure for user_block
@@ -990,7 +928,7 @@ CREATE TABLE `user_emoji` (
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `IDX_USER_EMOJIS_UID`(`uid` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 12943123063809 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户表情包' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 20868013018625 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户表情包' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of user_emoji
@@ -998,10 +936,43 @@ CREATE TABLE `user_emoji` (
INSERT INTO `user_emoji` VALUES (10951726244352, 10937855681024, 'https://cdn.hulaspark.com/chat/2439646234/c64611c3bbbcd197552b7f84ac4b709b.jpg', 0, '2025-03-27 05:18:15.512', '2025-03-27 05:18:15.512');
INSERT INTO `user_emoji` VALUES (11099252499456, 10937855681024, 'https://cdn.hulaspark.com/chat/2439646234/34c18e6c846bf18525a2eb180179ff5a.jpg', 0, '2025-03-27 15:04:28.904', '2025-03-27 15:04:28.904');
INSERT INTO `user_emoji` VALUES (11099458020352, 10937855681024, 'https://cdn.hulaspark.com/chat/2439646234/bb124e9812456b4f6c9c2b3dcfeb859b.jpg', 0, '2025-03-27 15:05:17.671', '2025-03-27 15:05:17.671');
INSERT INTO `user_emoji` VALUES (11465121637376, 11002917724672, 'https://cdn.hulaspark.com/chat/a13501369717/8b4ed30d4b58e59aab62004774915d3b.jpg', 1, '2025-03-28 15:18:18.011', '2025-03-28 15:18:22.875');
INSERT INTO `user_emoji` VALUES (11791270716416, 11225442329600, 'https://cdn.hulaspark.com/chat/2439646234/c64611c3bbbcd197552b7f84ac4b709b.jpg', 0, '2025-03-29 12:54:18.509', '2025-03-29 12:54:18.509');
INSERT INTO `user_emoji` VALUES (11791274910720, 11225442329600, 'https://cdn.hulaspark.com/chat/2439646234/34c18e6c846bf18525a2eb180179ff5a.jpg', 0, '2025-03-29 12:54:19.815', '2025-03-29 12:54:19.815');
INSERT INTO `user_emoji` VALUES (12637274416128, 10937855681024, 'https://cdn.hulaspark.com/chat/2439646234/710683d87faa15a807c58574a6ee8c81.png', 0, '2025-03-31 20:56:01.302', '2025-03-31 20:56:01.302');
INSERT INTO `user_emoji` VALUES (12637333136384, 10937855681024, 'https://cdn.hulaspark.com/chat/2439646234/322eed8d06539028c2e9c27212ee232c.png', 0, '2025-03-31 20:56:15.350', '2025-03-31 20:56:15.350');
INSERT INTO `user_emoji` VALUES (12637379273728, 10937855681024, 'https://cdn.hulaspark.com/chat/2439646234/6ac23bb3a9a384ada1e82f41d181e4bc.png', 0, '2025-03-31 20:56:26.793', '2025-03-31 20:56:26.793');
INSERT INTO `user_emoji` VALUES (12637450576896, 10937855681024, 'https://cdn.hulaspark.com/chat/2439646234/ae4e6c0e10667c33f0066eaf7444c3a9.png', 0, '2025-03-31 20:56:43.103', '2025-03-31 20:56:43.103');
INSERT INTO `user_emoji` VALUES (12824306820096, 12821144314880, 'https://cdn.hulaspark.com/chat/3069193298/0f1ae5db9dd356569e6241592b22c16f.ico', 0, '2025-04-01 09:19:13.526', '2025-04-01 09:19:13.526');
INSERT INTO `user_emoji` VALUES (12943123063808, 11406854366208, 'https://cdn.hulaspark.com/chat/2439646234/ae4e6c0e10667c33f0066eaf7444c3a9.png', 0, '2025-04-01 17:11:21.116', '2025-04-01 17:11:21.116');
INSERT INTO `user_emoji` VALUES (13077135270912, 10937855681024, 'https://upload-bbs.miyoushe.com/upload/2023/01/18/838dba51bd47c248d1f02b2e24a28b18_6640243918864203211.png', 1, '2025-04-02 02:03:52.348', '2025-04-02 02:03:59.199');
INSERT INTO `user_emoji` VALUES (13249726687232, 13249152067584, 'https://cdn.hulaspark.com/chat/2439646234/322eed8d06539028c2e9c27212ee232c.png', 0, '2025-04-02 13:29:41.648', '2025-04-02 13:29:41.648');
INSERT INTO `user_emoji` VALUES (13732256199168, 11002917724672, 'https://cdn.hulaspark.com/chat/2439646234/c64611c3bbbcd197552b7f84ac4b709b.jpg', 0, '2025-04-03 21:27:05.658', '2025-04-03 21:27:05.658');
INSERT INTO `user_emoji` VALUES (14725861651456, 14323925693440, 'https://cdn.hulaspark.com/chat/2439646234/34c18e6c846bf18525a2eb180179ff5a.jpg', 0, '2025-04-06 15:15:19.721', '2025-04-06 15:15:19.721');
INSERT INTO `user_emoji` VALUES (14726067172352, 14323925693440, 'https://cdn.hulaspark.com/chat/2439646234/322eed8d06539028c2e9c27212ee232c.png', 0, '2025-04-06 15:16:08.319', '2025-04-06 15:16:08.319');
INSERT INTO `user_emoji` VALUES (17994658920448, 10937855681024, 'https://cdn.hulaspark.com/chat/2439646234/ae779d7e2427a7efc292f518143146b9.png', 1, '2025-04-15 15:44:21.396', '2025-04-15 16:07:02.008');
INSERT INTO `user_emoji` VALUES (18328189974528, 10937855681024, 'https://cdn.hulaspark.com/chat/2439646234/89f9617af96bc484d1302aa9965d45d3.jpg', 0, '2025-04-16 13:49:41.795', '2025-04-16 13:49:41.795');
INSERT INTO `user_emoji` VALUES (18353401935872, 18344988162048, 'https://bbs-static.miyoushe.com/static/2025/02/26/8ab2ac42f408d8e7f0ae5e40fdd4d120_8277914666870153447.png', 0, '2025-04-16 15:29:52.042', '2025-04-16 15:29:52.042');
INSERT INTO `user_emoji` VALUES (18462973933568, 18344988162048, 'https://cdn.hulaspark.com/chat/2439646234/89f9617af96bc484d1302aa9965d45d3.jpg', 0, '2025-04-16 22:45:16.885', '2025-04-16 22:45:16.885');
INSERT INTO `user_emoji` VALUES (18607845194240, 18344988162048, 'https://cdn.hulaspark.com/chat/67956761/0d7a38aff2095ffa86d4b6c650a05047.jpg', 0, '2025-04-17 08:20:56.907', '2025-04-17 08:20:56.907');
INSERT INTO `user_emoji` VALUES (18682617051648, 10937855681024, 'https://cdn.hulaspark.com/chat/2439646234/1fefca23dfc273f4b778867122b053db.jpg', 0, '2025-04-17 13:18:03.703', '2025-04-17 13:18:03.703');
INSERT INTO `user_emoji` VALUES (18682793212416, 18344988162048, 'https://cdn.hulaspark.com/chat/2439646234/1fefca23dfc273f4b778867122b053db.jpg', 0, '2025-04-17 13:18:45.128', '2025-04-17 13:18:45.128');
INSERT INTO `user_emoji` VALUES (18695812332032, 10937855681024, 'https://cdn.hulaspark.com/chat/67956761/0d7a38aff2095ffa86d4b6c650a05047.jpg', 0, '2025-04-17 14:10:29.694', '2025-04-17 14:10:29.694');
INSERT INTO `user_emoji` VALUES (18851517480448, 10937855681024, 'https://cdn.hulaspark.com/chat/2439646234/414d8351a445105d5b5ec163f7d6c8d9.png', 0, '2025-04-18 00:29:12.454', '2025-04-18 00:29:12.454');
INSERT INTO `user_emoji` VALUES (18851584589312, 10937855681024, 'https://cdn.hulaspark.com/chat/2439646234/b4d9d7ef33551c8440541e1f80f17eb1.png', 0, '2025-04-18 00:29:28.373', '2025-04-18 00:29:28.373');
INSERT INTO `user_emoji` VALUES (19013899959808, 18344988162048, 'https://cdn.hulaspark.com/chat/2439646234/414d8351a445105d5b5ec163f7d6c8d9.png', 0, '2025-04-18 11:14:27.525', '2025-04-18 11:14:27.525');
INSERT INTO `user_emoji` VALUES (19024851287552, 18344988162048, 'https://cdn.hulaspark.com/chat/2439646234/c64611c3bbbcd197552b7f84ac4b709b.jpg', 0, '2025-04-18 11:57:58.643', '2025-04-18 11:57:58.643');
INSERT INTO `user_emoji` VALUES (19064231607808, 10937855681024, 'https://cdn.hulaspark.com/chat/2439646234/1d29c7156617203491e1180d8e3c0271.png', 0, '2025-04-18 14:34:27.304', '2025-04-18 14:34:27.304');
INSERT INTO `user_emoji` VALUES (19064445517312, 18344988162048, 'https://cdn.hulaspark.com/chat/2439646234/1d29c7156617203491e1180d8e3c0271.png', 0, '2025-04-18 14:35:18.783', '2025-04-18 14:35:18.783');
INSERT INTO `user_emoji` VALUES (19069583539712, 19059882114560, 'https://cdn.hulaspark.com/chat/2439646234/1d29c7156617203491e1180d8e3c0271.png', 0, '2025-04-18 14:55:43.306', '2025-04-18 14:55:43.306');
INSERT INTO `user_emoji` VALUES (19123148996608, 18344988162048, 'https://cdn.hulaspark.com/chat/hi/98037c2c93c8271ba30682ddad9179e1.jpg', 0, '2025-04-18 18:28:34.335', '2025-04-18 18:28:34.335');
INSERT INTO `user_emoji` VALUES (19185258250240, 10937855681024, 'https://cdn.hulaspark.com/chat/hi/98037c2c93c8271ba30682ddad9179e1.jpg', 0, '2025-04-18 22:35:22.450', '2025-04-18 22:35:22.450');
INSERT INTO `user_emoji` VALUES (19193592332288, 10937855681024, 'https://cdn.hulaspark.com/chat/2439646234/a89559bc2abf4495de12fbd8f7bc4c11.jpg', 0, '2025-04-18 23:08:29.383', '2025-04-18 23:08:29.383');
INSERT INTO `user_emoji` VALUES (19195794341888, 10937855681024, 'blob:http://127.0.0.1:6130/fe077b81-2630-4fea-be34-295ce093dd5b', 1, '2025-04-18 23:17:14.381', '2025-04-18 23:17:31.417');
INSERT INTO `user_emoji` VALUES (19195882422272, 10937855681024, 'https://cdn.hulaspark.com/chat/2439646234/ed77cc7bbdf2bd358d81d8fd8e4b0370.jpg', 0, '2025-04-18 23:17:35.068', '2025-04-18 23:17:35.068');
INSERT INTO `user_emoji` VALUES (20621085953536, 10937855681024, 'https://cdn.hulaspark.com/chat/2439646234/c5ef2eabb9845e67bb59d77df95587f0.jpg', 0, '2025-04-22 21:40:50.272', '2025-04-22 21:40:50.272');
INSERT INTO `user_emoji` VALUES (20833221266944, 15703767823360, 'https://bbs-static.miyoushe.com/static/2024/12/06/df3e0b5c84061ddda5bf56a336c5711e_4759047608537743753.gif', 0, '2025-04-23 11:43:47.787', '2025-04-23 11:43:47.787');
INSERT INTO `user_emoji` VALUES (20868013018624, 10937855681024, 'https://cdn.hulaspark.com/chat/hi/d1ff8ff45782de5aba7ea26d11e5d293.jpg', 0, '2025-04-23 14:02:02.617', '2025-04-23 14:02:02.617');
-- ----------------------------
-- Table structure for user_friend
@@ -1022,23 +993,11 @@ CREATE TABLE `user_friend` (
INDEX `idx_uid_friend_uid`(`uid` ASC, `friend_uid` ASC) USING BTREE,
INDEX `idx_create_time`(`create_time` ASC) USING BTREE,
INDEX `idx_update_time`(`update_time` ASC) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 11794085094402 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户联系人表' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 19063229169154 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '用户联系人表' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of user_friend
-- ----------------------------
INSERT INTO `user_friend` VALUES (11229133317120, 10937855681024, 11225442329600, 0, 0, 0, 0, NULL, '2025-03-27 23:40:34.527', '2025-03-27 23:40:34.527');
INSERT INTO `user_friend` VALUES (11229133317121, 11225442329600, 10937855681024, 0, 0, 0, 0, NULL, '2025-03-27 23:40:34.529', '2025-03-27 23:40:34.529');
INSERT INTO `user_friend` VALUES (11367692149760, 11003672699392, 11049889735168, 0, 0, 0, 0, NULL, '2025-03-28 08:51:09.397', '2025-03-28 08:51:09.397');
INSERT INTO `user_friend` VALUES (11367692149761, 11049889735168, 11003672699392, 0, 0, 0, 0, NULL, '2025-03-28 08:51:09.399', '2025-03-28 08:51:09.399');
INSERT INTO `user_friend` VALUES (11515000300544, 10937855681024, 11419261117440, 0, 0, 0, 0, NULL, '2025-03-28 18:36:30.828', '2025-03-28 18:36:30.828');
INSERT INTO `user_friend` VALUES (11515000300545, 11419261117440, 10937855681024, 0, 0, 0, 0, NULL, '2025-03-28 18:36:30.830', '2025-03-28 18:36:30.830');
INSERT INTO `user_friend` VALUES (11515012883456, 10937855681024, 11406854366208, 0, 0, 0, 0, NULL, '2025-03-28 18:36:33.214', '2025-03-28 18:36:33.214');
INSERT INTO `user_friend` VALUES (11515012883457, 11406854366208, 10937855681024, 0, 0, 0, 0, NULL, '2025-03-28 18:36:33.215', '2025-03-28 18:36:33.215');
INSERT INTO `user_friend` VALUES (11794076705792, 10937855681024, 11792579339264, 0, 0, 0, 0, NULL, '2025-03-29 13:05:27.789', '2025-03-29 13:05:27.789');
INSERT INTO `user_friend` VALUES (11794076705793, 11792579339264, 10937855681024, 0, 0, 0, 0, NULL, '2025-03-29 13:05:27.791', '2025-03-29 13:05:27.791');
INSERT INTO `user_friend` VALUES (11794085094400, 10937855681024, 11793372062720, 0, 0, 0, 0, NULL, '2025-03-29 13:05:29.167', '2025-03-29 13:05:29.167');
INSERT INTO `user_friend` VALUES (11794085094401, 11793372062720, 10937855681024, 0, 0, 0, 0, NULL, '2025-03-29 13:05:29.169', '2025-03-29 13:05:29.169');
-- ----------------------------
-- Table structure for user_role
@@ -1149,20 +1108,12 @@ CREATE TABLE `worker_node` (
`modified` timestamp NULL DEFAULT NULL COMMENT '修改时间',
`created` timestamp NULL DEFAULT NULL COMMENT '创建时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 89 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'DB;WorkerID Assigner for UID Generator' ROW_FORMAT = DYNAMIC;
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci COMMENT = 'DB;WorkerID Assigner for UID Generator' ROW_FORMAT = DYNAMIC;
-- ----------------------------
-- Records of worker_node
-- ----------------------------
INSERT INTO `worker_node` VALUES (80, '172.19.0.2', '1743020152589-45802', 2, '2025-03-27', '2025-03-27 04:15:53', '2025-03-27 04:15:53');
INSERT INTO `worker_node` VALUES (81, '172.24.0.5', '1743020334526-47834', 2, '2025-03-27', '2025-03-27 04:18:55', '2025-03-27 04:18:55');
INSERT INTO `worker_node` VALUES (82, '172.19.0.2', '1743057680832-8203', 2, '2025-03-27', '2025-03-27 14:41:21', '2025-03-27 14:41:21');
INSERT INTO `worker_node` VALUES (83, '192.168.1.105', '1743508524841-32864', 2, '2025-04-01', '2025-04-01 19:55:25', '2025-04-01 19:55:25');
INSERT INTO `worker_node` VALUES (84, '192.168.1.105', '1743508546813-7663', 2, '2025-04-01', '2025-04-01 19:55:47', '2025-04-01 19:55:47');
INSERT INTO `worker_node` VALUES (85, '192.168.1.105', '1744980598049-35008', 2, '2025-04-18', '2025-04-18 20:49:58', '2025-04-18 20:49:58');
INSERT INTO `worker_node` VALUES (86, '192.168.1.105', '1744991860881-36094', 2, '2025-04-18', '2025-04-18 23:57:41', '2025-04-18 23:57:41');
INSERT INTO `worker_node` VALUES (87, '192.168.1.105', '1744992447832-97687', 2, '2025-04-19', '2025-04-19 00:07:28', '2025-04-19 00:07:28');
INSERT INTO `worker_node` VALUES (88, '192.168.1.105', '1745327720407-92535', 2, '2025-04-22', '2025-04-22 21:15:20', '2025-04-22 21:15:20');
INSERT INTO `worker_node` VALUES (1, '192.168.1.105', '1745740699869-66796', 2, '2025-04-27', '2025-04-27 15:58:20', '2025-04-27 15:58:20');
-- ----------------------------
-- Table structure for wx_msg