模块化拆分
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
server.port=8081
|
||||
|
||||
# 七牛的密钥配置
|
||||
qiniu.accessKey=
|
||||
qiniu.secretKey=
|
||||
qiniu.bucket=
|
||||
# sitemap 存放地址
|
||||
sitemap.path=
|
||||
# 生成JWT时候的密钥
|
||||
jwt.secret=
|
||||
|
||||
spring.jpa.show-sql=false
|
||||
spring.jpa.hibernate.ddl-auto=update
|
||||
# 上传单个文件的大小
|
||||
spring.servlet.multipart.max-file-size=10MB
|
||||
# 上传文件的总大小
|
||||
spring.servlet.multipart.max-request-size=10MB
|
||||
##null字段不显示
|
||||
spring.jackson.default-property-inclusion=non_null
|
||||
|
||||
|
||||
################# 数据库 ##################
|
||||
#请先填写下面的配置
|
||||
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
|
||||
spring.datasource.url=
|
||||
spring.datasource.username=
|
||||
spring.datasource.password=
|
||||
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
|
||||
spring.datasource.platform=mysql
|
||||
# never / always / embedded
|
||||
spring.datasource.initialization-mode=never
|
||||
spring.datasource.sql-script-encoding=utf-8
|
||||
spring.datasource.schema=classpath:sql/schema.sql
|
||||
spring.datasource.data=classpath:sql/data.sql
|
||||
|
||||
|
||||
################## mybatis ##################
|
||||
mybatis.mapper-locations=classpath:mapper/*.xml
|
||||
mybatis.type-aliases-package=cn.celess.common.entity
|
||||
|
||||
|
||||
pagehelper.helper-dialect=mysql
|
||||
pagehelper.reasonable=true
|
||||
pagehelper.support-methods-arguments=true
|
||||
pagehelper.params=count=countSql
|
||||
|
||||
|
||||
|
||||
|
||||
################ email ##############
|
||||
#请先填写下面的配置,不然可能运行不起来
|
||||
spring.mail.host=
|
||||
spring.mail.username=
|
||||
spring.mail.password=
|
||||
spring.mail.properties.mail.smtp.auth=true
|
||||
spring.mail.properties.mail.smtp.starttls.enable=true
|
||||
spring.mail.properties.mail.smtp.starttls.required=true
|
||||
spring.mail.default-encoding=UTF-8
|
||||
spring.mail.port=465
|
||||
spring.mail.properties.mail.smtp.socketFactory.port=465
|
||||
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
|
||||
spring.mail.properties.mail.smtp.socketFactory.fallback=false
|
||||
|
||||
|
||||
#### 用于nginx的代理 获取真实ip
|
||||
server.use-forward-headers = true
|
||||
server.tomcat.remote-ip-header = X-Real-IP
|
||||
server.tomcat.protocol-header = X-Forwarded-Proto
|
||||
|
||||
|
||||
############### redis ##############
|
||||
# REDIS (RedisProperties)
|
||||
# Redis数据库索引(默认为0)
|
||||
spring.redis.database=0
|
||||
# Redis服务器地址
|
||||
spring.redis.host=
|
||||
# Redis服务器连接端口
|
||||
spring.redis.port=6379
|
||||
# Redis服务器连接密码(默认为空)
|
||||
spring.redis.password=
|
||||
# 连接池最大连接数(使用负值表示没有限制)
|
||||
spring.redis.jedis.pool.max-active=-1
|
||||
# 连接池最大阻塞等待时间(使用负值表示没有限制)
|
||||
spring.redis.jedis.pool.max-wait=-1
|
||||
# 连接池中的最大空闲连接
|
||||
spring.redis.jedis.pool.max-idle=8
|
||||
# 连接池中的最小空闲连接
|
||||
spring.redis.jedis.pool.min-idle=0
|
||||
# 连接超时时间(毫秒)
|
||||
spring.redis.timeout=5000
|
||||
68
blog-deploy/src/main/resources/application-prod.properties
Normal file
68
blog-deploy/src/main/resources/application-prod.properties
Normal file
@@ -0,0 +1,68 @@
|
||||
server.port=8081
|
||||
# 七牛的密钥配置
|
||||
qiniu.accessKey=si3O2_Q7edFtjzmyyzXkoE9G1toxcjDfULhX5zdh
|
||||
qiniu.secretKey=Pnq8q2Iy1Ez8RQXQR33XmgAYlit7M8C197BZ4lCj
|
||||
qiniu.bucket=xiaohai
|
||||
# sitemap 存放地址
|
||||
sitemap.path=
|
||||
# 生成JWT时候的密钥
|
||||
jwt.secret=sdjfi77;47h7uuo4l;4lgiu4;dl5684aasdasdpsidf;sdf
|
||||
#mybatis.type-handlers-package=cn.celess.common.mapper.typehandler
|
||||
spring.jpa.show-sql=false
|
||||
spring.jpa.hibernate.ddl-auto=update
|
||||
# 上传单个文件的大小
|
||||
spring.servlet.multipart.max-file-size=10MB
|
||||
# 上传文件的总大小
|
||||
spring.servlet.multipart.max-request-size=10MB
|
||||
spring.jackson.default-property-inclusion=non_null
|
||||
################# 数据库 ##################
|
||||
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
|
||||
# spring.datasource.url=jdbc:mysql://localhost:3306/blog?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
|
||||
spring.datasource.url=jdbc:mysql://localhost:3306/blog?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true
|
||||
spring.datasource.username=root
|
||||
spring.datasource.password=zhenghai
|
||||
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
|
||||
spring.datasource.initialization-mode=never
|
||||
################## mybatis ##################
|
||||
mybatis.mapper-locations=classpath:mapper/*.xml
|
||||
mybatis.type-aliases-package=cn.celess.common.entity
|
||||
pagehelper.helper-dialect=mysql
|
||||
pagehelper.reasonable=true
|
||||
pagehelper.support-methods-arguments=true
|
||||
pagehelper.params=count=countSql
|
||||
#### 用于nginx的代理 获取真实ip
|
||||
server.use-forward-headers=true
|
||||
server.tomcat.remote-ip-header=X-Real-IP
|
||||
server.tomcat.protocol-header=X-Forwarded-Proto
|
||||
############### email ##############
|
||||
spring.mail.host=smtp.163.com
|
||||
spring.mail.username=xiaohai2271@163.com
|
||||
spring.mail.password=56462271Zh
|
||||
spring.mail.properties.mail.smtp.auth=true
|
||||
spring.mail.properties.mail.smtp.starttls.enable=true
|
||||
spring.mail.properties.mail.smtp.starttls.required=true
|
||||
spring.mail.default-encoding=UTF-8
|
||||
spring.mail.port=465
|
||||
spring.mail.properties.mail.smtp.socketFactory.port=465
|
||||
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
|
||||
spring.mail.properties.mail.smtp.socketFactory.fallback=false
|
||||
############### redis ##############
|
||||
# REDIS (RedisProperties)
|
||||
# Redis数据库索引(默认为0)
|
||||
spring.redis.database=0
|
||||
# Redis服务器地址
|
||||
spring.redis.host=127.0.0.1
|
||||
# Redis服务器连接端口
|
||||
spring.redis.port=6379
|
||||
# Redis服务器连接密码(默认为空)
|
||||
spring.redis.password=zhenghai
|
||||
# 连接池最大连接数(使用负值表示没有限制)
|
||||
spring.redis.jedis.pool.max-active=-1
|
||||
# 连接池最大阻塞等待时间(使用负值表示没有限制)
|
||||
spring.redis.jedis.pool.max-wait=-1
|
||||
# 连接池中的最大空闲连接
|
||||
spring.redis.jedis.pool.max-idle=8
|
||||
# 连接池中的最小空闲连接
|
||||
spring.redis.jedis.pool.min-idle=0
|
||||
# 连接超时时间(毫秒)
|
||||
spring.redis.timeout=5000
|
||||
90
blog-deploy/src/main/resources/application-test.properties
Normal file
90
blog-deploy/src/main/resources/application-test.properties
Normal file
@@ -0,0 +1,90 @@
|
||||
server.port=8081
|
||||
|
||||
# 七牛的密钥配置
|
||||
qiniu.accessKey=
|
||||
qiniu.secretKey=
|
||||
qiniu.bucket=
|
||||
# sitemap 存放地址
|
||||
sitemap.path=
|
||||
# 生成JWT时候的密钥
|
||||
jwt.secret=sdaniod213k123123ipoeqowekqwe
|
||||
##spring.jpa.show-sql=false
|
||||
##spring.jpa.hibernate.ddl-auto=update
|
||||
mybatis.type-handlers-package=cn.celess.common.mapper.typehandler
|
||||
logging.level.cn.celess.common.mapper=debug
|
||||
# 上传单个文件的大小
|
||||
spring.servlet.multipart.max-file-size=10MB
|
||||
# 上传文件的总大小
|
||||
spring.servlet.multipart.max-request-size=10MB
|
||||
spring.jackson.default-property-inclusion=non_null
|
||||
################# 数据库 ##################
|
||||
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
|
||||
#h2
|
||||
spring.datasource.driver-class-name=org.h2.Driver
|
||||
spring.datasource.url=jdbc:h2:mem:testdb;mode=mysql;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false
|
||||
spring.datasource.username=sa
|
||||
spring.datasource.password=
|
||||
|
||||
|
||||
spring.datasource.platform=h2
|
||||
spring.datasource.sql-script-encoding=utf-8
|
||||
spring.datasource.initialization-mode=ALWAYS
|
||||
spring.datasource.schema=classpath:sql/schema_h2.sql
|
||||
spring.datasource.data=classpath:sql/data.sql
|
||||
|
||||
|
||||
################## mybatis ##################
|
||||
mybatis.mapper-locations=classpath:mapper/*.xml
|
||||
mybatis.type-aliases-package=cn.celess.common.entity
|
||||
|
||||
|
||||
pagehelper.helper-dialect=mysql
|
||||
pagehelper.reasonable=true
|
||||
pagehelper.support-methods-arguments=true
|
||||
pagehelper.params=count=countSql
|
||||
|
||||
|
||||
|
||||
#### 用于nginx的代理 获取真实ip
|
||||
server.use-forward-headers = true
|
||||
server.tomcat.remote-ip-header = X-Real-IP
|
||||
server.tomcat.protocol-header = X-Forwarded-Proto
|
||||
|
||||
|
||||
############### email ##############
|
||||
spring.mail.host=smtp.163.com
|
||||
spring.mail.username=
|
||||
spring.mail.password=
|
||||
spring.mail.properties.mail.smtp.auth=true
|
||||
spring.mail.properties.mail.smtp.starttls.enable=true
|
||||
spring.mail.properties.mail.smtp.starttls.required=true
|
||||
spring.mail.default-encoding=UTF-8
|
||||
spring.mail.port=465
|
||||
spring.mail.properties.mail.smtp.socketFactory.port=465
|
||||
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
|
||||
spring.mail.properties.mail.smtp.socketFactory.fallback=false
|
||||
|
||||
|
||||
|
||||
############### redis ##############
|
||||
|
||||
# REDIS (RedisProperties)
|
||||
# Redis数据库索引(默认为0)
|
||||
spring.redis.database=1
|
||||
# Redis服务器地址
|
||||
spring.redis.host=127.0.0.1
|
||||
# Redis服务器连接端口 解决端口冲突 防止使用本地的redis
|
||||
spring.redis.port=6380
|
||||
# Redis服务器连接密码(默认为空)
|
||||
spring.redis.password=
|
||||
# 连接池最大连接数(使用负值表示没有限制)
|
||||
spring.redis.jedis.pool.max-active=-1
|
||||
# 连接池最大阻塞等待时间(使用负值表示没有限制)
|
||||
spring.redis.jedis.pool.max-wait=-1
|
||||
# 连接池中的最大空闲连接
|
||||
spring.redis.jedis.pool.max-idle=8
|
||||
# 连接池中的最小空闲连接
|
||||
spring.redis.jedis.pool.min-idle=0
|
||||
# 连接超时时间(毫秒)
|
||||
spring.redis.timeout=5000
|
||||
|
||||
8
blog-deploy/src/main/resources/application.properties
Normal file
8
blog-deploy/src/main/resources/application.properties
Normal file
@@ -0,0 +1,8 @@
|
||||
spring.profiles.active=prod
|
||||
####七牛的配置
|
||||
####cn.celess.blog.service.serviceimpl.QiniuServiceImpl
|
||||
logging.level.cn.celess.blog=debug
|
||||
logging.level.cn.celess.common.mapper=info
|
||||
spring.cache.type=redis
|
||||
|
||||
## 修改openSource 添加-test 文件用于测试 -prod文件用于线上发布
|
||||
BIN
blog-deploy/src/main/resources/ip2region/ip2region.db
Normal file
BIN
blog-deploy/src/main/resources/ip2region/ip2region.db
Normal file
Binary file not shown.
216
blog-deploy/src/main/resources/sql/data.sql
Normal file
216
blog-deploy/src/main/resources/sql/data.sql
Normal file
File diff suppressed because one or more lines are too long
188
blog-deploy/src/main/resources/sql/schema.sql
Normal file
188
blog-deploy/src/main/resources/sql/schema.sql
Normal file
@@ -0,0 +1,188 @@
|
||||
drop view if exists articleView;
|
||||
drop view if exists commentView;
|
||||
drop table if exists article_tag;
|
||||
drop table if exists comment;
|
||||
drop table if exists article;
|
||||
drop table if exists user;
|
||||
drop table if exists tag_category;
|
||||
drop table if exists links;
|
||||
drop table if exists visitor;
|
||||
drop table if exists web_update;
|
||||
|
||||
|
||||
CREATE TABLE `user`
|
||||
(
|
||||
`u_id` int not null primary key auto_increment,
|
||||
`u_email` varchar(50) not null,
|
||||
`u_pwd` varchar(40) not null comment '密码',
|
||||
`u_email_status` boolean default false comment '邮箱验证状态',
|
||||
`u_avatar` varchar(255) default null comment '用户头像',
|
||||
`u_desc` tinytext COLLATE utf8mb4_unicode_ci default null comment '用户的描述',
|
||||
`u_recently_landed_time` datetime default null comment '最近的登录时间',
|
||||
`u_display_name` varchar(30) COLLATE utf8mb4_unicode_ci default null comment '展示的昵称',
|
||||
`u_role` varchar(40) not null default 'user' comment '权限组',
|
||||
`status` tinyint(1) not null default 0 comment '账户状态',
|
||||
unique key `uni_user_id` (`u_id`),
|
||||
unique key `uni_user_email` (`u_email`)
|
||||
) comment '用户表';
|
||||
|
||||
CREATE TABLE `tag_category`
|
||||
(
|
||||
`t_id` bigint(20) primary key auto_increment,
|
||||
`t_name` varchar(255) not null,
|
||||
`is_category` boolean not null default true,
|
||||
`is_delete` boolean not null default false comment '该数据是否被删除'
|
||||
) comment '标签和分类表';
|
||||
|
||||
CREATE TABLE `article`
|
||||
(
|
||||
`a_id` bigint(20) primary key auto_increment,
|
||||
`a_title` varchar(255) COLLATE utf8mb4_unicode_ci not null unique comment '文章标题',
|
||||
`a_summary` varchar(255) COLLATE utf8mb4_unicode_ci not null comment '文章摘要',
|
||||
`a_md_content` longtext COLLATE utf8mb4_unicode_ci not null comment '文章Markdown内容',
|
||||
`a_url` tinytext default null comment '转载文章的原文链接',
|
||||
`a_author_id` int not null comment '作者id',
|
||||
`a_is_original` boolean default true comment '文章是否原创',
|
||||
`a_reading_number` int default 0 comment '文章阅读数',
|
||||
`a_like` int default 0 comment '文章点赞数',
|
||||
`a_dislike` int default 0 comment '文章不喜欢数',
|
||||
`a_category_id` bigint not null comment '文章分类id',
|
||||
`a_publish_date` datetime default CURRENT_TIMESTAMP comment '文章发布时间',
|
||||
`a_update_date` datetime default null comment '文章的更新时间',
|
||||
`a_is_open` boolean default true comment '文章是否可见',
|
||||
`is_delete` boolean not null default false comment '该数据是否被删除',
|
||||
foreign key (a_category_id) references tag_category (t_id),
|
||||
foreign key (a_author_id) references user (u_id)
|
||||
) DEFAULT CHARSET = utf8mb4
|
||||
COLLATE utf8mb4_general_ci,comment '文章表';
|
||||
|
||||
CREATE TABLE `article_tag`
|
||||
(
|
||||
`at_id` bigint(20) primary key auto_increment,
|
||||
`a_id` bigint(20) not null comment '文章id',
|
||||
`t_id` bigint not null comment 'tag/category 的id',
|
||||
foreign key (a_id) references article (a_id),
|
||||
foreign key (t_id) references tag_category (t_id)
|
||||
) comment '文章标签表';
|
||||
|
||||
CREATE TABLE `comment`
|
||||
(
|
||||
`co_id` bigint(20) primary key auto_increment,
|
||||
`co_page_path` varchar(255) not null comment '评论/留言的页面',
|
||||
`co_content` text COLLATE utf8mb4_unicode_ci not null comment '评论/留言内容',
|
||||
`co_date` datetime not null comment '评论/留言的日期',
|
||||
`co_status` tinyint not null default 0 comment '评论的状态',
|
||||
`co_pid` bigint not null default -1 comment '评论/留言的父id',
|
||||
`co_from_author_id` int not null comment '留言者id',
|
||||
`co_to_author_id` int default null comment '父评论的作者id',
|
||||
foreign key (co_from_author_id) references user (u_id),
|
||||
foreign key (co_to_author_id) references user (u_id)
|
||||
) DEFAULT CHARSET = utf8mb4
|
||||
COLLATE utf8mb4_general_ci,comment '评论/留言表';
|
||||
|
||||
CREATE TABLE `links`
|
||||
(
|
||||
`l_id` bigint(20) primary key auto_increment,
|
||||
`l_name` varchar(255) COLLATE utf8mb4_unicode_ci not null comment '友站名称',
|
||||
`l_is_open` boolean default true comment '是否公开',
|
||||
`l_url` varchar(255) unique not null comment '首页地址',
|
||||
`l_icon_path` varchar(255) not null comment '友链的icon地址',
|
||||
`l_desc` varchar(255) COLLATE utf8mb4_unicode_ci not null comment '友链的说明描述',
|
||||
`is_delete` boolean not null default false comment '该数据是否被删除',
|
||||
`l_email` varchar(255) comment '网站管理员的邮箱',
|
||||
`l_notification` boolean default false comment '是否通知了'
|
||||
) comment '友站表';
|
||||
|
||||
CREATE TABLE `visitor`
|
||||
(
|
||||
`v_id` bigint(20) primary key auto_increment,
|
||||
`v_date` datetime not null comment '访问时间',
|
||||
`v_ip` varchar(255) not null comment '访客ip',
|
||||
`v_user_agent` text comment '访客ua',
|
||||
`is_delete` boolean not null default false comment '该数据是否被删除'
|
||||
) comment '访客表';
|
||||
|
||||
CREATE TABLE `web_update`
|
||||
(
|
||||
`wu_id` int primary key auto_increment,
|
||||
`wu_info` varchar(255) COLLATE utf8mb4_unicode_ci not null comment '更新内容',
|
||||
`wu_time` datetime not null comment '更新时间',
|
||||
`is_delete` boolean not null default false comment '该数据是否被删除'
|
||||
) comment '更新内容表';
|
||||
|
||||
CREATE VIEW articleView
|
||||
(articleId, title, summary, mdContent, url, isOriginal, readingCount, likeCount, dislikeCount,
|
||||
publishDate, updateDate, isOpen,
|
||||
categoryId, categoryName, tagId, tagName,
|
||||
authorId, userEmail, userAvatar, userDisplayName, isDelete)
|
||||
as
|
||||
select article.a_id as articleId,
|
||||
article.a_title as title,
|
||||
article.a_summary as summary,
|
||||
article.a_md_content as mdContent,
|
||||
article.a_url as url,
|
||||
article.a_is_original as isOriginal,
|
||||
article.a_reading_number as readingCount,
|
||||
article.a_like as likeCount,
|
||||
article.a_dislike as dislikeCount,
|
||||
article.a_publish_date as publishDate,
|
||||
article.a_update_date as updateDate,
|
||||
article.a_is_open as isOpen,
|
||||
category.t_id as categoryId,
|
||||
category.t_name as categoryName,
|
||||
tag.t_id as tagId,
|
||||
tag.t_name as tagName,
|
||||
user.u_id as authorId,
|
||||
user.u_email as userEmail,
|
||||
user.u_avatar as userAvatar,
|
||||
user.u_display_name as userDisplayName,
|
||||
article.is_delete as isDelete
|
||||
from article,
|
||||
tag_category as tag,
|
||||
tag_category as category,
|
||||
article_tag,
|
||||
user
|
||||
where article.a_id = article_tag.a_id
|
||||
and article_tag.t_id = tag.t_id
|
||||
and tag.is_category = false
|
||||
and article.a_category_id = category.t_id
|
||||
and category.is_category = true
|
||||
and article.a_author_id = user.u_id;
|
||||
|
||||
|
||||
CREATE VIEW commentView
|
||||
(commentId, pagePath, content, date, status, pid, toAuthorId, toAuthorEmail, toAuthorDisplayName,
|
||||
toAuthorAvatar, fromAuthorId, fromAuthorEmail, fromAuthorDisplayName,
|
||||
fromAuthorAvatar)
|
||||
as
|
||||
select cuT.co_id as commentId,
|
||||
cuT.co_page_path as pagePath,
|
||||
cuT.co_content as content,
|
||||
cuT.co_date as date,
|
||||
cuT.co_status as status,
|
||||
cuT.co_pid as pid,
|
||||
cuT.co_to_author_id as toAuthorId,
|
||||
cuT.toEmail as toAuthorEmail,
|
||||
cuT.toDisplayName as toAuthorDisplayName,
|
||||
cuT.toAvatar as toAuthorAvatar,
|
||||
userFrom.u_id as fromAuthorId,
|
||||
userFrom.u_email as fromAuthorEmail,
|
||||
userFrom.u_display_name as fromAuthorDisplayName,
|
||||
userFrom.u_avatar as fromAuthorAvatar
|
||||
from (select comment.co_id,
|
||||
comment.co_page_path,
|
||||
comment.co_content,
|
||||
comment.co_date,
|
||||
comment.co_status,
|
||||
comment.co_pid,
|
||||
comment.co_from_author_id,
|
||||
comment.co_to_author_id,
|
||||
userTo.u_email as toEmail,
|
||||
userTo.u_display_name as toDisplayName,
|
||||
userTo.u_avatar as toAvatar
|
||||
from comment
|
||||
left join user userTo on (comment.co_to_author_id = userTo.u_id)
|
||||
) as cuT,
|
||||
user as userFrom
|
||||
where cuT.co_from_author_id = userFrom.u_id;
|
||||
|
||||
193
blog-deploy/src/main/resources/sql/schema_h2.sql
Normal file
193
blog-deploy/src/main/resources/sql/schema_h2.sql
Normal file
@@ -0,0 +1,193 @@
|
||||
drop view if exists articleView;
|
||||
drop view if exists commentView;
|
||||
drop table if exists article_tag;
|
||||
drop table if exists comment;
|
||||
drop table if exists article;
|
||||
drop table if exists user;
|
||||
drop table if exists tag_category;
|
||||
drop table if exists links;
|
||||
drop table if exists visitor;
|
||||
drop table if exists web_update;
|
||||
|
||||
-- 用户表
|
||||
CREATE TABLE `user`
|
||||
(
|
||||
`u_id` int not null primary key auto_increment,
|
||||
`u_email` varchar(50) not null,
|
||||
`u_pwd` varchar(40) not null comment '密码',
|
||||
`u_email_status` boolean default false comment '邮箱验证状态',
|
||||
`u_avatar` varchar(255) default null comment '用户头像',
|
||||
`u_desc` tinytext default null comment '用户的描述',
|
||||
`u_recently_landed_time` datetime default null comment '最近的登录时间',
|
||||
`u_display_name` varchar(30) default null comment '展示的昵称',
|
||||
`u_role` varchar(40) not null default 'user' comment '权限组',
|
||||
`status` tinyint(1) not null default 0 comment '账户状态',
|
||||
unique key `uni_user_id` (`u_id`),
|
||||
unique key `uni_user_email` (`u_email`)
|
||||
);
|
||||
|
||||
-- 标签和分类表
|
||||
CREATE TABLE `tag_category`
|
||||
(
|
||||
`t_id` bigint(20) primary key auto_increment,
|
||||
`t_name` varchar(255) not null,
|
||||
`is_category` boolean not null default true,
|
||||
`is_delete` boolean not null default false comment '该数据是否被删除'
|
||||
);
|
||||
|
||||
-- 文章表
|
||||
CREATE TABLE `article`
|
||||
(
|
||||
`a_id` bigint(20) primary key auto_increment,
|
||||
`a_title` varchar(255) not null unique comment '文章标题',
|
||||
`a_summary` varchar(255) not null comment '文章摘要',
|
||||
`a_md_content` longtext not null comment '文章Markdown内容',
|
||||
`a_url` tinytext default null comment '转载文章的原文链接',
|
||||
`a_author_id` int not null comment '作者id',
|
||||
`a_is_original` boolean default true comment '文章是否原创',
|
||||
`a_reading_number` int default 0 comment '文章阅读数',
|
||||
`a_like` int default 0 comment '文章点赞数',
|
||||
`a_dislike` int default 0 comment '文章不喜欢数',
|
||||
`a_category_id` bigint not null comment '文章分类id',
|
||||
`a_publish_date` datetime default CURRENT_TIMESTAMP comment '文章发布时间',
|
||||
`a_update_date` datetime default null comment '文章的更新时间',
|
||||
`a_is_open` boolean default true comment '文章是否可见',
|
||||
`is_delete` boolean not null default false comment '该数据是否被删除',
|
||||
foreign key (a_category_id) references tag_category (t_id),
|
||||
foreign key (a_author_id) references user (u_id)
|
||||
);
|
||||
|
||||
-- 文章标签表
|
||||
CREATE TABLE `article_tag`
|
||||
(
|
||||
`at_id` bigint(20) primary key auto_increment,
|
||||
`a_id` bigint(20) not null comment '文章id',
|
||||
`t_id` bigint not null comment 'tag/category 的id',
|
||||
foreign key (a_id) references article (a_id),
|
||||
foreign key (t_id) references tag_category (t_id)
|
||||
);
|
||||
|
||||
-- 评论/留言表
|
||||
CREATE TABLE `comment`
|
||||
(
|
||||
`co_id` bigint(20) primary key auto_increment,
|
||||
`co_page_path` varchar(255) not null comment '评论/留言的页面',
|
||||
`co_content` text not null comment '评论/留言内容',
|
||||
`co_date` datetime not null comment '评论/留言的日期',
|
||||
`co_status` tinyint not null default 0 comment '评论的状态',
|
||||
`co_pid` bigint not null default -1 comment '评论/留言的父id',
|
||||
`co_from_author_id` int not null comment '留言者id',
|
||||
`co_to_author_id` int default null comment '父评论的作者id',
|
||||
foreign key (co_from_author_id) references user (u_id),
|
||||
foreign key (co_to_author_id) references user (u_id)
|
||||
);
|
||||
|
||||
-- 友站表
|
||||
CREATE TABLE `links`
|
||||
(
|
||||
`l_id` bigint(20) primary key auto_increment,
|
||||
`l_name` varchar(255) not null comment '友站名称',
|
||||
`l_is_open` boolean default true comment '是否公开',
|
||||
`l_url` varchar(255) unique not null comment '首页地址',
|
||||
`l_icon_path` varchar(255) not null comment '友链的icon地址',
|
||||
`l_desc` varchar(255) not null comment '友链的说明描述',
|
||||
`is_delete` boolean not null default false comment '该数据是否被删除',
|
||||
`l_email` varchar(255) comment '网站管理员的邮箱',
|
||||
`l_notification` boolean default false comment '是否通知了'
|
||||
);
|
||||
|
||||
-- 访客表
|
||||
CREATE TABLE `visitor`
|
||||
(
|
||||
`v_id` bigint(20) primary key auto_increment,
|
||||
`v_date` datetime not null comment '访问时间',
|
||||
`v_ip` varchar(255) not null comment '访客ip',
|
||||
`v_user_agent` text comment '访客ua',
|
||||
`is_delete` boolean not null default false comment '该数据是否被删除'
|
||||
);
|
||||
|
||||
-- 更新内容表
|
||||
CREATE TABLE `web_update`
|
||||
(
|
||||
`wu_id` int primary key auto_increment,
|
||||
`wu_info` varchar(255) not null comment '更新内容',
|
||||
`wu_time` datetime not null comment '更新时间',
|
||||
`is_delete` boolean not null default false comment '该数据是否被删除'
|
||||
);
|
||||
|
||||
CREATE VIEW articleView
|
||||
(articleId, title, summary, mdContent, url, isOriginal, readingCount, likeCount, dislikeCount,
|
||||
publishDate, updateDate, isOpen,
|
||||
categoryId, categoryName, tagId, tagName,
|
||||
authorId, userEmail, userAvatar, userDisplayName, isDelete)
|
||||
as
|
||||
select article.a_id as articleId,
|
||||
article.a_title as title,
|
||||
article.a_summary as summary,
|
||||
article.a_md_content as mdContent,
|
||||
article.a_url as url,
|
||||
article.a_is_original as isOriginal,
|
||||
article.a_reading_number as readingCount,
|
||||
article.a_like as likeCount,
|
||||
article.a_dislike as dislikeCount,
|
||||
article.a_publish_date as publishDate,
|
||||
article.a_update_date as updateDate,
|
||||
article.a_is_open as isOpen,
|
||||
category.t_id as categoryId,
|
||||
category.t_name as categoryName,
|
||||
tag.t_id as tagId,
|
||||
tag.t_name as tagName,
|
||||
user.u_id as authorId,
|
||||
user.u_email as userEmail,
|
||||
user.u_avatar as userAvatar,
|
||||
user.u_display_name as userDisplayName,
|
||||
article.is_delete as isDelete
|
||||
from article,
|
||||
tag_category as tag,
|
||||
tag_category as category,
|
||||
article_tag,
|
||||
user
|
||||
where article.a_id = article_tag.a_id
|
||||
and article_tag.t_id = tag.t_id
|
||||
and tag.is_category = false
|
||||
and article.a_category_id = category.t_id
|
||||
and category.is_category = true
|
||||
and article.a_author_id = user.u_id;
|
||||
|
||||
|
||||
CREATE VIEW commentView
|
||||
(commentId, pagePath, content, date, status, pid, toAuthorId, toAuthorEmail, toAuthorDisplayName,
|
||||
toAuthorAvatar, fromAuthorId, fromAuthorEmail, fromAuthorDisplayName,
|
||||
fromAuthorAvatar)
|
||||
as
|
||||
select cuT.co_id as commentId,
|
||||
cuT.co_page_path as pagePath,
|
||||
cuT.co_content as content,
|
||||
cuT.co_date as date,
|
||||
cuT.co_status as status,
|
||||
cuT.co_pid as pid,
|
||||
cuT.co_to_author_id as toAuthorId,
|
||||
cuT.toEmail as toAuthorEmail,
|
||||
cuT.toDisplayName as toAuthorDisplayName,
|
||||
cuT.toAvatar as toAuthorAvatar,
|
||||
userFrom.u_id as fromAuthorId,
|
||||
userFrom.u_email as fromAuthorEmail,
|
||||
userFrom.u_display_name as fromAuthorDisplayName,
|
||||
userFrom.u_avatar as fromAuthorAvatar
|
||||
from (select comment.co_id,
|
||||
comment.co_page_path,
|
||||
comment.co_content,
|
||||
comment.co_date,
|
||||
comment.co_status,
|
||||
comment.co_pid,
|
||||
comment.co_from_author_id,
|
||||
comment.co_to_author_id,
|
||||
userTo.u_email as toEmail,
|
||||
userTo.u_display_name as toDisplayName,
|
||||
userTo.u_avatar as toAvatar
|
||||
from comment
|
||||
left join user userTo on (comment.co_to_author_id = userTo.u_id)
|
||||
) as cuT,
|
||||
user as userFrom
|
||||
where cuT.co_from_author_id = userFrom.u_id;
|
||||
|
||||
Reference in New Issue
Block a user