【网站搭建实操(一)环境部署】

网站搭建实操(一)环境部署

前提

首先要准备服务器,域名

我的服务器是阿里云,域名是 lovemeblog.com

所以服务器相关操作以阿里云服务器为主

直接在服务器上安装了宝塔,方便我们运维安装一些基本软件

安装环境

1.安装docker

在服务器实例页面点击安装即可

2.安装mysql

安装成功后可以登录宝塔页面

选择需要的软件,安装

安装mysql后使用可视化工具可以在本地连接
推荐mysql workbench ,因为这是官方免费软件,navicat需要使用正版,破解版商用会收到律师函。

在宝塔页面查看数据库连接信息

IP在实例页面复制公网ip

使用工具链接后创建forum数据库,注意编码

安装java

进入服务器

输入命令

bash 复制代码
# 安装JDK 17(推荐)
# 方式A:使用yum安装(CentOS)
yum install -y java-17-openjdk java-17-openjdk-devel

# 方式B:使用apt安装(Ubuntu)
apt update
apt install -y openjdk-17-jdk

我的是ubantu,使用apt命令

安装后验证

bash 复制代码
java -version

显示版本说明安装成功

论坛搭建

架构

架构如下

数据库表设计

1. 统一认证中心(OSS)数据库

sql 复制代码
-- =====================================================
-- 统一认证中心数据库 (oauth_center)
-- =====================================================

-- 用户基础表
CREATE TABLE `uc_user` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '用户ID',
    `username` VARCHAR(50) NOT NULL COMMENT '用户名',
    `password` VARCHAR(255) NOT NULL COMMENT '密码(加密)',
    `email` VARCHAR(100) COMMENT '邮箱',
    `phone` VARCHAR(20) COMMENT '手机号',
    `avatar` VARCHAR(500) COMMENT '头像URL',
    `nickname` VARCHAR(100) COMMENT '昵称',
    `real_name` VARCHAR(50) COMMENT '真实姓名',
    `id_card` VARCHAR(18) COMMENT '身份证号',
    `gender` TINYINT DEFAULT 0 COMMENT '性别 0:未知 1:男 2:女',
    `birthday` DATE COMMENT '生日',
    `status` TINYINT DEFAULT 1 COMMENT '状态 0:禁用 1:启用 2:锁定',
    `register_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间',
    `last_login_time` DATETIME COMMENT '最后登录时间',
    
    -- 公共字段
    `created_by` BIGINT COMMENT '创建人ID',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updated_by` BIGINT COMMENT '更新人ID',
    `updated_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除 0:未删除 1:已删除',
    
    UNIQUE KEY `uk_username` (`username`),
    UNIQUE KEY `uk_email` (`email`),
    UNIQUE KEY `uk_phone` (`phone`),
    KEY `idx_status` (`status`),
    KEY `idx_created_time` (`created_time`),
    KEY `idx_is_deleted` (`is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户基础表';

