feat:单聊群聊表结构,接口定义

This commit is contained in:
zhongzb
2023-07-17 00:36:31 +08:00
parent 703d7ffc81
commit f0a2fa51ff
41 changed files with 1057 additions and 32 deletions

View File

@@ -0,0 +1,20 @@
package com.abin.mallchat.common.chat.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* <p>
* 会话列表 前端控制器
* </p>
*
* @author <a href="https://github.com/zongzibinbin">abin</a>
* @since 2023-07-16
*/
@Controller
@RequestMapping("/contact")
public class ContactController {
}

View File

@@ -0,0 +1,20 @@
package com.abin.mallchat.common.chat.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* <p>
* 群成员表 前端控制器
* </p>
*
* @author <a href="https://github.com/zongzibinbin">abin</a>
* @since 2023-07-16
*/
@Controller
@RequestMapping("/groupMember")
public class GroupMemberController {
}

View File

@@ -0,0 +1,20 @@
package com.abin.mallchat.common.chat.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* <p>
* 房间表 前端控制器
* </p>
*
* @author <a href="https://github.com/zongzibinbin">abin</a>
* @since 2023-07-16
*/
@Controller
@RequestMapping("/room")
public class RoomController {
}

View File

@@ -0,0 +1,20 @@
package com.abin.mallchat.common.chat.dao;
import com.abin.mallchat.common.chat.domain.entity.Contact;
import com.abin.mallchat.common.chat.mapper.ContactMapper;
import com.abin.mallchat.common.chat.service.IContactService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 会话列表 服务实现类
* </p>
*
* @author <a href="https://github.com/zongzibinbin">abin</a>
* @since 2023-07-16
*/
@Service
public class ContactDao extends ServiceImpl<ContactMapper, Contact> implements IContactService {
}

View File

@@ -0,0 +1,20 @@
package com.abin.mallchat.common.chat.dao;
import com.abin.mallchat.common.chat.domain.entity.GroupMember;
import com.abin.mallchat.common.chat.mapper.GroupMemberMapper;
import com.abin.mallchat.common.chat.service.IGroupMemberService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 群成员表 服务实现类
* </p>
*
* @author <a href="https://github.com/zongzibinbin">abin</a>
* @since 2023-07-16
*/
@Service
public class GroupMemberDao extends ServiceImpl<GroupMemberMapper, GroupMember> implements IGroupMemberService {
}

View File

@@ -1,31 +1,20 @@
package com.abin.mallchat.common.chat.dao;
import com.abin.mallchat.common.chat.domain.entity.Room;
import com.abin.mallchat.common.chat.domain.enums.RoomTypeEnum;
import com.abin.mallchat.common.chat.mapper.RoomMapper;
import com.abin.mallchat.common.common.domain.vo.request.CursorPageBaseReq;
import com.abin.mallchat.common.common.domain.vo.response.CursorPageBaseResp;
import com.abin.mallchat.common.common.utils.CursorUtils;
import com.abin.mallchat.common.chat.service.IRoomService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* <p>
* 会话表 服务实现类
* 房间表 服务实现类
* </p>
*
* @author <a href="https://github.com/zongzibinbin">abin</a>
* @since 2023-03-25
* @since 2023-07-16
*/
@Service
public class RoomDao extends ServiceImpl<RoomMapper, Room> {
@Autowired
private CursorUtils cursorUtils;
public class RoomDao extends ServiceImpl<RoomMapper, Room> implements IRoomService {
public CursorPageBaseResp<Room> getCursorPage(CursorPageBaseReq request) {
return cursorUtils.getCursorPageByMysql(this, request, wrapper -> {
wrapper.ne(Room::getType, RoomTypeEnum.GROUP.getStatus());
}, Room::getActiveTime);
}
}

View File

@@ -0,0 +1,83 @@
package com.abin.mallchat.common.chat.domain.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 会话列表
* </p>
*
* @author <a href="https://github.com/zongzibinbin">abin</a>
* @since 2023-07-16
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("contact")
public class Contact implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* uid
*/
@TableField("uid")
private Long uid;
/**
* 聊天类型 1单聊 2普通群聊
*/
@TableField("type")
private Integer type;
/**
* 是否全员展示 0否 1是
*/
@TableField("hot_flag")
private Integer hotFlag;
/**
* 聊天对象type=1:uidtype=2:房间id
*/
@TableField("target_id")
private Long targetId;
/**
* 阅读到的时间
*/
@TableField("read_time")
private LocalDateTime readTime;
/**
* 会话内消息最后更新的时间(只有普通会话需要维护,全员会话不需要维护)
*/
@TableField("active_time")
private LocalDateTime activeTime;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 修改时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}

View File

