用uniapp 及socket.io做一个简单聊天app1
创始人
2025-02-11 02:34:41
0

####相关的表结构,用的是mysql

  1. 用户表(Users)
    存储用户的基本信息。
CREATE TABLE Users (     id INT AUTO_INCREMENT PRIMARY KEY,     username VARCHAR(50) NOT NULL UNIQUE,     password VARCHAR(100) NOT NULL,     email VARCHAR(100) UNIQUE,     created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); 
  1. 好友关系表(Friends)
    存储用户之间的好友关系。
CREATE TABLE Friends (     user_id INT,     friend_id INT,     status ENUM('pending', 'accepted', 'blocked') DEFAULT 'pending',     created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     PRIMARY KEY (user_id, friend_id),     FOREIGN KEY (user_id) REFERENCES Users(id),     FOREIGN KEY (friend_id) REFERENCES Users(id) ); 
  1. 群组表(Groups)
    存储群组的信息。
CREATE TABLE Groups (     id INT AUTO_INCREMENT PRIMARY KEY,     name VARCHAR(100) NOT NULL,     description TEXT,     owner_id INT,     created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     FOREIGN KEY (owner_id) REFERENCES Users(id) );  
  1. 群组成员表(GroupMembers)
    存储群组中的成员信息。
CREATE TABLE GroupMembers (     group_id INT,     user_id INT,     role ENUM('member', 'admin') DEFAULT 'member',     joined_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     PRIMARY KEY (group_id, user_id),     FOREIGN KEY (group_id) REFERENCES Groups(id),     FOREIGN KEY (user_id) REFERENCES Users(id) );  
  1. 聊天信息表(Messages)
    存储聊天消息,包括私聊和群聊。
CREATE TABLE Messages (     id INT AUTO_INCREMENT PRIMARY KEY,     sender_id INT,     receiver_id INT, -- 可以是用户ID(私聊)或群组ID(群聊)     type ENUM('private', 'group') NOT NULL,     content TEXT NOT NULL,     created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     FOREIGN KEY (sender_id) REFERENCES Users(id),     FOREIGN KEY (receiver_id) REFERENCES Groups(id) -- 如果是群聊消息 ); 
  1. 黑名单表(Blacklists)
    存储用户之间的拉黑关系。
CREATE TABLE Blacklists (     user_id INT,     blocked_user_id INT,     created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     PRIMARY KEY (user_id, blocked_user_id),     FOREIGN KEY (user_id) REFERENCES Users(id),     FOREIGN KEY (blocked_user_id) REFERENCES Users(id) );  
  1. 邀请表(Invites)
    存储群组邀请信息。
CREATE TABLE Invites (     id INT AUTO_INCREMENT PRIMARY KEY,     inviter_id INT,     invitee_id INT,     group_id INT,     status ENUM('pending', 'accepted', 'declined') DEFAULT 'pending',     created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     FOREIGN KEY (inviter_id) REFERENCES Users(id),     FOREIGN KEY (invitee_id) REFERENCES Users(id),     FOREIGN KEY (group_id) REFERENCES Groups(id) );  

数据库表关系描述
Users表 存储用户的基本信息。
Friends表 记录用户之间的好友关系,并支持拉黑功能。
Groups表 存储群组的信息,每个群组由一个用户创建(owner_id)。
GroupMembers表 存储群组成员及其角色(普通成员或管理员)。
Messages表 存储所有的聊天消息,可以是私聊消息或群聊消息。
Blacklists表 存储用户之间的拉黑关系。
Invites表 存储群组邀请信息,并记录邀请状态(待处理、接受、拒绝)。
示例流程
添加好友

用户A向用户B发送好友请求,在Friends表中插入一条记录,状态为pending。
用户B接受好友请求,将状态更新为accepted。
拉黑好友

用户A将用户B拉黑,在Blacklists表中插入一条记录。
在Friends表中将对应记录的状态更新为blocked。
创建群组

用户A创建一个群组,在Groups表中插入一条记录。
在GroupMembers表中插入一条记录,将用户A设为管理员。
邀请加入群组

用户A邀请用户B加入群组,在Invites表中插入一条记录,状态为pending。
用户B接受邀请,将状态更新为accepted,并在GroupMembers表中插入一条记录。
发送消息

用户A发送一条私聊消息给用户B,在Messages表中插入一条记录,type为private。
用户A在群组中发送一条消息,在Messages表中插入一条记录,type为group。
以上设计涵盖了基本的好友、群组、聊天消息以及拉黑和邀请功能。如果需要更详细的业务逻辑实现,还需要在应用层进行更多的逻辑处理。

最终的sql:

-- 创建 Users 表 CREATE TABLE Users (     id INT AUTO_INCREMENT PRIMARY KEY,     username VARCHAR(50) NOT NULL UNIQUE,     password VARCHAR(100) NOT NULL,     email VARCHAR(100) UNIQUE,     avatar_url VARCHAR(255), -- 用户头像字段     brief TEXT, -- 简介字段     created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );  -- 创建 Friends 表 CREATE TABLE Friends (     user_id INT,     group_friend_id INT,     type ENUM('user', 'group') NOT NULL, -- 用于区分用户或群组     status ENUM('pending', 'accepted', 'blocked') DEFAULT 'pending',     created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     PRIMARY KEY (user_id, group_friend_id, type),     FOREIGN KEY (user_id) REFERENCES Users(id),     FOREIGN KEY (group_friend_id) REFERENCES Users(id) -- 或参考 ChatGroups(id) 根据 type );  -- 创建 ChatGroups 表 CREATE TABLE ChatGroups (     id INT AUTO_INCREMENT PRIMARY KEY,     name VARCHAR(100) NOT NULL,     description TEXT,     avatar_url VARCHAR(255), -- 群组头像字段     owner_id INT,     created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     FOREIGN KEY (owner_id) REFERENCES Users(id) );  -- 创建 Messages 表 CREATE TABLE Messages (     id INT AUTO_INCREMENT PRIMARY KEY,     sender_id INT,     receiver_id INT, -- 可以是用户ID(私聊)或群组ID(群聊)     receiver_type ENUM('user', 'group') NOT NULL, -- 用于区分用户或群组     content_type ENUM('text', 'audio', 'video', 'image') NOT NULL,     content TEXT NOT NULL,     sender_avatar VARCHAR(255), -- 发送者头像     receiver_avatar VARCHAR(255), -- 接收者头像     is_retracted BOOLEAN DEFAULT 0, -- 是否被撤回     retracted_at TIMESTAMP NULL DEFAULT NULL, -- 撤回时间     created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     FOREIGN KEY (sender_id) REFERENCES Users(id),     FOREIGN KEY (receiver_id) REFERENCES Users(id) -- 或参考 ChatGroups(id) 根据 receiver_type );  -- 创建 Blacklists 表 CREATE TABLE Blacklists (     user_id INT,     blocked_user_id INT,     created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     PRIMARY KEY (user_id, blocked_user_id),     FOREIGN KEY (user_id) REFERENCES Users(id),     FOREIGN KEY (blocked_user_id) REFERENCES Users(id) );  -- 创建 Invites 表 CREATE TABLE Invites (     id INT AUTO_INCREMENT PRIMARY KEY,     inviter_id INT,     invitee_id INT,     group_id INT,     group_avatar VARCHAR(255), -- 群组头像字段     inviter_avatar VARCHAR(255), -- 邀请人头像字段     invitee_avatar VARCHAR(255), -- 被邀请人头像字段     status ENUM('pending', 'accepted', 'declined') DEFAULT 'pending',     created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,     FOREIGN KEY (inviter_id) REFERENCES Users(id),     FOREIGN KEY (invitee_id) REFERENCES Users(id),     FOREIGN KEY (group_id) REFERENCES ChatGroups(id) );  

相关内容

热门资讯

黑科技私人局!wepoke到底... 黑科技私人局!wepoke到底有没有挂(黑科技ai)太坑了是有挂(安装教程黑科技规律)-哔哩哔哩;1...
黑科技教程(WePoKer)有... 此外,数据分析德州()辅助神器app还具备辅助透视行为开挂功能,通过对客户透明挂的深入研究,你可以了...
黑科技软件"微扑克w... 黑科技软件"微扑克wpk辅助存在吗"wpk有平衡机制吗(一贯是真的有挂)-哔哩哔哩;1、微扑克wpk...
黑科技有挂!impoker有挂... 黑科技有挂!impoker有挂吗(ai代打)太坑了有挂(攻略方法黑科技方法)-哔哩哔哩黑科技有挂!i...
黑科技ai代打(德扑)辅助器(... 黑科技ai代打(德扑)辅助器(透视)ai智能工具(最初真的有挂);大神普及一款德州ai内幕,确定了真...
黑科技安装"wepo... 黑科技安装"wepoke的机制"线上德州辅助工具有哪些(原来有挂)-哔哩哔哩1、让任何用户在无需线上...
黑科技线上!微扑克ai操作(黑... 黑科技线上!微扑克ai操作(黑科技)太坑了存在有挂(透视教程黑科技规律)-哔哩哔哩;1、每一步都需要...
黑科技真的(微扑克)透明挂(透... 黑科技真的(微扑克)透明挂(透视)ai辅助器苹果版(总是真的是有挂);小薇(透视辅助)致您一封信;亲...
黑科技软件"德扑之星... 黑科技软件"德扑之星有规律吗"德州ai辅助工具(都是是真的有挂)-哔哩哔哩1、打开软件启动之后找到中...
黑科技模拟器!微扑克辅助钻石(... 黑科技模拟器!微扑克辅助钻石(黑科技)太坑了有挂(解密教程黑科技辅助)-哔哩哔哩1、该软件可以轻松地...