网站搭建实操(一)环境部署
前提
首先要准备服务器,域名
我的服务器是阿里云,域名是 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架构层

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