@@ -0,0 +1,65 @@
package com.abin.mallchat.common.chat.domain.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 群成员表
* </p>
*
* @author <a href="https://github.com/zongzibinbin">abin</a>
* @since 2023-07-16
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("group_member")
public class GroupMember implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 房间id
*/
@TableField("room_id")
private Long roomId;
/**
* 成员uid
*/
@TableField("uid")
private Long uid;
/**
* 成员类型 1群主 2管理员 3普通成员
*/
@TableField("type")
private Integer type;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 修改时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}

View File

@@ -8,15 +8,15 @@ import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.util.Date;
import java.time.LocalDateTime;
/**
* <p>
* 会话
* 房间
* </p>
*
* @author <a href="https://github.com/zongzibinbin">abin</a>
* @since 2023-03-25
* @since 2023-07-16
*/
@Data
@EqualsAndHashCode(callSuper = false)
@@ -32,36 +32,52 @@ public class Room implements Serializable {
private Long id;
/**
* 会话名
* 群名称
*/
@TableField("name")
private String name;
/**
* 会话类型 1大群聊 2沸点
*
* @see com.abin.mallchat.common.chat.domain.enums.RoomTypeEnum
* 群头像
*/
@TableField("avatar")
private String avatar;
/**
* 房间类型 1群聊
*/
@TableField("type")
private Integer type;
/**
* 最后活跃时间-排序
* 是否全员展示 0否 1是
*/
@TableField("hot_flag")
private Integer hotFlag;
/**
* 群最后消息的更新时间(热点群不需要写扩散,更新这里就行)
*/
@TableField("active_time")
private Date activeTime;
private LocalDateTime activeTime;
/**
* 额外信息(根据不同类型房间有不同存储的东西)
*/
@TableField("ext_json")
private String extJson;
/**
* 创建时间
*/
@TableField("create_time")
private Date createTime;
private LocalDateTime createTime;
/**
* 修改时间
*/
@TableField("update_time")
private Date updateTime;
private LocalDateTime updateTime;
}

View File

@@ -0,0 +1,16 @@
package com.abin.mallchat.common.chat.mapper;
import com.abin.mallchat.common.chat.domain.entity.Contact;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 会话列表 Mapper 接口
* </p>
*
* @author <a href="https://github.com/zongzibinbin">abin</a>
* @since 2023-07-16
*/
public interface ContactMapper extends BaseMapper<Contact> {
}

View File

@@ -0,0 +1,16 @@
package com.abin.mallchat.common.chat.mapper;
import com.abin.mallchat.common.chat.domain.entity.GroupMember;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 群成员表 Mapper 接口
* </p>
*
* @author <a href="https://github.com/zongzibinbin">abin</a>
* @since 2023-07-16
*/
public interface GroupMemberMapper extends BaseMapper<GroupMember> {
}

View File