-- 系统表
CREATE TABLE `uc_system` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '系统ID',
    `system_code` VARCHAR(50) NOT NULL COMMENT '系统编码',
    `system_name` VARCHAR(100) NOT NULL COMMENT '系统名称',
    `system_type` TINYINT NOT NULL COMMENT '系统类型 1:论坛 2:后台管理 3:其他业务系统',
    `client_id` VARCHAR(100) NOT NULL COMMENT 'OAuth2客户端ID',
    `client_secret` VARCHAR(255) NOT NULL COMMENT 'OAuth2客户端密钥',
    `redirect_uri` VARCHAR(500) COMMENT '回调地址',
    `scope` VARCHAR(200) COMMENT '授权范围',
    `grant_types` VARCHAR(200) COMMENT '授权类型',
    `logo` VARCHAR(500) COMMENT '系统Logo',
    `homepage` VARCHAR(200) COMMENT '系统首页',
    `status` TINYINT DEFAULT 1 COMMENT '状态 0:禁用 1:启用',
    `sort_order` INT DEFAULT 0 COMMENT '排序',
    `description` VARCHAR(500) COMMENT '描述',
    
    -- 公共字段
    `created_by` BIGINT COMMENT '创建人ID',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updated_by` BIGINT COMMENT '更新人ID',
    `updated_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除 0:未删除 1:已删除',
    
    UNIQUE KEY `uk_system_code` (`system_code`),
    UNIQUE KEY `uk_client_id` (`client_id`),
    KEY `idx_status` (`status`),
    KEY `idx_is_deleted` (`is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统表';

-- 角色表
CREATE TABLE `uc_role` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '角色ID',
    `role_code` VARCHAR(50) NOT NULL COMMENT '角色编码',
    `role_name` VARCHAR(100) NOT NULL COMMENT '角色名称',
    `system_id` BIGINT NOT NULL COMMENT '所属系统ID',
    `role_type` TINYINT DEFAULT 1 COMMENT '角色类型 1:系统角色 2:自定义角色',
    `data_scope` TINYINT DEFAULT 1 COMMENT '数据权限范围 1:全部 2:本部门 3:本部门及子部门 4:本人',
    `status` TINYINT DEFAULT 1 COMMENT '状态 0:禁用 1:启用',
    `sort_order` INT DEFAULT 0 COMMENT '排序',
    `description` VARCHAR(500) COMMENT '描述',
    
    -- 公共字段
    `created_by` BIGINT COMMENT '创建人ID',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updated_by` BIGINT COMMENT '更新人ID',
    `updated_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除 0:未删除 1:已删除',
    
    UNIQUE KEY `uk_role_code_system` (`role_code`, `system_id`),
    KEY `idx_system_id` (`system_id`),
    KEY `idx_status` (`status`),
    KEY `idx_is_deleted` (`is_deleted`),
    FOREIGN KEY (`system_id`) REFERENCES `uc_system`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色表';

-- 权限表
CREATE TABLE `uc_permission` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '权限ID',
    `permission_code` VARCHAR(100) NOT NULL COMMENT '权限编码',
    `permission_name` VARCHAR(100) NOT NULL COMMENT '权限名称',
    `system_id` BIGINT NOT NULL COMMENT '所属系统ID',
    `parent_id` BIGINT DEFAULT 0 COMMENT '父权限ID',
    `permission_type` TINYINT NOT NULL COMMENT '权限类型 1:菜单 2:按钮 3:API',
    `url` VARCHAR(500) COMMENT 'URL路径',
    `method` VARCHAR(10) COMMENT '请求方法 GET/POST/PUT/DELETE',
    `icon` VARCHAR(100) COMMENT '图标',
    `sort_order` INT DEFAULT 0 COMMENT '排序',
    `status` TINYINT DEFAULT 1 COMMENT '状态 0:禁用 1:启用',
    
    -- 公共字段
    `created_by` BIGINT COMMENT '创建人ID',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updated_by` BIGINT COMMENT '更新人ID',
    `updated_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除 0:未删除 1:已删除',
    
    UNIQUE KEY `uk_permission_code_system` (`permission_code`, `system_id`),
    KEY `idx_system_id` (`system_id`),
    KEY `idx_parent_id` (`parent_id`),
    KEY `idx_status` (`status`),
    KEY `idx_is_deleted` (`is_deleted`),
    FOREIGN KEY (`system_id`) REFERENCES `uc_system`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='权限表';

-- 角色权限关联表
CREATE TABLE `uc_role_permission` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
    `role_id` BIGINT NOT NULL COMMENT '角色ID',
    `permission_id` BIGINT NOT NULL COMMENT '权限ID',
    
    -- 公共字段
    `created_by` BIGINT COMMENT '创建人ID',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    
    UNIQUE KEY `uk_role_permission` (`role_id`, `permission_id`),
    KEY `idx_role_id` (`role_id`),
    KEY `idx_permission_id` (`permission_id`),
    FOREIGN KEY (`role_id`) REFERENCES `uc_role`(`id`) ON DELETE CASCADE,
    FOREIGN KEY (`permission_id`) REFERENCES `uc_permission`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='角色权限关联表';

-- 用户角色关联表
CREATE TABLE `uc_user_role` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
    `user_id` BIGINT NOT NULL COMMENT '用户ID',
    `role_id` BIGINT NOT NULL COMMENT '角色ID',
    `system_id` BIGINT NOT NULL COMMENT '系统ID',
    
    -- 公共字段
    `created_by` BIGINT COMMENT '创建人ID',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    
    UNIQUE KEY `uk_user_role_system` (`user_id`, `role_id`, `system_id`),
    KEY `idx_user_id` (`user_id`),
    KEY `idx_role_id` (`role_id`),
    KEY `idx_system_id` (`system_id`),
    FOREIGN KEY (`user_id`) REFERENCES `uc_user`(`id`) ON DELETE CASCADE,
    FOREIGN KEY (`role_id`) REFERENCES `uc_role`(`id`) ON DELETE CASCADE,
    FOREIGN KEY (`system_id`) REFERENCES `uc_system`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户角色关联表';

-- 用户系统关联表
CREATE TABLE `uc_user_system` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
    `user_id` BIGINT NOT NULL COMMENT '用户ID',
    `system_id` BIGINT NOT NULL COMMENT '系统ID',
    `system_user_id` VARCHAR(100) COMMENT '系统内用户ID',
    `status` TINYINT DEFAULT 1 COMMENT '状态 0:禁用 1:启用',
    
    -- 公共字段
    `created_by` BIGINT COMMENT '创建人ID',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updated_by` BIGINT COMMENT '更新人ID',
    `updated_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    
    UNIQUE KEY `uk_user_system` (`user_id`, `system_id`),
    KEY `idx_user_id` (`user_id`),
    KEY `idx_system_id` (`system_id`),
    KEY `idx_status` (`status`),
    FOREIGN KEY (`user_id`) REFERENCES `uc_user`(`id`) ON DELETE CASCADE,
    FOREIGN KEY (`system_id`) REFERENCES `uc_system`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户系统关联表';

-- OAuth2授权码表
CREATE TABLE `uc_oauth_code` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
    `code` VARCHAR(100) NOT NULL COMMENT '授权码',
    `client_id` VARCHAR(100) NOT NULL COMMENT '客户端ID',
    `user_id` BIGINT NOT NULL COMMENT '用户ID',
    `scope` VARCHAR(200) COMMENT '授权范围',
    `expires_in` INT NOT NULL COMMENT '有效期(秒)',
    
    -- 公共字段
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    
    UNIQUE KEY `uk_code` (`code`),
    KEY `idx_client_id` (`client_id`),
    KEY `idx_user_id` (`user_id`),
    KEY `idx_expires_in` (`expires_in`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='OAuth2授权码表';

-- OAuth2令牌表
CREATE TABLE `uc_oauth_token` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
    `access_token` VARCHAR(500) NOT NULL COMMENT '访问令牌',
    `refresh_token` VARCHAR(500) COMMENT '刷新令牌',
    `client_id` VARCHAR(100) NOT NULL COMMENT '客户端ID',
    `user_id` BIGINT NOT NULL COMMENT '用户ID',
    `scope` VARCHAR(200) COMMENT '授权范围',
    `access_token_expires` DATETIME NOT NULL COMMENT '访问令牌过期时间',
    `refresh_token_expires` DATETIME COMMENT '刷新令牌过期时间',
    
    -- 公共字段
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    
    UNIQUE KEY `uk_access_token` (`access_token`(191)),
    UNIQUE KEY `uk_refresh_token` (`refresh_token`(191)),
    KEY `idx_client_id` (`client_id`),
    KEY `idx_user_id` (`user_id`),
    KEY `idx_access_token_expires` (`access_token_expires`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='OAuth2令牌表';

-- 登录日志表
CREATE TABLE `uc_login_log` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
    `user_id` BIGINT COMMENT '用户ID',
    `username` VARCHAR(50) COMMENT '用户名',
    `login_type` TINYINT NOT NULL COMMENT '登录类型 1:密码登录 2:验证码登录 3:第三方登录',
    `system_id` BIGINT COMMENT '系统ID',
    `client_ip` VARCHAR(50) COMMENT '客户端IP',
    `user_agent` VARCHAR(500) COMMENT '用户代理',
    `login_status` TINYINT NOT NULL COMMENT '登录状态 0:失败 1:成功',
    `fail_reason` VARCHAR(200) COMMENT '失败原因',
    `login_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '登录时间',
    
    KEY `idx_user_id` (`user_id`),
    KEY `idx_login_time` (`login_time`),
    KEY `idx_login_status` (`login_status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='登录日志表';

2.论坛服务数据库

sql 复制代码
-- =====================================================
-- 论坛服务数据库 (forum_service)
-- =====================================================

-- 论坛用户扩展表
CREATE TABLE `forum_user_profile` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
    `user_id` BIGINT NOT NULL COMMENT '统一认证用户ID',
    `forum_username` VARCHAR(50) NOT NULL COMMENT '论坛昵称',
    `signature` VARCHAR(500) COMMENT '个性签名',
    `level` INT DEFAULT 0 COMMENT '用户等级',
    `experience` INT DEFAULT 0 COMMENT '经验值',
    `points` INT DEFAULT 0 COMMENT '积分',
    `post_count` INT DEFAULT 0 COMMENT '发帖数',
    `reply_count` INT DEFAULT 0 COMMENT '回复数',
    `follower_count` INT DEFAULT 0 COMMENT '粉丝数',
    `following_count` INT DEFAULT 0 COMMENT '关注数',
    `last_active_time` DATETIME COMMENT '最后活跃时间',
    
    -- 公共字段
    `created_by` BIGINT COMMENT '创建人ID',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updated_by` BIGINT COMMENT '更新人ID',
    `updated_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除 0:未删除 1:已删除',
    
    UNIQUE KEY `uk_user_id` (`user_id`),
    UNIQUE KEY `uk_forum_username` (`forum_username`),
    KEY `idx_level` (`level`),
    KEY `idx_points` (`points`),
    KEY `idx_is_deleted` (`is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='论坛用户扩展表';

-- 版块表
CREATE TABLE `forum_category` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
    `category_name` VARCHAR(100) NOT NULL COMMENT '版块名称',
    `parent_id` BIGINT DEFAULT 0 COMMENT '父版块ID',
    `description` VARCHAR(500) COMMENT '描述',
    `icon` VARCHAR(500) COMMENT '图标',
    `sort_order` INT DEFAULT 0 COMMENT '排序',
    `post_count` INT DEFAULT 0 COMMENT '帖子数',
    `today_count` INT DEFAULT 0 COMMENT '今日发帖数',
    `status` TINYINT DEFAULT 1 COMMENT '状态 0:关闭 1:开启',
    `moderators` JSON COMMENT '版主列表',
    
    -- 公共字段
    `created_by` BIGINT COMMENT '创建人ID',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updated_by` BIGINT COMMENT '更新人ID',
    `updated_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除 0:未删除 1:已删除',
    
    KEY `idx_parent_id` (`parent_id`),
    KEY `idx_status` (`status`),
    KEY `idx_sort_order` (`sort_order`),
    KEY `idx_is_deleted` (`is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='版块表';

-- 帖子表
CREATE TABLE `forum_post` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
    `post_id` VARCHAR(32) NOT NULL COMMENT '帖子ID(雪花ID)',
    `user_id` BIGINT NOT NULL COMMENT '用户ID',
    `category_id` BIGINT NOT NULL COMMENT '版块ID',
    `title` VARCHAR(200) NOT NULL COMMENT '标题',
    `content` LONGTEXT NOT NULL COMMENT '内容',
    `content_md` LONGTEXT COMMENT 'Markdown内容',
    `type` TINYINT DEFAULT 1 COMMENT '帖子类型 1:普通 2:精华 3:置顶 4:投票',
    `status` TINYINT DEFAULT 1 COMMENT '状态 1:正常 2:审核中 3:已删除 4:锁定',
    `view_count` INT DEFAULT 0 COMMENT '浏览量',
    `like_count` INT DEFAULT 0 COMMENT '点赞数',
    `reply_count` INT DEFAULT 0 COMMENT '回复数',
    `collect_count` INT DEFAULT 0 COMMENT '收藏数',
    `share_count` INT DEFAULT 0 COMMENT '分享数',
    `last_reply_user_id` BIGINT COMMENT '最后回复用户ID',
    `last_reply_time` DATETIME COMMENT '最后回复时间',
    
    -- 公共字段
    `created_by` BIGINT COMMENT '创建人ID',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updated_by` BIGINT COMMENT '更新人ID',
    `updated_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除 0:未删除 1:已删除',
    
    UNIQUE KEY `uk_post_id` (`post_id`),
    KEY `idx_user_id` (`user_id`),
    KEY `idx_category_id` (`category_id`),
    KEY `idx_status` (`status`),
    KEY `idx_type` (`type`),
    KEY `idx_created_time` (`created_time`),
    KEY `idx_last_reply_time` (`last_reply_time`),
    KEY `idx_is_deleted` (`is_deleted`),
    FULLTEXT INDEX `idx_title_content` (`title`, `content`),
    FOREIGN KEY (`user_id`) REFERENCES `uc_user`(`id`),
    FOREIGN KEY (`category_id`) REFERENCES `forum_category`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='帖子表';

-- 评论表
CREATE TABLE `forum_comment` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
    `comment_id` VARCHAR(32) NOT NULL COMMENT '评论ID',
    `post_id` VARCHAR(32) NOT NULL COMMENT '帖子ID',
    `user_id` BIGINT NOT NULL COMMENT '用户ID',
    `parent_id` BIGINT DEFAULT 0 COMMENT '父评论ID',
    `reply_user_id` BIGINT COMMENT '回复的用户ID',
    `content` TEXT NOT NULL COMMENT '评论内容',
    `like_count` INT DEFAULT 0 COMMENT '点赞数',
    `status` TINYINT DEFAULT 1 COMMENT '状态 1:正常 2:删除',
    `floor` INT COMMENT '楼层号',
    
    -- 公共字段
    `created_by` BIGINT COMMENT '创建人ID',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updated_by` BIGINT COMMENT '更新人ID',
    `updated_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除 0:未删除 1:已删除',
    
    UNIQUE KEY `uk_comment_id` (`comment_id`),
    KEY `idx_post_id` (`post_id`),
    KEY `idx_user_id` (`user_id`),
    KEY `idx_parent_id` (`parent_id`),
    KEY `idx_status` (`status`),
    KEY `idx_created_time` (`created_time`),
    KEY `idx_is_deleted` (`is_deleted`),
    FOREIGN KEY (`post_id`) REFERENCES `forum_post`(`post_id`),
    FOREIGN KEY (`user_id`) REFERENCES `uc_user`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='评论表';

-- 点赞表
CREATE TABLE `forum_like` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
    `user_id` BIGINT NOT NULL COMMENT '用户ID',
    `target_type` TINYINT NOT NULL COMMENT '目标类型 1:帖子 2:评论',
    `target_id` VARCHAR(32) NOT NULL COMMENT '目标ID',
    
    -- 公共字段
    `created_by` BIGINT COMMENT '创建人ID',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    
    UNIQUE KEY `uk_user_target` (`user_id`, `target_type`, `target_id`),
    KEY `idx_target` (`target_type`, `target_id`),
    KEY `idx_user_id` (`user_id`),
    KEY `idx_created_time` (`created_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='点赞表';

-- 收藏表
CREATE TABLE `forum_collect` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
    `user_id` BIGINT NOT NULL COMMENT '用户ID',
    `post_id` VARCHAR(32) NOT NULL COMMENT '帖子ID',
    
    -- 公共字段
    `created_by` BIGINT COMMENT '创建人ID',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    
    UNIQUE KEY `uk_user_post` (`user_id`, `post_id`),
    KEY `idx_user_id` (`user_id`),
    KEY `idx_post_id` (`post_id`),
    KEY `idx_created_time` (`created_time`),
    FOREIGN KEY (`post_id`) REFERENCES `forum_post`(`post_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='收藏表';

-- 关注表
CREATE TABLE `forum_follow` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
    `user_id` BIGINT NOT NULL COMMENT '用户ID',
    `follow_user_id` BIGINT NOT NULL COMMENT '被关注用户ID',
    
    -- 公共字段
    `created_by` BIGINT COMMENT '创建人ID',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    
    UNIQUE KEY `uk_user_follow` (`user_id`, `follow_user_id`),
    KEY `idx_user_id` (`user_id`),
    KEY `idx_follow_user_id` (`follow_user_id`),
    KEY `idx_created_time` (`created_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='关注表';

-- 通知表
CREATE TABLE `forum_notification` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
    `user_id` BIGINT NOT NULL COMMENT '接收用户ID',
    `type` TINYINT NOT NULL COMMENT '通知类型 1:评论 2:点赞 3:关注 4:系统',
    `content` VARCHAR(500) NOT NULL COMMENT '通知内容',
    `source_user_id` BIGINT COMMENT '触发用户ID',
    `source_id` VARCHAR(32) COMMENT '源数据ID',
    `is_read` TINYINT DEFAULT 0 COMMENT '是否已读 0:未读 1:已读',
    
    -- 公共字段
    `created_by` BIGINT COMMENT '创建人ID',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updated_by` BIGINT COMMENT '更新人ID',
    `updated_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    
    KEY `idx_user_id` (`user_id`, `is_read`),
    KEY `idx_type` (`type`),
    KEY `idx_created_time` (`created_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='通知表';

-- 标签表
CREATE TABLE `forum_tag` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
    `tag_name` VARCHAR(50) NOT NULL COMMENT '标签名称',
    `tag_color` VARCHAR(20) COMMENT '标签颜色',
    `use_count` INT DEFAULT 0 COMMENT '使用次数',
    `status` TINYINT DEFAULT 1 COMMENT '状态 0:禁用 1:启用',
    
    -- 公共字段
    `created_by` BIGINT COMMENT '创建人ID',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updated_by` BIGINT COMMENT '更新人ID',
    `updated_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除 0:未删除 1:已删除',
    
    UNIQUE KEY `uk_tag_name` (`tag_name`),
    KEY `idx_status` (`status`),
    KEY `idx_is_deleted` (`is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='标签表';

-- 帖子标签关联表
CREATE TABLE `forum_post_tag` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
    `post_id` VARCHAR(32) NOT NULL COMMENT '帖子ID',
    `tag_id` BIGINT NOT NULL COMMENT '标签ID',
    
    -- 公共字段
    `created_by` BIGINT COMMENT '创建人ID',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    
    UNIQUE KEY `uk_post_tag` (`post_id`, `tag_id`),
    KEY `idx_post_id` (`post_id`),
    KEY `idx_tag_id` (`tag_id`),
    FOREIGN KEY (`post_id`) REFERENCES `forum_post`(`post_id`),
    FOREIGN KEY (`tag_id`) REFERENCES `forum_tag`(`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='帖子标签关联表';

3.后台管理系统数据库

sql 复制代码
-- =====================================================
-- 后台管理系统数据库 (admin_service)
-- =====================================================

-- 操作日志表
CREATE TABLE `admin_operation_log` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
    `user_id` BIGINT NOT NULL COMMENT '操作用户ID',
    `username` VARCHAR(50) COMMENT '用户名',
    `module` VARCHAR(100) COMMENT '操作模块',
    `operation` VARCHAR(200) COMMENT '操作类型',
    `method` VARCHAR(10) COMMENT '请求方法',
    `url` VARCHAR(500) COMMENT '请求URL',
    `params` TEXT COMMENT '请求参数',
    `result` TEXT COMMENT '返回结果',
    `ip` VARCHAR(50) COMMENT 'IP地址',
    `duration` INT COMMENT '耗时(毫秒)',
    `status` TINYINT COMMENT '操作状态 0:失败 1:成功',
    `error_msg` VARCHAR(500) COMMENT '错误信息',
    
    -- 公共字段
    `created_by` BIGINT COMMENT '创建人ID',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    
    KEY `idx_user_id` (`user_id`),
    KEY `idx_module` (`module`),
    KEY `idx_created_time` (`created_time`),
    KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='操作日志表';

-- 敏感词表
CREATE TABLE `admin_sensitive_word` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
    `word` VARCHAR(100) NOT NULL COMMENT '敏感词',
    `type` TINYINT NOT NULL COMMENT '类型 1:政治 2:色情 3:暴力 4:广告 5:其他',
    `level` TINYINT DEFAULT 1 COMMENT '级别 1:警告 2:审核 3:禁止',
    `replace_word` VARCHAR(100) COMMENT '替换词',
    `status` TINYINT DEFAULT 1 COMMENT '状态 0:禁用 1:启用',
    
    -- 公共字段
    `created_by` BIGINT COMMENT '创建人ID',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updated_by` BIGINT COMMENT '更新人ID',
    `updated_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除 0:未删除 1:已删除',
    
    UNIQUE KEY `uk_word` (`word`),
    KEY `idx_type` (`type`),
    KEY `idx_status` (`status`),
    KEY `idx_is_deleted` (`is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='敏感词表';

-- 举报表
CREATE TABLE `admin_report` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
    `reporter_id` BIGINT NOT NULL COMMENT '举报人ID',
    `target_type` TINYINT NOT NULL COMMENT '目标类型 1:帖子 2:评论 3:用户',
    `target_id` VARCHAR(32) NOT NULL COMMENT '目标ID',
    `reason` VARCHAR(200) NOT NULL COMMENT '举报原因',
    `description` VARCHAR(500) COMMENT '详细描述',
    `images` JSON COMMENT '截图',
    `status` TINYINT DEFAULT 0 COMMENT '处理状态 0:待处理 1:已处理 2:驳回',
    `handler_id` BIGINT COMMENT '处理人ID',
    `handle_result` VARCHAR(500) COMMENT '处理结果',
    `handle_time` DATETIME COMMENT '处理时间',
    
    -- 公共字段
    `created_by` BIGINT COMMENT '创建人ID',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updated_by` BIGINT COMMENT '更新人ID',
    `updated_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    
    KEY `idx_target` (`target_type`, `target_id`),
    KEY `idx_status` (`status`),
    KEY `idx_reporter_id` (`reporter_id`),
    KEY `idx_created_time` (`created_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='举报表';

-- 系统配置表
CREATE TABLE `admin_config` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
    `config_key` VARCHAR(100) NOT NULL COMMENT '配置键',
    `config_value` TEXT COMMENT '配置值',
    `config_type` VARCHAR(50) COMMENT '配置类型',
    `description` VARCHAR(500) COMMENT '描述',
    `is_system` TINYINT DEFAULT 0 COMMENT '是否系统配置 0:否 1:是',
    
    -- 公共字段
    `created_by` BIGINT COMMENT '创建人ID',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updated_by` BIGINT COMMENT '更新人ID',
    `updated_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    
    UNIQUE KEY `uk_config_key` (`config_key`),
    KEY `idx_config_type` (`config_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='系统配置表';

-- 公告表
CREATE TABLE `admin_announcement` (
    `id` BIGINT PRIMARY KEY AUTO_INCREMENT,
    `title` VARCHAR(200) NOT NULL COMMENT '公告标题',
    `content` TEXT NOT NULL COMMENT '公告内容',
    `type` TINYINT DEFAULT 1 COMMENT '公告类型 1:系统公告 2:活动公告 3:维护公告',
    `priority` TINYINT DEFAULT 0 COMMENT '优先级 0:普通 1:重要 2:紧急',
    `start_time` DATETIME COMMENT '开始时间',
    `end_time` DATETIME COMMENT '结束时间',
    `status` TINYINT DEFAULT 1 COMMENT '状态 0:草稿 1:发布 2:已下架',
    
    -- 公共字段
    `created_by` BIGINT COMMENT '创建人ID',
    `created_time` DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    `updated_by` BIGINT COMMENT '更新人ID',
    `updated_time` DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    `is_deleted` TINYINT DEFAULT 0 COMMENT '逻辑删除 0:未删除 1:已删除',
    
    KEY `idx_status` (`status`),
    KEY `idx_type` (`type`),
    KEY `idx_start_end_time` (`start_time`, `end_time`),
    KEY `idx_is_deleted` (`is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='公告表';

论坛架构图

整体架构图

单个微服务内部架构图

项目模块结构图

MyBatis-Plus架构层

架构完成,下一章开始编码

相关推荐
客卿1232 小时前
牛客刷题--找数字-- 字符串检测-字符串 双指针
java·开发语言
烛之武2 小时前
SpringBoot基础
java·spring boot·后端
亚历克斯神2 小时前
Flutter for OpenHarmony: Flutter 三方库 mutex 为鸿蒙异步任务提供可靠的临界资源互斥锁(并发安全基石)
android·数据库·安全·flutter·华为·harmonyos
IAUTOMOBILE2 小时前
用Python批量处理Excel和CSV文件
jvm·数据库·python
Amour恋空2 小时前
Java多线程
java·开发语言·python
小胖java2 小时前
高校培养方案制定系统
java·spring
常利兵2 小时前
Spring项目新姿势:Lambda封装Service调用,告别繁琐注入!
java·数据库·spring
A.A呐3 小时前
【Linux第十三章】缓冲区
linux·服务器
liqianpin13 小时前
MySQL官网驱动下载(jar包驱动和ODBC驱动)【详细教程】
数据库·mysql