This commit is contained in:
朱毅骏 2021-01-12 15:16:15 +08:00
parent bc7bb41837
commit 54bd66d8a9
9 changed files with 604 additions and 187 deletions

View File

@ -1,199 +1,477 @@
create DATABASE mydoc; /*
use mydoc; Navicat Premium Data Transfer
create table article (
id varchar(64) not null PRIMARY key comment '文章id',
user_id varchar(64) not null comment '作者id',
status int(4) default 1 comment '显示状态 0 私密 1 公开 2不显示 3删除',
original int(4) comment '原创 0 原创 1 转载',
reprint_link varchar(100) comment '转载来源链接url',
examine_status int(4) comment '文章审核状态 0 待审核 1 已审核 2、已驳回',
examine_time datetime comment '文章审核时间',
browse_num int(11) comment '浏览次数',
fabulous_num int(11) comment '点赞次数',
create_time datetime comment '创建时间',
update_time datetime comment '更新时间'
);
create table article_information ( Source Server : mysql57
id varchar(64) NOT NULL PRIMARY KEY, Source Server Type : MySQL
article_id varchar(64) not null comment '文章id', Source Server Version : 50732
content_id varchar(64) not null comment '内容id', Source Host : localhost:3306
user_id varchar(64) not null comment '用户id', Source Schema : mydoc
classify_id varchar(64) comment '分类id',
tag_id varchar(64) comment '标签id',
type_id int(4) comment '文章类型表id'
);
create table article_content ( Target Server Type : MySQL
id varchar(64) comment '内容id', Target Server Version : 50732
content longtext default null COMMENT '内容' File Encoding : 65001
);
create table article_classify ( Date: 12/01/2021 15:13:42
id varchar(64) not null primary key comment '分类id', */
parent_id varchar(64) default 0 comment '父分类id 若为0则父分类',
name varchar(64) comment '分类名称',
status int comment '状态 0删除/弃用 1表示使用',
create_time datetime comment '创建时间',
update_time datetime comment '更新时间'
);
create table article_tag (
id varchar(64) not null primary key comment '标签id',
name varchar(20) not null comment '标签名称',
status int(2) default 1 comment '状态 0删除/弃用 1表示使用',
create_time datetime comment '创建时间',
update_time datetime comment '更新时间'
);
create table article_type ( SET NAMES utf8mb4;
id varchar(64) not null primary key comment '文章类型id', SET FOREIGN_KEY_CHECKS = 0;
name varchar(20) comment '文章类型名字',
user_id varchar(64) comment '创建者 用户id',
create_time datetime comment '创建时间',
update_time datetime comment '更新时间'
);
create table article_fabulous ( -- ----------------------------
id varchar(64) not null primary key comment 'id', -- Table structure for article
article_id varchar(64) not null comment '文章id', -- ----------------------------
user_id varchar(64) not null comment '点赞者 用户id', DROP TABLE IF EXISTS `article`;
fabulous_time datetime comment '点赞时间' CREATE TABLE `article` (
); `id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文章id',
`user_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '作者id',
`status` int(4) NULL DEFAULT 1 COMMENT '显示状态 0 私密 1 公开 2不显示 3删除',
`original` int(4) NULL DEFAULT NULL COMMENT '原创 0 原创 1 转载',
`reprint_link` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '转载来源链接url',
`examine_status` int(4) NULL DEFAULT NULL COMMENT '文章审核状态 0 待审核 1 已审核 2、已驳回',
`examine_time` datetime(0) NULL DEFAULT NULL COMMENT '文章审核时间',
`browse_num` int(11) NULL DEFAULT NULL COMMENT '浏览次数',
`fabulous_num` int(11) NULL DEFAULT NULL COMMENT '点赞次数',
`description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '简介',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
create table article_discuss ( -- ----------------------------
id varchar(64) not null primary key comment '评论表id', -- Records of article
article_id varchar(64) not null comment '文章id', -- ----------------------------
user_id varchar(64) not null comment '评论用户id',
content nvarchar(500) default NULL comment '评论内容',
target_user_id varchar(64) not null comment '评论目标用户id',
discuss_time datetime comment '评论时间'
);
create table article_browse ( -- ----------------------------
id varchar(64) not null primary key comment 'id', -- Table structure for article_browse
article_id varchar(64) not null comment '评论表id', -- ----------------------------
user_id varchar(64) not null comment '评论用户id', DROP TABLE IF EXISTS `article_browse`;
browse_time datetime comment '评论时间' CREATE TABLE `article_browse` (
); `id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'id',
`article_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '评论表id',
`user_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '评论用户id',
`browse_time` datetime(0) NULL DEFAULT NULL COMMENT '评论时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
create table user ( -- ----------------------------
id varchar(64) not null primary key comment '用户id', -- Records of article_browse
username varchar(64) not null comment '用户名', -- ----------------------------
nickname varchar(64) comment '昵称',
age int(3) comment '用户年龄',
avatar varchar(255) DEFAULT NULL COMMENT '头像',
password varchar(100) comment '用户密码',
phone int(12) comment '用户密码',
email varchar(64) comment '邮箱',
introduction varchar(600) default null comment '用户介绍',
status int(4) comment '用户状态 0启用 1注销',
follow_num int(11) comment '关注数量',
fans_num int(11) comment '粉丝数量',
create_time datetime comment '创建时间',
update_time datetime comment '更新时间'
);
create table user_relation ( -- ----------------------------
id varchar(64) not null primary key comment 'id', -- Table structure for article_classify
user_id varchar(64) not null comment '用户id', -- ----------------------------
user_tag_id varchar(64) comment '标签id', DROP TABLE IF EXISTS `article_classify`;
follow_id varchar(64) comment '关注列表id', CREATE TABLE `article_classify` (
fans_id varchar(64) comment '粉丝列表id', `id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '分类id',
collect_id varchar(64) comment '粉丝列表id' `parent_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '0' COMMENT '父分类id 若为0则父分类',
); `name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '分类名称',
`status` int(11) NULL DEFAULT NULL COMMENT '状态 0删除/弃用 1表示使用',
`description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '简介',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
create table user_tag ( -- ----------------------------
id varchar(64) not null primary key comment '标签id', -- Records of article_classify
parent_id varchar(64) default null comment '父标签id null 父标签 其余则为子标签 ', -- ----------------------------
name varchar(64) comment '标签名称'
);
create table user_follow ( -- ----------------------------
id varchar(64) not null primary key comment 'id', -- Table structure for article_content
user_id varchar(64) not null comment '用户id', -- ----------------------------
user_follow_id varchar(64) not null comment '关注目标用户id' DROP TABLE IF EXISTS `article_content`;
); CREATE TABLE `article_content` (
`id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '内容id',
`content` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '内容'
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
create table user_fans ( -- ----------------------------
id varchar(64) not null primary key comment 'id', -- Records of article_content
user_id varchar(64) not null comment '用户id', -- ----------------------------
user_fans_id varchar(64) not null comment '粉丝id'
);
create table user_collect ( -- ----------------------------
id varchar(64) not null primary key comment '收藏夹id', -- Table structure for article_discuss
name varchar(64) not null comment '收藏夹名字', -- ----------------------------
user_id varchar(64) not null comment '用户id', DROP TABLE IF EXISTS `article_discuss`;
article_id varchar(64) not null comment '文章id' CREATE TABLE `article_discuss` (
); `id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '评论表id',
`article_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文章id',
`user_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '评论用户id',
`content` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '评论内容',
`target_user_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '评论目标用户id',
`discuss_time` datetime(0) NULL DEFAULT NULL COMMENT '评论时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
create table user_configure ( -- ----------------------------
id varchar(64) not null primary key comment '用户配置id', -- Records of article_discuss
user_id varchar(64) not null comment '用户id', -- ----------------------------
theme_colour int(4) default 0 comment '主题 0 白色 1黑色',
theme_background varchar(50) default null comment '系统背景图片 url String',
editor int default 0 comment '默认编辑器id 0 markdown 1.富文本'
);
create table system_configure ( -- ----------------------------
id varchar(64) not null primary key comment '全局配置表id', -- Table structure for article_fabulous
icp varchar(64) default null comment '备案信息', -- ----------------------------
footer varchar(100) default null comment '页脚信息', DROP TABLE IF EXISTS `article_fabulous`;
title varchar(50) default '笔记' comment '站点标题', CREATE TABLE `article_fabulous` (
subtitle varchar(50) default null comment '站点副标题', `id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'id',
site_name varchar(50) default '笔记' comment '站点名称', `article_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文章id',
register int(4) default 0 comment '注册是否需要邀请码 0不需要 1需要' `user_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '点赞者 用户id',
); `fabulous_time` datetime(0) NULL DEFAULT NULL COMMENT '点赞时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
create table information ( -- ----------------------------
id varchar(64) not null primary key comment '消息id', -- Records of article_fabulous
user_id varchar(64) not null comment '发送者id 发送者为0 则为系统', -- ----------------------------
news_content varchar(600) default null comment '内容',
point_user_id varchar(64) not null comment '目标用户id',
images varchar(640) default null comment '图片列表',
send_time datetime comment '发送时间'
);
create table invitation_code ( -- ----------------------------
id varchar(64) not null primary key comment '邀请码id', -- Table structure for article_information
code varchar(20) not null comment '邀请码', -- ----------------------------
status int(2) default 0 comment '状态 0 正常 1失效 ', DROP TABLE IF EXISTS `article_information`;
use_times int(4) default 10 comment '可以使用的次数', CREATE TABLE `article_information` (
create_id varchar(64) not null comment '创建者id', `id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
create_time datetime comment '创建时间', `article_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文章id',
invalid_time datetime comment '失效时间' `content_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '内容id',
); `user_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户id',
CREATE TABLE user_role ( `classify_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '分类id',
id varchar(64) NOT NULL PRIMARY KEY comment '用户角色关联表id', `tag_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '标签id',
user_id varchar(64) DEFAULT NULL comment '用户id', `type_id` int(4) NULL DEFAULT NULL COMMENT '文章类型表id',
role_id varchar(64) DEFAULT NULL comment '角色id' PRIMARY KEY (`id`) USING BTREE
); ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
CREATE TABLE role ( -- ----------------------------
id varchar(64) NOT NULL primary key comment 'id', -- Records of article_information
name varchar(64) DEFAULT NULL comment '角色名字', -- ----------------------------
icon varchar(64) DEFAULT NULL comment '角色图标',
description varchar(64) DEFAULT NULL comment '角色介绍', -- ----------------------------
create_time datetime comment '创建时间', -- Table structure for article_tag
update_time datetime comment '更新时间' -- ----------------------------
); DROP TABLE IF EXISTS `article_tag`;
CREATE TABLE menu_role ( CREATE TABLE `article_tag` (
id varchar(64) NOT NULL PRIMARY KEY comment '角色权限关联表id', `id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '标签id',
role_id varchar(64) DEFAULT NULL comment '角色id', `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '标签名称',
menu_id varchar(64) DEFAULT NULL comment '权限id' `status` int(2) NULL DEFAULT 1 COMMENT '状态 0删除/弃用 1表示使用',
); `description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '介绍',
CREATE TABLE menu ( `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
id varchar(64) NOT NULL primary key comment '权限表id', `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
name varchar(64) DEFAULT NULL comment '权限名字', PRIMARY KEY (`id`) USING BTREE
icon varchar(64) DEFAULT NULL comment '权限权限图标', ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
url varchar(64) DEFAULT NULL comment '权限路径',
parent_id varchar(64) DEFAULT NULL comment '父节点', -- ----------------------------
description varchar(64) DEFAULT NULL comment '介绍', -- Records of article_tag
create_time datetime comment '创建时间', -- ----------------------------
update_time datetime comment '更新时间'
); -- ----------------------------
CREATE TABLE user_menu ( -- Table structure for article_type
id varchar(64) NOT NULL PRIMARY KEY, -- ----------------------------
user_id varchar(64) DEFAULT NULL, DROP TABLE IF EXISTS `article_type`;
role_id varchar(64) DEFAULT NULL CREATE TABLE `article_type` (
); `id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文章类型id',
`name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '文章类型名字',
`user_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建者 用户id',
`description` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '简介',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of article_type
-- ----------------------------
-- ----------------------------
-- Table structure for information
-- ----------------------------
DROP TABLE IF EXISTS `information`;
CREATE TABLE `information` (
`id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '消息id',
`user_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '发送者id 发送者为0 则为系统',
`news_content` varchar(600) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '内容',
`point_user_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '目标用户id',
`images` varchar(640) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图片列表',
`send_time` datetime(0) NULL DEFAULT NULL COMMENT '发送时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of information
-- ----------------------------
-- ----------------------------
-- Table structure for invitation_code
-- ----------------------------
DROP TABLE IF EXISTS `invitation_code`;
CREATE TABLE `invitation_code` (
`id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '邀请码id',
`code` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '邀请码',
`status` int(2) NULL DEFAULT 0 COMMENT '状态 0 正常 1失效 ',
`use_times` int(4) NULL DEFAULT 10 COMMENT '可以使用的次数',
`create_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '创建者id',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`invalid_time` datetime(0) NULL DEFAULT NULL COMMENT '失效时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of invitation_code
-- ----------------------------
-- ----------------------------
-- Table structure for menu
-- ----------------------------
DROP TABLE IF EXISTS `menu`;
CREATE TABLE `menu` (
`id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '权限表id',
`name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '权限名字',
`icon` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '权限权限图标',
`url` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '权限路径',
`type` int(4) NOT NULL COMMENT '类型 0菜单 1按钮',
`parent_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '父节点',
`description` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '介绍',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of menu
-- ----------------------------
INSERT INTO `menu` VALUES ('1', '系统管理员权限', NULL, '/**', 0, NULL, '所有权限', '2021-01-06 18:18:55', '2021-01-06 18:18:57');
INSERT INTO `menu` VALUES ('2', '系统菜单', NULL, NULL, 0, '-1', '系统菜单', '2021-01-08 10:12:31', '2021-01-08 10:12:34');
INSERT INTO `menu` VALUES ('3', '文章管理', NULL, '/article', 0, '2', '文章管理', '2021-01-08 10:12:26', '2021-01-08 10:12:29');
INSERT INTO `menu` VALUES ('4', '添加', NULL, '/add/**', 1, '3', '添加文章', NULL, NULL);
INSERT INTO `menu` VALUES ('5', '修改', NULL, '/edit/**', 1, '3', '修改文章', NULL, NULL);
INSERT INTO `menu` VALUES ('6', '系统管理', NULL, '/system', 0, '2', '系统管理', NULL, NULL);
INSERT INTO `menu` VALUES ('7', '消息管理', NULL, '/infomation', 0, '2', '消息管理', NULL, NULL);
-- ----------------------------
-- Table structure for menu_role
-- ----------------------------
DROP TABLE IF EXISTS `menu_role`;
CREATE TABLE `menu_role` (
`id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '角色权限关联表id',
`role_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色id',
`menu_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '权限id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of menu_role
-- ----------------------------
INSERT INTO `menu_role` VALUES ('1', '1', '1');
INSERT INTO `menu_role` VALUES ('2', '2', '2');
INSERT INTO `menu_role` VALUES ('3', '2', '3');
INSERT INTO `menu_role` VALUES ('4', '2', '4');
-- ----------------------------
-- Table structure for persistent_logins
-- ----------------------------
DROP TABLE IF EXISTS `persistent_logins`;
CREATE TABLE `persistent_logins` (
`username` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`series` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`token` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`last_used` timestamp(0) NOT NULL DEFAULT CURRENT_TIMESTAMP(0) ON UPDATE CURRENT_TIMESTAMP(0),
PRIMARY KEY (`series`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of persistent_logins
-- ----------------------------
-- ----------------------------
-- Table structure for role
-- ----------------------------
DROP TABLE IF EXISTS `role`;
CREATE TABLE `role` (
`id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'id',
`name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色名字',
`icon` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色图标',
`description` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色介绍',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of role
-- ----------------------------
INSERT INTO `role` VALUES ('1', '系统管理员', NULL, '系统管理员', '2021-01-06 18:22:54', '2021-01-06 18:22:57');
INSERT INTO `role` VALUES ('2', 'test', NULL, 'test', NULL, NULL);
-- ----------------------------
-- Table structure for system_configure
-- ----------------------------
DROP TABLE IF EXISTS `system_configure`;
CREATE TABLE `system_configure` (
`id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '全局配置表id',
`icp` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备案信息',
`footer` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '页脚信息',
`title` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '笔记' COMMENT '站点标题',
`subtitle` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '站点副标题',
`site_name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT '笔记' COMMENT '站点名称',
`register` int(4) NULL DEFAULT 0 COMMENT '注册是否需要邀请码 0不需要 1需要',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of system_configure
-- ----------------------------
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户id',
`username` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名',
`nickname` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '昵称',
`age` int(11) NULL DEFAULT NULL COMMENT '用户年龄',
`avatar` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '头像',
`password` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户密码',
`phone` int(12) NULL DEFAULT NULL COMMENT '用户密码',
`email` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮箱',
`invite_user_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邀请者id',
`status` int(4) NULL DEFAULT NULL COMMENT '用户状态 1启用 0注销',
`follow_num` int(6) NULL DEFAULT NULL COMMENT '关注数量',
`fans_num` int(10) NULL DEFAULT NULL COMMENT '粉丝数量',
`login_time` datetime(0) NULL DEFAULT NULL COMMENT '登录时间',
`description` varchar(600) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户介绍',
`create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
`update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `username`(`username`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'zhuyijun', 'nicemoe', 23, NULL, '$2a$10$EQbRCiDDT59P.TdmjngyFucvSrtmpZRS7oQyiMJCVs7ZmPhXcVb3O', 1345411414, '111@qq.com', NULL, 1, 0, 0, '2021-01-02 00:08:12', '1111', '2021-01-02 00:08:15', '2021-01-02 00:08:18');
-- ----------------------------
-- Table structure for user_collect
-- ----------------------------
DROP TABLE IF EXISTS `user_collect`;
CREATE TABLE `user_collect` (
`id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '收藏夹id',
`name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '收藏夹名字',
`user_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户id',
`article_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '文章id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user_collect
-- ----------------------------
-- ----------------------------
-- Table structure for user_configure
-- ----------------------------
DROP TABLE IF EXISTS `user_configure`;
CREATE TABLE `user_configure` (
`id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户配置id',
`user_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户id',
`theme_colour` int(4) NULL DEFAULT 0 COMMENT '主题 0 白色 1黑色',
`theme_background` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '系统背景图片 url String',
`editor` int(11) NULL DEFAULT 0 COMMENT '默认编辑器id 0 markdown 1.富文本',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user_configure
-- ----------------------------
-- ----------------------------
-- Table structure for user_fans
-- ----------------------------
DROP TABLE IF EXISTS `user_fans`;
CREATE TABLE `user_fans` (
`id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'id',
`user_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户id',
`user_fans_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '粉丝id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user_fans
-- ----------------------------
-- ----------------------------
-- Table structure for user_follow
-- ----------------------------
DROP TABLE IF EXISTS `user_follow`;
CREATE TABLE `user_follow` (
`id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'id',
`user_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户id',
`user_follow_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '关注目标用户id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user_follow
-- ----------------------------
-- ----------------------------
-- Table structure for user_menu
-- ----------------------------
DROP TABLE IF EXISTS `user_menu`;
CREATE TABLE `user_menu` (
`id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`user_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
`menu_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user_menu
-- ----------------------------
-- ----------------------------
-- Table structure for user_relation
-- ----------------------------
DROP TABLE IF EXISTS `user_relation`;
CREATE TABLE `user_relation` (
`id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'id',
`user_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户id',
`user_tag_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '标签id',
`follow_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '关注列表id',
`fans_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '粉丝列表id',
`collect_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '粉丝列表id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user_relation
-- ----------------------------
-- ----------------------------
-- Table structure for user_role
-- ----------------------------
DROP TABLE IF EXISTS `user_role`;
CREATE TABLE `user_role` (
`id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户角色关联表id',
`user_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '用户id',
`role_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色id',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user_role
-- ----------------------------
INSERT INTO `user_role` VALUES ('1', '1', '1');
-- ----------------------------
-- Table structure for user_tag
-- ----------------------------
DROP TABLE IF EXISTS `user_tag`;
CREATE TABLE `user_tag` (
`id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '标签id',
`parent_id` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '父标签id null 父标签 其余则为子标签 ',
`name` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '标签名称',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user_tag
-- ----------------------------
SET FOREIGN_KEY_CHECKS = 1;

View File

@ -32,6 +32,8 @@ public class CommonConstants {
public static final String USER_NAME_RESULT = "username"; public static final String USER_NAME_RESULT = "username";
public static final String USER_TOKEN_RESULT = "token"; public static final String USER_TOKEN_RESULT = "token";
public static final String TOKEN_INVAILD_TIME_RESULT = "invalid_time"; public static final String TOKEN_INVAILD_TIME_RESULT = "invalid_time";
public static final String USER_PREFIX = "user:";
public static final String TOKEN_PREFIX = "token:";
public CommonConstants() { public CommonConstants() {
} }

View File

@ -159,8 +159,7 @@ public class UserAuthController {
@PathVariable("userId") @PathVariable("userId")
@Length(message = "用户Id长度限制", min = 1, max = 64) @Length(message = "用户Id长度限制", min = 1, max = 64)
@NotNull @NotNull
@ApiParam @ApiParam String userId,
String userId,
@Length(message = "权限类型只能为0或者1", min = 1, max = 1) @Length(message = "权限类型只能为0或者1", min = 1, max = 1)
@NotNull @NotNull
@ApiParam @ApiParam
@ -172,4 +171,13 @@ public class UserAuthController {
return ResponseResult.success(menuVOS); return ResponseResult.success(menuVOS);
} }
/**
* 获取权限菜单树结构
*
* @return
*/
@PostMapping("/menutree")
public ResponseObject getRootMenus() {
return permissionService.getRootMenus();
}
} }

View File

@ -1,11 +1,14 @@
package com.zyjblogs.mydoc.server.user.login.service; package com.zyjblogs.mydoc.server.user.login.service;
import com.zyjblogs.mydoc.server.user.contant.CommonConstants;
import com.zyjblogs.mydoc.server.user.login.LoginUserDetails; import com.zyjblogs.mydoc.server.user.login.LoginUserDetails;
import com.zyjblogs.mydoc.server.user.service.*; import com.zyjblogs.mydoc.server.user.service.*;
import com.zyjblogs.mydoc.server.user.vo.MenuVO; import com.zyjblogs.mydoc.server.user.vo.MenuVO;
import com.zyjblogs.mydoc.server.user.vo.UserVO; import com.zyjblogs.mydoc.server.user.vo.UserVO;
import com.zyjblogs.mydoc.server.util.data.RedisTemplateService; import com.zyjblogs.mydoc.server.util.data.RedisTemplateService;
import com.zyjblogs.mydoc.server.util.jwt.TokenUtil; import com.zyjblogs.mydoc.server.util.jwt.TokenUtil;
import com.zyjblogs.mydoc.server.util.response.ResponseObject;
import com.zyjblogs.mydoc.server.util.response.ResponseResult;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@ -16,6 +19,7 @@ import org.springframework.security.core.authority.SimpleGrantedAuthority;
import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@ -28,7 +32,7 @@ import java.util.Set;
* <author> <time> <version> <description> * <author> <time> <version> <description>
* zhuyijun 2021/1/5 10:19 1.0 * zhuyijun 2021/1/5 10:19 1.0
* @program mydoc * @program mydoc
* @description * @description 权限管理
* @create 2021/1/5 10:19 * @create 2021/1/5 10:19
*/ */
@Service @Service
@ -71,6 +75,8 @@ public class PermissionService {
} }
/** /**
* 校验用户
*
* @param username 用户 * @param username 用户
* @param password 密码未加密 * @param password 密码未加密
* @return LoginUserDetails对象 * @return LoginUserDetails对象
@ -119,7 +125,10 @@ public class PermissionService {
* *
*/ */
// LoginUserDetails loginUserDetails = (LoginUserDetails) redisTemplateService.hGet("USER", username, LoginUserDetails.class); // LoginUserDetails loginUserDetails = (LoginUserDetails) redisTemplateService.hGet("USER", username, LoginUserDetails.class);
LoginUserDetails loginUserDetails = redisTemplateService.get("user:" + username, LoginUserDetails.class); /**
* 从redis中获取数据
*/
LoginUserDetails loginUserDetails = redisTemplateService.get(CommonConstants.USER_PREFIX + username, LoginUserDetails.class);
if (ObjectUtils.isNotEmpty(loginUserDetails)) { if (ObjectUtils.isNotEmpty(loginUserDetails)) {
return loginUserDetails; return loginUserDetails;
} }
@ -129,7 +138,7 @@ public class PermissionService {
} }
Set<GrantedAuthority> permission = this.getPermissionByUserId(userinfo.getId()); Set<GrantedAuthority> permission = this.getPermissionByUserId(userinfo.getId());
userinfo.setAuthorities(permission); userinfo.setAuthorities(permission);
redisTemplateService.set("user:" + username, userinfo); redisTemplateService.set(CommonConstants.USER_PREFIX + username, userinfo);
/** /**
* hash操作 * hash操作
*/ */
@ -168,4 +177,24 @@ public class PermissionService {
return expireToken; return expireToken;
} }
/**
* 获取权限菜单树结构
*
* @return map
*/
public ResponseObject getRootMenus() {
final MenuVO menuVO = menuService.findById("2");
HashMap<String, Object> menuMap = new HashMap<String, Object>(16);
menuMap.put("id", menuVO.getId());
menuMap.put("name", menuVO.getName());
menuMap.put("icon", menuVO.getIcon());
menuMap.put("url", menuVO.getUrl());
menuMap.put("type", menuVO.getType());
menuMap.put("parent_id", "-1");
menuMap.put("create_time", menuVO.getDescription());
menuMap.put("update_time", menuVO.getUpdateTime());
menuMap.put("children", menuService.getMenuTree("2"));
return ResponseResult.success(menuMap);
}
} }

View File

@ -25,4 +25,12 @@ public interface MenuMapper extends BaseMapper<MenuPO> {
* @return * @return
*/ */
List<MenuPO> findModelMenuByUserIdAndType(@Param("userId") String userId, @Param("type") Integer type); List<MenuPO> findModelMenuByUserIdAndType(@Param("userId") String userId, @Param("type") Integer type);
/**
* 通过parentId获取menu
*
* @param parentId
* @return
*/
List<MenuPO> getRootMenus(@Param("parentId") String parentId);
} }

View File

@ -7,6 +7,7 @@ import com.zyjblogs.mydoc.server.user.vo.MenuVO;
import com.zyjblogs.mydoc.server.util.response.ResponseObject; import com.zyjblogs.mydoc.server.util.response.ResponseObject;
import java.util.List; import java.util.List;
import java.util.Map;
public interface MenuService extends IService<MenuPO> { public interface MenuService extends IService<MenuPO> {
@ -38,4 +39,15 @@ public interface MenuService extends IService<MenuPO> {
* @return * @return
*/ */
List<MenuVO> findModelMenuByUserIdAndType(String userId, Integer type); List<MenuVO> findModelMenuByUserIdAndType(String userId, Integer type);
List<MenuVO> getRootMenu(String parentId);
/**
* 获取权限树
*
* @param parentId
* @return
*/
List<Map<String, Object>> getMenuTree(String parentId);
} }

View File

@ -2,6 +2,7 @@ package com.zyjblogs.mydoc.server.user.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zyjblogs.mydoc.server.user.dto.MenuDTO; import com.zyjblogs.mydoc.server.user.dto.MenuDTO;
import com.zyjblogs.mydoc.server.user.mapper.MenuMapper; import com.zyjblogs.mydoc.server.user.mapper.MenuMapper;
@ -15,7 +16,10 @@ import com.zyjblogs.mydoc.server.util.response.ResponseResult;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
@Service @Service
@ -108,4 +112,67 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, MenuPO> implements
return OrikaUtils.mapAsList(menuPOS, MenuVO.class); return OrikaUtils.mapAsList(menuPOS, MenuVO.class);
} }
/**
* 获取根节点下所有type为0的节点
*
* @param parentId
* @return
*/
@Override
public List<MenuVO> getRootMenu(String parentId) {
final List<MenuPO> rootMenus = menuMapper.getRootMenus(parentId);
if (ObjectUtils.isEmpty(rootMenus)) {
return null;
}
return OrikaUtils.mapAsList(rootMenus, MenuVO.class);
}
/**
* 判断parentId对于的Id是否存在是否有menu
*
* @param parentId
* @return
*/
public boolean isSubNode(String parentId) {
List<MenuPO> list = menuMapper.getRootMenus(parentId);
if (list != null && list.size() > 0) {
return true;
}
return false;
}
@Override
public List<Map<String, Object>> getMenuTree(String parentId) {
if (StringUtils.isBlank(parentId)) {
return null;
}
List<Map<String, Object>> rootList = new ArrayList<>();
final List<MenuVO> rootMenus = getRootMenu(parentId);
if (rootMenus.size() <= 0 || ObjectUtils.isEmpty(rootMenus)) {
return rootList;
}
for (MenuVO menuVO : rootMenus) {
HashMap<String, Object> map = new HashMap<String, Object>(16);
map.put("id", menuVO.getId());
map.put("name", menuVO.getName());
map.put("icon", menuVO.getIcon());
map.put("url", menuVO.getUrl());
map.put("type", menuVO.getType());
map.put("parent_id", parentId);
map.put("create_time", menuVO.getDescription());
map.put("update_time", menuVO.getUpdateTime());
if (isSubNode(menuVO.getId())) {
List<Map<String, Object>> keys = getMenuTree(menuVO.getId());
map.put("children", keys);
rootList.add(map);
} else {
if (menuVO.getName() != null) {
map.put("children", new ArrayList<>());
rootList.add(map);
}
}
}
return rootList;
}
} }

View File

@ -80,7 +80,7 @@ public class TokenUtil {
} }
/** /**
* @Description 获取令牌声明 * @Description 获取令牌用户信息
* @Date 2019/7/5 13:54 * @Date 2019/7/5 13:54
* @Version 1.0 * @Version 1.0
*/ */

View File

@ -99,4 +99,17 @@
order by m.url order by m.url
</select> </select>
<select id="getRootMenus" resultType="com.zyjblogs.mydoc.server.user.po.MenuPO">
select
<include refid="menu_column_all"/>
from menu
<where>
1 = 1
<if test="parentId != null and parentId != '' ">
and parent_id = #{parentId}
</if>
</where>
</select>
</mapper> </mapper>