@@ -1,16 +1,15 @@
package com.abin.mallchat.common.chat.mapper;
import com.abin.mallchat.common.chat.domain.entity.Room;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 会话表 Mapper 接口
* 房间表 Mapper 接口
* </p>
*
* @author <a href="https://github.com/zongzibinbin">abin</a>
* @since 2023-03-25
* @since 2023-07-16
*/
public interface RoomMapper extends BaseMapper<Room> {

View File

@@ -0,0 +1,16 @@
package com.abin.mallchat.common.chat.service;
import com.abin.mallchat.common.chat.domain.entity.Contact;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 会话列表 服务类
* </p>
*
* @author <a href="https://github.com/zongzibinbin">abin</a>
* @since 2023-07-16
*/
public interface IContactService extends IService<Contact> {
}

View File

@@ -0,0 +1,16 @@
package com.abin.mallchat.common.chat.service;
import com.abin.mallchat.common.chat.domain.entity.GroupMember;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 群成员表 服务类
* </p>
*
* @author <a href="https://github.com/zongzibinbin">abin</a>
* @since 2023-07-16
*/
public interface IGroupMemberService extends IService<GroupMember> {
}

View File

@@ -5,11 +5,11 @@ import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 会话表 服务类
* 房间表 服务类
* </p>
*
* @author <a href="https://github.com/zongzibinbin">abin</a>
* @since 2023-03-25
* @since 2023-07-16
*/
public interface IRoomService extends IService<Room> {

View File

@@ -0,0 +1,20 @@
package com.abin.mallchat.common.user.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* <p>
* 用户申请表 前端控制器
* </p>
*
* @author <a href="https://github.com/zongzibinbin">abin</a>
* @since 2023-07-16
*/
@Controller
@RequestMapping("/userApply")
public class UserApplyController {
}

View File

@@ -0,0 +1,20 @@
package com.abin.mallchat.common.user.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* <p>
* 用户联系人表 前端控制器
* </p>
*
* @author <a href="https://github.com/zongzibinbin">abin</a>
* @since 2023-07-16
*/
@Controller
@RequestMapping("/userFriend")
public class UserFriendController {
}

View File

@@ -0,0 +1,20 @@
package com.abin.mallchat.common.user.dao;
import com.abin.mallchat.common.user.domain.entity.UserApply;
import com.abin.mallchat.common.user.mapper.UserApplyMapper;
import com.abin.mallchat.common.user.service.IUserApplyService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 用户申请表 服务实现类
* </p>
*
* @author <a href="https://github.com/zongzibinbin">abin</a>
* @since 2023-07-16
*/
@Service
public class UserApplyDao extends ServiceImpl<UserApplyMapper, UserApply> implements IUserApplyService {
}

View File

@@ -0,0 +1,20 @@
package com.abin.mallchat.common.user.dao;
import com.abin.mallchat.common.user.domain.entity.UserFriend;
import com.abin.mallchat.common.user.mapper.UserFriendMapper;
import com.abin.mallchat.common.user.service.IUserFriendService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
/**
* <p>
* 用户联系人表 服务实现类
* </p>
*
* @author <a href="https://github.com/zongzibinbin">abin</a>
* @since 2023-07-16
*/
@Service
public class UserFriendDao extends ServiceImpl<UserFriendMapper, UserFriend> implements IUserFriendService {
}

View File

@@ -58,6 +58,12 @@ public class User implements Serializable {
@TableField("open_id")
private String openId;
/**
* 上下线状态 1在线 2离线
*/
@TableField("active_status")
private Integer activeStatus;
/**
* 最后上下线时间
*/

View File

@@ -0,0 +1,83 @@
package com.abin.mallchat.common.user.domain.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 用户申请表
* </p>
*
* @author <a href="https://github.com/zongzibinbin">abin</a>
* @since 2023-07-16
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("user_apply")
public class UserApply implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 申请人uid
*/
@TableField("uid")
private Long uid;
/**
* 申请类型 1加好友
*/
@TableField("type")
private Integer type;
/**
* 接收人uid
*/
@TableField("target_id")
private Long targetId;
/**
* 申请信息
*/
@TableField("msg")
private String msg;
/**
* 申请状态 1待审批 2同意
*/
@TableField("status")
private Integer status;
/**
* 阅读状态 1未读 2已读
*/
@TableField("read_status")
private Integer readStatus;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 修改时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}

View File

@@ -0,0 +1,59 @@
package com.abin.mallchat.common.user.domain.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serializable;
import java.time.LocalDateTime;
/**
* <p>
* 用户联系人表
* </p>
*
* @author <a href="https://github.com/zongzibinbin">abin</a>
* @since 2023-07-16
*/
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("user_friend")
public class UserFriend implements Serializable {
private static final long serialVersionUID = 1L;
/**
* id
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* uid
*/
@TableField("uid")
private Long uid;
/**
* 好友uid
*/
@TableField("friend_uid")
private Long friendUid;
/**
* 创建时间
*/
@TableField("create_time")
private LocalDateTime createTime;
/**
* 修改时间
*/
@TableField("update_time")
private LocalDateTime updateTime;
}

View File

@@ -0,0 +1,16 @@
package com.abin.mallchat.common.user.mapper;
import com.abin.mallchat.common.user.domain.entity.UserApply;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 用户申请表 Mapper 接口
* </p>
*
* @author <a href="https://github.com/zongzibinbin">abin</a>
* @since 2023-07-16
*/
public interface UserApplyMapper extends BaseMapper<UserApply> {
}

View File

@@ -0,0 +1,16 @@
package com.abin.mallchat.common.user.mapper;
import com.abin.mallchat.common.user.domain.entity.UserFriend;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
/**
* <p>
* 用户联系人表 Mapper 接口
* </p>
*
* @author <a href="https://github.com/zongzibinbin">abin</a>
* @since 2023-07-16
*/
public interface UserFriendMapper extends BaseMapper<UserFriend> {
}

View File

@@ -0,0 +1,16 @@
package com.abin.mallchat.common.user.service;
import com.abin.mallchat.common.user.domain.entity.UserApply;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 用户申请表 服务类
* </p>
*
* @author <a href="https://github.com/zongzibinbin">abin</a>
* @since 2023-07-16
*/
public interface IUserApplyService extends IService<UserApply> {
}

View File

@@ -0,0 +1,16 @@
package com.abin.mallchat.common.user.service;
import com.abin.mallchat.common.user.domain.entity.UserFriend;
import com.baomidou.mybatisplus.extension.service.IService;
/**
* <p>
* 用户联系人表 服务类
* </p>
*
* @author <a href="https://github.com/zongzibinbin">abin</a>
* @since 2023-07-16
*/
public interface IUserFriendService extends IService<UserFriend> {
}

View File

@@ -0,0 +1,5 @@
<?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="com.abin.mallchat.common.chat.mapper.ContactMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?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="com.abin.mallchat.common.chat.mapper.GroupMemberMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?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="com.abin.mallchat.common.user.mapper.UserApplyMapper">
</mapper>

View File

@@ -0,0 +1,5 @@
<?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="com.abin.mallchat.common.user.mapper.UserFriendMapper">
</mapper>