diff --git a/.gitignore b/.gitignore
index c4c8f6c..b306679 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
.idea/
*.imi
+*.iml
target/
# 本地项目的私有文件
diff --git a/blog.iml b/blog.iml
deleted file mode 100644
index 7aecb0e..0000000
--- a/blog.iml
+++ /dev/null
@@ -1,149 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/blog.sql b/blog.sql
index e07a364..5e15303 100644
--- a/blog.sql
+++ b/blog.sql
@@ -1,92 +1,176 @@
-CREATE DATABASE `blog`;
-
-USE blog;
-
-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_tags_id` varchar(255) not null comment '标签id \',\'处于最尾端',
- `a_category_id` bigint(20) not null comment '分类的id',
- `a_url` tinytext default null comment '转载文章的原文链接',
- `a_author_id` bigint(20) not null comment '作者id',
- `a_is_open` boolean default true comment '文章是否可见',
- `a_is_original` boolean default true comment '文章是否原创',
- `next_a_id` bigint(20) default -1 comment '下篇文章id',
- `pre_a_id` bigint(20) default -1 comment '前一篇文章的id',
- `a_reading_number` int default 0 comment '文章阅读数',
- `a_publish_date` datetime not null comment '文章发布时间',
- `a_update_date` datetime default null comment '文章的更新时间'
-) DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci,comment '文章表';
-
-CREATE TABLE `tag`
-(
- `tag_id` bigint(20) primary key auto_increment,
- `tag_name` varchar(255) unique not null,
- `articles` tinytext default null comment 'tag对应的文章id'
-) comment '标签表';
-
-CREATE table `category`
-(
- `c_id` bigint(20) primary key auto_increment,
- `c_name` varchar(255) unique not null,
- `articles` varchar(255) comment '分类下的文章'
-)comment '分类表';
-
-CREATE TABLE `comment`
-(
- `co_id` bigint(20) primary key auto_increment,
- `co_article_id` bigint(20) default -1 comment '文章id',
- `is_comment` boolean default true comment '是否是评论',
- `author_id` bigint(20) not null comment '留言者id',
- `co_content` text not null comment '评论/留言内容',
- `co_date` datetime not null comment '评论/留言的日期',
- `co_pid` bigint not null default -1 comment '评论/留言的父id',
- `co_response_id` tinytext
-) DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_general_ci,comment '评论/留言表';
-
-CREATE TABLE `links`
-(
- `site_id` bigint(20) primary key auto_increment,
- `site_name` varchar(255) not null comment '友站名称',
- `is_open` boolean default true comment '是否公开',
- `site_url` varchar(255) not null 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'
-) comment '访客表';
-
-
-
-CREATE TABLE IF NOT EXISTS `web_update`
-(
- `update_id` bigint(20) primary key auto_increment,
- `update_info` varchar(255) not null comment '更新内容',
- `update_time` datetime not null comment '更新时间'
-) comment '更新内容表';
-
-create table `user`
-(
- `u_id` int not null primary key auto_increment,
- `u_email` varchar(50) not null,
- `u_uid` varchar(40) default null comment '用户唯一标识码',
- `u_pwd` varchar(40) not null comment '密码',
- `email_status` boolean default false comment '邮箱验证状态',
- `u_avatar` varchar(255) comment '用户头像',
- `u_desc` tinytext comment '用户的描述',
- `recently_landed_time` datetime comment '最近的登录时间',
- `email_verify_id` varchar(40) comment '用于找回密码或验证邮箱的id',
- `display_name` varchar(30) comment '展示的昵称',
- `role` varchar(40) not null default 'user' comment '权限组',
- unique key `uni_user_id` (`u_id`),
- unique key `uni_user_uid` (`u_uid`),
- unique key `uni_user_email` (`u_email`)
-) comment '用户表';
-
+CREATE DATABASE `t_blog`;
+
+USE t_blog;
+
+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` int 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 '该数据是否被删除'
+) 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',
+ `is_delete` boolean not null default false comment '该数据是否被删除'
+) 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 `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'
+) 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) 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 '该数据是否被删除'
+) 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 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 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, isDelete)
+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,
+ cuT.is_delete as isDelete
+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,
+ comment.is_delete
+ 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;
+
diff --git a/src/main/java/cn/celess/blog/configuration/filter/AuthenticationFilter.java b/src/main/java/cn/celess/blog/configuration/filter/AuthenticationFilter.java
index 3734b13..b26597a 100644
--- a/src/main/java/cn/celess/blog/configuration/filter/AuthenticationFilter.java
+++ b/src/main/java/cn/celess/blog/configuration/filter/AuthenticationFilter.java
@@ -1,16 +1,15 @@
package cn.celess.blog.configuration.filter;
import cn.celess.blog.enmu.ResponseEnum;
+import cn.celess.blog.entity.Response;
import cn.celess.blog.service.UserService;
import cn.celess.blog.util.JwtUtil;
import cn.celess.blog.util.RedisUtil;
-import cn.celess.blog.util.ResponseUtil;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.servlet.HandlerInterceptor;
-import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -22,6 +21,11 @@ import java.io.IOException;
* @Description: 鉴权拦截器
*/
public class AuthenticationFilter implements HandlerInterceptor {
+ private static final Logger logger = LoggerFactory.getLogger(AuthenticationFilter.class);
+ private static final String USER_PREFIX = "/user";
+ private static final String ADMIN_PREFIX = "/admin";
+ private static final String ROLE_ADMIN = "admin";
+ private static final String ROLE_USER = "user";
@Autowired
JwtUtil jwtUtil;
@Autowired
@@ -29,13 +33,6 @@ public class AuthenticationFilter implements HandlerInterceptor {
@Autowired
UserService userService;
- private static final Logger logger = LoggerFactory.getLogger(AuthenticationFilter.class);
-
- private static final String USER_PREFIX = "/user";
- private static final String ADMIN_PREFIX = "/admin";
- private static final String ROLE_ADMIN = "admin";
- private static final String ROLE_USER = "user";
-
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String path = request.getRequestURI();
@@ -67,7 +64,7 @@ public class AuthenticationFilter implements HandlerInterceptor {
if (role.equals(ROLE_USER) || role.equals(ROLE_ADMIN)) {
// 更新token
String token = jwtUtil.updateTokenDate(jwtStr);
- response.setHeader("Authorization",token);
+ response.setHeader("Authorization", token);
}
if (role.equals(ROLE_ADMIN)) {
// admin
@@ -84,7 +81,7 @@ public class AuthenticationFilter implements HandlerInterceptor {
response.setHeader("Content-Type", "application/json;charset=UTF-8");
try {
logger.info("鉴权失败,[code:{},msg:{},path:{}]", e.getCode(), e.getMsg(), request.getRequestURI() + "?" + request.getQueryString());
- response.getWriter().println(JSONObject.fromObject(ResponseUtil.response(e, null)));
+ response.getWriter().println(JSONObject.fromObject(Response.response(e, null)));
} catch (IOException ex) {
ex.printStackTrace();
}
diff --git a/src/main/java/cn/celess/blog/configuration/filter/MultipleSubmitFilter.java b/src/main/java/cn/celess/blog/configuration/filter/MultipleSubmitFilter.java
index c0557cc..c0d908d 100644
--- a/src/main/java/cn/celess/blog/configuration/filter/MultipleSubmitFilter.java
+++ b/src/main/java/cn/celess/blog/configuration/filter/MultipleSubmitFilter.java
@@ -28,7 +28,7 @@ public class MultipleSubmitFilter implements HandlerInterceptor {
// 请求参数和路径均相同 且请求时间间隔小于 WAIT_TIME
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
- Response result = new Response(ResponseEnum.FAILURE.getCode(), "重复请求", null, System.currentTimeMillis());
+ Response result = new Response(ResponseEnum.FAILURE.getCode(), "重复请求", null);
response.getWriter().println(result.toString());
return false;
}
diff --git a/src/main/java/cn/celess/blog/controller/ArticleController.java b/src/main/java/cn/celess/blog/controller/ArticleController.java
index a8177d2..c4b011f 100644
--- a/src/main/java/cn/celess/blog/controller/ArticleController.java
+++ b/src/main/java/cn/celess/blog/controller/ArticleController.java
@@ -6,7 +6,6 @@ import cn.celess.blog.entity.model.ArticleModel;
import cn.celess.blog.entity.request.ArticleReq;
import cn.celess.blog.service.ArticleService;
import cn.celess.blog.util.RedisUserUtil;
-import cn.celess.blog.util.ResponseUtil;
import cn.celess.blog.util.SitemapGenerateUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -36,7 +35,7 @@ public class ArticleController {
public Response create(@RequestBody ArticleReq body) {
ArticleModel articleModel = articleService.create(body);
sitemapGenerateUtil.createSitemap();
- return ResponseUtil.success(articleModel);
+ return Response.success(articleModel);
}
/**
@@ -49,7 +48,7 @@ public class ArticleController {
public Response delete(@RequestParam("articleID") long articleId) {
boolean delete = articleService.delete(articleId);
sitemapGenerateUtil.createSitemap();
- return ResponseUtil.success(delete);
+ return Response.success(delete);
}
/**
@@ -62,7 +61,7 @@ public class ArticleController {
public Response update(@RequestBody ArticleReq body) {
ArticleModel update = articleService.update(body);
sitemapGenerateUtil.createSitemap();
- return ResponseUtil.success(update);
+ return Response.success(update);
}
/**
@@ -80,13 +79,13 @@ public class ArticleController {
public Response retrieveOneById(@PathVariable("articleID") long articleId,
@RequestParam(value = "update", defaultValue = "false") boolean is4update,
HttpServletRequest request) {
- ArticleModel article = articleService.retrieveOneByID(articleId, is4update);
+ ArticleModel article = articleService.retrieveOneById(articleId, is4update);
if (article.getOpen()) {
- return ResponseUtil.success(article);
- } else if (article.getAuthorId().equals(redisUserUtil.get().getId())) {
- return ResponseUtil.success(article);
+ return Response.success(article);
+ } else if (article.getAuthor().getId().equals(redisUserUtil.get().getId())) {
+ return Response.success(article);
}
- return ResponseUtil.response(ResponseEnum.PERMISSION_ERROR, null);
+ return Response.response(ResponseEnum.PERMISSION_ERROR, null);
}
/**
@@ -99,7 +98,7 @@ public class ArticleController {
@GetMapping("/articles")
public Response articles(@RequestParam(name = "page", defaultValue = "1") int page,
@RequestParam(name = "count", defaultValue = "5") int count) {
- return ResponseUtil.success(articleService.retrievePageForOpen(count, page));
+ return Response.success(articleService.retrievePageForOpen(count, page));
}
/**
@@ -112,7 +111,7 @@ public class ArticleController {
@GetMapping("/admin/articles")
public Response adminArticles(@RequestParam(name = "page", defaultValue = "1") int page,
@RequestParam(name = "count", defaultValue = "10") int count) {
- return ResponseUtil.success(articleService.adminArticles(count, page));
+ return Response.success(articleService.adminArticles(count, page));
}
/**
@@ -127,7 +126,7 @@ public class ArticleController {
public Response findByCategory(@PathVariable("name") String name,
@RequestParam(name = "page", defaultValue = "1") int page,
@RequestParam(name = "count", defaultValue = "10") int count) {
- return ResponseUtil.success(articleService.findByCategory(name, page, count));
+ return Response.success(articleService.findByCategory(name, page, count));
}
/**
@@ -142,13 +141,13 @@ public class ArticleController {
public Response findByTag(@PathVariable("name") String name,
@RequestParam(name = "page", defaultValue = "1") int page,
@RequestParam(name = "count", defaultValue = "10") int count) {
- return ResponseUtil.success(articleService.findByTag(name, page, count));
+ return Response.success(articleService.findByTag(name, page, count));
}
@GetMapping("/createSitemap")
public Response createSitemap() {
sitemapGenerateUtil.createSitemap();
- return ResponseUtil.success(null);
+ return Response.success(null);
}
}
diff --git a/src/main/java/cn/celess/blog/controller/CategoryController.java b/src/main/java/cn/celess/blog/controller/CategoryController.java
index c9a7fab..08f2791 100644
--- a/src/main/java/cn/celess/blog/controller/CategoryController.java
+++ b/src/main/java/cn/celess/blog/controller/CategoryController.java
@@ -2,7 +2,6 @@ package cn.celess.blog.controller;
import cn.celess.blog.entity.Response;
import cn.celess.blog.service.CategoryService;
-import cn.celess.blog.util.ResponseUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -24,7 +23,7 @@ public class CategoryController {
*/
@PostMapping("/admin/category/create")
public Response addOne(@RequestParam("name") String name) {
- return ResponseUtil.success(categoryService.create(name));
+ return Response.success(categoryService.create(name));
}
/**
@@ -35,7 +34,7 @@ public class CategoryController {
*/
@DeleteMapping("/admin/category/del")
public Response deleteOne(@RequestParam("id") long id) {
- return ResponseUtil.success(categoryService.delete(id));
+ return Response.success(categoryService.delete(id));
}
/**
@@ -48,7 +47,7 @@ public class CategoryController {
@PutMapping("/admin/category/update")
public Response updateOne(@RequestParam("id") Long id,
@RequestParam("name") String name) {
- return ResponseUtil.success(categoryService.update(id, name));
+ return Response.success(categoryService.update(id, name));
}
/**
@@ -57,7 +56,8 @@ public class CategoryController {
* @return Response
*/
@GetMapping("/categories")
- public Response getPage() {
- return ResponseUtil.success(categoryService.retrievePage());
+ public Response getPage(@RequestParam(name = "page", defaultValue = "1") int page,
+ @RequestParam(name = "count", defaultValue = "1000") int count) {
+ return Response.success(categoryService.retrievePage(page, count));
}
}
diff --git a/src/main/java/cn/celess/blog/controller/CommentController.java b/src/main/java/cn/celess/blog/controller/CommentController.java
index dff5808..8841ef3 100644
--- a/src/main/java/cn/celess/blog/controller/CommentController.java
+++ b/src/main/java/cn/celess/blog/controller/CommentController.java
@@ -1,10 +1,8 @@
package cn.celess.blog.controller;
-import cn.celess.blog.entity.Comment;
import cn.celess.blog.entity.Response;
import cn.celess.blog.entity.request.CommentReq;
import cn.celess.blog.service.CommentService;
-import cn.celess.blog.util.ResponseUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -26,72 +24,96 @@ public class CommentController {
*/
@PostMapping("/user/comment/create")
public Response addOne(@RequestBody CommentReq reqBody) {
- return ResponseUtil.success(commentService.create(reqBody));
+ return Response.success(commentService.create(reqBody));
}
@DeleteMapping("/user/comment/del")
public Response delete(@RequestParam("id") long id) {
- return ResponseUtil.success(commentService.delete(id));
+ return Response.success(commentService.delete(id));
}
@PutMapping("/user/comment/update")
public Response update(@RequestBody CommentReq reqBody) {
- return ResponseUtil.success(commentService.update(reqBody));
+ return Response.success(commentService.update(reqBody));
}
/**
- * 获取所有的一级评论
+ * 获取所有的评论
*
- * @param articleId 文章id
- * @param count 单页数据量
- * @param page 页码
+ * @param pagePath pagePath
+ * @param count 单页数据量
+ * @param page 页码
* @return Response
*/
- @GetMapping("/comments")
- public Response commentsOfArticle(@RequestParam("articleId") long articleId,
+ @GetMapping("/comments/{pagePath}/{pid}")
+ public Response commentsOfArticle(@PathVariable("pagePath") String pagePath, @PathVariable(value = "pid") long pid,
@RequestParam(value = "count", required = false, defaultValue = "10") int count,
@RequestParam(value = "page", required = false, defaultValue = "1") int page) {
- return ResponseUtil.success(commentService.retrievePageByArticle(articleId, -1, page, count));
+ String path = "";
+ if (pagePath.contains("article+")) {
+ path = "article/" + pagePath.split("\\+", 2)[1];
+ } else {
+ path = pagePath;
+ }
+ if ("*".equals(pagePath)) {
+ path = null;
+ }
+ return Response.success(commentService.retrievePageByPageAndPid(path, pid, page, count));
}
/**
* 通过pid获取数据
*
- * @param pid
- * @return
+ * @param pagePath pagePath
+ * @param count count
+ * @param page page
+ * @return Response
*/
- @GetMapping("/comment/pid/{pid}")
- public Response retrievePage(@PathVariable("pid") long pid) {
- return ResponseUtil.success(commentService.retrievePageByPid(pid));
+ @GetMapping("/comment/pagePath/{pagePath}")
+ public Response retrievePage(@PathVariable("pagePath") String pagePath,
+ @RequestParam(value = "count", required = false, defaultValue = "10") int count,
+ @RequestParam(value = "page", required = false, defaultValue = "1") int page) {
+ String path = "";
+ if (pagePath.contains("article+")) {
+ path = "article/" + pagePath.split("\\+", 2)[1];
+ } else {
+ path = pagePath;
+ }
+ if ("*".equals(pagePath)) {
+ path = null;
+ }
+ return Response.success(commentService.retrievePage(path, page, count));
}
- /**
- * 获取所以的一级留言
- *
- * @param count
- * @param page
- * @return
- */
- @GetMapping("/leaveMsg")
- public Response retrievePageOfLeaveMsg(@RequestParam(value = "count", required = false, defaultValue = "10") int count,
- @RequestParam(value = "page", required = false, defaultValue = "1") int page) {
- return ResponseUtil.success(commentService.retrievePageByTypeAndPid(false, -1, page, count));
+ @GetMapping("/user/comment/pagePath/{pagePath}")
+ public Response userComment(@PathVariable("pagePath") String pagePath,
+ @RequestParam(value = "count", required = false, defaultValue = "10") int count,
+ @RequestParam(value = "page", required = false, defaultValue = "1") int page) {
+ String path = "";
+ if (pagePath.contains("article+")) {
+ path = "article/" + pagePath.split("\\+", 2)[1];
+ } else {
+ path = pagePath;
+ }
+ if ("*".equals(pagePath)) {
+ path = null;
+ }
+ return Response.success(commentService.retrievePageByAuthor(path, page, count));
}
- @GetMapping("/admin/comment/type/{type}")
- public Response retrievePageAdmin(
- @PathVariable("type") int isComment,
- @RequestParam(value = "count", required = false, defaultValue = "10") int count,
- @RequestParam(value = "page", required = false, defaultValue = "1") int page) {
- return ResponseUtil.success(commentService.retrievePageByType(1 == isComment, page, count));
+ @GetMapping("/admin/comment/pagePath/{pagePath}")
+ public Response adminComment(@PathVariable("pagePath") String pagePath,
+ @RequestParam(value = "count", required = false, defaultValue = "10") int count,
+ @RequestParam(value = "page", required = false, defaultValue = "1") int page) {
+ String path = "";
+ if (pagePath.contains("article+")) {
+ path = "article/" + pagePath.split("\\+", 2)[1];
+ } else {
+ path = pagePath;
+ }
+ if ("*".equals(pagePath)) {
+ path = null;
+ }
+ return Response.success(commentService.retrievePageByPage(path, page, count));
}
-
- @GetMapping("/user/comment/type/{type}")
- public Response retrievePageByAuthor(
- @PathVariable(value = "type") int isComment,
- @RequestParam(value = "count", required = false, defaultValue = "10") int count,
- @RequestParam(value = "page", required = false, defaultValue = "1") int page) {
- return ResponseUtil.success(commentService.retrievePageByAuthor(1 == isComment, page, count));
- }
-
}
diff --git a/src/main/java/cn/celess/blog/controller/LinksController.java b/src/main/java/cn/celess/blog/controller/LinksController.java
index 16c751f..943657f 100644
--- a/src/main/java/cn/celess/blog/controller/LinksController.java
+++ b/src/main/java/cn/celess/blog/controller/LinksController.java
@@ -7,10 +7,9 @@ import cn.celess.blog.entity.request.LinkReq;
import cn.celess.blog.exception.MyException;
import cn.celess.blog.service.MailService;
import cn.celess.blog.service.PartnerSiteService;
+import cn.celess.blog.util.DateFormatUtil;
import cn.celess.blog.util.RedisUtil;
import cn.celess.blog.util.RegexUtil;
-import cn.celess.blog.util.ResponseUtil;
-import cn.celess.blog.util.DateFormatUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.web.bind.annotation.*;
@@ -37,17 +36,17 @@ public class LinksController {
@PostMapping("/admin/links/create")
public Response create(@RequestBody LinkReq reqBody) {
- return ResponseUtil.success(partnerSiteService.create(reqBody));
+ return Response.success(partnerSiteService.create(reqBody));
}
@DeleteMapping("/admin/links/del/{id}")
public Response del(@PathVariable("id") long id) {
- return ResponseUtil.success(partnerSiteService.del(id));
+ return Response.success(partnerSiteService.del(id));
}
@PutMapping("/admin/links/update")
public Response update(@RequestBody LinkReq reqBody) {
- return ResponseUtil.success(partnerSiteService.update(reqBody));
+ return Response.success(partnerSiteService.update(reqBody));
}
@GetMapping("/links")
@@ -60,13 +59,13 @@ public class LinksController {
sites.add(p);
}
}
- return ResponseUtil.success(sites);
+ return Response.success(sites);
}
@GetMapping("/admin/links")
public Response all(@RequestParam("page") int page,
@RequestParam("count") int count) {
- return ResponseUtil.success(partnerSiteService.PartnerSitePages(page, count));
+ return Response.success(partnerSiteService.partnerSitePages(page, count));
}
@PostMapping("/apply")
@@ -74,10 +73,10 @@ public class LinksController {
@RequestParam("url") String url) {
// TODO :: 弃用发送邮件的方式。
if (name == null || name.replaceAll(" ", "").isEmpty()) {
- return ResponseUtil.response(ResponseEnum.PARAMETERS_ERROR, null);
+ return Response.response(ResponseEnum.PARAMETERS_ERROR, null);
}
if (!RegexUtil.urlMatch(url)) {
- return ResponseUtil.response(ResponseEnum.PARAMETERS_URL_ERROR, null);
+ return Response.response(ResponseEnum.PARAMETERS_URL_ERROR, null);
}
String applyTimeStr = redisUtil.get(request.getRemoteAddr() + "-Apply");
int applyTime = 0;
@@ -93,7 +92,6 @@ public class LinksController {
message.setText("name:" + name + "\nurl:" + url + "\n" + DateFormatUtil.getNow());
Boolean send = mailService.send(message);
redisUtil.setEx(request.getRemoteAddr() + "-Apply", applyTime + 1 + "", 2, TimeUnit.HOURS);
- return send ? ResponseUtil.success("") : ResponseUtil.failure("");
-
+ return send ? Response.success("") : Response.failure("");
}
}
diff --git a/src/main/java/cn/celess/blog/controller/Other.java b/src/main/java/cn/celess/blog/controller/Other.java
index e4473ed..928a71e 100644
--- a/src/main/java/cn/celess/blog/controller/Other.java
+++ b/src/main/java/cn/celess/blog/controller/Other.java
@@ -8,7 +8,6 @@ import cn.celess.blog.service.CountService;
import cn.celess.blog.service.QiniuService;
import cn.celess.blog.util.HttpUtil;
import cn.celess.blog.util.RedisUtil;
-import cn.celess.blog.util.ResponseUtil;
import cn.celess.blog.util.VeriCodeUtil;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
@@ -16,17 +15,18 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
-import java.io.*;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.nio.charset.StandardCharsets;
+import java.io.IOException;
+import java.io.OutputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
@@ -55,11 +55,10 @@ public class Other {
Map countMap = new HashMap<>();
countMap.put("articleCount", countService.getArticleCount());
countMap.put("commentCount", countService.getCommentCount());
- countMap.put("leaveMsgCount", countService.getLeaveMessageCount());
countMap.put("categoryCount", countService.getCategoriesCount());
countMap.put("tagCount", countService.getTagsCount());
countMap.put("visitorCount", countService.getVisitorCount());
- return ResponseUtil.success(countMap);
+ return Response.success(countMap);
}
@@ -80,7 +79,7 @@ public class Other {
}
map.put("sessionID", request.getSession().getId());
map.put("request.getRemoteAddr()", request.getRemoteAddr());
- return ResponseUtil.success(map);
+ return Response.success(map);
}
/**
@@ -123,10 +122,10 @@ public class Other {
if (code.equals(codeStr)) {
request.getSession().removeAttribute("code");
request.getSession().setAttribute("verImgCodeStatus", true);
- return ResponseUtil.success("验证成功");
+ return Response.success("验证成功");
} else {
request.getSession().removeAttribute("code");
- return ResponseUtil.failure("验证失败,请重新获取验证码");
+ return Response.failure("验证失败,请重新获取验证码");
}
}
@@ -182,10 +181,10 @@ public class Other {
try {
imageObj = JSONObject.fromObject(HttpUtil.get("https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN"));
} catch (IOException e) {
- return ResponseUtil.failure(null);
+ return Response.failure(null);
}
JSONArray jsonArray = imageObj.getJSONArray("images");
String imageName = jsonArray.getJSONObject(0).getString("url");
- return ResponseUtil.success("https://cn.bing.com" + imageName);
+ return Response.success("https://cn.bing.com" + imageName);
}
}
diff --git a/src/main/java/cn/celess/blog/controller/TagController.java b/src/main/java/cn/celess/blog/controller/TagController.java
index 4df2da2..95abe06 100644
--- a/src/main/java/cn/celess/blog/controller/TagController.java
+++ b/src/main/java/cn/celess/blog/controller/TagController.java
@@ -1,10 +1,8 @@
package cn.celess.blog.controller;
import cn.celess.blog.entity.Response;
-import cn.celess.blog.entity.Tag;
import cn.celess.blog.entity.model.TagModel;
import cn.celess.blog.service.TagService;
-import cn.celess.blog.util.ResponseUtil;
import net.sf.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -24,34 +22,24 @@ public class TagController {
@PostMapping("/admin/tag/create")
public Response addOne(@RequestParam("name") String name) {
- return ResponseUtil.success(tagService.create(name));
+ return Response.success(tagService.create(name));
}
@DeleteMapping("/admin/tag/del")
public Response delOne(@RequestParam("id") long id) {
- return ResponseUtil.success(tagService.delete(id));
+ return Response.success(tagService.delete(id));
}
@PutMapping("/admin/tag/update")
public Response updateOne(@RequestParam("id") Long id, @RequestParam("name") String name) {
- return ResponseUtil.success(tagService.update(id, name));
- }
-
- @GetMapping("/tag/id/{id}")
- public Response retrieveOneById(@PathVariable("id") long id) {
- return ResponseUtil.success(tagService.retrieveOneById(id));
- }
-
- @GetMapping("/tag/name/{name}")
- public Response retrieveOneByName(@PathVariable("name") String name) {
- return ResponseUtil.success(tagService.retrieveOneByName(name));
+ return Response.success(tagService.update(id, name));
}
@GetMapping("/tags")
public Response getPage(@RequestParam(required = false, defaultValue = "10", value = "count") int count,
@RequestParam(required = false, defaultValue = "1", value = "page") int page) {
- return ResponseUtil.success(tagService.retrievePage(page, count));
+ return Response.success(tagService.retrievePage(page, count));
}
@GetMapping("/tags/nac")
@@ -61,10 +49,10 @@ public class TagController {
for (TagModel t : all) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("name", t.getName());
- jsonObject.put("size", t.getArticles() == null ? 0 : t.getArticles().size());
+ jsonObject.put("size", t.getArticles().size());
nameAndCount.add(jsonObject);
}
- return ResponseUtil.success(nameAndCount);
+ return Response.success(nameAndCount);
}
}
diff --git a/src/main/java/cn/celess/blog/controller/UserController.java b/src/main/java/cn/celess/blog/controller/UserController.java
index 8a31601..7b7f9f1 100644
--- a/src/main/java/cn/celess/blog/controller/UserController.java
+++ b/src/main/java/cn/celess/blog/controller/UserController.java
@@ -4,7 +4,6 @@ import cn.celess.blog.entity.Response;
import cn.celess.blog.entity.request.LoginReq;
import cn.celess.blog.entity.request.UserReq;
import cn.celess.blog.service.UserService;
-import cn.celess.blog.util.ResponseUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -23,28 +22,28 @@ public class UserController {
@PostMapping("/login")
public Response login(@RequestBody LoginReq loginReq) {
- return ResponseUtil.success(userService.login(loginReq));
+ return Response.success(userService.login(loginReq));
}
@PostMapping("/registration")
public Response registration(@RequestParam("email") String email,
@RequestParam("password") String password) {
- return ResponseUtil.success(userService.registration(email, password));
+ return Response.success(userService.registration(email, password));
}
@GetMapping("/logout")
public Response logout() {
- return ResponseUtil.success(userService.logout());
+ return Response.success(userService.logout());
}
@PutMapping("/user/userInfo/update")
public Response updateInfo(String desc, String displayName) {
- return ResponseUtil.success(userService.update(desc, displayName));
+ return Response.success(userService.update(desc, displayName));
}
@GetMapping("/user/userInfo")
public Response getUserInfo() {
- return ResponseUtil.success(userService.getUserInfoBySession());
+ return Response.success(userService.getUserInfoBySession());
}
/**
@@ -58,7 +57,7 @@ public class UserController {
@ResponseBody
public Response upload(@RequestParam("file") MultipartFile file) throws IOException {
if (file.isEmpty()) {
- return ResponseUtil.failure("上传失败,请选择文件");
+ return Response.failure("上传失败,请选择文件");
}
String fileName = file.getOriginalFilename();
String mime = fileName.substring(fileName.lastIndexOf("."));
@@ -66,64 +65,64 @@ public class UserController {
".jpeg".equals(mime.toLowerCase()) || ".bmp".equals(mime.toLowerCase())) {
return (Response) userService.updateUserAavatarImg(file.getInputStream(), mime);
}
- return ResponseUtil.failure("请上传图片文件");
+ return Response.failure("请上传图片文件");
}
@PostMapping("/sendResetPwdEmail")
public Response sendResetPwdEmail(@RequestParam("email") String email) {
- return ResponseUtil.success(userService.sendResetPwdEmail(email));
+ return Response.success(userService.sendResetPwdEmail(email));
}
@PostMapping("/sendVerifyEmail")
public Response sendVerifyEmail(@RequestParam("email") String email) {
- return ResponseUtil.success(userService.sendVerifyEmail(email));
+ return Response.success(userService.sendVerifyEmail(email));
}
@PostMapping("/emailVerify")
public Response emailVerify(@RequestParam("verifyId") String verifyId,
@RequestParam("email") String mail) {
- return ResponseUtil.success(userService.verifyEmail(verifyId, mail));
+ return Response.success(userService.verifyEmail(verifyId, mail));
}
@PostMapping("/resetPwd")
public Response resetPwd(@RequestParam("verifyId") String verifyId,
@RequestParam("email") String email,
@RequestParam("pwd") String pwd) {
- return ResponseUtil.success(userService.reSetPwd(verifyId, email, pwd));
+ return Response.success(userService.reSetPwd(verifyId, email, pwd));
}
@PostMapping("/user/setPwd")
public Response setPwd(@RequestParam("pwd") String pwd,
- @RequestParam("newPwd") String newPwd,
- @RequestParam("confirmPwd") String confirmPwd) {
- return ResponseUtil.success(userService.setPwd(pwd,newPwd,confirmPwd));
+ @RequestParam("newPwd") String newPwd,
+ @RequestParam("confirmPwd") String confirmPwd) {
+ return Response.success(userService.setPwd(pwd, newPwd, confirmPwd));
}
@DeleteMapping("/admin/user/delete")
public Response multipleDelete(@RequestBody Integer[] ids) {
- return ResponseUtil.success(userService.deleteUser(ids));
+ return Response.success(userService.deleteUser(ids));
}
@DeleteMapping("/admin/user/delete/{id}")
public Response delete(@PathVariable("id") Integer id) {
- return ResponseUtil.success(userService.deleteUser(new Integer[]{id}));
+ return Response.success(userService.deleteUser(new Integer[]{id}));
}
@PutMapping("/admin/user")
public Response updateInfoByAdmin(@RequestBody UserReq user) {
- return ResponseUtil.success(userService.adminUpdate(user));
+ return Response.success(userService.adminUpdate(user));
}
@GetMapping("/admin/users")
public Response getAllUser(@RequestParam("page") int pageNum, @RequestParam("count") int count) {
- return ResponseUtil.success(userService.getUserList(pageNum, count));
+ return Response.success(userService.getUserList(pageNum, count));
}
@GetMapping("/emailStatus/{email}")
public Response getEmailStatus(@PathVariable("email") String email) {
- return ResponseUtil.success(userService.getStatusOfEmail(email));
+ return Response.success(userService.getStatusOfEmail(email));
}
diff --git a/src/main/java/cn/celess/blog/controller/VisitorController.java b/src/main/java/cn/celess/blog/controller/VisitorController.java
index 741e8ef..8a965f9 100644
--- a/src/main/java/cn/celess/blog/controller/VisitorController.java
+++ b/src/main/java/cn/celess/blog/controller/VisitorController.java
@@ -3,7 +3,6 @@ package cn.celess.blog.controller;
import cn.celess.blog.entity.Response;
import cn.celess.blog.service.CountService;
import cn.celess.blog.service.VisitorService;
-import cn.celess.blog.util.ResponseUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -22,29 +21,29 @@ public class VisitorController {
@GetMapping("/visitor/count")
public Response getVisitorCount() {
- return ResponseUtil.success(countService.getVisitorCount());
+ return Response.success(countService.getVisitorCount());
}
@GetMapping("/admin/visitor/page")
public Response page(@RequestParam(value = "count", required = false, defaultValue = "10") int count,
@RequestParam(value = "page", required = false, defaultValue = "1") int page,
@RequestParam(value = "showLocation", required = false, defaultValue = "false") boolean showLocation) {
- return ResponseUtil.success(visitorService.visitorPage(page, count, showLocation));
+ return Response.success(visitorService.visitorPage(page, count, showLocation));
}
@PostMapping("/visit")
public Response add(HttpServletRequest request) {
- return ResponseUtil.success(visitorService.addVisitor(request));
+ return Response.success(visitorService.addVisitor(request));
}
@GetMapping("/dayVisitCount")
public Response dayVisitCount() {
- return ResponseUtil.success(countService.getDayVisitCount());
+ return Response.success(countService.getDayVisitCount());
}
@GetMapping("/ip/{ip}")
public Response ipLocation(@PathVariable("ip") String ip) {
- return ResponseUtil.success(visitorService.location(ip));
+ return Response.success(visitorService.location(ip));
}
/**
@@ -55,6 +54,6 @@ public class VisitorController {
*/
@GetMapping("/ip")
public Response getIp(HttpServletRequest request) {
- return ResponseUtil.success(request.getRemoteAddr());
+ return Response.success(request.getRemoteAddr());
}
}
diff --git a/src/main/java/cn/celess/blog/controller/WebUpdateInfoController.java b/src/main/java/cn/celess/blog/controller/WebUpdateInfoController.java
index eb5f432..03e4baa 100644
--- a/src/main/java/cn/celess/blog/controller/WebUpdateInfoController.java
+++ b/src/main/java/cn/celess/blog/controller/WebUpdateInfoController.java
@@ -2,7 +2,6 @@ package cn.celess.blog.controller;
import cn.celess.blog.entity.Response;
import cn.celess.blog.service.WebUpdateInfoService;
-import cn.celess.blog.util.ResponseUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@@ -17,31 +16,32 @@ public class WebUpdateInfoController {
@PostMapping("/admin/webUpdate/create")
public Response create(@RequestParam("info") String info) {
- return ResponseUtil.success(webUpdateInfoService.create(info));
+ return Response.success(webUpdateInfoService.create(info));
}
@DeleteMapping("/admin/webUpdate/del/{id}")
public Response del(@PathVariable("id") long id) {
- return ResponseUtil.success(webUpdateInfoService.del(id));
+ return Response.success(webUpdateInfoService.del(id));
}
@PutMapping("/admin/webUpdate/update")
public Response update(@RequestParam("id") long id, @RequestParam("info") String info) {
- return ResponseUtil.success(webUpdateInfoService.update(id, info));
+ return Response.success(webUpdateInfoService.update(id, info));
}
@GetMapping("/webUpdate")
public Response findAll() {
- return ResponseUtil.success(webUpdateInfoService.findAll());
+ return Response.success(webUpdateInfoService.findAll());
}
@GetMapping("/webUpdate/pages")
public Response page(@RequestParam("page") int page, @RequestParam("count") int count) {
- return ResponseUtil.success(webUpdateInfoService.pages(count, page));
+ return Response.success(webUpdateInfoService.pages(count, page));
}
+
@GetMapping("/lastestUpdate")
public Response lastestUpdateTime() {
- return ResponseUtil.success(webUpdateInfoService.getLastestUpdateTime());
+ return Response.success(webUpdateInfoService.getLastestUpdateTime());
}
diff --git a/src/main/java/cn/celess/blog/enmu/CommentStatusEnum.java b/src/main/java/cn/celess/blog/enmu/CommentStatusEnum.java
new file mode 100644
index 0000000..01ccbac
--- /dev/null
+++ b/src/main/java/cn/celess/blog/enmu/CommentStatusEnum.java
@@ -0,0 +1,23 @@
+package cn.celess.blog.enmu;
+
+import lombok.Getter;
+
+/**
+ * @Author: 小海
+ * @Date: 2020-05-25 08:58
+ * @Desc:
+ */
+@Getter
+public enum CommentStatusEnum {
+ // 正常
+ NORMAL(0, "正常"),
+ DELETED(3, "已删除");
+
+ private final int code;
+ private final String msg;
+
+ CommentStatusEnum(int code, String msg) {
+ this.code = code;
+ this.msg = msg;
+ }
+}
diff --git a/src/main/java/cn/celess/blog/enmu/LevelEnum.java b/src/main/java/cn/celess/blog/enmu/LevelEnum.java
deleted file mode 100644
index feb9d2c..0000000
--- a/src/main/java/cn/celess/blog/enmu/LevelEnum.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package cn.celess.blog.enmu;
-
-import lombok.Getter;
-
-/**
- * @Author: 小海
- * @Date: 2019/06/29 00:00
- * @Description: 文章数据模型转换的级别(响应参数的选择)
- */
-@Getter
-public enum LevelEnum {
- //低级
- LOW(0),
- //中级
- MIDDLE(1),
- //另一个级别的转化
- BETWEEN_M_AND_H(2),
- //高级
- HEIGHT(3);
-
- private int levelCode;
-
- LevelEnum(int levelCode) {
- this.levelCode = levelCode;
- }
-
-}
diff --git a/src/main/java/cn/celess/blog/enmu/ResponseEnum.java b/src/main/java/cn/celess/blog/enmu/ResponseEnum.java
index e26c48a..5e68d5c 100644
--- a/src/main/java/cn/celess/blog/enmu/ResponseEnum.java
+++ b/src/main/java/cn/celess/blog/enmu/ResponseEnum.java
@@ -11,6 +11,8 @@ public enum ResponseEnum {
FAILURE(-1, "失败"),
ERROR(-2, "错误"),
+ DATA_IS_DELETED(1000, "数据已被删除"),
+
//文章类
ARTICLE_NOT_EXIST(2010, "文章不存在"),
ARTICLE_HAS_EXIST(2020, "文章已存在"),
@@ -68,9 +70,8 @@ public enum ResponseEnum {
PARAMETERS_QQ_ERROR(8540, "QQ格式错误"),
PARAMETERS_PWD_ERROR(8550, "密码格式错误"),
VERIFY_OUT(8400, "已经验证过了");
-
- private int code;
- private String msg;
+ private final int code;
+ private final String msg;
ResponseEnum(int code, String msg) {
diff --git a/src/main/java/cn/celess/blog/enmu/RoleEnum.java b/src/main/java/cn/celess/blog/enmu/RoleEnum.java
new file mode 100644
index 0000000..8f399f2
--- /dev/null
+++ b/src/main/java/cn/celess/blog/enmu/RoleEnum.java
@@ -0,0 +1,23 @@
+package cn.celess.blog.enmu;
+
+import lombok.Getter;
+
+/**
+ * @Author: 小海
+ * @Date: 2020-05-24 16:31
+ * @Desc:
+ */
+@Getter
+public enum RoleEnum {
+ // admin 权限
+ ADMIN_ROLE("admin"),
+ // user 权限
+ USER_ROLE("user");
+
+
+ private final String roleName;
+
+ RoleEnum(String roleName) {
+ this.roleName = roleName;
+ }
+}
diff --git a/src/main/java/cn/celess/blog/enmu/UserAccountStatusEnum.java b/src/main/java/cn/celess/blog/enmu/UserAccountStatusEnum.java
new file mode 100644
index 0000000..81fd9c7
--- /dev/null
+++ b/src/main/java/cn/celess/blog/enmu/UserAccountStatusEnum.java
@@ -0,0 +1,39 @@
+package cn.celess.blog.enmu;
+
+/**
+ * @Author: 小海
+ * @Date: 2020-05-22 21:32
+ * @Desc:
+ */
+public enum UserAccountStatusEnum {
+
+ /**
+ * 账户正常
+ */
+ NORMAL(0, "正常"),
+ /**
+ * 账户被锁定
+ */
+ LOCKED(1, "锁定"),
+ /**
+ * 账户被删除
+ */
+ DELETED(2, "已删除");
+
+
+ private final int code;
+ private final String desc;
+
+ UserAccountStatusEnum(int code, String desc) {
+ this.code = code;
+ this.desc = desc;
+ }
+
+ public int getCode() {
+ return code;
+ }
+
+ public String getDesc() {
+ return desc;
+ }
+}
diff --git a/src/main/java/cn/celess/blog/entity/Article.java b/src/main/java/cn/celess/blog/entity/Article.java
index 29b865c..e3f3e47 100644
--- a/src/main/java/cn/celess/blog/entity/Article.java
+++ b/src/main/java/cn/celess/blog/entity/Article.java
@@ -3,6 +3,7 @@ package cn.celess.blog.entity;
import lombok.Data;
import java.util.Date;
+import java.util.List;
/**
* @author : xiaohai
@@ -41,16 +42,6 @@ public class Article {
private Date updateDate = null;
- private Long categoryId;
-
- private String tagsId;
-
- private Long authorId;
-
- private Long preArticleId;
-
- private Long nextArticleId;
-
private Long readingNumber;
/**
@@ -58,4 +49,15 @@ public class Article {
*/
private Boolean open;
+ private Category category;
+
+ private List tags;
+
+ private Integer likeCount;
+
+ private Integer dislikeCount;
+
+ private User user;
+
+ private boolean deleted = false;
}
diff --git a/src/main/java/cn/celess/blog/entity/ArticleTag.java b/src/main/java/cn/celess/blog/entity/ArticleTag.java
new file mode 100644
index 0000000..6ba2184
--- /dev/null
+++ b/src/main/java/cn/celess/blog/entity/ArticleTag.java
@@ -0,0 +1,26 @@
+package cn.celess.blog.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @Author: 小海
+ * @Date: 2020-05-24 14:52
+ * @Desc:
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class ArticleTag {
+ private Long id;
+
+ private Article article;
+
+ private TagCategory tag;
+
+ public ArticleTag(Article article, TagCategory tag) {
+ this.article = article;
+ this.tag = tag;
+ }
+}
diff --git a/src/main/java/cn/celess/blog/entity/Category.java b/src/main/java/cn/celess/blog/entity/Category.java
index b72c9a0..815f7aa 100644
--- a/src/main/java/cn/celess/blog/entity/Category.java
+++ b/src/main/java/cn/celess/blog/entity/Category.java
@@ -1,20 +1,14 @@
-package cn.celess.blog.entity;
-
-
-import lombok.Data;
-
-
-/**
- * @author : xiaohai
- * @date : 2019/03/28 22:18
- */
-@Data
-public class Category {
-
- private Long id;
-
- private String name;
-
- private String articles;
-
-}
+package cn.celess.blog.entity;
+
+import lombok.NoArgsConstructor;
+
+/**
+ * @author : xiaohai
+ * @date : 2019/03/28 22:18
+ */
+@NoArgsConstructor
+public class Category extends TagCategory {
+ public Category(String name) {
+ super.setName(name);
+ }
+}
diff --git a/src/main/java/cn/celess/blog/entity/Comment.java b/src/main/java/cn/celess/blog/entity/Comment.java
index 90b480f..0651111 100644
--- a/src/main/java/cn/celess/blog/entity/Comment.java
+++ b/src/main/java/cn/celess/blog/entity/Comment.java
@@ -14,27 +14,21 @@ public class Comment {
private Long id;
- /**
- * 是评论还是留言 0:评论 其他(1):留言
- */
- private Boolean type;
+ private int status;
- private Long authorID;
+ private String pagePath;
private String content;
- private Long articleID;
-
private Date date;
- /**
- * 回应着ID 默认为顶级回复
- */
- private String responseId = "";
+ private User fromUser;
+ private User toUser;
/**
* 评论的父ID
*/
private Long pid;
+ // private boolean delete;
}
diff --git a/src/main/java/cn/celess/blog/entity/PartnerSite.java b/src/main/java/cn/celess/blog/entity/PartnerSite.java
index c1a1493..a45c477 100644
--- a/src/main/java/cn/celess/blog/entity/PartnerSite.java
+++ b/src/main/java/cn/celess/blog/entity/PartnerSite.java
@@ -19,6 +19,12 @@ public class PartnerSite {
private Boolean open;
+ private String iconPath;
+
+ private String desc;
+
+ private Boolean delete = false;
+
public PartnerSite() {
}
diff --git a/src/main/java/cn/celess/blog/entity/Response.java b/src/main/java/cn/celess/blog/entity/Response.java
index f2fa23f..547ac79 100644
--- a/src/main/java/cn/celess/blog/entity/Response.java
+++ b/src/main/java/cn/celess/blog/entity/Response.java
@@ -1,5 +1,6 @@
package cn.celess.blog.entity;
+import cn.celess.blog.enmu.ResponseEnum;
import lombok.Data;
import net.sf.json.JSONObject;
@@ -14,16 +15,45 @@ public class Response implements Serializable {
private int code;
private String msg;
private Object result;
- private long date;
public Response() {
}
- public Response(int code, String msg, Object result, long date) {
+ public Response(int code, String msg, Object result) {
this.code = code;
this.msg = msg;
this.result = result;
- this.date = date;
+ }
+
+ /**
+ * 成功相应
+ *
+ * @param result 结果
+ * @return Response
+ */
+ public static Response success(Object result) {
+ return new Response(ResponseEnum.SUCCESS.getCode(), ResponseEnum.SUCCESS.getMsg(), result);
+ }
+
+ /**
+ * 失败的响应
+ *
+ * @param result 结果
+ * @return Response
+ */
+ public static Response failure(String result) {
+ return new Response(ResponseEnum.FAILURE.getCode(), ResponseEnum.FAILURE.getMsg(), result);
+ }
+
+ /**
+ * 其他的响应
+ *
+ * @param r 枚举常量
+ * @param result 结果
+ * @return Response
+ */
+ public static Response response(ResponseEnum r, String result) {
+ return new Response(r.getCode(), r.getMsg(), result);
}
@Override
diff --git a/src/main/java/cn/celess/blog/entity/Tag.java b/src/main/java/cn/celess/blog/entity/Tag.java
index 58526a4..e120cd0 100644
--- a/src/main/java/cn/celess/blog/entity/Tag.java
+++ b/src/main/java/cn/celess/blog/entity/Tag.java
@@ -1,16 +1,15 @@
-package cn.celess.blog.entity;
-
-import lombok.Data;
-
-/**
- * @author : xiaohai
- * @date : 2019/03/28 22:19
- */
-@Data
-public class Tag {
- private Long id;
-
- private String name;
-
- private String articles;
-}
+package cn.celess.blog.entity;
+
+import lombok.NoArgsConstructor;
+
+/**
+ * @author : xiaohai
+ * @date : 2019/03/28 22:19
+ */
+@NoArgsConstructor
+public class Tag extends TagCategory {
+
+ public Tag(String name) {
+ super.setName(name);
+ }
+}
diff --git a/src/main/java/cn/celess/blog/entity/TagCategory.java b/src/main/java/cn/celess/blog/entity/TagCategory.java
new file mode 100644
index 0000000..78ec3ed
--- /dev/null
+++ b/src/main/java/cn/celess/blog/entity/TagCategory.java
@@ -0,0 +1,19 @@
+package cn.celess.blog.entity;
+
+import lombok.Data;
+
+/**
+ * @Author: 小海
+ * @Date: 2020-05-24 14:03
+ * @Desc:
+ */
+@Data
+public class TagCategory {
+ private Long id;
+
+ private String name;
+
+ private Boolean category = true;
+
+ private Boolean deleted = false;
+}
diff --git a/src/main/java/cn/celess/blog/entity/User.java b/src/main/java/cn/celess/blog/entity/User.java
index 7a3d9dd..f912025 100644
--- a/src/main/java/cn/celess/blog/entity/User.java
+++ b/src/main/java/cn/celess/blog/entity/User.java
@@ -2,6 +2,7 @@ package cn.celess.blog.entity;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
+import lombok.NoArgsConstructor;
import java.util.Date;
@@ -10,6 +11,7 @@ import java.util.Date;
* @date : 2019/03/28 14:52
*/
@Data
+@NoArgsConstructor
public class User {
private Long id;
@@ -18,12 +20,6 @@ public class User {
*/
private String email;
- /**
- * 用户唯一标识码
- */
- @JsonIgnore
- private String uid;
-
/**
* 密码
*/
@@ -46,15 +42,12 @@ public class User {
private Date recentlyLandedDate;
- /**
- * 随机码 用户验证邮箱/找回密码
- * 暂时废弃这一字段
- */
- private String emailVerifyId;
-
private String role = "user";
- public User() {
- }
+ private int status;
+ public User(String email, String pwd) {
+ this.email = email;
+ this.pwd = pwd;
+ }
}
diff --git a/src/main/java/cn/celess/blog/entity/Visitor.java b/src/main/java/cn/celess/blog/entity/Visitor.java
index 2092745..5767cf1 100644
--- a/src/main/java/cn/celess/blog/entity/Visitor.java
+++ b/src/main/java/cn/celess/blog/entity/Visitor.java
@@ -15,6 +15,7 @@ public class Visitor {
private String ip;
private Date date;
private String ua;
+ private boolean delete;
public Visitor(String ip, Date date, String ua) {
this.ip = ip;
diff --git a/src/main/java/cn/celess/blog/entity/WebUpdate.java b/src/main/java/cn/celess/blog/entity/WebUpdate.java
index 8cb3ee6..4e2a99e 100644
--- a/src/main/java/cn/celess/blog/entity/WebUpdate.java
+++ b/src/main/java/cn/celess/blog/entity/WebUpdate.java
@@ -17,11 +17,12 @@ public class WebUpdate {
private Date updateTime;
+ private boolean delete;
+
public WebUpdate() {
}
- public WebUpdate(String updateInfo, Date updateTime) {
+ public WebUpdate(String updateInfo) {
this.updateInfo = updateInfo;
- this.updateTime = updateTime;
}
}
diff --git a/src/main/java/cn/celess/blog/entity/model/ArticleModel.java b/src/main/java/cn/celess/blog/entity/model/ArticleModel.java
index 22cd274..623e1d3 100644
--- a/src/main/java/cn/celess/blog/entity/model/ArticleModel.java
+++ b/src/main/java/cn/celess/blog/entity/model/ArticleModel.java
@@ -1,9 +1,10 @@
package cn.celess.blog.entity.model;
+import cn.celess.blog.entity.Tag;
import lombok.Getter;
import lombok.Setter;
-import java.io.Serializable;
+import java.util.List;
/**
* @author : xiaohai
@@ -57,40 +58,28 @@ public class ArticleModel {
/**
* 标签
*/
- private String[] tags;
+ private List tags;
/**
* 作者
*/
- private Long authorId;
+ private UserModel author;
- /**
- * 作者名字
- */
- private String authorName;
+ private ArticleModel preArticle;
- /**
- * 上一篇文章
- */
- private Long preArticleId;
-
- /**
- * 下一篇文章
- */
- private Long nextArticleId;
-
- private String preArticleTitle;
-
- private String nextArticleTitle;
+ private ArticleModel nextArticle;
/**
* 阅读数
*/
private Long readingNumber;
+ private Integer likeCount;
+
+ private Integer dislikeCount;
+
/**
* 文章的状态 true:公开 false:不公开
*/
private Boolean open;
-
}
diff --git a/src/main/java/cn/celess/blog/entity/model/CategoryModel.java b/src/main/java/cn/celess/blog/entity/model/CategoryModel.java
index f601030..b355d42 100644
--- a/src/main/java/cn/celess/blog/entity/model/CategoryModel.java
+++ b/src/main/java/cn/celess/blog/entity/model/CategoryModel.java
@@ -1,12 +1,9 @@
package cn.celess.blog.entity.model;
-import cn.celess.blog.entity.Category;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
-import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
/**
@@ -22,22 +19,5 @@ public class CategoryModel {
private String name;
- private List articles;
-
-
- public CategoryModel(Category category) {
- this.id = category.getId();
- this.name = category.getName();
- if (category.getArticles() == null || category.getArticles().length() == 0) {
- articles = null;
- } else {
- articles = new ArrayList<>();
- for (String s : category.getArticles().split(",")) {
- if ("".equals(s)) {
- return;
- }
- articles.add(Integer.parseInt(s));
- }
- }
- }
+ private List articles;
}
diff --git a/src/main/java/cn/celess/blog/entity/model/CommentModel.java b/src/main/java/cn/celess/blog/entity/model/CommentModel.java
index 1fa68d6..ad9de7b 100644
--- a/src/main/java/cn/celess/blog/entity/model/CommentModel.java
+++ b/src/main/java/cn/celess/blog/entity/model/CommentModel.java
@@ -14,46 +14,31 @@ import java.util.List;
public class CommentModel {
private long id;
- /**
- * 是评论还是留言 0:评论 其他(1):留言
- */
- private boolean isComment;
+ private UserModel fromUser;
- private String authorName;
-
- private String authorAvatarImgUrl;
+ private UserModel toUser;
/**
* 内容
*/
private String content;
- /**
- * 文章ID
- */
- private long articleID;
-
/**
* 文章标题
*/
- private String articleTitle;
+ private String pagePath;
/**
* 发布日期
*/
private String date;
- /**
- * 回应着ID 默认为顶级回复
- */
- private String responseId = "";
-
/**
* 评论的父ID
*/
- private long pid = -1;
+ private Long pid;
private List respComment;
-
+ private int status;
}
diff --git a/src/main/java/cn/celess/blog/entity/model/PageData.java b/src/main/java/cn/celess/blog/entity/model/PageData.java
new file mode 100644
index 0000000..5e75273
--- /dev/null
+++ b/src/main/java/cn/celess/blog/entity/model/PageData.java
@@ -0,0 +1,38 @@
+package cn.celess.blog.entity.model;
+
+import com.github.pagehelper.PageInfo;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.List;
+
+/**
+ * @Author: 小海
+ * @Date: 2020-05-25 17:13
+ * @Desc:
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class PageData {
+
+ private List list;
+
+ private long total;
+
+ private int pageSize;
+
+ private int pageNum;
+
+ public PageData(PageInfo pageInfo) {
+ this.pageNum = pageInfo.getPageNum();
+ this.pageSize = pageInfo.getPageSize();
+ this.total = pageInfo.getTotal();
+ }
+
+ public PageData(PageInfo pageInfo, List data) {
+ this(pageInfo);
+ this.list = data;
+ }
+}
diff --git a/src/main/java/cn/celess/blog/entity/model/TagModel.java b/src/main/java/cn/celess/blog/entity/model/TagModel.java
index a4111c1..6a605b6 100644
--- a/src/main/java/cn/celess/blog/entity/model/TagModel.java
+++ b/src/main/java/cn/celess/blog/entity/model/TagModel.java
@@ -1,11 +1,9 @@
package cn.celess.blog.entity.model;
-import cn.celess.blog.entity.Tag;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
-import java.util.ArrayList;
import java.util.List;
/**
@@ -21,21 +19,6 @@ public class TagModel {
private String name;
- private List articles;
+ private List articles;
- public TagModel(Tag tag) {
- this.id = tag.getId();
- this.name = tag.getName();
- if (tag.getArticles() == null || tag.getArticles().length() == 0) {
- articles = null;
- } else {
- articles = new ArrayList<>();
- for (String s : tag.getArticles().split(",")) {
- if ("".equals(s)) {
- return;
- }
- articles.add(Integer.parseInt(s));
- }
- }
- }
}
diff --git a/src/main/java/cn/celess/blog/entity/request/ArticleReq.java b/src/main/java/cn/celess/blog/entity/request/ArticleReq.java
index ae30c2c..e1312b4 100644
--- a/src/main/java/cn/celess/blog/entity/request/ArticleReq.java
+++ b/src/main/java/cn/celess/blog/entity/request/ArticleReq.java
@@ -11,7 +11,7 @@ public class ArticleReq {
private Long id;
private String title;
private String mdContent;
- private String tags;
+ private String[] tags;
private Boolean type;
private String url;
private String category;
diff --git a/src/main/java/cn/celess/blog/entity/request/CommentReq.java b/src/main/java/cn/celess/blog/entity/request/CommentReq.java
index a310c30..c322326 100644
--- a/src/main/java/cn/celess/blog/entity/request/CommentReq.java
+++ b/src/main/java/cn/celess/blog/entity/request/CommentReq.java
@@ -9,9 +9,8 @@ import lombok.Data;
@Data
public class CommentReq {
private Long id;
- private Boolean comment;
private String content;
- private Long pid;
- private Long articleID;
- private String responseId;
+ private long pid = -1;
+ private String pagePath;
+ private long toUserId = -1;
}
diff --git a/src/main/java/cn/celess/blog/entity/request/LinkReq.java b/src/main/java/cn/celess/blog/entity/request/LinkReq.java
index 137673e..e7ed027 100644
--- a/src/main/java/cn/celess/blog/entity/request/LinkReq.java
+++ b/src/main/java/cn/celess/blog/entity/request/LinkReq.java
@@ -11,5 +11,7 @@ public class LinkReq {
private long id;
private String name;
private String url;
+ private String iconPath;
+ private String desc;
private boolean open;
}
diff --git a/src/main/java/cn/celess/blog/exception/ExceptionHandle.java b/src/main/java/cn/celess/blog/exception/ExceptionHandle.java
index 480a686..a35ab64 100644
--- a/src/main/java/cn/celess/blog/exception/ExceptionHandle.java
+++ b/src/main/java/cn/celess/blog/exception/ExceptionHandle.java
@@ -26,12 +26,11 @@ import javax.servlet.http.HttpServletRequest;
@ControllerAdvice
public class ExceptionHandle {
+ public static final Logger logger = LoggerFactory.getLogger(ExceptionHandle.class);
@Autowired
MailService mailService;
@Autowired
HttpServletRequest request;
- public static final Logger logger = LoggerFactory.getLogger(ExceptionHandle.class);
-
@Value("${spring.profiles.active}")
private String activeModel;
@@ -41,27 +40,27 @@ public class ExceptionHandle {
//自定义错误
if (e instanceof MyException) {
logger.debug("返回了自定义的exception,[code={},msg={}]", ((MyException) e).getCode(), e.getMessage());
- return new Response(((MyException) e).getCode(), e.getMessage(), null, System.currentTimeMillis());
+ return new Response(((MyException) e).getCode(), e.getMessage(), null);
}
//请求路径不支持该方法
if (e instanceof HttpRequestMethodNotSupportedException) {
- logger.debug("遇到请求路径与请求方法不匹配的请求,[msg={},path:{},method:{}]", e.getMessage(),request.getRequestURL(),request.getMethod());
- return new Response(ResponseEnum.ERROR.getCode(), e.getMessage(), null, System.currentTimeMillis());
+ logger.debug("遇到请求路径与请求方法不匹配的请求,[msg={},path:{},method:{}]", e.getMessage(), request.getRequestURL(), request.getMethod());
+ return new Response(ResponseEnum.ERROR.getCode(), e.getMessage(), null);
}
//数据输入类型不匹配
if (e instanceof MethodArgumentTypeMismatchException) {
logger.debug("输入类型不匹配,[msg={}]", e.getMessage());
- return new Response(ResponseEnum.PARAMETERS_ERROR.getCode(), "数据输入有问题,请修改后再访问", null, System.currentTimeMillis());
+ return new Response(ResponseEnum.PARAMETERS_ERROR.getCode(), "数据输入有问题,请修改后再访问", null);
}
//数据验证失败
if (e instanceof BindException) {
logger.debug("数据验证失败,[msg={}]", e.getMessage());
- return new Response(ResponseEnum.PARAMETERS_ERROR.getCode(), "数据输入有问题,请修改", null, System.currentTimeMillis());
+ return new Response(ResponseEnum.PARAMETERS_ERROR.getCode(), "数据输入有问题,请修改", null);
}
//数据输入不完整
if (e instanceof MissingServletRequestParameterException) {
logger.debug("数据输入不完整,[msg={}]", e.getMessage());
- return new Response(ResponseEnum.PARAMETERS_ERROR.getCode(), "数据输入不完整,请检查", null, System.currentTimeMillis());
+ return new Response(ResponseEnum.PARAMETERS_ERROR.getCode(), "数据输入不完整,请检查", null);
}
// 发送错误信息到邮箱
@@ -70,7 +69,7 @@ public class ExceptionHandle {
sendMessage(e);
}
e.printStackTrace();
- return new Response(ResponseEnum.ERROR.getCode(), "服务器出现错误,已记录", null, System.currentTimeMillis());
+ return new Response(ResponseEnum.ERROR.getCode(), "服务器出现错误,已记录", null);
}
/**
diff --git a/src/main/java/cn/celess/blog/mapper/ArticleMapper.java b/src/main/java/cn/celess/blog/mapper/ArticleMapper.java
index aef3de4..26e0881 100644
--- a/src/main/java/cn/celess/blog/mapper/ArticleMapper.java
+++ b/src/main/java/cn/celess/blog/mapper/ArticleMapper.java
@@ -1,7 +1,7 @@
package cn.celess.blog.mapper;
import cn.celess.blog.entity.Article;
-import org.apache.ibatis.annotations.*;
+import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
@@ -21,21 +21,15 @@ public interface ArticleMapper {
int update(Article a);
- int updateNextArticleId(long targetArticleID, long nextArticleID);
-
- int updatePreArticleId(long targetArticleID, long preArticleID);
-
- long getLastestArticleId();
-
Article getLastestArticle();
Article findArticleById(long id);
boolean existsByTitle(String title);
- boolean existsById(long id);
+ boolean isDeletedById(long id);
- List findAllByAuthorId(long authorID);
+ List findAllByAuthorId(long authorId);
List findAllByOpen(boolean isOpen);
@@ -43,15 +37,15 @@ public interface ArticleMapper {
List findAllByCategoryId(long id);
+ List findAllByCategoryIdAndOpen(long id);
+
List findAll();
- Article getSimpleInfo(long id);
+ Article getPreArticle(Long id);
- List getSimpleInfoByCategory(long categoryId);
+ Article getNextArticle(Long id);
- List getSimpleInfoByTag(List idList);
-
- int setReadingNumber(long number, long id);
+ int updateReadingNumber(long id);
long count();
diff --git a/src/main/java/cn/celess/blog/mapper/ArticleTagMapper.java b/src/main/java/cn/celess/blog/mapper/ArticleTagMapper.java
new file mode 100644
index 0000000..bcf4fc7
--- /dev/null
+++ b/src/main/java/cn/celess/blog/mapper/ArticleTagMapper.java
@@ -0,0 +1,35 @@
+package cn.celess.blog.mapper;
+
+import cn.celess.blog.entity.ArticleTag;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * @Author: 小海
+ * @Date: 2020-05-24 14:21
+ * @Desc:
+ */
+@Mapper
+@Repository
+public interface ArticleTagMapper {
+
+ int insert(ArticleTag articleTag);
+
+ int update(ArticleTag articleTag);
+
+ ArticleTag findOneById(Long id);
+
+ int deleteById(Long id);
+
+ int deleteByArticleId(Long articleId);
+
+ List findAllByArticleId(Long articleId);
+
+ int deleteMultiById(List articleTags);
+
+ List findArticleByTag(Long tagId);
+
+ List findArticleByTagAndOpen(Long tagId);
+}
diff --git a/src/main/java/cn/celess/blog/mapper/CategoryMapper.java b/src/main/java/cn/celess/blog/mapper/CategoryMapper.java
index 2c3f941..2fc9017 100644
--- a/src/main/java/cn/celess/blog/mapper/CategoryMapper.java
+++ b/src/main/java/cn/celess/blog/mapper/CategoryMapper.java
@@ -34,7 +34,7 @@ public interface CategoryMapper {
String getNameById(long id);
- Long getIDByName(String name);
+ Long getIdByName(String name);
Category getLastestCategory();
diff --git a/src/main/java/cn/celess/blog/mapper/CommentMapper.java b/src/main/java/cn/celess/blog/mapper/CommentMapper.java
index 4b0bd7f..84af53a 100644
--- a/src/main/java/cn/celess/blog/mapper/CommentMapper.java
+++ b/src/main/java/cn/celess/blog/mapper/CommentMapper.java
@@ -8,8 +8,8 @@ import java.util.List;
/**
* @Author: 小海
- * @Date: 2019/06/30 16:19
- * @Description:
+ * @Date: 2019/06/30 16:19
+ * @Description:
*/
@Mapper
@Repository
@@ -18,11 +18,9 @@ public interface CommentMapper {
int updateContent(String content, long id);
- int updateResponder(String responder, long id);
-
int delete(long id);
- int deleteByArticleId(long articleId);
+ int deleteByPagePath(String pagePath);
boolean existsById(long id);
@@ -30,19 +28,17 @@ public interface CommentMapper {
Comment getLastestComment();
- List findAllByAuthorIDAndType(long id, boolean isComment);
+ List findAllByFromUser(long id);
- List findAllByPId(long pid);
+ List findAllByPid(long pid);
- List findAllByArticleID(long articleId);
+ List findAllByPagePath(String pagePath);
- List findAllByArticleIDAndPId(long articleID, long pid);
+ List findAllByPagePathAndFromUser(String pagePath, long userId);
- List findCommentsByTypeAndPId(boolean isComment, long pid);
+ List findAllByPagePathAndPidAndNormal(String pagePath, long pid);
- List findAllByPId(int pid);
+ long countByPagePath(String pagePath);
- List findAllByType(boolean isComment);
-
- long countByType(boolean isComment);
+ long count();
}
diff --git a/src/main/java/cn/celess/blog/mapper/TagMapper.java b/src/main/java/cn/celess/blog/mapper/TagMapper.java
index 4877747..ed479c9 100644
--- a/src/main/java/cn/celess/blog/mapper/TagMapper.java
+++ b/src/main/java/cn/celess/blog/mapper/TagMapper.java
@@ -26,10 +26,6 @@ public interface TagMapper {
Boolean existsByName(String name);
- Long getIDByName(String name);
-
- String getNameById(long id);
-
Tag getLastestTag();
List findAll();
diff --git a/src/main/java/cn/celess/blog/mapper/UserMapper.java b/src/main/java/cn/celess/blog/mapper/UserMapper.java
index 6419da4..ab7ec7d 100644
--- a/src/main/java/cn/celess/blog/mapper/UserMapper.java
+++ b/src/main/java/cn/celess/blog/mapper/UserMapper.java
@@ -4,7 +4,6 @@ import cn.celess.blog.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
-import java.util.Date;
import java.util.List;
/**
@@ -16,13 +15,13 @@ import java.util.List;
@Repository
public interface UserMapper {
- int addUser(String email, String pwd);
+ int addUser(User user);
int updateInfo(String desc, String displayName, long id);
int updateAvatarImgUrl(String avatarImgUrl, long id);
- int updateLoginTime(String email, Date date);
+ int updateLoginTime(String email);
int updateEmailStatus(String email, boolean status);
@@ -50,7 +49,9 @@ public interface UserMapper {
int delete(long id);
- int setUserRole(Long uid, String role);
+ int lock(long id);
+
+ int setUserRole(Long id, String role);
List findAll();
diff --git a/src/main/java/cn/celess/blog/mapper/VisitorMapper.java b/src/main/java/cn/celess/blog/mapper/VisitorMapper.java
index ed84320..e47a661 100644
--- a/src/main/java/cn/celess/blog/mapper/VisitorMapper.java
+++ b/src/main/java/cn/celess/blog/mapper/VisitorMapper.java
@@ -20,5 +20,7 @@ public interface VisitorMapper {
List findAll();
+ List findAllNotDeleted();
+
long count();
}
diff --git a/src/main/java/cn/celess/blog/mapper/WebUpdateInfoMapper.java b/src/main/java/cn/celess/blog/mapper/WebUpdateInfoMapper.java
index d2fa669..9d57283 100644
--- a/src/main/java/cn/celess/blog/mapper/WebUpdateInfoMapper.java
+++ b/src/main/java/cn/celess/blog/mapper/WebUpdateInfoMapper.java
@@ -4,7 +4,6 @@ import cn.celess.blog.entity.WebUpdate;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
-import java.util.Date;
import java.util.List;
/**
@@ -27,5 +26,7 @@ public interface WebUpdateInfoMapper {
List findAll();
+ List findAllNotDeleted();
+
WebUpdate getLastestOne();
}
diff --git a/src/main/java/cn/celess/blog/service/ArticleService.java b/src/main/java/cn/celess/blog/service/ArticleService.java
index 36f706e..fb15add 100644
--- a/src/main/java/cn/celess/blog/service/ArticleService.java
+++ b/src/main/java/cn/celess/blog/service/ArticleService.java
@@ -1,8 +1,8 @@
package cn.celess.blog.service;
import cn.celess.blog.entity.model.ArticleModel;
+import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.request.ArticleReq;
-import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;
@@ -39,11 +39,11 @@ public interface ArticleService {
/**
* 获取一篇文章的数据
*
- * @param articleID 文章id
+ * @param articleId 文章id
* @param is4update 是否是因文章更新而请求数据
* @return 文章数据
*/
- ArticleModel retrieveOneByID(long articleID, boolean is4update);
+ ArticleModel retrieveOneById(long articleId, boolean is4update);
/**
* 管理员 获取分页数据
@@ -52,7 +52,7 @@ public interface ArticleService {
* @param page 数据页
* @return 分页数据
*/
- PageInfo adminArticles(int count, int page);
+ PageData adminArticles(int count, int page);
/**
* 获取文章状态为开放的文章
@@ -61,7 +61,7 @@ public interface ArticleService {
* @param page 数据页
* @return 分页数据
*/
- PageInfo retrievePageForOpen(int count, int page);
+ PageData retrievePageForOpen(int count, int page);
/**
* 根据分类名获取文章数据
@@ -71,7 +71,7 @@ public interface ArticleService {
* @param page 数据页
* @return 分页数据
*/
- PageInfo findByCategory(String name, int page, int count);
+ PageData findByCategory(String name, int page, int count);
/**
* 根据标签名获取文章数据
@@ -81,5 +81,5 @@ public interface ArticleService {
* @param page 数据页
* @return 分页数据
*/
- PageInfo findByTag(String name, int page, int count);
+ PageData findByTag(String name, int page, int count);
}
diff --git a/src/main/java/cn/celess/blog/service/CategoryService.java b/src/main/java/cn/celess/blog/service/CategoryService.java
index d5e5470..6f29cbb 100644
--- a/src/main/java/cn/celess/blog/service/CategoryService.java
+++ b/src/main/java/cn/celess/blog/service/CategoryService.java
@@ -1,11 +1,9 @@
package cn.celess.blog.service;
-import cn.celess.blog.entity.Category;
import cn.celess.blog.entity.model.CategoryModel;
+import cn.celess.blog.entity.model.PageData;
import org.springframework.stereotype.Service;
-import java.util.List;
-
/**
* @author : xiaohai
* @date : 2019/03/28 22:42
@@ -20,14 +18,6 @@ public interface CategoryService {
*/
CategoryModel create(String name);
- /**
- * 增加一个分类
- *
- * @param category 分类对象
- * @return 所增加的分类数据
- */
- CategoryModel create(Category category);
-
/**
* 通过id删除分类
*
@@ -50,6 +40,6 @@ public interface CategoryService {
*
* @return 全部的分类数据
*/
- List retrievePage();
+ PageData retrievePage(int page, int count);
}
diff --git a/src/main/java/cn/celess/blog/service/CommentService.java b/src/main/java/cn/celess/blog/service/CommentService.java
index d8a6841..71879f6 100644
--- a/src/main/java/cn/celess/blog/service/CommentService.java
+++ b/src/main/java/cn/celess/blog/service/CommentService.java
@@ -1,8 +1,8 @@
package cn.celess.blog.service;
import cn.celess.blog.entity.model.CommentModel;
+import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.request.CommentReq;
-import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;
import java.util.List;
@@ -40,17 +40,17 @@ public interface CommentService {
/**
* 分页获取数据
*
- * @param isComment true:评论 false:留言
- * @param count 单页数据量
- * @param page 数据页
+ * @param pagePath pagePath
+ * @param count 单页数据量
+ * @param page 数据页
* @return 分页数据
*/
- PageInfo retrievePage(Boolean isComment, int page, int count);
+ PageData retrievePage(String pagePath, int page, int count);
/**
* 通过pid获取数据
*
- * @param pid 父id
+ * @param pid 父id
* @return 分页数据
*/
List retrievePageByPid(long pid);
@@ -59,43 +59,33 @@ public interface CommentService {
/**
* 根据评论者获取数据
*
- * @param isComment true:评论 false:留言
- * @param count 单页数据量
- * @param page 数据页
+ * @param pagePath pagePath
+ * @param count 单页数据量
+ * @param page 数据页
* @return 分页数据
*/
- PageInfo retrievePageByAuthor(Boolean isComment, int page, int count);
+ PageData retrievePageByAuthor(String pagePath, int page, int count);
- /**
- * 根据文章获取数据
- *
- * @param articleID 文章id
- * @param pid 父id
- * @param count 单页数据量
- * @param page 数据页
- * @return 分页数据
- */
- PageInfo retrievePageByArticle(long articleID, long pid, int page, int count);
/**
* 根据数据的type和pid获取数据
*
- * @param isComment true:评论 false:留言
- * @param pid 父id
- * @param count 单页数据量
- * @param page 数据页
+ * @param pagePath pagePath
+ * @param pid 父id
+ * @param count 单页数据量
+ * @param page 数据页
* @return 分页数据
*/
- PageInfo retrievePageByTypeAndPid(Boolean isComment, int pid, int page, int count);
+ PageData retrievePageByPageAndPid(String pagePath, long pid, int page, int count);
/**
* 根据type获取数据
*
- * @param isComment true:评论 false:留言
- * @param count 单页数据量
- * @param page 数据页
+ * @param pagePath pagePath
+ * @param count 单页数据量
+ * @param page 数据页
* @return 分页数据
*/
- PageInfo retrievePageByType(Boolean isComment, int page, int count);
+ PageData retrievePageByPage(String pagePath, int page, int count);
}
diff --git a/src/main/java/cn/celess/blog/service/CountService.java b/src/main/java/cn/celess/blog/service/CountService.java
index b553031..7267ece 100644
--- a/src/main/java/cn/celess/blog/service/CountService.java
+++ b/src/main/java/cn/celess/blog/service/CountService.java
@@ -36,13 +36,6 @@ public interface CountService {
*/
long getTagsCount();
- /**
- * 获取留言数量
- *
- * @return 留言数量
- */
- long getLeaveMessageCount();
-
/**
* 获取用户量
*
diff --git a/src/main/java/cn/celess/blog/service/PartnerSiteService.java b/src/main/java/cn/celess/blog/service/PartnerSiteService.java
index 6874604..6d28b27 100644
--- a/src/main/java/cn/celess/blog/service/PartnerSiteService.java
+++ b/src/main/java/cn/celess/blog/service/PartnerSiteService.java
@@ -1,8 +1,8 @@
package cn.celess.blog.service;
import cn.celess.blog.entity.PartnerSite;
+import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.request.LinkReq;
-import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;
import java.util.List;
@@ -44,7 +44,7 @@ public interface PartnerSiteService {
* @param page 数据页
* @return 分页数据
*/
- PageInfo PartnerSitePages(int page, int count);
+ PageData partnerSitePages(int page, int count);
/**
* 获取全部数据
diff --git a/src/main/java/cn/celess/blog/service/TagService.java b/src/main/java/cn/celess/blog/service/TagService.java
index 73c4a04..69090bb 100644
--- a/src/main/java/cn/celess/blog/service/TagService.java
+++ b/src/main/java/cn/celess/blog/service/TagService.java
@@ -1,8 +1,7 @@
package cn.celess.blog.service;
-import cn.celess.blog.entity.Tag;
+import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.model.TagModel;
-import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;
import java.util.List;
@@ -21,15 +20,6 @@ public interface TagService {
*/
TagModel create(String name);
- /**
- * 新增数据
- *
- * @param tag tag对象
- * @return 新增后的数据
- */
-
- TagModel create(Tag tag);
-
/**
* 删除数据
*
@@ -47,23 +37,6 @@ public interface TagService {
*/
TagModel update(Long id, String name);
- /**
- * 查询单个标签信息
- *
- * @param tagId id
- * @return 标签的数据
- */
- TagModel retrieveOneById(long tagId);
-
- /**
- * 通过name查询标签的信息
- *
- * @param name tag的名称
- * @return 标签数据
- */
- TagModel retrieveOneByName(String name);
-
-
/**
* 分页获取标签数据
*
@@ -71,7 +44,7 @@ public interface TagService {
* @param page 数据页
* @return 分页数据
*/
- PageInfo retrievePage(int page, int count);
+ PageData retrievePage(int page, int count);
/**
* 获取全部标签数据
diff --git a/src/main/java/cn/celess/blog/service/UserService.java b/src/main/java/cn/celess/blog/service/UserService.java
index 36ca86b..3c45203 100644
--- a/src/main/java/cn/celess/blog/service/UserService.java
+++ b/src/main/java/cn/celess/blog/service/UserService.java
@@ -1,16 +1,12 @@
package cn.celess.blog.service;
-import cn.celess.blog.entity.User;
+import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.model.UserModel;
import cn.celess.blog.entity.request.LoginReq;
import cn.celess.blog.entity.request.UserReq;
-import com.github.pagehelper.PageInfo;
-import net.sf.json.JSONObject;
import org.springframework.stereotype.Service;
-import javax.servlet.http.HttpServletRequest;
import java.io.InputStream;
-import java.util.List;
/**
* @author : xiaohai
@@ -42,14 +38,6 @@ public interface UserService {
*/
Object logout();
- /**
- * 获取用户头像的链接
- *
- * @param id 用户id
- * @return 头像链接
- */
- String getAvatarImg(long id);
-
/**
* 更新用户数据
*
@@ -83,14 +71,6 @@ public interface UserService {
*/
String getUserRoleByEmail(String email);
- /**
- * 通过邮箱获取用户的信息
- *
- * @param email 用户邮箱
- * @return 用户信息
- */
- User getUserInfoByEmail(String email);
-
/**
* 获取邮箱是否注册过
*
@@ -99,14 +79,6 @@ public interface UserService {
*/
boolean isExistOfEmail(String email);
- /**
- * 获取用户的name 优先返回displayName 否则返回email
- *
- * @param id 用户id
- * @return name
- */
- String getNameById(long id);
-
/**
* 发送重置密码邮件
*
@@ -157,7 +129,7 @@ public interface UserService {
* @param page 数据页
* @return 分页数据
*/
- PageInfo getUserList(Integer page, Integer count);
+ PageData getUserList(Integer page, Integer count);
/**
* 更改用户信息
@@ -177,10 +149,11 @@ public interface UserService {
/**
* 设置密码
- * @param pwd
- * @param newPwd
- * @param confirmPwd
- * @return
+ *
+ * @param pwd pwd
+ * @param newPwd newPwd
+ * @param confirmPwd confirmPwd
+ * @return UserModel
*/
UserModel setPwd(String pwd, String newPwd, String confirmPwd);
}
diff --git a/src/main/java/cn/celess/blog/service/VisitorService.java b/src/main/java/cn/celess/blog/service/VisitorService.java
index 8f6f595..1da235d 100644
--- a/src/main/java/cn/celess/blog/service/VisitorService.java
+++ b/src/main/java/cn/celess/blog/service/VisitorService.java
@@ -1,7 +1,7 @@
package cn.celess.blog.service;
+import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.model.VisitorModel;
-import com.github.pagehelper.PageInfo;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
@@ -20,7 +20,7 @@ public interface VisitorService {
* @param showLocation 是否显示位置信息 开启改选项数据响应超慢
* @return 分页数据
*/
- PageInfo visitorPage(int page, int count, boolean showLocation);
+ PageData visitorPage(int page, int count, boolean showLocation);
/**
* 新增访客
diff --git a/src/main/java/cn/celess/blog/service/WebUpdateInfoService.java b/src/main/java/cn/celess/blog/service/WebUpdateInfoService.java
index 6a0aa2f..7e86124 100644
--- a/src/main/java/cn/celess/blog/service/WebUpdateInfoService.java
+++ b/src/main/java/cn/celess/blog/service/WebUpdateInfoService.java
@@ -1,7 +1,7 @@
package cn.celess.blog.service;
+import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.model.WebUpdateModel;
-import com.github.pagehelper.PageInfo;
import net.sf.json.JSONObject;
import org.springframework.stereotype.Service;
@@ -45,7 +45,7 @@ public interface WebUpdateInfoService {
* @param page 数据页
* @return 分页数据
*/
- PageInfo pages(int count, int page);
+ PageData pages(int count, int page);
/**
* 获取全部的更新记录
diff --git a/src/main/java/cn/celess/blog/service/serviceimpl/ArticleServiceImpl.java b/src/main/java/cn/celess/blog/service/serviceimpl/ArticleServiceImpl.java
index 00a905f..50b6998 100644
--- a/src/main/java/cn/celess/blog/service/serviceimpl/ArticleServiceImpl.java
+++ b/src/main/java/cn/celess/blog/service/serviceimpl/ArticleServiceImpl.java
@@ -1,34 +1,30 @@
package cn.celess.blog.service.serviceimpl;
-import cn.celess.blog.enmu.LevelEnum;
import cn.celess.blog.enmu.ResponseEnum;
+import cn.celess.blog.enmu.RoleEnum;
import cn.celess.blog.entity.*;
import cn.celess.blog.entity.model.ArticleModel;
+import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.request.ArticleReq;
import cn.celess.blog.exception.MyException;
-import cn.celess.blog.mapper.ArticleMapper;
-import cn.celess.blog.mapper.CategoryMapper;
-import cn.celess.blog.mapper.CommentMapper;
-import cn.celess.blog.mapper.TagMapper;
+import cn.celess.blog.mapper.*;
import cn.celess.blog.service.ArticleService;
import cn.celess.blog.service.UserService;
-import cn.celess.blog.util.DateFormatUtil;
+import cn.celess.blog.util.ModalTrans;
import cn.celess.blog.util.RedisUserUtil;
import cn.celess.blog.util.RegexUtil;
import cn.celess.blog.util.StringFromHtmlUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.youbenzi.mdtool.tool.MDTool;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
import java.util.List;
@@ -37,8 +33,8 @@ import java.util.List;
* @date : 2019/03/28 15:21
*/
@Service
+@Slf4j
public class ArticleServiceImpl implements ArticleService {
- public static final Logger logger = LoggerFactory.getLogger(ArticleServiceImpl.class);
@Autowired
ArticleMapper articleMapper;
@@ -50,6 +46,8 @@ public class ArticleServiceImpl implements ArticleService {
@Autowired
CommentMapper commentMapper;
@Autowired
+ ArticleTagMapper articleTagMapper;
+ @Autowired
UserService userService;
@Autowired
HttpServletRequest request;
@@ -79,303 +77,179 @@ public class ArticleServiceImpl implements ArticleService {
if (reqBody.getCategory() == null || reqBody.getCategory().replaceAll(" ", "").isEmpty()) {
throw new MyException(ResponseEnum.PARAMETERS_ERROR);
}
- if (reqBody.getTags() == null || reqBody.getTags().replaceAll(" ", "").isEmpty()) {
+ if (reqBody.getTags() == null || reqBody.getTags().length == 0) {
throw new MyException(ResponseEnum.PARAMETERS_ERROR);
}
+ if (articleMapper.existsByTitle(reqBody.getTitle())) {
+ throw new MyException(ResponseEnum.ARTICLE_HAS_EXIST);
+ }
+ // 查看是否存在已有的分类
+ Category category = categoryMapper.findCategoryByName(reqBody.getCategory());
+ if (category == null) {
+ throw new MyException(ResponseEnum.CATEGORY_NOT_EXIST);
+ }
-
- //写入数据库的数据
+ // 构建 需要写入数据库的对象数据
Article article = new Article();
- article.setTitle(reqBody.getTitle());
- article.setOpen(reqBody.getOpen());
- article.setMdContent(reqBody.getMdContent());
- article.setUrl(reqBody.getUrl());
- article.setType(reqBody.getType());
+ BeanUtils.copyProperties(reqBody, article);
- article.setAuthorId(redisUserUtil.get().getId());
- article.setPublishDate(new Date());
-
- //防止出现 “null,xxx”这种情况
- article.setTagsId("");
-
-
- //是否需要更新上一篇文章
- boolean isUpdatePreArticle = true;
-
- Article preArticle = null;
-
-
- if (articleMapper.count() == 0) {
- isUpdatePreArticle = false;
-
-
- } else {
- //获取最新的一条数据
- preArticle = articleMapper.getLastestArticle();
- }
-
- if (isUpdatePreArticle) {
- logger.info("上一篇文章的id为:" + preArticle.getId());
- //设置上一篇文章的id
- article.setPreArticleId(preArticle.getId());
- }
+ article.setUser(redisUserUtil.get());
//markdown->html->summary
String str = StringFromHtmlUtil.getString(MDTool.markdown2Html(article.getMdContent()));
//获取摘要 摘要长度为255个字符
String summary = str.length() > 240 ? str.substring(0, 240) + "......" : str;
-
- //去除转换后存在的空格
- String tagStr = reqBody.getTags().replaceAll(" ", "");
article.setSummary(summary);
- if (articleMapper.existsByTitle(article.getTitle())) {
- throw new MyException(ResponseEnum.ARTICLE_HAS_EXIST);
- }
-
-
- //将分类写入数据库
- Category category1 = categoryMapper.findCategoryByName(reqBody.getCategory());
- if (category1 == null) {
- category1 = new Category();
- category1.setArticles("");
- category1.setName(reqBody.getCategory());
- categoryMapper.insert(category1);
- }
-
- article.setCategoryId(category1.getId());
+ article.setCategory(category);
//文章存数据库
articleMapper.insert(article);
- //获取新增的文章
-
- if (isUpdatePreArticle) {
- //更新上一篇文章的“下一篇文章ID”
- articleMapper.updateNextArticleId(preArticle.getId(), article.getId());
- }
-
- //无效
- // articleMapper.updatePreArticleId(article.getId(), preArticle == null ? -1 : preArticle.getId());
- article.setPreArticleId(preArticle == null ? -1 : preArticle.getId());
-
- category1.setArticles(category1.getArticles() + article.getId() + ",");
- categoryMapper.update(category1);
-
-
//将标签写入数据库
- for (String t : tagStr.split(",")) {
- if (t.replaceAll(" ", "").length() == 0) {
+ for (String tagName : reqBody.getTags()) {
+ if (tagName.replaceAll(" ", "").length() == 0) {
//单个标签只含空格
continue;
}
- Tag tag = tagMapper.findTagByName(t);
+ Tag tag = tagMapper.findTagByName(tagName);
if (tag == null) {
tag = new Tag();
- tag.setName(t);
- tag.setArticles("");
+ tag.setName(tagName);
tagMapper.insert(tag);
}
- tag.setArticles(tag.getArticles() + article.getId() + ",");
- article.setTagsId(article.getTagsId() + tag.getId() + ",");
- tagMapper.update(tag);
+ ArticleTag articleTag = new ArticleTag(article, tag);
+ articleTagMapper.insert(articleTag);
}
- articleMapper.update(article);
- return fullTransform(articleMapper.getLastestArticle());
- }
+ Article articleFromDb = articleMapper.findArticleById(article.getId());
+ ArticleModel articleModel = ModalTrans.article(articleFromDb);
+ articleModel.setPreArticle(ModalTrans.article(articleMapper.getPreArticle(article.getId()), true));
+ return articleModel;
+ }
@Override
@Transactional(rollbackFor = Exception.class)
- public boolean delete(long articleID) {
-
- Article articleForDel = articleMapper.findArticleById(articleID);
+ public boolean delete(long articleId) {
+ Article articleForDel = articleMapper.findArticleById(articleId);
if (articleForDel == null) {
- throw new MyException(ResponseEnum.ARTICLE_NOT_EXIST);//文章不存在
+ //文章不存在
+ throw new MyException(ResponseEnum.ARTICLE_NOT_EXIST);
}
- Article preArticle = articleMapper.findArticleById(articleForDel.getPreArticleId());
- Article nextArticle = articleMapper.findArticleById(articleForDel.getNextArticleId());
-
- //对访问情况进行判断 非博主/非自己文章 拒绝访问
+ //对访问情况进行判断 非admin 权限不可删除文章
User user = redisUserUtil.get();
- if (!user.getRole().contains("admin") && !articleForDel.getAuthorId().equals(user.getId())) {
+ if (!RoleEnum.ADMIN_ROLE.getRoleName().equals(user.getRole())) {
throw new MyException(ResponseEnum.PERMISSION_ERROR);
}
-
- //删除的文章处于中间位置
- if (nextArticle != null && preArticle != null) {
-
- //修改上一篇文章的“下一篇文章”y
- articleMapper.updateNextArticleId(articleForDel.getPreArticleId(), articleForDel.getNextArticleId());
-
- //修改下一篇文章的 “上一篇文章”
- articleMapper.updatePreArticleId(articleForDel.getNextArticleId(), articleForDel.getPreArticleId());
- }
- if (preArticle == null && nextArticle != null) {
- //删除的是第一篇文章
- articleMapper.updatePreArticleId(nextArticle.getId(), -1);
- }
- if (nextArticle == null && preArticle != null) {
- //删除的是最后一篇文章
- articleMapper.updateNextArticleId(preArticle.getId(), -1);
- }
- // delete count 为删除的数据数量
- int deleteCount = commentMapper.deleteByArticleId(articleID);
-
- //删除标签中的文章id
- String tag = articleForDel.getTagsId();
- if (tag.length() > 0) {
- String[] tags = tag.split(",");
- for (String t : tags) {
- if (t != null) {
- //查询标签
- Tag tag1 = tagMapper.findTagById(Long.parseLong(t));
- //去除标签中的articleId中的待删除的文章id
- String s = tag1.getArticles().replaceAll(articleForDel.getId() + ",", "");
- tag1.setArticles(s);
- tagMapper.update(tag1);
- }
- }
- }
-
-
- //删除分类中的文章id
- //获取文章的分类
- long categoryId = articleForDel.getCategoryId();
- Category category = categoryMapper.findCategoryById(categoryId);
- //删除文章id
- category.setArticles(category.getArticles().replaceAll(articleForDel.getId() + ",", ""));
- //更新
- categoryMapper.update(category);
-
//删除指定文章
- articleMapper.delete(articleID);
+ articleMapper.delete(articleId);
+
+ articleTagMapper.deleteByArticleId(articleId);
+
return true;
}
@Transactional(rollbackFor = Exception.class)
@Override
public ArticleModel update(ArticleReq reqBody) {
- if (reqBody == null) {
+ if (reqBody == null || reqBody.getId() == null) {
throw new MyException(ResponseEnum.PARAMETERS_ERROR);
}
+ // 查找数据
+ Article article = articleMapper.findArticleById(reqBody.getId());
+
//数据判断
- if (reqBody.getTitle() == null || reqBody.getTitle().replaceAll(" ", "").isEmpty()) {
- throw new MyException(ResponseEnum.PARAMETERS_ERROR);
- } else if (reqBody.getMdContent() == null || reqBody.getMdContent().replaceAll(" ", "").isEmpty()) {
- throw new MyException(ResponseEnum.PARAMETERS_ERROR);
+ if (reqBody.getTitle() != null && !reqBody.getTitle().replaceAll(" ", "").isEmpty()) {
+ if (!article.getTitle().equals(reqBody.getTitle()) && articleMapper.existsByTitle(reqBody.getTitle())) {
+ throw new MyException(ResponseEnum.ARTICLE_HAS_EXIST);
+ }
+ article.setTitle(reqBody.getTitle());
}
+ if (reqBody.getMdContent() != null && !reqBody.getMdContent().replaceAll(" ", "").isEmpty()) {
+ article.setMdContent(reqBody.getMdContent());
+ }
+
//转载 判断链接
- if (!reqBody.getType()) {
- if (reqBody.getUrl() == null || reqBody.getUrl().replaceAll(" ", "").isEmpty()) {
+ if (reqBody.getType() != null) {
+ if (!reqBody.getType() && reqBody.getUrl() == null) {
throw new MyException(ResponseEnum.PARAMETERS_ERROR);
- } else if (!RegexUtil.urlMatch(reqBody.getUrl())) {
+ }
+
+ if (!reqBody.getType() && !RegexUtil.urlMatch(reqBody.getUrl())) {
throw new MyException(ResponseEnum.PARAMETERS_URL_ERROR);
}
+ article.setType(reqBody.getType());
+ article.setUrl(reqBody.getUrl());
}
- if (reqBody.getCategory() == null || reqBody.getCategory().replaceAll(" ", "").isEmpty()) {
- throw new MyException(ResponseEnum.PARAMETERS_ERROR);
- }
- // 暂时不更新tags
- if (reqBody.getTags() == null || reqBody.getTags().replaceAll(" ", "").isEmpty()) {
- throw new MyException(ResponseEnum.PARAMETERS_ERROR);
+ if (reqBody.getCategory() != null && !reqBody.getCategory().replaceAll(" ", "").isEmpty()) {
+ Category category = categoryMapper.findCategoryByName(reqBody.getCategory());
+ if (category == null) {
+ category = new Category();
+ category.setName(reqBody.getCategory());
+ categoryMapper.insert(category);
+ }
+ article.setCategory(category);
}
//写入数据库的数据
- Article article = new Article();
- if (reqBody.getId() == null) {
- throw new MyException(ResponseEnum.PARAMETERS_ERROR.getCode(), "id不能为空");
- }
- article.setId(reqBody.getId());
- article.setTitle(reqBody.getTitle());
- article.setOpen(reqBody.getOpen());
- article.setMdContent(reqBody.getMdContent());
- article.setUrl(reqBody.getUrl());
- article.setType(reqBody.getType());
-
-
- Article oldArticle = articleMapper.findArticleById(reqBody.getId());
-
- Category category = categoryMapper.findCategoryById(oldArticle.getCategoryId());
- if (!(category.getName()).equals(reqBody.getCategory())) {
- //修改更新之前数据 的分类
- category.setArticles(category.getArticles().replace(reqBody.getId() + ",", ""));
- //更新
- categoryMapper.update(category);
-
- //更新 更新之后的分类
- Category category1 = categoryMapper.findCategoryByName(reqBody.getCategory());
- if (category1 == null) {
- category1 = new Category();
- category1.setName(reqBody.getCategory());
- category1.setArticles(reqBody.getId() + ",");
- categoryMapper.insert(category1);
- }
- article.setCategoryId(category1.getId());
- } else {
- article.setCategoryId(oldArticle.getCategoryId());
- }
-
- String[] newTags = reqBody.getTags().split(",");
- String[] tagIds = oldArticle.getTagsId().split(",");
- //防止出现 ‘null2’这种情况
- article.setTagsId("");
- for (String t : newTags) {
- Tag tag = tagMapper.findTagByName(t);
- if (tag == null) {
- tag = new Tag();
- tag.setName(t);
- tag.setArticles(oldArticle.getId() + ",");
- int status = tagMapper.insert(tag);
- if (status == 0) {
- // 插入失败
- throw new MyException(ResponseEnum.FAILURE);
- }
- article.setTagsId(article.getTagsId() + tag.getId() + ",");
- continue;
- }
- article.setTagsId(article.getTagsId() + tag.getId() + ",");
- }
- for (String tagId : tagIds) {
- Tag tagById = tagMapper.findTagById(Long.parseLong(tagId));
- // 在新更新的tag中是否有原有的tag
- boolean isOldTag = false;
- for (String s : newTags) {
- if (s.equals(tagById.getName())) {
- isOldTag = true;
- break;
- }
- }
- if (!isOldTag) {
- tagById.setArticles(tagById.getArticles().replace(oldArticle.getId() + ",", ""));
- }
- tagMapper.update(tagById);
- }
-//
-// // TODO:::: tag的更新
-// article.setTagsId(oldArticle.getTagsId());
-
-
- article.setUpdateDate(new Date());
- // TODO::::换用beansUtil
- // 设置不定参数
- article.setReadingNumber(oldArticle.getReadingNumber());
- article.setPublishDate(oldArticle.getPublishDate());
- article.setAuthorId(redisUserUtil.get().getId());
- article.setPreArticleId(oldArticle.getPreArticleId());
- article.setNextArticleId(oldArticle.getNextArticleId());
+ article.setOpen(reqBody.getOpen() == null ? article.getOpen() : reqBody.getOpen());
String str = StringFromHtmlUtil.getString(MDTool.markdown2Html(article.getMdContent()));
article.setSummary(str.length() > 240 ? str.substring(0, 240) + "......" : str);
articleMapper.update(article);
+
+
+ List allByArticleId = articleTagMapper.findAllByArticleId(article.getId());
+ List updateList = new ArrayList<>();
+ List deleteList = new ArrayList<>();
+
+ // 获取要更新 的标签
+ for (String tag : reqBody.getTags()) {
+ boolean contain = allByArticleId.stream().anyMatch(articleTag -> articleTag.getTag().getName().equals(tag));
+ if (!contain) {
+ ArticleTag articleTag = new ArticleTag();
+ articleTag.setArticle(article);
+ Tag tagByName = tagMapper.findTagByName(tag);
+ if (tagByName == null) {
+ tagByName = new Tag(tag);
+ tagMapper.insert(tagByName);
+ }
+ articleTag.setTag(tagByName);
+ updateList.add(articleTag);
+ }
+ }
+ // 获取要删除的标签
+ allByArticleId.forEach(articleTag -> {
+ boolean contain = false;
+ for (String tag : reqBody.getTags()) {
+ if (articleTag.getTag().getName().equals(tag)) {
+ contain = true;
+ break;
+ }
+ }
+ if (!contain) {
+ deleteList.add(articleTag);
+ }
+ });
+
+ if (updateList.size() != 0) {
+ updateList.forEach(articleTag -> articleTagMapper.insert(articleTag));
+ }
+
+ if (deleteList.size() != 0) {
+ articleTagMapper.deleteMultiById(deleteList);
+ }
+
//更新完成移除
request.getSession().removeAttribute("article4update");
- return fullTransform(article);
+ ArticleModel articleModel = ModalTrans.article(articleMapper.findArticleById(article.getId()));
+ setPreAndNextArticle(articleModel);
+ return articleModel;
}
@Override
- public ArticleModel retrieveOneByID(long articleID, boolean is4update) {
- Article article = articleMapper.findArticleById(articleID);
+ public ArticleModel retrieveOneById(long articleId, boolean is4update) {
+ Article article = articleMapper.findArticleById(articleId);
if (article == null) {
throw new MyException(ResponseEnum.ARTICLE_NOT_EXIST);
}
@@ -385,178 +259,101 @@ public class ArticleServiceImpl implements ArticleService {
throw new MyException(ResponseEnum.ARTICLE_NOT_PUBLIC);
}
}
- article.setReadingNumber(article.getReadingNumber() + 1);
+ ArticleModel articleModel = ModalTrans.article(article);
+
if (is4update) {
//因更新而获取文章 不需要增加阅读量
request.getSession().setAttribute("article4update", article);
- return fullTransform(article);
+ return articleModel;
}
- articleMapper.setReadingNumber(article.getReadingNumber() + 1, articleID);
- return fullTransform(article);
+ setPreAndNextArticle(articleModel);
+ articleMapper.updateReadingNumber(articleId);
+ return articleModel;
}
/**
* @param count 数目
* @param page 页面 默认减1
- * @return
+ * @return PageInfo
*/
@Override
- public PageInfo adminArticles(int count, int page) {
- PageHelper.startPage(page, count);
+ public PageData adminArticles(int count, int page) {
+ PageHelper.startPage(page, count, "articleId desc");
List articleList = articleMapper.findAll();
- PageInfo pageInfo = new PageInfo(articleList);
- pageInfo.setList(list2list(articleList, LevelEnum.BETWEEN_M_AND_H));
- return pageInfo;
+ PageData pageData = new PageData(new PageInfo(articleList));
+ List articleModelList = new ArrayList<>();
+ articleList.forEach(article -> {
+ ArticleModel articleModel = ModalTrans.article(article);
+ articleModel.setMdContent(null);
+ articleModelList.add(articleModel);
+ });
+ pageData.setList(articleModelList);
+ return pageData;
}
@Override
- public PageInfo retrievePageForOpen(int count, int page) {
+ public PageData retrievePageForOpen(int count, int page) {
PageHelper.startPage(page, count);
List articleList = articleMapper.findAllByOpen(true);
- PageInfo pageInfo = new PageInfo(articleList);
- pageInfo.setList(list2list(articleList, LevelEnum.MIDDLE));
- return pageInfo;
+ PageData pageData = new PageData<>(new PageInfo(articleList));
+
+ List articleModelList = new ArrayList<>();
+
+ articleList.forEach(article -> {
+ ArticleModel model = ModalTrans.article(article, true);
+ setPreAndNextArticle(model);
+ articleModelList.add(model);
+ });
+
+ pageData.setList(articleModelList);
+ return pageData;
}
@Override
- public PageInfo findByCategory(String name, int page, int count) {
- Long idByName = categoryMapper.getIDByName(name);
- if (idByName == null) {
+ public PageData findByCategory(String name, int page, int count) {
+ Category category = categoryMapper.findCategoryByName(name);
+ if (category == null) {
throw new MyException(ResponseEnum.CATEGORY_NOT_EXIST);
}
PageHelper.startPage(page, count);
- PageInfo pageInfo = new PageInfo(articleMapper.getSimpleInfoByCategory(idByName));
- return pageInfo;
+ List open = articleMapper.findAllByCategoryIdAndOpen(category.getId());
+
+ List modelList = new ArrayList<>();
+
+ open.forEach(article -> {
+ ArticleModel model = ModalTrans.article(article, true);
+ model.setTags(null);
+ // setPreAndNextArticle(model);
+ model.setNextArticle(null);
+ model.setPreArticle(null);
+ modelList.add(model);
+ });
+ return new PageData(new PageInfo(open), modelList);
}
@Override
- public PageInfo findByTag(String name, int page, int count) {
+ public PageData findByTag(String name, int page, int count) {
Tag tag = tagMapper.findTagByName(name);
if (tag == null) {
throw new MyException(ResponseEnum.TAG_NOT_EXIST);
}
PageHelper.startPage(page, count);
- String[] split = tag.getArticles().split(",");
- List list = Arrays.asList(split);
- List articleList = articleMapper.getSimpleInfoByTag(list);
- PageInfo pageInfo = new PageInfo(articleList);
- return pageInfo;
+ List articleByTag = articleTagMapper.findArticleByTagAndOpen(tag.getId());
+ List modelList = new ArrayList<>();
+ articleByTag.forEach(articleTag -> {
+ ArticleModel model = ModalTrans.article(articleTag.getArticle(), true);
+ model.setNextArticle(null);
+ model.setPreArticle(null);
+ modelList.add(model);
+ });
+ return new PageData(new PageInfo(articleByTag), modelList);
}
- /**
- * page转换
- *
- * @param articleList 数据源
- * @param level 转换级别
- * @return list
- */
- private List list2list(List articleList, LevelEnum level) {
- List content = new ArrayList<>();
- for (Article a : articleList) {
- ArticleModel model;
- switch (level.getLevelCode()) {
- case 0:
- model = simpleTransform(a);
- break;
- case 1:
- model = suitableTransform(a);
- break;
- case 2:
- model = suitableTransformForAdmin(a);
- break;
- case 3:
- default:
- model = fullTransform(a);
- }
- content.add(model);
+ private void setPreAndNextArticle(ArticleModel articleModel) {
+ if (articleModel == null) {
+ return;
}
- return content;
+ articleModel.setPreArticle(ModalTrans.article(articleMapper.getPreArticle(articleModel.getId()), true));
+ articleModel.setNextArticle(ModalTrans.article(articleMapper.getNextArticle(articleModel.getId()), true));
}
-
- /**
- * 简单的模型转换
- * [id,title,summary]
- *
- * @param a 源数据
- * @return 模型
- */
- private ArticleModel simpleTransform(Article a) {
- ArticleModel model = new ArticleModel();
- model.setId(a.getId());
- model.setTitle(a.getTitle());
- model.setSummary(a.getSummary());
-
- return model;
- }
-
- /**
- * 中等转换
- * [id,title,summary]
- * +
- * [original,tags,category]
- *
- * @param a
- * @return
- */
- private ArticleModel suitableTransform(Article a) {
- ArticleModel model = simpleTransform(a);
- model.setAuthorName(userService.getNameById(a.getAuthorId()));
- model.setPublishDateFormat(DateFormatUtil.get(a.getPublishDate()));
- model.setOriginal(a.getType());
- model.setCategory(categoryMapper.getNameById(a.getCategoryId()));
- String[] split = a.getTagsId().split(",");
- String[] tags = new String[split.length];
- for (int i = 0; i < split.length; i++) {
- if (split[i] == null || "".equals(split[i])) {
- continue;
- }
- tags[i] = tagMapper.getNameById(Long.parseLong(split[i]));
- }
- model.setTags(tags);
- return model;
- }
-
- /**
- * 中等转换 for admin页面
- * [id,title]
- * +
- * [original,UpdateDate,open,readingNumber]
- *
- * @param a
- * @return
- */
- private ArticleModel suitableTransformForAdmin(Article a) {
- ArticleModel model = simpleTransform(a);
- model.setPublishDateFormat(DateFormatUtil.get(a.getPublishDate()));
- model.setUpdateDateFormat(DateFormatUtil.get(a.getUpdateDate()));
- model.setReadingNumber(a.getReadingNumber());
- model.setOpen(a.getOpen());
- model.setOriginal(a.getType());
- model.setSummary(null);
- return model;
- }
-
- /**
- * 全转换
- * [id,title,summary,original,tags,category]
- * +
- * [UpdateDate,MdContent,NextArticleId,NextArticleTitle,preArticleId,preArticleTitle,open,url,readingNumber]
- *
- * @param a
- * @return
- */
- private ArticleModel fullTransform(Article a) {
- ArticleModel model = suitableTransform(a);
- model.setUpdateDateFormat(DateFormatUtil.get(a.getUpdateDate()));
- model.setMdContent(a.getMdContent());
- model.setNextArticleId(a.getNextArticleId());
- model.setNextArticleTitle(a.getNextArticleId() == -1 ? "无" : articleMapper.getTitleById(a.getNextArticleId()));
- model.setPreArticleId(a.getPreArticleId());
- model.setPreArticleTitle(a.getPreArticleId() == -1 ? "无" : articleMapper.getTitleById(a.getPreArticleId()));
- model.setOpen(a.getOpen());
- model.setUrl(a.getUrl());
- model.setReadingNumber(a.getReadingNumber());
- return model;
- }
-
}
diff --git a/src/main/java/cn/celess/blog/service/serviceimpl/CategoryServiceImpl.java b/src/main/java/cn/celess/blog/service/serviceimpl/CategoryServiceImpl.java
index e76062a..36c32e2 100644
--- a/src/main/java/cn/celess/blog/service/serviceimpl/CategoryServiceImpl.java
+++ b/src/main/java/cn/celess/blog/service/serviceimpl/CategoryServiceImpl.java
@@ -3,11 +3,16 @@ package cn.celess.blog.service.serviceimpl;
import cn.celess.blog.enmu.ResponseEnum;
import cn.celess.blog.entity.Article;
import cn.celess.blog.entity.Category;
+import cn.celess.blog.entity.model.ArticleModel;
import cn.celess.blog.entity.model.CategoryModel;
+import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.exception.MyException;
import cn.celess.blog.mapper.ArticleMapper;
import cn.celess.blog.mapper.CategoryMapper;
import cn.celess.blog.service.CategoryService;
+import cn.celess.blog.util.ModalTrans;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -35,46 +40,19 @@ public class CategoryServiceImpl implements CategoryService {
}
Category category = new Category();
category.setName(name);
- category.setArticles("");
categoryMapper.insert(category);
- return new CategoryModel(category);
- }
-
- @Override
- public CategoryModel create(Category category) {
- if (category == null) {
- throw new MyException(ResponseEnum.PARAMETERS_ERROR);
- }
- categoryMapper.insert(category);
- return new CategoryModel(category);
+ return ModalTrans.category(category);
}
@Override
public boolean delete(long id) {
Category category = categoryMapper.findCategoryById(id);
-
if (category == null) {
throw new MyException(ResponseEnum.CATEGORY_NOT_EXIST);
}
- String[] articleArray = category.getArticles().split(",");
- for (int i = 0; i < articleArray.length; i++) {
- if (articleArray[i] == null || "".equals(articleArray[i])) {
- continue;
- }
- long articleId = Long.parseLong(articleArray[i]);
- Article article = articleMapper.findArticleById(articleId);
- if (article == null) {
- continue;
- }
- article.setCategoryId(-1L);
- //一个 文章只对应一个分类,分类不存在则文章默认不可见
- article.setOpen(false);
- articleMapper.update(article);
- }
return categoryMapper.delete(id) == 1;
}
-
@Override
public CategoryModel update(Long id, String name) {
if (id == null) {
@@ -83,13 +61,29 @@ public class CategoryServiceImpl implements CategoryService {
Category category = categoryMapper.findCategoryById(id);
category.setName(name);
categoryMapper.update(category);
- return new CategoryModel(category);
+ return ModalTrans.category(category);
}
@Override
- public List retrievePage() {
- List list = new ArrayList<>();
- categoryMapper.findAll().forEach(e -> list.add(new CategoryModel(e)));
- return list;
+ public PageData retrievePage(int page, int count) {
+ PageHelper.startPage(page, count);
+ List all = categoryMapper.findAll();
+ List modelList = new ArrayList<>();
+ all.forEach(e -> {
+ CategoryModel model = ModalTrans.category(e);
+ List allByCategoryId = articleMapper.findAllByCategoryId(e.getId());
+ List articleModelList = new ArrayList<>();
+ allByCategoryId.forEach(article -> {
+ ArticleModel articleModel = ModalTrans.article(article, true);
+ articleModel.setPreArticle(null);
+ articleModel.setNextArticle(null);
+ articleModel.setTags(null);
+ articleModelList.add(articleModel);
+ });
+ model.setArticles(articleModelList);
+ modelList.add(model);
+ });
+
+ return new PageData(new PageInfo(all), modelList);
}
}
diff --git a/src/main/java/cn/celess/blog/service/serviceimpl/CommentServiceImpl.java b/src/main/java/cn/celess/blog/service/serviceimpl/CommentServiceImpl.java
index af9cedb..141738f 100644
--- a/src/main/java/cn/celess/blog/service/serviceimpl/CommentServiceImpl.java
+++ b/src/main/java/cn/celess/blog/service/serviceimpl/CommentServiceImpl.java
@@ -1,25 +1,27 @@
package cn.celess.blog.service.serviceimpl;
+import cn.celess.blog.enmu.CommentStatusEnum;
import cn.celess.blog.enmu.ResponseEnum;
import cn.celess.blog.entity.Comment;
+import cn.celess.blog.entity.User;
import cn.celess.blog.entity.model.CommentModel;
+import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.request.CommentReq;
import cn.celess.blog.exception.MyException;
import cn.celess.blog.mapper.ArticleMapper;
import cn.celess.blog.mapper.CommentMapper;
+import cn.celess.blog.mapper.UserMapper;
import cn.celess.blog.service.CommentService;
-import cn.celess.blog.service.UserService;
-import cn.celess.blog.util.DateFormatUtil;
+import cn.celess.blog.util.ModalTrans;
import cn.celess.blog.util.RedisUserUtil;
-import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
-import java.util.Date;
import java.util.List;
/**
@@ -31,7 +33,7 @@ public class CommentServiceImpl implements CommentService {
@Autowired
CommentMapper commentMapper;
@Autowired
- UserService userService;
+ UserMapper userMapper;
@Autowired
ArticleMapper articleMapper;
@Autowired
@@ -41,52 +43,43 @@ public class CommentServiceImpl implements CommentService {
@Override
public CommentModel create(CommentReq reqBody) {
-
if (reqBody == null) {
throw new MyException(ResponseEnum.PARAMETERS_ERROR);
}
- long authorID = redisUserUtil.get().getId();
+ User user = redisUserUtil.get();
Comment pComment = null;
- if (reqBody.getPid() != null && reqBody.getPid() != -1) {
+ if (reqBody.getPid() != -1) {
pComment = commentMapper.findCommentById(reqBody.getPid());
}
- if (reqBody.getPid() == null) {
- reqBody.setPid(-1L);
- }
//不是一级评论
if (reqBody.getPid() != -1 && pComment == null) {
//父评论不存在
throw new MyException(ResponseEnum.PARAMETERS_ERROR);
}
Comment comment = new Comment();
- comment.setAuthorID(authorID);
- comment.setType(reqBody.getComment());
- if (reqBody.getComment()) {
- //若为评论
- if (reqBody.getArticleID() <= 0) {
- throw new MyException(ResponseEnum.PARAMETERS_ERROR);
- }
- comment.setArticleID(reqBody.getArticleID());
- } else {
- comment.setArticleID(-1L);
+ comment.setFromUser(user);
+ User userTo = new User();
+ userTo.setId(-1L);
+ if (reqBody.getToUserId() != -1) {
+ userTo = userMapper.findById(reqBody.getToUserId());
+ comment.setToUser(userTo);
}
- comment.setContent(reqBody.getContent());
- comment.setPid(reqBody.getPid());
- comment.setDate(new Date());
- comment.setResponseId("");
+ comment.setToUser(userTo);
+ userMapper.findById(reqBody.getToUserId());
+ BeanUtils.copyProperties(reqBody, comment);
commentMapper.insert(comment);
- if (reqBody.getPid() != -1) {
- commentMapper.updateResponder(pComment.getResponseId() + comment.getId() + ",", reqBody.getPid());
- }
- return trans(comment);
+ return ModalTrans.comment(commentMapper.findCommentById(comment.getId()));
}
@Override
public boolean delete(long id) {
- boolean b = commentMapper.existsById(id);
- if (!b) {
+ Comment b = commentMapper.findCommentById(id);
+ if (b == null) {
throw new MyException(ResponseEnum.COMMENT_NOT_EXIST);
}
+ if (b.getStatus() == CommentStatusEnum.DELETED.getCode()) {
+ throw new MyException(ResponseEnum.DATA_IS_DELETED);
+ }
commentMapper.delete(id);
return true;
}
@@ -101,86 +94,65 @@ public class CommentServiceImpl implements CommentService {
commentMapper.updateContent(reqBody.getContent(), reqBody.getId());
comment.setContent(reqBody.getContent());
}
- if (!comment.getResponseId().equals(reqBody.getResponseId())) {
- commentMapper.updateResponder(reqBody.getResponseId(), reqBody.getId());
- comment.setResponseId(reqBody.getResponseId());
- }
- return trans(comment);
+ return ModalTrans.comment(comment);
}
-
@Override
- public PageInfo retrievePage(Boolean isComment, int page, int count) {
+ public PageData retrievePage(String pagePath, int page, int count) {
PageHelper.startPage(page, count);
- List commentList = commentMapper.findAllByType(isComment);
- return pageTrans(commentList);
+ List list = commentMapper.findAllByPagePathAndPidAndNormal(pagePath, -1);
+ return pageTrans(list);
}
@Override
public List retrievePageByPid(long pid) {
- List commentList = commentMapper.findAllByPId(pid);
+ List allByPagePath = commentMapper.findAllByPid(pid);
+ List commentModels = new ArrayList<>();
+ allByPagePath.forEach(comment -> {
+ if (comment.getStatus() != CommentStatusEnum.DELETED.getCode()) {
+ commentModels.add(ModalTrans.comment(comment));
+ }
+ });
+
+ return commentModels;
+ }
+
+ @Override
+ public PageData retrievePageByAuthor(String pagePath, int page, int count) {
+ User user = redisUserUtil.get();
+ PageHelper.startPage(page, count);
+ List list = commentMapper.findAllByPagePathAndFromUser(pagePath, user.getId());
+ return pageTrans(list);
+ }
+
+ @Override
+ public PageData retrievePageByPageAndPid(String pagePath, long pid, int page, int count) {
+ PageHelper.startPage(page, count);
+ List list = commentMapper.findAllByPagePath(pagePath);
+ return pageTrans(list, true);
+ }
+
+ @Override
+ public PageData retrievePageByPage(String pagePath, int page, int count) {
+ PageHelper.startPage(page, count);
+ List list = commentMapper.findAllByPagePath(pagePath);
+ return pageTrans(list, true);
+ }
+
+ private PageData pageTrans(List commentList) {
+ return pageTrans(commentList, false);
+ }
+
+ private PageData pageTrans(List commentList, boolean noResponseList) {
+ PageInfo p = PageInfo.of(commentList);
List modelList = new ArrayList<>();
- commentList.forEach(m -> modelList.add(trans(m)));
- return modelList;
- }
-
- @Override
- public PageInfo retrievePageByArticle(long articleID, long pid, int page, int count) {
- PageHelper.startPage(page, count);
- List commentList = commentMapper.findAllByArticleIDAndPId(articleID, pid);
- return pageTrans(commentList);
- }
-
- @Override
- public PageInfo retrievePageByTypeAndPid(Boolean isComment, int pid, int page, int count) {
- PageHelper.startPage(page, count);
- List commentList = commentMapper.findCommentsByTypeAndPId(isComment, pid);
- return pageTrans(commentList);
- }
-
- @Override
- public PageInfo retrievePageByAuthor(Boolean isComment, int page, int count) {
- PageHelper.startPage(page, count);
- List commentList = commentMapper.findAllByAuthorIDAndType(redisUserUtil.get().getId(), isComment);
- return pageTrans(commentList);
- }
-
-
- @Override
- public PageInfo retrievePageByType(Boolean isComment, int page, int count) {
- PageHelper.startPage(page, count);
- List commentList = commentMapper.findAllByType(isComment);
- return pageTrans(commentList);
- }
-
- private CommentModel trans(Comment comment) {
- CommentModel commentModel = new CommentModel();
- commentModel.setId(comment.getId());
- commentModel.setComment(comment.getType());
- commentModel.setContent(comment.getContent());
- commentModel.setArticleID(comment.getArticleID());
- commentModel.setDate(DateFormatUtil.get(comment.getDate()));
- commentModel.setResponseId(comment.getResponseId());
- commentModel.setPid(comment.getPid());
- commentModel.setAuthorName(userService.getNameById(comment.getAuthorID()));
- commentModel.setAuthorAvatarImgUrl("http://cdn.celess.cn/" + userService.getAvatarImg(comment.getAuthorID()));
-
- if (comment.getType() && commentModel.getArticleID() > 0) {
- commentModel.setArticleTitle(articleMapper.getTitleById(comment.getArticleID()));
- }
- return commentModel;
- }
-
- private PageInfo pageTrans(List commentList) {
- PageInfo p = new PageInfo(commentList);
- List modelList = new ArrayList<>();
-
commentList.forEach(l -> {
- CommentModel model = trans(l);
- model.setRespComment(this.retrievePageByPid(model.getId()));
+ CommentModel model = ModalTrans.comment(l);
+ if (!noResponseList) {
+ model.setRespComment(this.retrievePageByPid(model.getId()));
+ }
modelList.add(model);
});
- p.setList(modelList);
- return p;
+ return new PageData(p, modelList);
}
}
diff --git a/src/main/java/cn/celess/blog/service/serviceimpl/CountServiceImpl.java b/src/main/java/cn/celess/blog/service/serviceimpl/CountServiceImpl.java
index 3165768..fecd29b 100644
--- a/src/main/java/cn/celess/blog/service/serviceimpl/CountServiceImpl.java
+++ b/src/main/java/cn/celess/blog/service/serviceimpl/CountServiceImpl.java
@@ -29,7 +29,7 @@ public class CountServiceImpl implements CountService {
@Override
public long getCommentCount() {
- return commentMapper.countByType(true);
+ return commentMapper.count();
}
@Override
@@ -47,11 +47,6 @@ public class CountServiceImpl implements CountService {
return tagMapper.count();
}
- @Override
- public long getLeaveMessageCount() {
- return commentMapper.countByType(false);
- }
-
@Override
public long getUserCount() {
return userMapper.count();
diff --git a/src/main/java/cn/celess/blog/service/serviceimpl/PartnerSiteServiceImpl.java b/src/main/java/cn/celess/blog/service/serviceimpl/PartnerSiteServiceImpl.java
index af47434..992b7b0 100644
--- a/src/main/java/cn/celess/blog/service/serviceimpl/PartnerSiteServiceImpl.java
+++ b/src/main/java/cn/celess/blog/service/serviceimpl/PartnerSiteServiceImpl.java
@@ -2,6 +2,7 @@ package cn.celess.blog.service.serviceimpl;
import cn.celess.blog.enmu.ResponseEnum;
import cn.celess.blog.entity.PartnerSite;
+import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.request.LinkReq;
import cn.celess.blog.exception.MyException;
import cn.celess.blog.mapper.PartnerMapper;
@@ -87,16 +88,17 @@ public class PartnerSiteServiceImpl implements PartnerSiteService {
}
@Override
- public PageInfo PartnerSitePages(int page, int count) {
+ public PageData partnerSitePages(int page, int count) {
PageHelper.startPage(page, count);
List sitePage = partnerMapper.findAll();
- PageInfo pageInfo = new PageInfo(sitePage);
- return pageInfo;
+ PageInfo pageInfo = new PageInfo(sitePage);
+ return new PageData<>(pageInfo, sitePage);
}
@Override
public List findAll() {
List all = partnerMapper.findAll();
+ all.forEach(partnerSite -> partnerSite.setDelete(null));
return all;
}
diff --git a/src/main/java/cn/celess/blog/service/serviceimpl/QiniuServiceImpl.java b/src/main/java/cn/celess/blog/service/serviceimpl/QiniuServiceImpl.java
index 2676395..e95d202 100644
--- a/src/main/java/cn/celess/blog/service/serviceimpl/QiniuServiceImpl.java
+++ b/src/main/java/cn/celess/blog/service/serviceimpl/QiniuServiceImpl.java
@@ -21,7 +21,7 @@ import java.io.InputStream;
*/
@Service
public class QiniuServiceImpl implements QiniuService {
- private static Configuration cfg = new Configuration(Zone.zone2());
+ private static final Configuration cfg = new Configuration(Zone.zone2());
private static UploadManager uploadManager;
private static BucketManager bucketManager;
private static Auth auth;
diff --git a/src/main/java/cn/celess/blog/service/serviceimpl/TagServiceImpl.java b/src/main/java/cn/celess/blog/service/serviceimpl/TagServiceImpl.java
index 0103ce1..472178b 100644
--- a/src/main/java/cn/celess/blog/service/serviceimpl/TagServiceImpl.java
+++ b/src/main/java/cn/celess/blog/service/serviceimpl/TagServiceImpl.java
@@ -1,17 +1,22 @@
package cn.celess.blog.service.serviceimpl;
import cn.celess.blog.enmu.ResponseEnum;
-import cn.celess.blog.entity.Article;
+import cn.celess.blog.entity.ArticleTag;
import cn.celess.blog.entity.Tag;
+import cn.celess.blog.entity.model.ArticleModel;
+import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.model.TagModel;
import cn.celess.blog.exception.MyException;
import cn.celess.blog.mapper.ArticleMapper;
+import cn.celess.blog.mapper.ArticleTagMapper;
import cn.celess.blog.mapper.TagMapper;
import cn.celess.blog.service.TagService;
+import cn.celess.blog.util.ModalTrans;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
@@ -29,6 +34,8 @@ public class TagServiceImpl implements TagService {
HttpServletRequest request;
@Autowired
ArticleMapper articleMapper;
+ @Autowired
+ ArticleTagMapper articleTagMapper;
@Override
public TagModel create(String name) {
@@ -39,40 +46,19 @@ public class TagServiceImpl implements TagService {
Tag tag = new Tag();
tag.setName(name);
tagMapper.insert(tag);
- return new TagModel(tag);
- }
-
- @Override
- public TagModel create(Tag tag) {
- if (tag == null) {
- throw new MyException(ResponseEnum.PARAMETERS_ERROR);
- }
- tagMapper.insert(tag);
- return new TagModel(tag);
+ return ModalTrans.tag(tag);
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public boolean delete(long tagId) {
Tag tag = tagMapper.findTagById(tagId);
if (tag == null) {
throw new MyException(ResponseEnum.TAG_NOT_EXIST);
}
- if (tag.getArticles() == null) {
- return tagMapper.delete(tagId) == 1;
- }
- String[] articleArray = tag.getArticles().split(",");
- for (int i = 0; i < articleArray.length; i++) {
- if (articleArray[i] == null || "".equals(articleArray[i])) {
- continue;
- }
- long articleID = Long.parseLong(articleArray[i]);
- Article article = articleMapper.findArticleById(articleID);
- if (article == null) {
- continue;
- }
- article.setTagsId(article.getTagsId().replace(tagId + ",", ""));
- articleMapper.update(article);
- }
+ List articleByTag = articleTagMapper.findArticleByTag(tagId);
+ // 删除文章
+ articleByTag.forEach(articleTag -> articleMapper.delete(articleTag.getArticle().getId()));
return tagMapper.delete(tagId) == 1;
}
@@ -82,47 +68,33 @@ public class TagServiceImpl implements TagService {
if (id == null) {
throw new MyException(ResponseEnum.PARAMETERS_ERROR.getCode(), "缺少ID");
}
- Tag tagFromDB = tagMapper.findTagById(id);
- tagFromDB.setName(name);
-
- tagMapper.update(tagFromDB);
- return new TagModel(tagFromDB);
+ Tag tag = tagMapper.findTagById(id);
+ tag.setName(name);
+ tagMapper.update(tag);
+ return ModalTrans.tag(tag);
}
@Override
- public TagModel retrieveOneById(long tagId) {
- Tag tag = tagMapper.findTagById(tagId);
- if (tag == null) {
- throw new MyException(ResponseEnum.TAG_NOT_EXIST);
- }
- return new TagModel(tag);
- }
-
- @Override
- public TagModel retrieveOneByName(String name) {
- Tag tag = tagMapper.findTagByName(name);
- if (tag == null) {
- throw new MyException(ResponseEnum.TAG_NOT_EXIST);
- }
- return new TagModel(tag);
- }
-
- @Override
- public PageInfo retrievePage(int page, int count) {
+ public PageData retrievePage(int page, int count) {
PageHelper.startPage(page, count);
List tagList = tagMapper.findAll();
- PageInfo pageInfo = new PageInfo(tagList);
- List list = new ArrayList<>();
- tagList.forEach(e -> list.add(new TagModel(e)));
- pageInfo.setList(list);
- return pageInfo;
+ List modelList = new ArrayList<>();
+ tagList.forEach(tag -> modelList.add(ModalTrans.tag(tag)));
+ return new PageData(new PageInfo(tagList), modelList);
}
@Override
public List findAll() {
List list = new ArrayList<>();
- tagMapper.findAll().forEach(e -> list.add(new TagModel(e)));
+ tagMapper.findAll().forEach(e -> {
+ TagModel model = ModalTrans.tag(e);
+ List articleByTagAndOpen = articleTagMapper.findArticleByTagAndOpen(e.getId());
+ List articleModelList = new ArrayList<>();
+ articleByTagAndOpen.forEach(articleTag -> articleModelList.add(ModalTrans.article(articleTag.getArticle(), true)));
+ model.setArticles(articleModelList);
+ list.add(model);
+ });
return list;
}
}
diff --git a/src/main/java/cn/celess/blog/service/serviceimpl/UserServiceImpl.java b/src/main/java/cn/celess/blog/service/serviceimpl/UserServiceImpl.java
index ecbbe73..10bc0b0 100644
--- a/src/main/java/cn/celess/blog/service/serviceimpl/UserServiceImpl.java
+++ b/src/main/java/cn/celess/blog/service/serviceimpl/UserServiceImpl.java
@@ -1,7 +1,10 @@
package cn.celess.blog.service.serviceimpl;
import cn.celess.blog.enmu.ResponseEnum;
+import cn.celess.blog.enmu.RoleEnum;
+import cn.celess.blog.entity.Response;
import cn.celess.blog.entity.User;
+import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.model.QiniuResponse;
import cn.celess.blog.entity.model.UserModel;
import cn.celess.blog.entity.request.LoginReq;
@@ -26,7 +29,6 @@ import javax.servlet.http.HttpServletRequest;
import java.beans.Transient;
import java.io.InputStream;
import java.util.ArrayList;
-import java.util.Date;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
@@ -74,7 +76,8 @@ public class UserServiceImpl implements UserService {
if (userMapper.existsByEmail(email)) {
throw new MyException(ResponseEnum.USERNAME_HAS_EXIST);
}
- boolean b = userMapper.addUser(email, MD5Util.getMD5(password)) == 1;
+ User user = new User(email, MD5Util.getMD5(password));
+ boolean b = userMapper.addUser(user) == 1;
if (b) {
String verifyId = UUID.randomUUID().toString().replaceAll("-", "");
redisUtil.setEx(email + "-verify", verifyId, 2, TimeUnit.DAYS);
@@ -116,7 +119,7 @@ public class UserServiceImpl implements UserService {
}
if (user.getPwd().equals(MD5Util.getMD5(loginReq.getPassword()))) {
logger.info("====> {} 进行权限认证 状态:登录成功 <====", loginReq.getEmail());
- userMapper.updateLoginTime(loginReq.getEmail(), new Date());
+ userMapper.updateLoginTime(loginReq.getEmail());
redisUtil.delete(loginReq.getEmail() + "-passwordWrongTime");
// redis 标记
redisUserUtil.set(user, loginReq.getIsRememberMe());
@@ -137,7 +140,7 @@ public class UserServiceImpl implements UserService {
redisUtil.setEx(loginReq.getEmail() + "-passwordWrongTime", count + "", 2, TimeUnit.HOURS);
throw new MyException(ResponseEnum.LOGIN_FAILURE);
}
- UserModel trans = trans(user);
+ UserModel trans = ModalTrans.userFullInfo(user);
trans.setToken(token);
return trans;
@@ -164,7 +167,7 @@ public class UserServiceImpl implements UserService {
userMapper.updateInfo(desc, displayName, user.getId());
redisUserUtil.set(user);
- return trans(user);
+ return ModalTrans.userFullInfo(user);
}
@Override
@@ -176,20 +179,6 @@ public class UserServiceImpl implements UserService {
return role;
}
- @Override
- public User getUserInfoByEmail(String email) {
- User user = userMapper.findByEmail(email);
- if (user == null) {
- throw new MyException(ResponseEnum.USER_NOT_EXIST);
- }
- return user;
- }
-
- @Override
- public String getAvatarImg(long id) {
- return userMapper.getAvatarImgUrlById(id);
- }
-
@Override
public Object updateUserAavatarImg(InputStream is, String mime) {
User user = redisUserUtil.get();
@@ -197,13 +186,13 @@ public class UserServiceImpl implements UserService {
user.setAvatarImgUrl(upload.key);
userMapper.updateAvatarImgUrl(upload.key, user.getId());
redisUserUtil.set(user);
- return ResponseUtil.success(user.getAvatarImgUrl());
+ return Response.success(user.getAvatarImgUrl());
}
@Override
public UserModel getUserInfoBySession() {
User user = redisUserUtil.get();
- return trans(user);
+ return ModalTrans.userFullInfo(user);
}
@Override
@@ -211,18 +200,6 @@ public class UserServiceImpl implements UserService {
return userMapper.existsByEmail(email);
}
- @Override
- public String getNameById(long id) {
- String name = userMapper.getDisPlayName(id);
- if (name == null) {
- name = userMapper.getEmail(id);
- if (name == null) {
- throw new MyException(ResponseEnum.USER_NOT_EXIST);
- }
- }
- return name;
- }
-
/**
* 找回密码
*/
@@ -254,7 +231,6 @@ public class UserServiceImpl implements UserService {
return "发送成功!";
}
- //TODO
@Override
public Object sendVerifyEmail(String email) {
if (!RegexUtil.emailMatch(email)) {
@@ -366,14 +342,12 @@ public class UserServiceImpl implements UserService {
}
@Override
- public PageInfo getUserList(Integer page, Integer count) {
+ public PageData getUserList(Integer page, Integer count) {
PageHelper.startPage(page, count);
List all = userMapper.findAll();
- PageInfo pageInfo = PageInfo.of(all);
List modelList = new ArrayList<>();
- all.forEach(user -> modelList.add(trans(user)));
- pageInfo.setList(modelList);
- return pageInfo;
+ all.forEach(user -> modelList.add(ModalTrans.userFullInfo(user)));
+ return new PageData(PageInfo.of(all), modelList);
}
@Override
@@ -402,8 +376,7 @@ public class UserServiceImpl implements UserService {
user.setPwd(MD5Util.getMD5(userReq.getPwd()));
}
if (userReq.getRole() != null) {
- // TODO:用enum存放角色分类
- if ("user".equals(userReq.getRole()) || "admin".equals(userReq.getRole())) {
+ if (RoleEnum.USER_ROLE.getRoleName().equals(userReq.getRole()) || RoleEnum.ADMIN_ROLE.getRoleName().equals(userReq.getRole())) {
user.setRole(userReq.getRole());
} else {
throw new MyException(ResponseEnum.PARAMETERS_ERROR);
@@ -413,7 +386,6 @@ public class UserServiceImpl implements UserService {
if (!RegexUtil.emailMatch(userReq.getEmail())) {
throw new MyException(ResponseEnum.PARAMETERS_EMAIL_ERROR);
}
- // TODO :: 邮件提醒
user.setEmail(userReq.getEmail());
}
// 数据写入
@@ -425,7 +397,7 @@ public class UserServiceImpl implements UserService {
redisUserUtil.set(user);
}
logger.info("修改了用户 [id={}] 的用户的资料", userReq.getId());
- return trans(user);
+ return ModalTrans.userFullInfo(user);
}
@Override
@@ -444,19 +416,6 @@ public class UserServiceImpl implements UserService {
throw new MyException(ResponseEnum.PWD_NOT_SAME);
}
userMapper.updatePwd(user.getEmail(), MD5Util.getMD5(newPwd));
- return trans(userMapper.findByEmail(user.getEmail()));
- }
-
- private UserModel trans(User u) {
- UserModel user = new UserModel();
- user.setId(u.getId());
- user.setAvatarImgUrl(u.getAvatarImgUrl() == null ? null : "http://cdn.celess.cn/" + u.getAvatarImgUrl());
- user.setEmail(u.getEmail());
- user.setDesc(u.getDesc());
- user.setDisplayName(u.getDisplayName() == null ? u.getEmail() : u.getDisplayName());
- user.setEmailStatus(u.getEmailStatus());
- user.setRecentlyLandedDate(DateFormatUtil.get(u.getRecentlyLandedDate()));
- user.setRole(u.getRole());
- return user;
+ return ModalTrans.userFullInfo(userMapper.findByEmail(user.getEmail()));
}
}
diff --git a/src/main/java/cn/celess/blog/service/serviceimpl/VisitorServiceImpl.java b/src/main/java/cn/celess/blog/service/serviceimpl/VisitorServiceImpl.java
index d1d7fc3..dbfac93 100644
--- a/src/main/java/cn/celess/blog/service/serviceimpl/VisitorServiceImpl.java
+++ b/src/main/java/cn/celess/blog/service/serviceimpl/VisitorServiceImpl.java
@@ -2,6 +2,7 @@ package cn.celess.blog.service.serviceimpl;
import cn.celess.blog.enmu.ResponseEnum;
import cn.celess.blog.entity.Visitor;
+import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.model.VisitorModel;
import cn.celess.blog.exception.MyException;
import cn.celess.blog.mapper.VisitorMapper;
@@ -45,12 +46,10 @@ public class VisitorServiceImpl implements VisitorService {
}
@Override
- public PageInfo visitorPage(int page, int count, boolean showLocation) {
+ public PageData visitorPage(int page, int count, boolean showLocation) {
PageHelper.startPage(page, count);
List visitorList = visitorMapper.findAll();
- PageInfo pageInfo = new PageInfo(visitorList);
- pageInfo.setList(list2List(visitorList, showLocation));
- return pageInfo;
+ return new PageData(new PageInfo(visitorList), list2List(visitorList, showLocation));
}
@Override
diff --git a/src/main/java/cn/celess/blog/service/serviceimpl/WebUpdateInfoServiceImpl.java b/src/main/java/cn/celess/blog/service/serviceimpl/WebUpdateInfoServiceImpl.java
index eee1da1..f23665a 100644
--- a/src/main/java/cn/celess/blog/service/serviceimpl/WebUpdateInfoServiceImpl.java
+++ b/src/main/java/cn/celess/blog/service/serviceimpl/WebUpdateInfoServiceImpl.java
@@ -2,12 +2,14 @@ package cn.celess.blog.service.serviceimpl;
import cn.celess.blog.enmu.ResponseEnum;
import cn.celess.blog.entity.WebUpdate;
+import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.model.WebUpdateModel;
import cn.celess.blog.exception.MyException;
import cn.celess.blog.mapper.WebUpdateInfoMapper;
import cn.celess.blog.service.WebUpdateInfoService;
import cn.celess.blog.util.DateFormatUtil;
import cn.celess.blog.util.HttpUtil;
+import cn.celess.blog.util.ModalTrans;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
@@ -39,11 +41,11 @@ public class WebUpdateInfoServiceImpl implements WebUpdateInfoService {
if (info == null || info.replaceAll(" ", "").isEmpty()) {
throw new MyException(ResponseEnum.PARAMETERS_ERROR);
}
- WebUpdate webUpdate = new WebUpdate(info, new Date());
+ WebUpdate webUpdate = new WebUpdate(info);
if (webUpdateInfoMapper.insert(webUpdate) == 0) {
throw new MyException(ResponseEnum.FAILURE);
}
- return trans(webUpdate);
+ return ModalTrans.webUpdate(webUpdateInfoMapper.findById(webUpdate.getId()));
}
@Override
@@ -65,26 +67,20 @@ public class WebUpdateInfoServiceImpl implements WebUpdateInfoService {
}
webUpdate.setUpdateInfo(info);
webUpdateInfoMapper.update(id, info);
- return trans(webUpdate);
+ return ModalTrans.webUpdate(webUpdate);
}
@Override
- public PageInfo pages(int count, int page) {
+ public PageData pages(int count, int page) {
PageHelper.startPage(page, count);
List updateList = webUpdateInfoMapper.findAll();
- PageInfo pageInfo = new PageInfo(updateList);
- pageInfo.setList(list2List(updateList));
- return pageInfo;
+ return new PageData(new PageInfo(updateList), list2List(updateList));
}
@Override
public List findAll() {
List all = webUpdateInfoMapper.findAll();
- List webUpdateModels = new ArrayList<>();
- for (WebUpdate w : all) {
- webUpdateModels.add(trans(w));
- }
- return webUpdateModels;
+ return list2List(all);
}
@Override
@@ -101,7 +97,7 @@ public class WebUpdateInfoServiceImpl implements WebUpdateInfoService {
SimpleDateFormat sdf = new SimpleDateFormat();
Instant parse = Instant.parse(commit.getJSONObject("committer").getString("date"));
jsonObject.put("committerDate", DateFormatUtil.get(Date.from(parse)));
- jsonObject.put("commitUrl", "https://github.com/xiaohai2271/blog-frontEnd/tree/"+object.getString("sha"));
+ jsonObject.put("commitUrl", "https://github.com/xiaohai2271/blog-frontEnd/tree/" + object.getString("sha"));
} catch (IOException e) {
log.info("网络请求失败{}", e.getMessage());
}
@@ -110,14 +106,7 @@ public class WebUpdateInfoServiceImpl implements WebUpdateInfoService {
private List list2List(List webUpdates) {
List webUpdateModels = new ArrayList<>();
- for (WebUpdate w : webUpdates) {
- webUpdateModels.add(trans(w));
- }
+ webUpdates.forEach(update -> webUpdateModels.add(ModalTrans.webUpdate(update)));
return webUpdateModels;
}
-
- private WebUpdateModel trans(WebUpdate webUpdate) {
- return new WebUpdateModel(webUpdate.getId(), webUpdate.getUpdateInfo(), DateFormatUtil.get(webUpdate.getUpdateTime()));
- }
-
}
diff --git a/src/main/java/cn/celess/blog/util/HttpUtil.java b/src/main/java/cn/celess/blog/util/HttpUtil.java
index 7b68b21..8c37ff0 100644
--- a/src/main/java/cn/celess/blog/util/HttpUtil.java
+++ b/src/main/java/cn/celess/blog/util/HttpUtil.java
@@ -32,7 +32,7 @@ public class HttpUtil {
try (
InputStream inputStream = urlConnection.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, StandardCharsets.UTF_8);
- BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
+ BufferedReader bufferedReader = new BufferedReader(inputStreamReader)
) {
//将bufferReader的值给放到buffer里
String str = null;
diff --git a/src/main/java/cn/celess/blog/util/JwtUtil.java b/src/main/java/cn/celess/blog/util/JwtUtil.java
index 6e1a10e..8be9373 100644
--- a/src/main/java/cn/celess/blog/util/JwtUtil.java
+++ b/src/main/java/cn/celess/blog/util/JwtUtil.java
@@ -21,17 +21,15 @@ import java.util.Map;
@Component
@Log4j2
public class JwtUtil {
- private static final String CLAIM_KEY_USERNAME = "sub";
-
/**
* 5天(毫秒)
*/
public static final long EXPIRATION_LONG_TIME = 432000000;
-
/**
* 两小时(毫秒)
*/
public static final long EXPIRATION_SHORT_TIME = 7200000;
+ private static final String CLAIM_KEY_USERNAME = "sub";
/**
* JWT 秘钥需自行设置不可泄露
*/
diff --git a/src/main/java/cn/celess/blog/util/ModalTrans.java b/src/main/java/cn/celess/blog/util/ModalTrans.java
new file mode 100644
index 0000000..76848c9
--- /dev/null
+++ b/src/main/java/cn/celess/blog/util/ModalTrans.java
@@ -0,0 +1,109 @@
+package cn.celess.blog.util;
+
+import cn.celess.blog.entity.*;
+import cn.celess.blog.entity.model.*;
+import org.springframework.beans.BeanUtils;
+
+/**
+ * @Author: 小海
+ * @Date: 2020-05-24 18:04
+ * @Desc:
+ */
+public class ModalTrans {
+
+ public static ArticleModel article(Article article) {
+ if (article == null) {
+ return null;
+ }
+ ArticleModel articleModel = new ArticleModel();
+ BeanUtils.copyProperties(article, articleModel);
+ articleModel.setPublishDateFormat(DateFormatUtil.get(article.getPublishDate()));
+ articleModel.setUpdateDateFormat(DateFormatUtil.get(article.getUpdateDate()));
+ articleModel.setOriginal(article.getType());
+ articleModel.setCategory(article.getCategory().getName());
+ articleModel.setAuthor(user(article.getUser()));
+ articleModel.getTags().forEach(tag -> {
+ tag.setCategory(null);
+ tag.setDeleted(null);
+ });
+ return articleModel;
+ }
+
+
+ public static ArticleModel article(Article article, boolean noMdContent) {
+ ArticleModel article1 = article(article);
+ if (!noMdContent || article1 == null) {
+ return article1;
+ }
+ article1.setMdContent(null);
+ article1.setOpen(null);
+ return article1;
+ }
+
+ public static UserModel userFullInfo(User user) {
+ if (user == null || user.getId() == -1) {
+ return null;
+ }
+ UserModel userModel = new UserModel();
+ BeanUtils.copyProperties(user, userModel);
+ userModel.setAvatarImgUrl(user.getAvatarImgUrl() == null || user.getAvatarImgUrl().length() == 0 ?
+ null :
+ "http://cdn.celess.cn/" + user.getAvatarImgUrl());
+ userModel.setDisplayName(user.getDisplayName() == null ? user.getEmail() : user.getDisplayName());
+ userModel.setRecentlyLandedDate(DateFormatUtil.get(user.getRecentlyLandedDate()));
+ return userModel;
+ }
+
+ public static UserModel user(User user) {
+ UserModel model = userFullInfo(user);
+ if (model == null) {
+ return null;
+ }
+ model.setRole(null);
+ model.setEmailStatus(null);
+ return model;
+ }
+
+ public static CategoryModel category(Category category) {
+ if (category == null) {
+ return null;
+ }
+ CategoryModel model = new CategoryModel();
+ BeanUtils.copyProperties(category, model);
+ return model;
+ }
+
+
+ public static TagModel tag(Tag tag) {
+ if (tag == null) {
+ return null;
+ }
+ TagModel model = new TagModel();
+ BeanUtils.copyProperties(tag, model);
+ return model;
+ }
+
+
+ public static WebUpdateModel webUpdate(WebUpdate update) {
+ if (update == null) {
+ return null;
+ }
+ WebUpdateModel model = new WebUpdateModel();
+ model.setId(update.getId());
+ model.setInfo(update.getUpdateInfo());
+ model.setTime(DateFormatUtil.get(update.getUpdateTime()));
+ return model;
+ }
+
+ public static CommentModel comment(Comment comment) {
+ if (comment == null) {
+ return null;
+ }
+ CommentModel model = new CommentModel();
+ BeanUtils.copyProperties(comment, model);
+ model.setFromUser(user(comment.getFromUser()));
+ model.setToUser(user(comment.getToUser()));
+ model.setDate(DateFormatUtil.get(comment.getDate()));
+ return model;
+ }
+}
diff --git a/src/main/java/cn/celess/blog/util/RedisUtil.java b/src/main/java/cn/celess/blog/util/RedisUtil.java
index 7bf60a3..d50a55c 100644
--- a/src/main/java/cn/celess/blog/util/RedisUtil.java
+++ b/src/main/java/cn/celess/blog/util/RedisUtil.java
@@ -20,8 +20,8 @@ import java.util.concurrent.TimeUnit;
* Redis工具类
*
* @author WangFan
- * @date 2018-02-24 下午03:09:50
* @version 1.1 (GitHub文档: https://github.com/whvcse/RedisUtil )
+ * @date 2018-02-24 下午03:09:50
*/
@Component
@@ -29,14 +29,14 @@ public class RedisUtil {
@Autowired
private StringRedisTemplate redisTemplate;
- public void setRedisTemplate(StringRedisTemplate redisTemplate) {
- this.redisTemplate = redisTemplate;
- }
-
public StringRedisTemplate getRedisTemplate() {
return this.redisTemplate;
}
+ public void setRedisTemplate(StringRedisTemplate redisTemplate) {
+ this.redisTemplate = redisTemplate;
+ }
+
/** -------------------key相关操作--------------------- */
/**
@@ -196,6 +196,7 @@ public class RedisUtil {
/**
* 设置指定 key 的值
+ *
* @param key
* @param value
*/
@@ -205,15 +206,17 @@ public class RedisUtil {
/**
* 获取指定 key 的值
+ *
* @param key
* @return
*/
public String get(String key) {
- return redisTemplate.opsForValue().get(key);
+ return redisTemplate.opsForValue().get(key);
}
/**
* 返回 key 中字符串值的子字符
+ *
* @param key
* @param start
* @param end
@@ -259,10 +262,8 @@ public class RedisUtil {
* 设置ASCII码, 字符串'a'的ASCII码是97, 转为二进制是'01100001', 此方法是将二进制第offset位值变为value
*
* @param key
- * @param postion
- * 位置
- * @param value
- * 值,true为1, false为0
+ * @param offset 位置
+ * @param value 值,true为1, false为0
* @return
*/
public boolean setBit(String key, long offset, boolean value) {
@@ -274,11 +275,9 @@ public class RedisUtil {
*
* @param key
* @param value
- * @param timeout
- * 过期时间
- * @param unit
- * 时间单位, 天:TimeUnit.DAYS 小时:TimeUnit.HOURS 分钟:TimeUnit.MINUTES
- * 秒:TimeUnit.SECONDS 毫秒:TimeUnit.MILLISECONDS
+ * @param timeout 过期时间
+ * @param unit 时间单位, 天:TimeUnit.DAYS 小时:TimeUnit.HOURS 分钟:TimeUnit.MINUTES
+ * 秒:TimeUnit.SECONDS 毫秒:TimeUnit.MILLISECONDS
*/
public void setEx(String key, String value, long timeout, TimeUnit unit) {
redisTemplate.opsForValue().set(key, value, timeout, unit);
@@ -289,7 +288,7 @@ public class RedisUtil {
*
* @param key
* @param value
- * @return 之前已经存在返回false,不存在返回true
+ * @return 之前已经存在返回false, 不存在返回true
*/
public boolean setIfAbsent(String key, String value) {
return redisTemplate.opsForValue().setIfAbsent(key, value);
@@ -300,8 +299,7 @@ public class RedisUtil {
*
* @param key
* @param value
- * @param offset
- * 从指定位置开始覆写
+ * @param offset 从指定位置开始覆写
*/
public void setRange(String key, String value, long offset) {
redisTemplate.opsForValue().set(key, value, offset);
@@ -330,7 +328,7 @@ public class RedisUtil {
* 同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在
*
* @param maps
- * @return 之前已经存在返回false,不存在返回true
+ * @return 之前已经存在返回false, 不存在返回true
*/
public boolean multiSetIfAbsent(Map maps) {
return redisTemplate.opsForValue().multiSetIfAbsent(maps);
@@ -340,7 +338,7 @@ public class RedisUtil {
* 增加(自增长), 负数则为自减
*
* @param key
- * @param value
+ * @param increment
* @return
*/
public Long incrBy(String key, long increment) {
@@ -348,9 +346,8 @@ public class RedisUtil {
}
/**
- *
* @param key
- * @param value
+ * @param increment
* @return
*/
public Double incrByFloat(String key, double increment) {
@@ -526,10 +523,8 @@ public class RedisUtil {
* 获取列表指定范围内的元素
*
* @param key
- * @param start
- * 开始位置, 0是开始位置
- * @param end
- * 结束位置, -1返回所有
+ * @param start 开始位置, 0是开始位置
+ * @param end 结束位置, -1返回所有
* @return
*/
public List lRange(String key, long start, long end) {
@@ -548,7 +543,6 @@ public class RedisUtil {
}
/**
- *
* @param key
* @param value
* @return
@@ -558,7 +552,6 @@ public class RedisUtil {
}
/**
- *
* @param key
* @param value
* @return
@@ -591,7 +584,6 @@ public class RedisUtil {
}
/**
- *
* @param key
* @param value
* @return
@@ -601,7 +593,6 @@ public class RedisUtil {
}
/**
- *
* @param key
* @param value
* @return
@@ -611,7 +602,6 @@ public class RedisUtil {
}
/**
- *
* @param key
* @param value
* @return
@@ -647,8 +637,7 @@ public class RedisUtil {
* 通过索引设置列表元素的值
*
* @param key
- * @param index
- * 位置
+ * @param index 位置
* @param value
*/
public void lSet(String key, long index, String value) {
@@ -669,10 +658,8 @@ public class RedisUtil {
* 移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
*
* @param key
- * @param timeout
- * 等待时间
- * @param unit
- * 时间单位
+ * @param timeout 等待时间
+ * @param unit 时间单位
* @return
*/
public String lBLeftPop(String key, long timeout, TimeUnit unit) {
@@ -693,10 +680,8 @@ public class RedisUtil {
* 移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止
*
* @param key
- * @param timeout
- * 等待时间
- * @param unit
- * 时间单位
+ * @param timeout 等待时间
+ * @param unit 时间单位
* @return
*/
public String lBRightPop(String key, long timeout, TimeUnit unit) {
@@ -734,9 +719,8 @@ public class RedisUtil {
* 删除集合中值等于value得元素
*
* @param key
- * @param index
- * index=0, 删除所有值等于value的元素; index>0, 从头部开始删除第一个值等于value的元素;
- * index<0, 从尾部开始删除第一个值等于value的元素;
+ * @param index index=0, 删除所有值等于value的元素; index>0, 从头部开始删除第一个值等于value的元素;
+ * index<0, 从尾部开始删除第一个值等于value的元素;
* @param value
* @return
*/
@@ -981,8 +965,6 @@ public class RedisUtil {
* 获取集合所有元素
*
* @param key
- * @param otherKeys
- * @param destKey
* @return
*/
public Set setMembers(String key) {
@@ -1022,7 +1004,6 @@ public class RedisUtil {
}
/**
- *
* @param key
* @param options
* @return
@@ -1046,7 +1027,6 @@ public class RedisUtil {
}
/**
- *
* @param key
* @param values
* @return
@@ -1056,7 +1036,6 @@ public class RedisUtil {
}
/**
- *
* @param key
* @param values
* @return
@@ -1103,10 +1082,8 @@ public class RedisUtil {
* 获取集合的元素, 从小到大排序
*
* @param key
- * @param start
- * 开始位置
- * @param end
- * 结束位置, -1查询所有
+ * @param start 开始位置
+ * @param end 结束位置, -1查询所有
* @return
*/
public Set zRange(String key, long start, long end) {
@@ -1130,10 +1107,8 @@ public class RedisUtil {
* 根据Score值查询集合元素
*
* @param key
- * @param min
- * 最小值
- * @param max
- * 最大值
+ * @param min 最小值
+ * @param max 最大值
* @return
*/
public Set zRangeByScore(String key, double min, double max) {
@@ -1144,10 +1119,8 @@ public class RedisUtil {
* 根据Score值查询集合元素, 从小到大排序
*
* @param key
- * @param min
- * 最小值
- * @param max
- * 最大值
+ * @param min 最小值
+ * @param max 最大值
* @return
*/
public Set> zRangeByScoreWithScores(String key,
@@ -1156,7 +1129,6 @@ public class RedisUtil {
}
/**
- *
* @param key
* @param min
* @param max
@@ -1224,7 +1196,6 @@ public class RedisUtil {
}
/**
- *
* @param key
* @param min
* @param max
@@ -1318,7 +1289,6 @@ public class RedisUtil {
}
/**
- *
* @param key
* @param otherKeys
* @param destKey
@@ -1359,7 +1329,6 @@ public class RedisUtil {
}
/**
- *
* @param key
* @param options
* @return
@@ -1370,6 +1339,7 @@ public class RedisUtil {
/**
* 获取Redis List 序列化
+ *
* @param key
* @param targetClass
* @param
diff --git a/src/main/java/cn/celess/blog/util/ResponseUtil.java b/src/main/java/cn/celess/blog/util/ResponseUtil.java
deleted file mode 100644
index 0cf49e5..0000000
--- a/src/main/java/cn/celess/blog/util/ResponseUtil.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package cn.celess.blog.util;
-
-import cn.celess.blog.enmu.ResponseEnum;
-import cn.celess.blog.entity.Response;
-import org.springframework.web.bind.annotation.ResponseBody;
-
-/**
- * @author : xiaohai
- * @date : 2019/03/28 15:32
- */
-@ResponseBody
-public class ResponseUtil {
-
- /**
- * 成功相应
- *
- * @param result 结果
- * @return
- */
- public static Response success(Object result) {
- Response response = new Response();
- response.setCode(ResponseEnum.SUCCESS.getCode());
- response.setMsg(ResponseEnum.SUCCESS.getMsg());
- response.setDate(System.currentTimeMillis());
- response.setResult(result);
- return response;
- }
-
- /**
- * 失败的响应
- *
- * @param result 结果
- * @return
- */
- public static Response failure(String result) {
- Response response = new Response();
- response.setCode(ResponseEnum.FAILURE.getCode());
- response.setMsg(ResponseEnum.FAILURE.getMsg());
- response.setDate(System.currentTimeMillis());
- response.setResult(result);
- return response;
- }
-
- /**
- * 其他的响应
- *
- * @param r 枚举常量
- * @param result 结果
- * @return
- */
- public static Response response(ResponseEnum r, String result) {
- Response response = new Response();
- response.setCode(r.getCode());
- response.setMsg(r.getMsg());
- response.setDate(System.currentTimeMillis());
- response.setResult(result);
- return response;
- }
-}
diff --git a/src/main/java/cn/celess/blog/util/SitemapGenerateUtil.java b/src/main/java/cn/celess/blog/util/SitemapGenerateUtil.java
index a517484..9f93f1b 100644
--- a/src/main/java/cn/celess/blog/util/SitemapGenerateUtil.java
+++ b/src/main/java/cn/celess/blog/util/SitemapGenerateUtil.java
@@ -33,18 +33,28 @@ import java.util.Map;
@Component
public class SitemapGenerateUtil {
+ @Autowired
+ ArticleMapper articleMapper;
@Value("${sitemap.path}")
private String path;
private Map urlList;
- @Autowired
- ArticleMapper articleMapper;
+ private static DocumentBuilder getDocumentBuilder() {
+ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
+ DocumentBuilder db = null;
+ try {
+ db = dbf.newDocumentBuilder();
+ } catch (ParserConfigurationException e) {
+ e.printStackTrace();
+ }
+ return db;
+ }
@Async
public void createSitemap() {
initList();
if ("".equals(path) || "classpath".equals(path)) {
- path = System.getProperty("user.dir")+"/sitemap.xml";
+ path = System.getProperty("user.dir") + "/sitemap.xml";
}
File file = new File(path);
try {
@@ -96,17 +106,5 @@ public class SitemapGenerateUtil {
});
}
-
- private static DocumentBuilder getDocumentBuilder() {
- DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
- DocumentBuilder db = null;
- try {
- db = dbf.newDocumentBuilder();
- } catch (ParserConfigurationException e) {
- e.printStackTrace();
- }
- return db;
- }
-
}
diff --git a/src/main/resources/mapper/ArticleTagMapper.xml b/src/main/resources/mapper/ArticleTagMapper.xml
new file mode 100644
index 0000000..38f4ba6
--- /dev/null
+++ b/src/main/resources/mapper/ArticleTagMapper.xml
@@ -0,0 +1,101 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ insert into article_tag(a_id, t_id)
+ values (#{article.id}, #{tag.id})
+
+
+
+
+ update article_tag
+
+
+ a_id = #{article.id},
+
+
+ t_id = #{tag.id},
+
+
+ where at_id = #{id}
+
+
+
+
+ delete
+ from article_tag
+ where at_id = #{id};
+
+
+
+ delete from article_tag where at_id in
+
+ #{item.id}
+
+
+
+
+
+ delete
+ from article_tag
+ where a_id = #{id}
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/mapper/CategoryMapper.xml b/src/main/resources/mapper/CategoryMapper.xml
index 0a0c444..e134864 100644
--- a/src/main/resources/mapper/CategoryMapper.xml
+++ b/src/main/resources/mapper/CategoryMapper.xml
@@ -2,83 +2,92 @@
-
-
+
+
+
+
-
- insert into category (c_name, articles)
- values (#{name}, #{articles});
-
- SELECT LAST_INSERT_ID() AS id
-
+
+ insert into tag_category (t_name, is_category)
+ values (#{name}, true);
- update category
- set c_name=#{name},
- articles=#{articles}
- where c_id = #{id}
+ update tag_category
+ set t_name=#{name}
+ where t_id = #{id}
+ and is_category = true
-
- delete
- from category
- where c_id = #{id}
-
+
+ update tag_category
+ set is_delete= true
+ where t_id = #{id}
+ and is_category = true
+
-
\ No newline at end of file
diff --git a/src/main/resources/mapper/CommentMapper.xml b/src/main/resources/mapper/CommentMapper.xml
index 94c9973..73ae58e 100644
--- a/src/main/resources/mapper/CommentMapper.xml
+++ b/src/main/resources/mapper/CommentMapper.xml
@@ -3,21 +3,42 @@
-
- insert into comment (co_article_id, is_comment, author_id, co_content, co_date, co_pid)
- VALUES (#{articleID}, #{type}, #{authorID}, #{content}, #{date}, #{pid})
-
- SELECT LAST_INSERT_ID() AS id
-
+
+
+
+
+ insert into comment (co_page_path, co_content, co_date, co_pid, co_from_author_id, co_to_author_id, is_delete)
+ VALUES (#{pagePath}, #{content}, now(), #{pid}, #{fromUser.id}, #{toUser.id}, false)
@@ -26,73 +47,86 @@
where co_id = #{id}
-
+
update comment
- set co_response_id =#{responder}
+ set co_status = 3
where co_id = #{id}
-
- delete
- from comment
- where co_id = #{id}
-
-
- delete
- from comment
- where co_article_id = #{articleId}
-
+
+
+ update comment
+ set co_status = 3
+ where co_page_path = #{path}
+
+
SELECT EXISTS(SELECT * FROM comment WHERE co_id = #{id})
-
diff --git a/src/main/resources/mapper/PartnerSiteMapper.xml b/src/main/resources/mapper/PartnerSiteMapper.xml
index 563521d..d15d7ff 100644
--- a/src/main/resources/mapper/PartnerSiteMapper.xml
+++ b/src/main/resources/mapper/PartnerSiteMapper.xml
@@ -2,69 +2,71 @@
-
-
-
-
+
+
+
+
+
+
+
-
- insert into links (site_name, is_open, site_url)
- values (#{name}, #{open}, #{url})
-
- SELECT LAST_INSERT_ID() AS id
-
+
+ insert into links (l_name, l_is_open, l_url, l_icon_path, l_desc, is_delete)
+ values (#{name}, #{open}, #{url}, #{iconPath}, #{desc}, false)
update links set
- site_name=#{name},
- site_url=#{url},
- is_open=#{open}
- where site_id=#{id}
+ l_is_open=#{open},
+ l_icon_path=#{iconPath},
+ l_desc=#{desc},
+ l_url=#{url},
+ l_name=#{name}
+ where l_id=#{id}
-
- delete
- from links
- where site_id = #{id}
-
+
+ update links
+ set is_delete = true
+ where l_id = #{id}
+
- SELECT EXISTS(SELECT * FROM links WHERE site_id = #{id})
+ SELECT EXISTS(SELECT * FROM links WHERE l_id = #{id})
- SELECT EXISTS(SELECT * FROM links WHERE site_name = #{name})
+ SELECT EXISTS(SELECT * FROM links WHERE l_name = #{name})
- SELECT EXISTS(SELECT * FROM links WHERE site_url = #{url})
+ SELECT EXISTS(SELECT * FROM links WHERE l_url = #{url})
select *
from links
- where site_id = #{id}
+ where l_id = #{id}
select *
from links
- where site_name = #{name}
+ where l_name = #{name}
select *
from links
- where site_url = #{url}
+ where l_url = #{url}
select *
from links
- order by site_id desc
+ order by l_id desc
limit 1
diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml
index b9888b8..151740a 100644
--- a/src/main/resources/mapper/UserMapper.xml
+++ b/src/main/resources/mapper/UserMapper.xml
@@ -4,68 +4,74 @@
-
-
+
-
-
-
-
+
+
+
+
-
+
insert into user(u_email, u_pwd)
values (#{email}, #{pwd})
update user set
- `u_desc`=#{desc},
- `display_name`=#{displayName}
+ u_desc=#{desc},
+ u_display_name=#{displayName}
where u_id=#{id}
update user
- set `recently_landed_time`=#{date}
- where `u_email` = #{email}
+ set u_recently_landed_time=now()
+ where u_email = #{email}
update user
- set `u_avatar`=#{avatarImgUrl}
- where `u_id` = #{id}
+ set u_avatar=#{avatarImgUrl}
+ where u_id = #{id}
update user
- set `email_status`=#{status}
- where `u_email` = #{email}
+ set u_email_status=#{status}
+ where u_email = #{email}
update user
- set `u_pwd`=#{pwd}
- where `u_email` = #{email}
+ set u_pwd=#{pwd}
+ where u_email = #{email}
update user
- set role=#{role}
- where u_id = #{uid}
+ set u_role=#{role}
+ where u_id = #{id}
update user
- set `u_email` = #{email},
- `u_pwd` = #{pwd},
- `email_status` = #{emailStatus},
- `u_desc` = #{desc},
- `display_name` = #{displayName},
- `role` = #{role}
- where `u_id` = #{id}
-
-
- delete
- from user
+ set u_email = #{email},
+ u_pwd = #{pwd},
+ u_email_status = #{emailStatus},
+ u_desc = #{desc},
+ u_display_name = #{displayName},
+ u_avatar = #{avatarImgUrl},
+ u_role = #{role}
where u_id = #{id}
-
+
+
+ update user
+ set status= 2
+ where u_id = #{id}
+
+
+
+ update user
+ set status= 1
+ where u_id = #{id}
+
select exists(select * from user where u_email = #{email})
@@ -96,7 +102,7 @@
- select display_name
+ select u_display_name
from user
where u_id = #{id}
@@ -107,16 +113,17 @@
where u_email = #{email}
- select role
+ select u_role
from user
where u_email = #{emai}
select count(*)
from user
+ where status =0;
- select role
+ select u_role
from user
where u_id = #{id}
diff --git a/src/main/resources/mapper/VisitorMapper.xml b/src/main/resources/mapper/VisitorMapper.xml
index d1899ce..78c159c 100644
--- a/src/main/resources/mapper/VisitorMapper.xml
+++ b/src/main/resources/mapper/VisitorMapper.xml
@@ -6,23 +6,29 @@
+
-
+
insert into visitor (v_date, v_ip, v_user_agent)
values (#{date}, #{ip}, #{ua})
-
- SELECT LAST_INSERT_ID() AS id
-
-
- delete
- from visitor
+
+ update visitor
+ set is_delete = true
where v_id = #{id}
-
+
select *
- from visitor order by v_id desc
+ from visitor
+ order by v_id desc
+
+
+
+ select *
+ from visitor
+ where is_delete = false
+ order by v_id desc
select count(*)
diff --git a/src/main/resources/mapper/WebUpdateInfoMapper.xml b/src/main/resources/mapper/WebUpdateInfoMapper.xml
index ce12748..eb0094e 100644
--- a/src/main/resources/mapper/WebUpdateInfoMapper.xml
+++ b/src/main/resources/mapper/WebUpdateInfoMapper.xml
@@ -2,47 +2,54 @@
-
-
-
+
+
+
+
-
- insert into web_update(update_info, update_time)
- values (#{updateInfo}, #{updateTime})
-
- SELECT LAST_INSERT_ID() AS id
-
+
+
+ insert into web_update(wu_info, wu_time, is_delete)
+ values (#{updateInfo}, now(), false)
update web_update
- set update_info=#{info}
- where update_id = #{id};
-
+ set wu_info=#{info}
+ where wu_id = #{id};
-
- delete
- from web_update
- where update_id = #{id}
-
+
+ update web_update
+ set is_delete = true
+ where wu_id = #{id}
+
- select EXISTS(select * from web_update where update_id = #{id})
+ select EXISTS(select * from web_update where wu_id = #{id})
+
select *
from web_update
- where update_id = #{id}
+ where wu_id = #{id}
select *
from web_update
+ order by wu_id desc
+
+
+ select *
+ from web_update
+ where is_delete = false
+
+
select *
from web_update
- order by update_id desc
+ order by wu_id desc
limit 1
diff --git a/src/main/resources/mapper/articleMapper.xml b/src/main/resources/mapper/articleMapper.xml
index e994535..14b07e9 100644
--- a/src/main/resources/mapper/articleMapper.xml
+++ b/src/main/resources/mapper/articleMapper.xml
@@ -6,158 +6,180 @@
-
-
-
+
-
-
+
+
+
+
+
+
+
-
- insert into article (a_author_id, a_category_id, a_tags_id, a_md_content, a_publish_date,
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ insert into article (a_author_id, a_category_id, a_md_content, a_is_original,
a_summary, a_title, a_url)
- values (#{authorId}, #{categoryId}, #{tagsId}, #{mdContent}, #{publishDate},
- #{summary}, #{title}, #{url})
-
- SELECT LAST_INSERT_ID() AS id
-
+ values (#{user.id}, #{category.id}, #{mdContent}, #{type}, #{summary}, #{title}, #{url})
-
- delete
- from article
+
+ update article
+ set is_delete = true
where a_id = #{id}
-
+
update article
- set
+ set a_update_date=now(),
a_title=#{title},
a_md_content=#{mdContent},
a_summary=#{summary},
a_is_original=#{type},
a_url=#{url},
- a_update_date=#{updateDate},
- a_category_id=#{categoryId},
- a_tags_id=#{tagsId},
- next_a_id=#{nextArticleId},
- pre_a_id=#{preArticleId},
+ a_category_id=#{category.id},
a_is_open=#{open}
where a_id = #{id}
-
+
update article
- set next_a_id=#{nextArticleID}
- where a_id = #{targetArticleID}
-
-
-
- update article
- set pre_a_id=#{preArticleID}
- where a_id = #{targetArticleID}
-
-
- update article
- set a_reading_number=#{number}
+ set a_reading_number=a_reading_number + 1
where a_id = #{id}
-
- select a_id
- from article
- order by a_id desc
- limit 1
-
-
-
+
select *
- from article
- order by a_id desc
+ from articleView
+ order by articleId desc
limit 1
-
+
select *
- from article
- where a_id = #{id}
+ from articleView
+ where articleId = #{id}
SELECT EXISTS(SELECT * FROM article WHERE a_title = #{title})
-
- SELECT EXISTS(SELECT * FROM article WHERE a_id = #{id})
+
+ select is_delete
+ from article
+ WHERE a_id = #{id}
-
+
select *
- from article
- where a_author_id = #{authorID}
- order by a_id desc
+ from articleView
+ where authorId = #{authorId}
+ and isDelete = false
+ order by articleId desc
-
+
select *
- from article
- where a_is_open = #{isOpen}
- order by a_id desc
+ from articleView
+ where isOpen = #{isOpen}
+ and isDelete = false
+ order by articleId desc
- SELECT a_title
- from article
- where a_id = #{id}
+ SELECT title
+ from articleView
+ where articleId = #{id}
-
- select a_id, a_title, a_summary
- from article
- where a_category_id = #{id}
- order by a_id desc
-
-
-
+
select *
- from article
- order by a_id desc
+ from articleView
+ where categoryId = #{id}
+ and isDelete = false
+ order by articleId desc
-
- select a_id, a_summary, a_title
- from article
- where a_id = #{id}
+
+ select *
+ from articleView
+ where categoryId = #{id}
+ and isDelete = false
+ and isOpen = true
+ order by articleId desc
-
- select a_id, a_summary, a_title
- from article
- where a_category_id = #{categoryId}
- order by a_id desc
-
-
- Select
- a_id, a_summary, a_title
- from article where a_id in
-
- #{item}
-
- order by a_id desc
+
+ select *
+ from articleView
+ where isDelete = false
select count(*)
- from article;
+ from article
+ where is_delete = false;
+
+ select *
+ from articleView
+ where articleId = (select max(articleId)
+ from articleView
+ where articleId < #{id}
+ )
+
+
+ select *
+ from articleView
+ where articleId = (select min(articleId)
+ from articleView
+ where articleId > #{id}
+ )
+
+
+
\ No newline at end of file
diff --git a/src/main/resources/mapper/tagMapper.xml b/src/main/resources/mapper/tagMapper.xml
index 7c976e9..6d82167 100644
--- a/src/main/resources/mapper/tagMapper.xml
+++ b/src/main/resources/mapper/tagMapper.xml
@@ -1,75 +1,66 @@
-
-
-
+
+
-
- insert into tag (tag_name, articles)
- VALUES (#{name}, #{articles});
-
- SELECT LAST_INSERT_ID() AS id
-
+
+ insert into tag_category (t_name, is_category)
+ VALUES (#{name}, false);
- update tag
- set tag_name=#{name},
- articles=#{articles}
- where tag_id = #{id}
+ update tag_category
+ set t_name=#{name}
+ where t_id = #{id}
+ and is_category = false;
-
- delete
- from tag
- where tag_id = #{id}
-
+
+ update tag_category
+ set is_delete = true
+ where t_id = #{id}
+ and is_category = false;
+
select *
- from tag
- where tag_id = #{id}
+ from tag_category
+ where t_id = #{id}
+ and is_category = false;
select *
- from tag
- where tag_name = #{name}
+ from tag_category
+ where t_name = #{name}
+ and is_category = false;
- SELECT EXISTS(SELECT * FROM tag WHERE tag_name = #{name})
+ SELECT EXISTS(SELECT * FROM tag_category WHERE t_name = #{name} and is_category = false)
-
- select tag_id
- from tag
- where tag_name = #{name}
-
-
-
- select tag_name
- from tag
- where tag_id = #{id}
-
-
-
select *
- from tag
- order by tag_id desc
+ from tag_category
+ where is_category = false
+ order by t_id desc
limit 1
select *
- from tag
+ from tag_category
+ where is_category = false
select count(*)
- from tag;
+ from tag_category
+ where is_category = false
+ and is_delete = false;
\ No newline at end of file
diff --git a/src/test/java/cn/celess/blog/controller/ArticleControllerTest.java b/src/test/java/cn/celess/blog/controller/ArticleControllerTest.java
index 4b71094..4d16a34 100644
--- a/src/test/java/cn/celess/blog/controller/ArticleControllerTest.java
+++ b/src/test/java/cn/celess/blog/controller/ArticleControllerTest.java
@@ -3,10 +3,11 @@ package cn.celess.blog.controller;
import cn.celess.blog.BaseTest;
import cn.celess.blog.entity.Article;
import cn.celess.blog.entity.Response;
+import cn.celess.blog.entity.Tag;
import cn.celess.blog.entity.model.ArticleModel;
+import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.request.ArticleReq;
import cn.celess.blog.mapper.ArticleMapper;
-import com.github.pagehelper.PageInfo;
import net.sf.json.JSONObject;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
@@ -31,7 +32,8 @@ public class ArticleControllerTest extends BaseTest {
articleReq.setTitle("test-" + UUID.randomUUID().toString());
articleReq.setMdContent("# test title");
articleReq.setCategory("随笔");
- articleReq.setTags("test,SpringMvc");
+ String[] tagList = {"tag", "category"};
+ articleReq.setTags(tagList);
articleReq.setOpen(true);
articleReq.setType(true);
articleReq.setUrl("http://xxxx.com");
@@ -80,13 +82,11 @@ public class ArticleControllerTest extends BaseTest {
assertNotNull(articleModel.getCategory());
assertNotNull(articleModel.getPublishDateFormat());
assertNotNull(articleModel.getMdContent());
- assertNotNull(articleModel.getNextArticleId());
- assertNotNull(articleModel.getNextArticleTitle());
- assertNotNull(articleModel.getPreArticleId());
- assertNotNull(articleModel.getPreArticleTitle());
+ assertNotNull(articleModel.getPreArticle());
+ assertNull(articleModel.getNextArticle());
assertNotNull(articleModel.getOpen());
assertNotNull(articleModel.getReadingNumber());
- assertNotNull(articleModel.getAuthorName());
+ assertNotNull(articleModel.getAuthor());
assertNotNull(articleModel.getUrl());
});
} catch (Exception e) {
@@ -96,11 +96,11 @@ public class ArticleControllerTest extends BaseTest {
@Test
public void delete() {
- long articleId = articleMapper.getLastestArticleId();
+ Article article = articleMapper.getLastestArticle();
try {
// 未登录删除文章
- mockMvc.perform(MockMvcRequestBuilders.delete("/admin/article/del?articleID=" + articleId)
+ mockMvc.perform(MockMvcRequestBuilders.delete("/admin/article/del?articleID=" + article.getId())
).andDo(result -> {
assertEquals(HAVE_NOT_LOG_IN.getCode(),
JSONObject.fromObject(result.getResponse().getContentAsString()).getInt(Code)
@@ -108,14 +108,14 @@ public class ArticleControllerTest extends BaseTest {
});
// user 权限删除文章
String token = userLogin();
- mockMvc.perform(MockMvcRequestBuilders.delete("/admin/article/del?articleID=" + articleId)
+ mockMvc.perform(MockMvcRequestBuilders.delete("/admin/article/del?articleID=" + article.getId())
.header("Authorization", token))
.andDo(result -> assertEquals(PERMISSION_ERROR.getCode(),
JSONObject.fromObject(result.getResponse().getContentAsString()).getInt(Code))
);
// admin 权限删除文章
token = adminLogin();
- mockMvc.perform(MockMvcRequestBuilders.delete("/admin/article/del?articleID=" + articleId)
+ mockMvc.perform(MockMvcRequestBuilders.delete("/admin/article/del?articleID=" + article.getId())
.header("Authorization", token))
.andDo(result -> {
JSONObject object = JSONObject.fromObject(result.getResponse().getContentAsString());
@@ -140,8 +140,8 @@ public class ArticleControllerTest extends BaseTest {
articleReq.setOpen(!article.getOpen());
String tag1 = randomStr(4);
String tag2 = randomStr(4);
- String tag = "test," + tag1 + "," + tag2;
- articleReq.setTags(tag);
+ String[] tagList = {"test", tag1, tag2};
+ articleReq.setTags(tagList);
articleReq.setTitle("test-" + article.getTitle());
try {
// Admin 权限
@@ -160,15 +160,11 @@ public class ArticleControllerTest extends BaseTest {
assertEquals(articleReq.getTitle(), a.getTitle());
assertEquals(articleReq.getType(), a.getOriginal());
// Tag
- List asList = Arrays.asList(a.getTags());
- assertTrue(asList.contains("test"));
- assertTrue(asList.contains(tag1));
- assertTrue(asList.contains(tag2));
+ List asList = a.getTags();
+ assertEquals(3, asList.size());
assertEquals(articleReq.getOpen(), a.getOpen());
assertEquals(articleReq.getId(), a.getId());
});
-
-
} catch (Exception e) {
e.printStackTrace();
}
@@ -207,17 +203,13 @@ public class ArticleControllerTest extends BaseTest {
assertNotNull(a.getMdContent());
assertNotNull(a.getUrl());
assertNotNull(a.getUpdateDateFormat());
- assertNotNull(a.getPreArticleId());
- assertNotNull(a.getPreArticleId());
- assertNotNull(a.getNextArticleId());
- assertNotNull(a.getNextArticleTitle());
+ assertTrue(a.getPreArticle() != null || a.getNextArticle() != null);
assertNotNull(a.getReadingNumber());
- // assertNotNull(a.getOpen());
assertNotNull(a.getOriginal());
assertNotNull(a.getPublishDateFormat());
assertNotNull(a.getCategory());
assertNotNull(a.getTags());
- assertNotNull(a.getAuthorName());
+ assertNotNull(a.getAuthor());
});
} catch (Exception e) {
e.printStackTrace();
@@ -242,14 +234,12 @@ public class ArticleControllerTest extends BaseTest {
assertNotNull(response.getResult());
// 判断pageInfo是否包装完全
JSONObject resultJson = JSONObject.fromObject(response.getResult());
- PageInfo pageInfo = (PageInfo) JSONObject.toBean(resultJson, PageInfo.class);
- assertNotEquals(0, pageInfo.getTotal());
- assertNotEquals(0, pageInfo.getStartRow());
- assertNotEquals(0, pageInfo.getEndRow());
- assertEquals(1, pageInfo.getPageNum());
- assertEquals(5, pageInfo.getPageSize());
+ PageData pageData = (PageData) JSONObject.toBean(resultJson, PageData.class);
+ assertNotEquals(0, pageData.getTotal());
+ assertEquals(1, pageData.getPageNum());
+ assertEquals(5, pageData.getPageSize());
// 内容完整
- for (Object arc : pageInfo.getList()) {
+ for (Object arc : pageData.getList()) {
ArticleModel a = (ArticleModel) JSONObject.toBean(JSONObject.fromObject(arc), ArticleModel.class);
assertNotNull(a.getTitle());
assertNotNull(a.getId());
@@ -258,7 +248,9 @@ public class ArticleControllerTest extends BaseTest {
assertNotNull(a.getPublishDateFormat());
assertNotNull(a.getCategory());
assertNotNull(a.getTags());
- assertNotNull(a.getAuthorName());
+ assertNotNull(a.getAuthor());
+ assertNull(a.getOpen());
+ assertNull(a.getMdContent());
}
});
} catch (Exception e) {
@@ -299,14 +291,12 @@ public class ArticleControllerTest extends BaseTest {
assertEquals(SUCCESS.getCode(), adminLogin.getInt(Code));
assertNotNull(adminLogin.getString(Result));
// 判断pageInfo是否包装完全
- PageInfo pageInfo = (PageInfo) JSONObject.toBean(adminLogin.getJSONObject(Result), PageInfo.class);
- assertNotEquals(0, pageInfo.getTotal());
- assertNotEquals(0, pageInfo.getStartRow());
- assertNotEquals(0, pageInfo.getEndRow());
- assertEquals(1, pageInfo.getPageNum());
- assertEquals(10, pageInfo.getPageSize());
+ PageData pageData = (PageData) JSONObject.toBean(adminLogin.getJSONObject(Result), PageData.class);
+ assertNotEquals(0, pageData.getTotal());
+ assertEquals(1, pageData.getPageNum());
+ assertEquals(10, pageData.getPageSize());
// 内容完整
- for (Object arc : pageInfo.getList()) {
+ for (Object arc : pageData.getList()) {
ArticleModel a = (ArticleModel) JSONObject.toBean(JSONObject.fromObject(arc), ArticleModel.class);
assertNotNull(a.getTitle());
assertNotNull(a.getId());
@@ -314,6 +304,9 @@ public class ArticleControllerTest extends BaseTest {
assertNotNull(a.getPublishDateFormat());
assertNotNull(a.getOpen());
assertNotNull(a.getReadingNumber());
+ assertNotNull(a.getLikeCount());
+ assertNotNull(a.getDislikeCount());
+ assertNull(a.getMdContent());
}
});
} catch (Exception e) {
@@ -338,13 +331,11 @@ public class ArticleControllerTest extends BaseTest {
.andDo(result -> {
JSONObject jsonObject = JSONObject.fromObject(result.getResponse().getContentAsString());
assertEquals(SUCCESS.getCode(), jsonObject.getInt(Code));
- PageInfo pageInfo = (PageInfo) JSONObject.toBean(jsonObject.getJSONObject(Result), PageInfo.class);
- assertNotEquals(0, pageInfo.getTotal());
- assertNotEquals(0, pageInfo.getStartRow());
- assertNotEquals(0, pageInfo.getEndRow());
- assertEquals(1, pageInfo.getPageNum());
- assertEquals(10, pageInfo.getPageSize());
- for (Object arc : pageInfo.getList()) {
+ PageData pageData = (PageData) JSONObject.toBean(jsonObject.getJSONObject(Result), PageData.class);
+ assertNotEquals(0, pageData.getTotal());
+ assertEquals(1, pageData.getPageNum());
+ assertEquals(10, pageData.getPageSize());
+ for (Object arc : pageData.getList()) {
JSONObject jsonObject1 = JSONObject.fromObject(arc);
assertNotEquals(0, jsonObject1.getInt("id"));
assertNotNull(jsonObject1.getString("title"));
@@ -373,14 +364,12 @@ public class ArticleControllerTest extends BaseTest {
.andDo(result -> {
JSONObject jsonObject = JSONObject.fromObject(result.getResponse().getContentAsString());
assertEquals(SUCCESS.getCode(), jsonObject.getInt(Code));
- PageInfo pageInfo = (PageInfo) JSONObject.toBean(jsonObject.getJSONObject(Result), PageInfo.class);
- assertNotEquals(0, pageInfo.getTotal());
- assertNotEquals(0, pageInfo.getStartRow());
- assertNotEquals(0, pageInfo.getEndRow());
- assertEquals(1, pageInfo.getPageNum());
- assertEquals(10, pageInfo.getPageSize());
+ PageData pageData = (PageData) JSONObject.toBean(jsonObject.getJSONObject(Result), PageData.class);
+ assertNotEquals(0, pageData.getTotal());
+ assertEquals(1, pageData.getPageNum());
+ assertEquals(10, pageData.getPageSize());
- for (Object arc : pageInfo.getList()) {
+ for (Object arc : pageData.getList()) {
JSONObject jsonObject1 = JSONObject.fromObject(arc);
assertNotEquals(0, jsonObject1.getInt("id"));
assertNotNull(jsonObject1.getString("title"));
diff --git a/src/test/java/cn/celess/blog/controller/CategoryControllerTest.java b/src/test/java/cn/celess/blog/controller/CategoryControllerTest.java
index 5c1d040..1615756 100644
--- a/src/test/java/cn/celess/blog/controller/CategoryControllerTest.java
+++ b/src/test/java/cn/celess/blog/controller/CategoryControllerTest.java
@@ -23,7 +23,7 @@ public class CategoryControllerTest extends BaseTest {
@Test
public void addOne() throws Exception {
- String categoryName = UUID.randomUUID().toString().substring(0, 4);
+ String categoryName = randomStr(4);
System.out.println("categoryName: ==> " + categoryName);
// 未登录
mockMvc.perform(post("/admin/category/create?name=" + categoryName)).andExpect(status().isOk())
@@ -84,7 +84,7 @@ public class CategoryControllerTest extends BaseTest {
@Test
public void updateOne() throws Exception {
Category category = categoryMapper.getLastestCategory();
- String name = UUID.randomUUID().toString().substring(0, 4);
+ String name = randomStr(4);
// 未登录
mockMvc.perform(put("/admin/category/update?id=" + category.getId() + "&name=" + name)).andExpect(status().isOk())
.andDo(result -> {
@@ -119,7 +119,7 @@ public class CategoryControllerTest extends BaseTest {
.andDo(result -> {
JSONObject object = JSONObject.fromObject(result.getResponse().getContentAsString());
assertEquals(SUCCESS.getCode(), object.getInt(Code));
- JSONArray jsonArray = object.getJSONArray(Result);
+ JSONArray jsonArray = object.getJSONObject(Result).getJSONArray("list");
assertNotNull(jsonArray);
jsonArray.forEach(o -> {
CategoryModel c = (CategoryModel) JSONObject.toBean(JSONObject.fromObject(o), CategoryModel.class);
diff --git a/src/test/java/cn/celess/blog/controller/CommentControllerTest.java b/src/test/java/cn/celess/blog/controller/CommentControllerTest.java
index 24b07d1..19df58b 100644
--- a/src/test/java/cn/celess/blog/controller/CommentControllerTest.java
+++ b/src/test/java/cn/celess/blog/controller/CommentControllerTest.java
@@ -3,24 +3,18 @@ package cn.celess.blog.controller;
import cn.celess.blog.BaseTest;
import cn.celess.blog.entity.Article;
import cn.celess.blog.entity.Comment;
+import cn.celess.blog.entity.User;
import cn.celess.blog.entity.model.CommentModel;
import cn.celess.blog.entity.request.CommentReq;
import cn.celess.blog.mapper.ArticleMapper;
import cn.celess.blog.mapper.CommentMapper;
import cn.celess.blog.mapper.UserMapper;
-import com.github.pagehelper.PageInfo;
-import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
-import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
import java.util.UUID;
-import java.util.concurrent.atomic.AtomicReference;
import static org.junit.Assert.*;
import static cn.celess.blog.enmu.ResponseEnum.*;
@@ -30,19 +24,19 @@ public class CommentControllerTest extends BaseTest {
@Autowired
ArticleMapper articleMapper;
@Autowired
+ UserMapper userMapper;
+ @Autowired
CommentMapper commentMapper;
@Test
public void addOne() throws Exception {
+ Article article = articleMapper.getLastestArticle();
CommentReq commentReq = new CommentReq();
- // 测试留言
- commentReq.setArticleID(null);
- commentReq.setComment(false);
+ commentReq.setPagePath("/article/" + article.getId());
commentReq.setContent(UUID.randomUUID().toString());
commentReq.setPid(-1L);
- commentReq.setResponseId(null);
+ commentReq.setToUserId(-1L);
String token = userLogin();
- CommentModel PC = null;
mockMvc.perform(post("/user/comment/create")
.contentType(MediaType.APPLICATION_JSON_UTF8)
.content(JSONObject.fromObject(commentReq).toString())
@@ -52,22 +46,19 @@ public class CommentControllerTest extends BaseTest {
assertEquals(SUCCESS.getCode(), object.getInt(Code));
CommentModel model = (CommentModel) JSONObject.toBean(object.getJSONObject(Result), CommentModel.class);
assertNotEquals(0, model.getId());
- assertEquals(commentReq.getPid().longValue(), model.getPid());
- assertEquals(-1, model.getPid());
- assertEquals(commentReq.getComment(), model.isComment());
+ assertEquals(commentReq.getPid(), model.getPid().longValue());
+ assertEquals(-1, model.getPid().longValue());
assertEquals(commentReq.getContent(), model.getContent());
assertNotNull(model.getDate());
- assertNotNull(model.getAuthorName());
- assertNotNull(model.getAuthorAvatarImgUrl());
+ assertNotNull(model.getFromUser());
+ assertNull(model.getToUser());
});
- Article article = articleMapper.getLastestArticle();
- // 测试评论
- commentReq.setArticleID(article.getId());
- commentReq.setComment(true);
+
+ commentReq.setPagePath("/article/" + article.getId());
commentReq.setContent(UUID.randomUUID().toString());
commentReq.setPid(-1L);
- commentReq.setResponseId(null);
+ commentReq.setToUserId(2);
mockMvc.perform(post("/user/comment/create")
.contentType(MediaType.APPLICATION_JSON_UTF8)
.content(JSONObject.fromObject(commentReq).toString())
@@ -78,58 +69,50 @@ public class CommentControllerTest extends BaseTest {
CommentModel model = (CommentModel) JSONObject.toBean(object.getJSONObject(Result), CommentModel.class);
// 响应数据的完整性
assertNotEquals(0, model.getId());
- assertEquals(commentReq.getPid().longValue(), model.getPid());
- assertEquals(-1, model.getPid());
- assertEquals(commentReq.getComment(), model.isComment());
+ assertEquals(commentReq.getPid(), model.getPid().longValue());
+ assertEquals(-1, model.getPid().longValue());
assertEquals(commentReq.getContent(), model.getContent());
- assertEquals(commentReq.getArticleID().longValue(), model.getArticleID());
+ assertEquals(commentReq.getPagePath(), "/article/" + article.getId());
assertNotNull(model.getDate());
- assertNotNull(model.getAuthorName());
- assertNotNull(model.getAuthorAvatarImgUrl());
+ assertNotNull(model.getFromUser());
+ assertNotNull(model.getToUser());
});
// 测试二级回复
Comment lastestComment = commentMapper.getLastestComment();
- commentReq.setArticleID(lastestComment.getArticleID());
- commentReq.setComment(lastestComment.getType());
+ commentReq.setPagePath("/article/" + article.getId());
commentReq.setContent(UUID.randomUUID().toString());
commentReq.setPid(lastestComment.getId());
- commentReq.setResponseId(null);
mockMvc.perform(post("/user/comment/create")
.contentType(MediaType.APPLICATION_JSON_UTF8)
.content(JSONObject.fromObject(commentReq).toString())
.header("Authorization", token)
- ).andDo(MockMvcResultHandlers.print()).andDo(result -> {
+ ).andDo(result -> {
JSONObject object = JSONObject.fromObject(result.getResponse().getContentAsString());
assertEquals(SUCCESS.getCode(), object.getInt(Code));
CommentModel model = (CommentModel) JSONObject.toBean(object.getJSONObject(Result), CommentModel.class);
// 重新获取父评论信息
Comment pCommon = commentMapper.findCommentById(lastestComment.getId());
- assertEquals(pCommon.getId().longValue(), model.getPid());
- // 判断父评论中是否有写入当前新增的评论的id
- String[] ids = pCommon.getResponseId().split(",");
- boolean contain = false;
- for (String id : ids) {
- if (!id.isEmpty() && Long.parseLong(id) == model.getId()) {
- contain = true;
- break;
- }
- }
- assertTrue(contain);
+ assertEquals(pCommon.getId(), model.getPid());
});
}
@Test
public void deleteTest() throws Exception {
// 准备数据
- Comment c = new Comment();
- c.setArticleID(-1L);
- c.setType(true);
- c.setAuthorID(2L);
- c.setDate(new Date());
- c.setPid(-1L);
- commentMapper.insert(c);
- Comment comment = commentMapper.getLastestComment();
+ User from = userMapper.findByEmail("zh56462271@qq.com");
+ assertNotNull(from);
+ User to = userMapper.findByEmail("a@celess.cn");
+ assertNotNull(to);
+
+ Comment comment = new Comment();
+ comment.setContent(randomStr(8));
+ comment.setFromUser(from);
+ comment.setToUser(to);
+ comment.setPagePath("/tags");
+ comment.setPid(-1L);
+ commentMapper.insert(comment);
+ comment = commentMapper.findCommentById(comment.getId());
// 接口测试
long id = comment.getId();
assertNotEquals(0, id);
@@ -141,7 +124,7 @@ public class CommentControllerTest extends BaseTest {
});
mockMvc.perform(delete("/user/comment/del?id=" + id).header("Authorization", token)).andDo(result -> {
JSONObject object = JSONObject.fromObject(result.getResponse().getContentAsString());
- assertEquals(COMMENT_NOT_EXIST.getCode(), object.getInt(Code));
+ assertEquals(DATA_IS_DELETED.getCode(), object.getInt(Code));
});
}
@@ -150,12 +133,8 @@ public class CommentControllerTest extends BaseTest {
Comment comment = commentMapper.getLastestComment();
CommentReq commentReq = new CommentReq();
commentReq.setId(comment.getId());
- commentReq.setPid(comment.getPid());
commentReq.setContent(UUID.randomUUID().toString());
- commentReq.setArticleID(comment.getArticleID());
// 不合法数据 setResponseId
- commentReq.setResponseId("xxxx");
- commentReq.setComment(comment.getType());
mockMvc.perform(put("/user/comment/update")
.content(JSONObject.fromObject(commentReq).toString())
.contentType(MediaType.APPLICATION_JSON_UTF8)
@@ -165,161 +144,7 @@ public class CommentControllerTest extends BaseTest {
assertEquals(SUCCESS.getCode(), object.getInt(Code));
CommentModel c = (CommentModel) JSONObject.toBean(object.getJSONObject(Result), CommentModel.class);
assertEquals(commentReq.getContent(), c.getContent());
- assertEquals(commentReq.getResponseId(), c.getResponseId());
- assertNotNull(c.getAuthorAvatarImgUrl());
- assertNotNull(c.getAuthorName());
- assertNotNull(c.getDate());
- assertNotEquals(0, c.getPid());
- assertNotEquals(0, c.getArticleID());
});
}
- @Test
- public void commentsOfArticle() throws Exception {
- mockMvc.perform(get("/comments?articleId=3&page=1&count=10")).andDo(result -> {
- JSONObject object = JSONObject.fromObject(result.getResponse().getContentAsString());
- assertEquals(SUCCESS.getCode(), object.getInt(Code));
- PageInfo pageInfo = (PageInfo) JSONObject.toBean(object.getJSONObject(Result), PageInfo.class);
- assertNotEquals(0, pageInfo.getStartRow());
- assertNotEquals(0, pageInfo.getEndRow());
- assertEquals(1, pageInfo.getPageNum());
- assertEquals(10, pageInfo.getPageSize());
- pageInfo.getList().forEach(o -> {
- CommentModel model = (CommentModel) JSONObject.toBean(JSONObject.fromObject(o), CommentModel.class);
- assertEquals(3, model.getArticleID());
- assertNotNull(model.getDate());
- assertNotNull(model.getAuthorName());
- assertNotNull(model.getAuthorAvatarImgUrl());
- assertNotNull(model.getArticleTitle());
- assertNotNull(model.getContent());
- assertNotNull(model.getResponseId());
- });
- });
- }
-
- @Test
- public void retrievePage() throws Exception {
- long pid = -1;
- mockMvc.perform(get("/comment/pid/" + pid)).andDo(result -> {
- JSONObject object = JSONObject.fromObject(result.getResponse().getContentAsString());
- assertEquals(SUCCESS.getCode(), object.getInt(Code));
- JSONArray jsonArray = object.getJSONArray(Result);
- assertNotEquals(0, jsonArray.size());
- jsonArray.forEach(o -> {
- CommentModel model = (CommentModel) JSONObject.toBean(JSONObject.fromObject(o), CommentModel.class);
- assertNotNull(model.getDate());
- assertNotNull(model.getAuthorName());
- assertNotNull(model.getAuthorAvatarImgUrl());
- assertNotNull(model.getContent());
- assertNotNull(model.getResponseId());
- });
- });
- }
-
- @Test
- public void retrievePageOfLeaveMsg() throws Exception {
- mockMvc.perform(get("/leaveMsg?page=1&count=10")).andDo(result -> {
- JSONObject object = JSONObject.fromObject(result.getResponse().getContentAsString());
- assertEquals(SUCCESS.getCode(), object.getInt(Code));
- PageInfo pageInfo = (PageInfo) JSONObject.toBean(object.getJSONObject(Result), PageInfo.class);
- assertNotEquals(0, pageInfo.getStartRow());
- assertNotEquals(0, pageInfo.getEndRow());
- assertEquals(1, pageInfo.getPageNum());
- assertEquals(10, pageInfo.getPageSize());
- pageInfo.getList().forEach(o -> {
- CommentModel model = (CommentModel) JSONObject.toBean(JSONObject.fromObject(o), CommentModel.class);
- assertEquals(-1, model.getArticleID());
- assertNotNull(model.getDate());
- assertNotNull(model.getAuthorName());
- assertNotNull(model.getAuthorAvatarImgUrl());
- assertNotNull(model.getContent());
- assertNotNull(model.getResponseId());
- assertFalse(model.isComment());
- });
- });
- }
-
- @Test
- public void retrievePageAdmin() throws Exception {
- mockMvc.perform(get("/admin/comment/type/1?page=1&count=10").header("Authorization", adminLogin())).andDo(result -> {
- JSONObject object = JSONObject.fromObject(result.getResponse().getContentAsString());
- assertEquals(SUCCESS.getCode(), object.getInt(Code));
- PageInfo pageInfo = (PageInfo) JSONObject.toBean(object.getJSONObject(Result), PageInfo.class);
- assertNotEquals(0, pageInfo.getStartRow());
- assertNotEquals(0, pageInfo.getEndRow());
- assertEquals(1, pageInfo.getPageNum());
- assertEquals(10, pageInfo.getPageSize());
- pageInfo.getList().forEach(o -> {
- CommentModel model = (CommentModel) JSONObject.toBean(JSONObject.fromObject(o), CommentModel.class);
- assertNotEquals(-1, model.getArticleID());
- assertNotNull(model.getDate());
- assertNotNull(model.getAuthorName());
- assertNotNull(model.getAuthorAvatarImgUrl());
- assertNotNull(model.getContent());
- assertNotNull(model.getResponseId());
- assertTrue(model.isComment());
- });
- });
- mockMvc.perform(get("/admin/comment/type/0?page=1&count=10").header("Authorization", adminLogin())).andDo(result -> {
- JSONObject object = JSONObject.fromObject(result.getResponse().getContentAsString());
- assertEquals(SUCCESS.getCode(), object.getInt(Code));
- PageInfo pageInfo = (PageInfo) JSONObject.toBean(object.getJSONObject(Result), PageInfo.class);
- assertNotEquals(0, pageInfo.getStartRow());
- assertNotEquals(0, pageInfo.getEndRow());
- assertEquals(1, pageInfo.getPageNum());
- assertEquals(10, pageInfo.getPageSize());
- pageInfo.getList().forEach(o -> {
- CommentModel model = (CommentModel) JSONObject.toBean(JSONObject.fromObject(o), CommentModel.class);
- assertEquals(-1, model.getArticleID());
- assertNotNull(model.getDate());
- assertNotNull(model.getAuthorName());
- assertNotNull(model.getAuthorAvatarImgUrl());
- assertNotNull(model.getContent());
- assertNotNull(model.getResponseId());
- assertFalse(model.isComment());
- });
- });
- }
-
- @Test
- public void retrievePageByAuthor() throws Exception {
- mockMvc.perform(get("/user/comment/type/1?page=1&count=10").header("Authorization", userLogin())).andDo(result -> {
- JSONObject object = JSONObject.fromObject(result.getResponse().getContentAsString());
- assertEquals(SUCCESS.getCode(), object.getInt(Code));
- PageInfo pageInfo = (PageInfo) JSONObject.toBean(object.getJSONObject(Result), PageInfo.class);
- assertNotEquals(0, pageInfo.getStartRow());
- assertNotEquals(0, pageInfo.getEndRow());
- assertEquals(1, pageInfo.getPageNum());
- assertEquals(10, pageInfo.getPageSize());
- pageInfo.getList().forEach(o -> {
- CommentModel model = (CommentModel) JSONObject.toBean(JSONObject.fromObject(o), CommentModel.class);
- assertNotEquals(-1, model.getArticleID());
- assertNotNull(model.getDate());
- assertNotNull(model.getAuthorName());
- assertNotNull(model.getAuthorAvatarImgUrl());
- assertNotNull(model.getContent());
- assertNotNull(model.getResponseId());
- assertTrue(model.isComment());
- });
- });
- mockMvc.perform(get("/user/comment/type/0?page=1&count=10").header("Authorization", userLogin())).andDo(result -> {
- JSONObject object = JSONObject.fromObject(result.getResponse().getContentAsString());
- assertEquals(SUCCESS.getCode(), object.getInt(Code));
- PageInfo pageInfo = (PageInfo) JSONObject.toBean(object.getJSONObject(Result), PageInfo.class);
- assertNotEquals(0, pageInfo.getStartRow());
- assertNotEquals(0, pageInfo.getEndRow());
- assertEquals(1, pageInfo.getPageNum());
- assertEquals(10, pageInfo.getPageSize());
- pageInfo.getList().forEach(o -> {
- CommentModel model = (CommentModel) JSONObject.toBean(JSONObject.fromObject(o), CommentModel.class);
- assertEquals(-1, model.getArticleID());
- assertNotNull(model.getDate());
- assertNotNull(model.getAuthorName());
- assertNotNull(model.getAuthorAvatarImgUrl());
- assertNotNull(model.getContent());
- assertNotNull(model.getResponseId());
- assertFalse(model.isComment());
- });
- });
- }
}
\ No newline at end of file
diff --git a/src/test/java/cn/celess/blog/controller/LinksControllerTest.java b/src/test/java/cn/celess/blog/controller/LinksControllerTest.java
index 32791c0..b96c49b 100644
--- a/src/test/java/cn/celess/blog/controller/LinksControllerTest.java
+++ b/src/test/java/cn/celess/blog/controller/LinksControllerTest.java
@@ -2,6 +2,7 @@ package cn.celess.blog.controller;
import cn.celess.blog.BaseTest;
import cn.celess.blog.entity.PartnerSite;
+import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.request.LinkReq;
import cn.celess.blog.mapper.PartnerMapper;
import com.github.pagehelper.PageInfo;
@@ -73,6 +74,8 @@ public class LinksControllerTest extends BaseTest {
PartnerSite partnerSite = new PartnerSite();
partnerSite.setName(UUID.randomUUID().toString().substring(0, 4));
partnerSite.setOpen(true);
+ partnerSite.setDesc("");
+ partnerSite.setIconPath("");
partnerSite.setUrl("https://www.celess.cn");
mapper.insert(partnerSite);
PartnerSite lastest = mapper.getLastest();
@@ -99,6 +102,9 @@ public class LinksControllerTest extends BaseTest {
PartnerSite partnerSite = new PartnerSite();
partnerSite.setName(UUID.randomUUID().toString().substring(0, 4));
partnerSite.setOpen(true);
+ partnerSite.setDesc("");
+ partnerSite.setIconPath("");
+ partnerSite.setDelete(false);
partnerSite.setUrl("https://www.celess.cn");
mapper.insert(partnerSite);
// 查数据
@@ -147,17 +153,15 @@ public class LinksControllerTest extends BaseTest {
mockMvc.perform(get("/admin/links?page=1&count=10").header("Authorization", adminLogin())).andDo(result -> {
JSONObject object = JSONObject.fromObject(result.getResponse().getContentAsString());
assertEquals(SUCCESS.getCode(), object.getInt(Code));
- PageInfo pageInfo = (PageInfo) JSONObject.toBean(object.getJSONObject(Result), PageInfo.class);
- assertNotEquals(0, pageInfo.getStartRow());
- assertNotEquals(0, pageInfo.getEndRow());
- assertEquals(1, pageInfo.getPageNum());
- assertEquals(10, pageInfo.getPageSize());
- pageInfo.getList().forEach(o -> {
+ PageData pageData = (PageData) JSONObject.toBean(object.getJSONObject(Result), PageData.class);
+ assertEquals(1, pageData.getPageNum());
+ assertEquals(10, pageData.getPageSize());
+ for (Object o : pageData.getList()) {
PartnerSite site = (PartnerSite) JSONObject.toBean(JSONObject.fromObject(o), PartnerSite.class);
assertNotNull(site.getUrl());
assertNotNull(site.getName());
assertNotNull(site.getOpen());
- });
+ }
});
}
diff --git a/src/test/java/cn/celess/blog/controller/TagControllerTest.java b/src/test/java/cn/celess/blog/controller/TagControllerTest.java
index 578137d..2d19634 100644
--- a/src/test/java/cn/celess/blog/controller/TagControllerTest.java
+++ b/src/test/java/cn/celess/blog/controller/TagControllerTest.java
@@ -2,9 +2,9 @@ package cn.celess.blog.controller;
import cn.celess.blog.BaseTest;
import cn.celess.blog.entity.Tag;
+import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.model.TagModel;
import cn.celess.blog.mapper.TagMapper;
-import com.github.pagehelper.PageInfo;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.junit.Test;
@@ -23,7 +23,7 @@ public class TagControllerTest extends BaseTest {
@Test
public void addOne() throws Exception {
- String name = UUID.randomUUID().toString().substring(0, 4);
+ String name = randomStr(4);
mockMvc.perform(post("/admin/tag/create?name=" + name)).andDo(result -> assertEquals(HAVE_NOT_LOG_IN.getCode(), JSONObject.fromObject(result.getResponse().getContentAsString()).getInt(Code)));
mockMvc.perform(post("/admin/tag/create?name=" + name).header("authorization", userLogin())).andDo(result -> assertEquals(PERMISSION_ERROR.getCode(), JSONObject.fromObject(result.getResponse().getContentAsString()).getInt(Code)));
mockMvc.perform(post("/admin/tag/create?name=" + name).header("authorization", adminLogin())).andDo(result -> {
@@ -66,42 +66,11 @@ public class TagControllerTest extends BaseTest {
assertNotNull(object.getJSONObject(Result));
TagModel t = (TagModel) JSONObject.toBean(object.getJSONObject(Result), TagModel.class);
assertEquals(name, t.getName());
- StringBuilder s = new StringBuilder();
- t.getArticles().forEach(e -> s.append(e).append(","));
- assertEquals(tag.getArticles(), s.toString());
assertEquals(tag.getId(), t.getId());
});
}
- @Test
- public void retrieveOneById() throws Exception {
- Tag tag = tagMapper.getLastestTag();
- assertNotNull(tag.getId());
- mockMvc.perform(get("/tag/id/" + tag.getId())).andDo(result -> {
- JSONObject object = JSONObject.fromObject(result.getResponse().getContentAsString());
- assertEquals(SUCCESS.getCode(), object.getInt(Code));
- assertNotNull(object.getJSONObject(Result));
- TagModel t = (TagModel) JSONObject.toBean(object.getJSONObject(Result), TagModel.class);
- assertEquals(tag.getId(), t.getId());
- assertNotNull(t.getName());
- });
- }
-
- @Test
- public void retrieveOneByName() throws Exception {
- Tag tag = tagMapper.getLastestTag();
- assertNotNull(tag.getName());
- mockMvc.perform(get("/tag/name/" + tag.getName())).andDo(result -> {
- JSONObject object = JSONObject.fromObject(result.getResponse().getContentAsString());
- assertEquals(SUCCESS.getCode(), object.getInt(Code));
- assertNotNull(object.getJSONObject(Result));
- TagModel t = (TagModel) JSONObject.toBean(object.getJSONObject(Result), TagModel.class);
- assertEquals(tag.getName(), t.getName());
- assertNotNull(t.getId());
- });
- }
-
@Test
public void getPage() throws Exception {
mockMvc.perform(get("/tags?page=1&count=5"))
@@ -114,14 +83,12 @@ public class TagControllerTest extends BaseTest {
assertNotNull(articlesJSON.getJSONObject(Result));
// 判断pageInfo是否包装完全
JSONObject resultJson = JSONObject.fromObject(articlesJSON.getJSONObject(Result));
- PageInfo pageInfo = (PageInfo) JSONObject.toBean(resultJson, PageInfo.class);
- assertNotEquals(0, pageInfo.getTotal());
- assertNotEquals(0, pageInfo.getStartRow());
- assertNotEquals(0, pageInfo.getEndRow());
- assertEquals(1, pageInfo.getPageNum());
- assertEquals(5, pageInfo.getPageSize());
+ PageData pageData = (PageData) JSONObject.toBean(resultJson, PageData.class);
+ assertNotEquals(0, pageData.getTotal());
+ assertEquals(1, pageData.getPageNum());
+ assertEquals(5, pageData.getPageSize());
// 内容完整
- for (Object tag : pageInfo.getList()) {
+ for (Object tag : pageData.getList()) {
TagModel t = (TagModel) JSONObject.toBean(JSONObject.fromObject(tag), TagModel.class);
assertNotNull(t.getId());
assertNotNull(t.getName());
diff --git a/src/test/java/cn/celess/blog/controller/UserControllerTest.java b/src/test/java/cn/celess/blog/controller/UserControllerTest.java
index c4eb7f2..1691c3a 100644
--- a/src/test/java/cn/celess/blog/controller/UserControllerTest.java
+++ b/src/test/java/cn/celess/blog/controller/UserControllerTest.java
@@ -2,12 +2,12 @@ package cn.celess.blog.controller;
import cn.celess.blog.BaseTest;
import cn.celess.blog.entity.User;
+import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.model.UserModel;
import cn.celess.blog.entity.request.LoginReq;
import cn.celess.blog.entity.request.UserReq;
import cn.celess.blog.mapper.UserMapper;
import cn.celess.blog.util.MD5Util;
-import com.github.pagehelper.PageInfo;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.junit.Test;
@@ -50,8 +50,7 @@ public class UserControllerTest extends BaseTest {
@Test
public void registration() {
- // 自行手动测试!
- // TODO :
+ // ignore
}
@Test
@@ -136,7 +135,8 @@ public class UserControllerTest extends BaseTest {
String s = UUID.randomUUID().toString();
String email = s.substring(s.length() - 4) + "@celess.cn";
String pwd = MD5Util.getMD5("123456789");
- int i1 = userMapper.addUser(email, pwd);
+ User user = new User(email, pwd);
+ int i1 = userMapper.addUser(user);
if (i1 == 0) {
continue;
}
@@ -177,7 +177,8 @@ public class UserControllerTest extends BaseTest {
public void updateInfoByAdmin() throws Exception {
UserReq userReq = new UserReq();
String email = UUID.randomUUID().toString().substring(0, 4) + "@celess.cn";
- userMapper.addUser(email, MD5Util.getMD5("123456789"));
+ User user = new User(email, MD5Util.getMD5("123456789"));
+ userMapper.addUser(user);
User userByDb = userMapper.findByEmail(email);
userReq.setId(userByDb.getId());
userReq.setPwd(UUID.randomUUID().toString().replaceAll("-", "").substring(0, 10));
@@ -194,12 +195,12 @@ public class UserControllerTest extends BaseTest {
.andDo(result -> {
JSONObject object = JSONObject.fromObject(result.getResponse().getContentAsString());
assertEquals(SUCCESS.getCode(), object.getInt(Code));
- UserModel user = (UserModel) JSONObject.toBean(object.getJSONObject(Result), UserModel.class);
- assertEquals(userReq.getId(), user.getId());
- assertEquals(userReq.getRole(), user.getRole());
- assertEquals(userReq.getEmail(), user.getEmail());
- assertEquals(userReq.getDesc(), user.getDesc());
- assertEquals(userReq.getDisplayName(), user.getDisplayName());
+ UserModel userModel = (UserModel) JSONObject.toBean(object.getJSONObject(Result), UserModel.class);
+ assertEquals(userReq.getId(), userModel.getId());
+ assertEquals(userReq.getRole(), userModel.getRole());
+ assertEquals(userReq.getEmail(), userModel.getEmail());
+ assertEquals(userReq.getDesc(), userModel.getDesc());
+ assertEquals(userReq.getDisplayName(), userModel.getDisplayName());
});
}
@@ -217,14 +218,12 @@ public class UserControllerTest extends BaseTest {
assertNotNull(object.getJSONObject(Result));
// 判断pageInfo是否包装完全
JSONObject resultJson = JSONObject.fromObject(object.getJSONObject(Result));
- PageInfo pageInfo = (PageInfo) JSONObject.toBean(resultJson, PageInfo.class);
- assertNotEquals(0, pageInfo.getTotal());
- assertNotEquals(0, pageInfo.getStartRow());
- assertNotEquals(0, pageInfo.getEndRow());
- assertEquals(1, pageInfo.getPageNum());
- assertEquals(10, pageInfo.getPageSize());
+ PageData pageData = (PageData) JSONObject.toBean(resultJson, PageData.class);
+ assertNotEquals(0, pageData.getTotal());
+ assertEquals(1, pageData.getPageNum());
+ assertEquals(10, pageData.getPageSize());
// 内容完整
- for (Object user : pageInfo.getList()) {
+ for (Object user : pageData.getList()) {
UserModel u = (UserModel) JSONObject.toBean(JSONObject.fromObject(user), UserModel.class);
assertNotNull(u.getId());
assertNotNull(u.getEmail());
@@ -254,7 +253,7 @@ public class UserControllerTest extends BaseTest {
@Test
public void setPwd() throws Exception {
String email = UUID.randomUUID().toString().substring(0, 4) + "@celess.cn";
- assertEquals(1, userMapper.addUser(email, MD5Util.getMD5("1234567890")));
+ assertEquals(1, userMapper.addUser(new User(email, MD5Util.getMD5("1234567890"))));
LoginReq req = new LoginReq();
req.setEmail(email);
req.setPassword("1234567890");
diff --git a/src/test/java/cn/celess/blog/controller/VisitorControllerTest.java b/src/test/java/cn/celess/blog/controller/VisitorControllerTest.java
index fa13818..c65d27d 100644
--- a/src/test/java/cn/celess/blog/controller/VisitorControllerTest.java
+++ b/src/test/java/cn/celess/blog/controller/VisitorControllerTest.java
@@ -1,6 +1,7 @@
package cn.celess.blog.controller;
import cn.celess.blog.BaseTest;
+import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.model.VisitorModel;
import com.github.pagehelper.PageInfo;
import net.sf.json.JSONObject;
@@ -31,13 +32,11 @@ public class VisitorControllerTest extends BaseTest {
JSONObject object = JSONObject.fromObject(result.getResponse().getContentAsString());
assertEquals(SUCCESS.getCode(), object.getInt(Code));
JSONObject resultJson = JSONObject.fromObject(object.getJSONObject(Result));
- PageInfo pageInfo = (PageInfo) JSONObject.toBean(resultJson, PageInfo.class);
- assertNotEquals(0, pageInfo.getTotal());
- assertNotEquals(0, pageInfo.getStartRow());
- assertNotEquals(0, pageInfo.getEndRow());
- assertEquals(1, pageInfo.getPageNum());
- assertEquals(10, pageInfo.getPageSize());
- for (Object ver : pageInfo.getList()) {
+ PageData pageData = (PageData) JSONObject.toBean(resultJson, PageData.class);
+ assertNotEquals(0, pageData.getTotal());
+ assertEquals(1, pageData.getPageNum());
+ assertEquals(10, pageData.getPageSize());
+ for (Object ver : pageData.getList()) {
VisitorModel v = (VisitorModel) JSONObject.toBean(JSONObject.fromObject(ver), VisitorModel.class);
assertNotEquals(0, v.getId());
assertNotNull(v.getDate());
diff --git a/src/test/java/cn/celess/blog/controller/WebUpdateInfoControllerTest.java b/src/test/java/cn/celess/blog/controller/WebUpdateInfoControllerTest.java
index 2b7b09c..3bf2e18 100644
--- a/src/test/java/cn/celess/blog/controller/WebUpdateInfoControllerTest.java
+++ b/src/test/java/cn/celess/blog/controller/WebUpdateInfoControllerTest.java
@@ -2,9 +2,9 @@ package cn.celess.blog.controller;
import cn.celess.blog.BaseTest;
import cn.celess.blog.entity.WebUpdate;
+import cn.celess.blog.entity.model.PageData;
import cn.celess.blog.entity.model.WebUpdateModel;
import cn.celess.blog.mapper.WebUpdateInfoMapper;
-import com.github.pagehelper.PageInfo;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.junit.Test;
@@ -104,17 +104,15 @@ public class WebUpdateInfoControllerTest extends BaseTest {
JSONObject object = JSONObject.fromObject(result.getResponse().getContentAsString());
assertEquals(SUCCESS.getCode(), object.getInt(Code));
assertNotNull(object.getJSONObject(Result));
- PageInfo pageInfo = (PageInfo) JSONObject.toBean(object.getJSONObject(Result), PageInfo.class);
- assertNotEquals(0, pageInfo.getEndRow());
- assertNotEquals(0, pageInfo.getStartRow());
- assertEquals(1, pageInfo.getPageNum());
- assertEquals(10, pageInfo.getPageSize());
- pageInfo.getList().forEach(o -> {
+ PageData pageData = (PageData) JSONObject.toBean(object.getJSONObject(Result), PageData.class);
+ assertEquals(1, pageData.getPageNum());
+ assertEquals(10, pageData.getPageSize());
+ for (Object o : pageData.getList()) {
WebUpdateModel model = (WebUpdateModel) JSONObject.toBean(JSONObject.fromObject(o), WebUpdateModel.class);
assertNotEquals(0, model.getId());
assertNotNull(model.getTime());
assertNotNull(model.getInfo());
- });
+ }
});
}
diff --git a/src/test/java/cn/celess/blog/mapper/ArticleMapperTest.java b/src/test/java/cn/celess/blog/mapper/ArticleMapperTest.java
new file mode 100644
index 0000000..163eba4
--- /dev/null
+++ b/src/test/java/cn/celess/blog/mapper/ArticleMapperTest.java
@@ -0,0 +1,224 @@
+package cn.celess.blog.mapper;
+
+import cn.celess.blog.BaseTest;
+import cn.celess.blog.entity.*;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+import java.util.UUID;
+
+import static org.junit.Assert.*;
+
+public class ArticleMapperTest extends BaseTest {
+ @Autowired
+ ArticleMapper articleMapper;
+ @Autowired
+ TagMapper tagMapper;
+ @Autowired
+ ArticleTagMapper articleTagMapper;
+
+ @Test
+ public void insert() {
+ Article article = generateArticle().getArticle();
+ assertNotNull(article.getId());
+ }
+
+
+ @Test
+ public void delete() {
+ Article article = generateArticle().getArticle();
+
+ assertFalse(articleMapper.isDeletedById(article.getId()));
+ assertEquals(1, articleMapper.delete(article.getId()));
+ assertTrue(articleMapper.isDeletedById(article.getId()));
+ }
+
+ @Test
+ public void update() {
+ Article article = generateArticle().getArticle();
+ String randomText = UUID.randomUUID().toString();
+
+ // 此字段不会通过insert被写入数据库而是使用插入数据的默认值 数据库中该字段默认为true
+ article.setOpen(true);
+
+ article.setTitle("test update " + randomText);
+ article.setMdContent("test update ");
+ article.setSummary("test update ");
+ article.setType(false);
+ article.setUrl("https://www.celess.cn");
+ article.getCategory().setId(2L);
+ article.setOpen(!article.getOpen());
+ articleMapper.update(article);
+
+ Article articleById = articleMapper.findArticleById(article.getId());
+ assertEquals(article.getTitle(), articleById.getTitle());
+ assertEquals(article.getMdContent(), articleById.getMdContent());
+ assertEquals(article.getSummary(), articleById.getSummary());
+ assertEquals(article.getType(), articleById.getType());
+ assertEquals(article.getCategory().getId(), articleById.getCategory().getId());
+ assertEquals(article.getOpen(), articleById.getOpen());
+ assertNotNull(articleById.getUpdateDate());
+ }
+
+ @Test
+ public void selectAll() {
+ List list = articleMapper.findAll();
+ assertNotEquals(0, list.size());
+ list.forEach(article -> {
+ assertNotEquals(0, article.getTags().size());
+ assertNotNull(article.getId());
+ assertNotNull(article.getTitle());
+ assertNotNull(article.getSummary());
+ assertNotNull(article.getMdContent());
+ assertNotNull(article.getType());
+ if (!article.getType()) {
+ assertNotNull(article.getUrl());
+ }
+ assertNotNull(article.getReadingNumber());
+ assertNotNull(article.getLikeCount());
+ assertNotNull(article.getDislikeCount());
+ assertNotNull(article.getPublishDate());
+ assertNotNull(article.getOpen());
+ assertNotNull(article.getCategory());
+ assertNotNull(article.getUser());
+ });
+ }
+
+ @Test
+ public void updateReadCount() {
+ Article article = generateArticle().getArticle();
+ Article articleById = articleMapper.findArticleById(article.getId());
+ assertEquals(Long.valueOf(0), articleById.getReadingNumber());
+ articleMapper.updateReadingNumber(articleById.getId());
+ articleById = articleMapper.findArticleById(article.getId());
+ assertEquals(Long.valueOf(1), articleById.getReadingNumber());
+ }
+
+ @Test
+ public void getLastestArticle() {
+ Article article = generateArticle().getArticle();
+ Article lastestArticle = articleMapper.getLastestArticle();
+ assertNotNull(lastestArticle);
+ assertEquals(article.getId(), lastestArticle.getId());
+ assertNotNull(lastestArticle.getCategory());
+ assertNotEquals(0, lastestArticle.getTags().size());
+ }
+
+ @Test
+ public void findArticleById() {
+ Article article = generateArticle().getArticle();
+ Article articleById = articleMapper.findArticleById(article.getId());
+ assertNotNull(articleById);
+ assertEquals(article.getId(), articleById.getId());
+ }
+
+ @Test
+ public void existsByTitle() {
+ Article article = generateArticle().getArticle();
+ assertTrue(articleMapper.existsByTitle(article.getTitle()));
+ assertFalse(articleMapper.existsByTitle(UUID.randomUUID().toString()));
+ }
+
+ @Test
+ public void isDeletedById() {
+ Article article = generateArticle().getArticle();
+ assertFalse(articleMapper.isDeletedById(article.getId()));
+ articleMapper.delete(article.getId());
+ assertTrue(articleMapper.isDeletedById(article.getId()));
+
+ }
+
+ @Test
+ public void findAllByAuthorId() {
+ List allByAuthorId = articleMapper.findAllByAuthorId(1);
+ assertNotEquals(0, allByAuthorId.size());
+ }
+
+ @Test
+ public void findAllByOpen() {
+ List allByOpen = articleMapper.findAllByOpen(true);
+ assertNotEquals(0, allByOpen);
+
+ Article article = generateArticle().getArticle();
+ article.setOpen(false);
+
+ articleMapper.update(article);
+
+ List privateArticles = articleMapper.findAllByOpen(false);
+ assertTrue(privateArticles.size() > 0);
+ }
+
+ @Test
+ public void getTitleById() {
+ Article article = generateArticle().getArticle();
+
+ assertEquals(article.getTitle(), articleMapper.getTitleById(article.getId()));
+ }
+
+ @Test
+ public void findAllByCategoryId() {
+ List allByCategoryId = articleMapper.findAllByCategoryId(1);
+ assertNotEquals(0, allByCategoryId.size());
+ }
+
+ @Test
+ public void findAllByCategoryIdAndOpen() {
+ List allByCategoryId = articleMapper.findAllByCategoryIdAndOpen(1);
+ assertNotEquals(0, allByCategoryId.size());
+ allByCategoryId.forEach(article -> assertTrue(article.getOpen()));
+ }
+
+ @Test
+ public void findAll() {
+ List allByCategoryId = articleMapper.findAll();
+ assertNotEquals(0, allByCategoryId.size());
+ }
+
+ @Test
+ public void count() {
+ assertNotEquals(0, articleMapper.count());
+ }
+
+ @Test
+ public void getPreArticle() {
+ ArticleTag articleTag = generateArticle();
+ Article preArticle = articleMapper.getPreArticle(articleTag.getArticle().getId());
+ assertNotNull(preArticle);
+ assertTrue(preArticle.getId() < articleTag.getArticle().getId());
+ }
+
+ @Test
+ public void getNextArticle() {
+ Article getNextArticle = articleMapper.getNextArticle(3L);
+ assertNotNull(getNextArticle);
+ assertTrue(getNextArticle.getId() > 3L);
+ }
+
+ private ArticleTag generateArticle() {
+ String randomText = UUID.randomUUID().toString();
+
+ Article article = new Article();
+ Category category = new Category();
+ category.setId(1L);
+ article.setCategory(category);
+ article.setTitle(" unity test for article " + randomText);
+ article.setMdContent("# unity test for article");
+ article.setSummary("unity test for article");
+
+ Tag tag = tagMapper.findTagByName("随笔");
+ User user = new User();
+ user.setId(1L);
+ article.setUser(user);
+ article.setType(true);
+
+ articleMapper.insert(article);
+
+ ArticleTag articleTag = new ArticleTag();
+ articleTag.setArticle(article);
+ articleTag.setTag(tag);
+ articleTagMapper.insert(articleTag);
+
+ return articleTag;
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/cn/celess/blog/mapper/ArticleTagMapperTest.java b/src/test/java/cn/celess/blog/mapper/ArticleTagMapperTest.java
new file mode 100644
index 0000000..0f2763a
--- /dev/null
+++ b/src/test/java/cn/celess/blog/mapper/ArticleTagMapperTest.java
@@ -0,0 +1,141 @@
+package cn.celess.blog.mapper;
+
+import cn.celess.blog.BaseTest;
+import cn.celess.blog.entity.*;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.UUID;
+
+import static org.junit.Assert.*;
+
+public class ArticleTagMapperTest extends BaseTest {
+
+ @Autowired
+ ArticleMapper articleMapper;
+ @Autowired
+ ArticleTagMapper articleTagMapper;
+ @Autowired
+ TagMapper tagMapper;
+
+
+ @Test
+ public void insert() {
+ ArticleTag articleTag = generateArticle();
+ assertNotNull(articleTag);
+ assertNotNull(articleTag.getArticle());
+ assertNotNull(articleTag.getTag());
+ }
+
+ @Test
+ public void update() {
+ Tag tag = tagMapper.findTagByName("电影");
+ ArticleTag articleTag = generateArticle();
+ articleTag.setTag(tag);
+
+ articleTagMapper.update(articleTag);
+
+ ArticleTag oneById = articleTagMapper.findOneById(articleTag.getId());
+ assertEquals(articleTag.getArticle().getId(), oneById.getArticle().getId());
+ assertEquals(articleTag.getArticle().getTitle(), oneById.getArticle().getTitle());
+ assertEquals(articleTag.getTag().getName(), oneById.getTag().getName());
+ }
+
+ @Test
+ public void deleteById() {
+ ArticleTag articleTag = generateArticle();
+
+ articleTagMapper.deleteById(articleTag.getId());
+
+ ArticleTag oneById = articleTagMapper.findOneById(articleTag.getId());
+ assertNull(oneById);
+
+ articleTagMapper.insert(articleTag);
+ }
+
+ @Test
+ public void deleteByArticleId() {
+ ArticleTag articleTag = generateArticle();
+ int i = articleTagMapper.deleteByArticleId(articleTag.getArticle().getId());
+ assertNotEquals(0, i);
+ }
+
+ @Test
+ public void findAllByArticleId() {
+ ArticleTag articleTag = generateArticle();
+ List allByArticleId = articleTagMapper.findAllByArticleId(articleTag.getArticle().getId());
+ assertEquals(1, allByArticleId.size());
+
+ List list = articleTagMapper.findAllByArticleId(5L);
+ assertEquals(2, list.size());
+ }
+
+ @Test
+ public void deleteMultiById() {
+ ArticleTag articleTag = new ArticleTag();
+ Article article = new Article();
+ article.setId(-1L);
+ Tag tag = new Tag();
+ tag.setId(1L);
+ articleTag.setArticle(article);
+ articleTag.setTag(tag);
+
+ articleTagMapper.insert(articleTag);
+ articleTagMapper.insert(articleTag);
+ articleTagMapper.insert(articleTag);
+ articleTagMapper.insert(articleTag);
+ articleTagMapper.insert(articleTag);
+ articleTagMapper.insert(articleTag);
+
+ List allByArticleId = articleTagMapper.findAllByArticleId(-1L);
+ assertTrue(allByArticleId.size() >= 6);
+ int lines = articleTagMapper.deleteMultiById(allByArticleId);
+ assertTrue(lines >= 6);
+ }
+
+ @Test
+ public void findArticleByTag() {
+ ArticleTag articleTag = generateArticle();
+ List articleByTag = articleTagMapper.findArticleByTag(21L);
+ assertNotEquals(0, articleByTag.size());
+ articleByTag.forEach(articleTag1 -> assertEquals(articleTag.getTag().getName(), articleTag1.getTag().getName()));
+ }
+
+ @Test
+ public void findArticleByTagAndOpen() {
+ ArticleTag articleTag = generateArticle();
+ List articleByTag = articleTagMapper.findArticleByTagAndOpen(21L);
+ assertNotEquals(0, articleByTag.size());
+ articleByTag.forEach(articleTag1 -> assertEquals(articleTag.getTag().getName(), articleTag1.getTag().getName()));
+ articleByTag.forEach(articleTag1 -> assertTrue(articleTag1.getArticle().getOpen()));
+ }
+
+ private ArticleTag generateArticle() {
+ String randomText = UUID.randomUUID().toString();
+
+ Article article = new Article();
+ Category category = new Category();
+ category.setId(1L);
+ article.setCategory(category);
+ article.setTitle(" unity test for article " + randomText);
+ article.setMdContent("# unity test for article");
+ article.setSummary("unity test for article");
+
+ User user = new User();
+ user.setId(1L);
+ article.setUser(user);
+ article.setType(true);
+
+ articleMapper.insert(article);
+
+ ArticleTag articleTag = new ArticleTag();
+ Tag tag = tagMapper.findTagByName("随笔");
+ articleTag.setArticle(article);
+ articleTag.setTag(tag);
+ articleTagMapper.insert(articleTag);
+
+ return articleTag;
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/cn/celess/blog/mapper/CategoryMapperTest.java b/src/test/java/cn/celess/blog/mapper/CategoryMapperTest.java
new file mode 100644
index 0000000..3cdd172
--- /dev/null
+++ b/src/test/java/cn/celess/blog/mapper/CategoryMapperTest.java
@@ -0,0 +1,121 @@
+package cn.celess.blog.mapper;
+
+import cn.celess.blog.BaseTest;
+import cn.celess.blog.entity.Category;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.Comparator;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import static org.junit.Assert.*;
+
+public class CategoryMapperTest extends BaseTest {
+
+ @Autowired
+ CategoryMapper categoryMapper;
+
+ @Test
+ public void insert() {
+ Category category = generateCategory();
+ assertNotNull(category.getId());
+ }
+
+ @Test
+ public void delete() {
+ Category category = generateCategory();
+ assertFalse(category.getDeleted());
+ int lines = categoryMapper.delete(category.getId());
+ assertNotEquals(0, lines);
+ Category categoryById = categoryMapper.findCategoryById(category.getId());
+ assertTrue(categoryById.getDeleted());
+ }
+
+ @Test
+ public void update() {
+ Category category = generateCategory();
+ category.setName(randomStr(4));
+ int update = categoryMapper.update(category);
+ assertEquals(1, update);
+ }
+
+ @Test
+ public void existsByName() {
+ Category category = generateCategory();
+ assertTrue(categoryMapper.existsByName(category.getName()));
+ assertFalse(categoryMapper.existsByName(randomStr(8)));
+ }
+
+ @Test
+ public void existsById() {
+ Category category = generateCategory();
+ assertTrue(categoryMapper.existsById(category.getId()));
+ }
+
+ @Test
+ public void findCategoryByName() {
+ Category suibi = categoryMapper.findCategoryByName("随笔");
+ assertNotNull(suibi);
+
+ // tag 数据
+ Category shiro = categoryMapper.findCategoryByName("shiro");
+ assertNull(shiro);
+ }
+
+ @Test
+ public void findCategoryById() {
+ Category suibi = categoryMapper.findCategoryByName("随笔");
+
+ Category categoryById = categoryMapper.findCategoryById(suibi.getId());
+
+ assertEquals(suibi.getName(), categoryById.getName());
+ }
+
+ @Test
+ public void findAll() {
+ List all = categoryMapper.findAll();
+ assertNotEquals(0, all);
+ all.forEach(category -> assertTrue(category.getCategory()));
+ }
+
+ @Test
+ public void getAllName() {
+ List allName = categoryMapper.getAllName();
+ assertNotEquals(0, allName.size());
+ }
+
+ @Test
+ public void getNameById() {
+ Category category = generateCategory();
+ assertEquals(category.getName(), categoryMapper.getNameById(category.getId()));
+ }
+
+ @Test
+ public void getIdByName() {
+ Category category = generateCategory();
+ assertEquals(category.getId(), categoryMapper.getIdByName(category.getName()));
+ }
+
+ @Test
+ public void getLastestCategory() {
+ List all = categoryMapper.findAll();
+ all.sort((o1, o2) -> (int) (o2.getId() - o1.getId()));
+ assertEquals(all.get(0).getId(), categoryMapper.getLastestCategory().getId());
+ }
+
+ @Test
+ public void count() {
+ List all = categoryMapper.findAll();
+ List collect = all.stream().filter(category -> !category.getDeleted()).collect(Collectors.toList());
+ assertEquals(collect.size(), categoryMapper.count());
+ }
+
+ private Category generateCategory() {
+ Category category = new Category(randomStr(4));
+
+ categoryMapper.insert(category);
+ category.setDeleted(false);
+ return category;
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/cn/celess/blog/mapper/CommentMapperTest.java b/src/test/java/cn/celess/blog/mapper/CommentMapperTest.java
new file mode 100644
index 0000000..d411dfa
--- /dev/null
+++ b/src/test/java/cn/celess/blog/mapper/CommentMapperTest.java
@@ -0,0 +1,133 @@
+package cn.celess.blog.mapper;
+
+import cn.celess.blog.BaseTest;
+import cn.celess.blog.enmu.CommentStatusEnum;
+import cn.celess.blog.entity.Comment;
+import cn.celess.blog.entity.User;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+
+import static org.junit.Assert.*;
+
+public class CommentMapperTest extends BaseTest {
+
+ @Autowired
+ UserMapper userMapper;
+ @Autowired
+ CommentMapper commentMapper;
+
+ @Test
+ public void insert() {
+ Comment comment = generateComment();
+ assertNotNull(comment.getId());
+ }
+
+ @Test
+ public void updateContent() {
+ Comment comment = generateComment();
+ comment.setContent(randomStr(10));
+ assertEquals(1, commentMapper.updateContent(comment.getContent(), comment.getId()));
+ }
+
+ @Test
+ public void delete() {
+ Comment comment = generateComment();
+ assertEquals(1, commentMapper.delete(comment.getId()));
+ Comment commentById = commentMapper.findCommentById(comment.getId());
+ assertEquals(commentById.getStatus(), CommentStatusEnum.DELETED.getCode());
+ }
+
+ @Test
+ public void deleteByPagePath() {
+ Comment comment = generateComment();
+ assertTrue(commentMapper.deleteByPagePath(comment.getPagePath()) >= 1);
+ Comment commentById = commentMapper.findCommentById(comment.getId());
+ assertEquals(commentById.getStatus(), CommentStatusEnum.DELETED.getCode());
+ }
+
+ @Test
+ public void existsById() {
+ Comment comment = generateComment();
+ assertTrue(commentMapper.existsById(comment.getId()));
+ }
+
+ @Test
+ public void findCommentById() {
+ Comment comment = generateComment();
+ assertNotNull(commentMapper.findCommentById(comment.getId()));
+ }
+
+ @Test
+ public void getLastestComment() {
+ Comment comment = generateComment();
+ Comment lastestComment = commentMapper.getLastestComment();
+ assertEquals(comment.getId(), lastestComment.getId());
+ }
+
+ @Test
+ public void findAllByFromUser() {
+ Comment comment = generateComment();
+ List allByFromUser = commentMapper.findAllByFromUser(comment.getFromUser().getId());
+ assertNotEquals(0, allByFromUser);
+ allByFromUser.forEach(comment1 -> assertEquals(comment.getFromUser().getId(), comment1.getFromUser().getId()));
+ }
+
+ @Test
+ public void findAllByPid() {
+ Comment comment = generateComment();
+ List allByPid = commentMapper.findAllByPid(comment.getPid());
+ assertTrue(allByPid.size() >= 1);
+ }
+
+ @Test
+ public void findAllByPagePath() {
+ Comment comment = generateComment();
+ List allByPagePath = commentMapper.findAllByPagePath(comment.getPagePath());
+ assertTrue(allByPagePath.size() >= 1);
+ allByPagePath.forEach(comment1 -> assertEquals(comment.getPagePath(), comment1.getPagePath()));
+ }
+
+ @Test
+ public void findAllByPagePathAndPid() {
+ Comment comment = generateComment();
+ List allByPagePathAndPid = commentMapper.findAllByPagePathAndPidAndNormal(comment.getPagePath(), comment.getPid());
+ assertTrue(allByPagePathAndPid.size() >= 1);
+ allByPagePathAndPid.forEach(comment1 -> {
+ assertEquals(comment.getPagePath(), comment1.getPagePath());
+ assertEquals(comment.getPid(), comment1.getPid());
+ });
+ }
+
+ @Test
+ public void testFindAllByPid() {
+ Comment comment = generateComment();
+ List findAllByPid = commentMapper.findAllByPid(comment.getPid());
+ assertTrue(findAllByPid.size() >= 1);
+ findAllByPid.forEach(comment1 -> assertEquals(comment.getPid(), comment1.getPid()));
+ }
+
+ @Test
+ public void countByType() {
+ Comment comment = generateComment();
+ long l = commentMapper.countByPagePath(comment.getPagePath());
+ assertTrue(l >= 1);
+ }
+
+ private Comment generateComment() {
+ User from = userMapper.findById(1);
+ assertNotNull(from);
+ User to = userMapper.findById(2);
+ assertNotNull(to);
+
+ Comment comment = new Comment();
+ comment.setContent(randomStr(8));
+ comment.setFromUser(from);
+ comment.setToUser(to);
+ comment.setPagePath("/tags");
+ comment.setPid(-1L);
+ commentMapper.insert(comment);
+ return comment;
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/cn/celess/blog/mapper/PartnerMapperTest.java b/src/test/java/cn/celess/blog/mapper/PartnerMapperTest.java
new file mode 100644
index 0000000..478cd22
--- /dev/null
+++ b/src/test/java/cn/celess/blog/mapper/PartnerMapperTest.java
@@ -0,0 +1,103 @@
+package cn.celess.blog.mapper;
+
+import cn.celess.blog.BaseTest;
+import cn.celess.blog.entity.PartnerSite;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+
+import static org.junit.Assert.*;
+
+public class PartnerMapperTest extends BaseTest {
+
+ @Autowired
+ PartnerMapper partnerMapper;
+
+ @Test
+ public void insert() {
+ PartnerSite partnerSite = generatePartnerSite();
+ assertNotNull(partnerSite.getId());
+ }
+
+ @Test
+ public void delete() {
+ PartnerSite partnerSite = generatePartnerSite();
+ assertEquals(1, partnerMapper.delete(partnerSite.getId()));
+ partnerSite = partnerMapper.findById(partnerSite.getId());
+ assertTrue(partnerSite.getDelete());
+ }
+
+ @Test
+ public void update() {
+ PartnerSite partnerSite = generatePartnerSite();
+ partnerSite.setName(randomStr(5));
+ partnerSite.setIconPath(randomStr(5));
+ partnerSite.setDesc(randomStr(5));
+ partnerSite.setOpen(false);
+ partnerSite.setUrl("www.celess.cn?random=" + randomStr(4));
+ assertEquals(1, partnerMapper.update(partnerSite));
+ }
+
+ @Test
+ public void existsById() {
+ PartnerSite partnerSite = generatePartnerSite();
+ assertTrue(partnerMapper.existsById(partnerSite.getId()));
+ }
+
+ @Test
+ public void existsByName() {
+ PartnerSite partnerSite = generatePartnerSite();
+ assertTrue(partnerMapper.existsByName(partnerSite.getName()));
+ }
+
+ @Test
+ public void existsByUrl() {
+ PartnerSite partnerSite = generatePartnerSite();
+ assertTrue(partnerMapper.existsByUrl(partnerSite.getUrl()));
+ }
+
+ @Test
+ public void findById() {
+ PartnerSite partnerSite = generatePartnerSite();
+ assertNotNull(partnerMapper.findById(partnerSite.getId()));
+ }
+
+ @Test
+ public void findByName() {
+ PartnerSite partnerSite = generatePartnerSite();
+ assertNotNull(partnerMapper.findByName(partnerSite.getName()));
+ }
+
+ @Test
+ public void findByUrl() {
+ PartnerSite partnerSite = generatePartnerSite();
+ assertNotNull(partnerMapper.findByUrl(partnerSite.getUrl()));
+ }
+
+ @Test
+ public void getLastest() {
+ PartnerSite partnerSite = generatePartnerSite();
+ List all = partnerMapper.findAll();
+ all.sort(((o1, o2) -> (int) (o2.getId() - o1.getId())));
+ assertEquals(partnerSite.getId(), all.get(0).getId());
+ assertEquals(partnerSite.getId(), partnerMapper.getLastest().getId());
+ }
+
+ @Test
+ public void findAll() {
+ List all = partnerMapper.findAll();
+ assertNotEquals(0, all.size());
+ }
+
+ private PartnerSite generatePartnerSite() {
+ PartnerSite ps = new PartnerSite();
+ ps.setName(randomStr(4));
+ ps.setUrl("https://www.celess.cn?random=" + randomStr(4));
+ ps.setOpen(true);
+ ps.setDesc("小海的博客呀!");
+ ps.setIconPath("https://www.celess.cn/icon_path.example");
+ partnerMapper.insert(ps);
+ return ps;
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/cn/celess/blog/mapper/TagMapperTest.java b/src/test/java/cn/celess/blog/mapper/TagMapperTest.java
new file mode 100644
index 0000000..58ddff3
--- /dev/null
+++ b/src/test/java/cn/celess/blog/mapper/TagMapperTest.java
@@ -0,0 +1,93 @@
+package cn.celess.blog.mapper;
+
+import cn.celess.blog.BaseTest;
+import cn.celess.blog.entity.Tag;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+import static org.junit.Assert.*;
+
+public class TagMapperTest extends BaseTest {
+
+ @Autowired
+ TagMapper tagMapper;
+
+ @Test
+ public void insert() {
+ Tag tag = generateTag();
+ assertNotNull(tag.getId());
+ }
+
+ @Test
+ public void update() {
+ Tag tag = generateTag();
+ tag.setName(randomStr(4));
+ int update = tagMapper.update(tag);
+ assertEquals(1, update);
+ }
+
+ @Test
+ public void delete() {
+ Tag tag = generateTag();
+ assertFalse(tag.getDeleted());
+ assertEquals(1, tagMapper.delete(tag.getId()));
+ Tag tagById = tagMapper.findTagById(tag.getId());
+ assertTrue(tagById.getDeleted());
+ }
+
+ @Test
+ public void findTagById() {
+ Tag tag = generateTag();
+ Tag tagById = tagMapper.findTagById(tag.getId());
+ assertEquals(tag.getName(), tagById.getName());
+ assertEquals(tag.getId(), tagById.getId());
+ }
+
+ @Test
+ public void findTagByName() {
+ Tag tag = generateTag();
+ Tag tagById = tagMapper.findTagByName(tag.getName());
+ assertEquals(tag.getName(), tagById.getName());
+ assertEquals(tag.getId(), tagById.getId());
+ }
+
+ @Test
+ public void existsByName() {
+ String s = randomStr(4);
+ assertFalse(tagMapper.existsByName(s));
+ Tag tag = new Tag(s);
+ tagMapper.insert(tag);
+ assertTrue(tagMapper.existsByName(s));
+ }
+
+ @Test
+ public void getLastestTag() {
+ List all = tagMapper.findAll();
+ all.sort(((o1, o2) -> (int) (o2.getId() - o1.getId())));
+ assertEquals(all.get(0).getId(), tagMapper.getLastestTag().getId());
+ }
+
+ @Test
+ public void findAll() {
+ List all = tagMapper.findAll();
+ assertNotEquals(0, all.size());
+ }
+
+ @Test
+ public void count() {
+ assertNotEquals(0, tagMapper.count());
+ List all = tagMapper.findAll();
+ List collect = all.stream().filter(tag -> !tag.getDeleted()).collect(Collectors.toList());
+ assertEquals(collect.size(), tagMapper.count());
+ }
+
+ private Tag generateTag() {
+ Tag tag = new Tag(randomStr(4));
+ tagMapper.insert(tag);
+ tag.setDeleted(false);
+ return tag;
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/cn/celess/blog/mapper/UserMapperTest.java b/src/test/java/cn/celess/blog/mapper/UserMapperTest.java
new file mode 100644
index 0000000..0b6e6a3
--- /dev/null
+++ b/src/test/java/cn/celess/blog/mapper/UserMapperTest.java
@@ -0,0 +1,185 @@
+package cn.celess.blog.mapper;
+
+import cn.celess.blog.BaseTest;
+import cn.celess.blog.enmu.RoleEnum;
+import cn.celess.blog.enmu.UserAccountStatusEnum;
+import cn.celess.blog.entity.User;
+import cn.celess.blog.util.MD5Util;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+
+import static org.junit.Assert.*;
+
+public class UserMapperTest extends BaseTest {
+
+ @Autowired
+ UserMapper userMapper;
+
+
+ @Test
+ public void addUser() {
+ User user = generateUser();
+ assertNotNull(user.getId());
+ }
+
+ @Test
+ public void updateInfo() {
+ User user = generateUser();
+ assertEquals(1, userMapper.updateInfo("ttt", "ttt", user.getId()));
+ }
+
+ @Test
+ public void updateAvatarImgUrl() {
+ User user = generateUser();
+ assertEquals(1, userMapper.updateAvatarImgUrl("https://www.celess.cn/example.jpg", user.getId()));
+ }
+
+ @Test
+ public void updateLoginTime() {
+ User user = generateUser();
+ assertEquals(1, userMapper.updateLoginTime(user.getEmail()));
+ }
+
+ @Test
+ public void updateEmailStatus() {
+ User user = generateUser();
+ assertEquals(1, userMapper.updateEmailStatus(user.getEmail(), true));
+ }
+
+ @Test
+ public void updatePwd() {
+ User user = generateUser();
+ assertEquals(1, userMapper.updatePwd(user.getEmail(), MD5Util.getMD5("12345687654")));
+ }
+
+ @Test
+ public void getPwd() {
+ User user = generateUser();
+ assertEquals(user.getPwd(), userMapper.getPwd(user.getEmail()));
+ }
+
+ @Test
+ public void existsByEmail() {
+ User user = generateUser();
+ assertTrue(userMapper.existsByEmail(user.getEmail()));
+ }
+
+ @Test
+ public void findByEmail() {
+ User user = generateUser();
+ User byEmail = userMapper.findByEmail(user.getEmail());
+ assertNotNull(byEmail);
+ assertEquals(user.getId(), byEmail.getId());
+ }
+
+ @Test
+ public void findById() {
+ User user = generateUser();
+ User findById = userMapper.findById(user.getId());
+ assertNotNull(findById);
+ assertEquals(user.getEmail(), findById.getEmail());
+ }
+
+ @Test
+ public void getAvatarImgUrlById() {
+ User user = generateUser();
+ assertNull(userMapper.getAvatarImgUrlById(user.getId()));
+ userMapper.updateAvatarImgUrl("example.cn", user.getId());
+ assertEquals("example.cn", userMapper.getAvatarImgUrlById(user.getId()));
+
+ }
+
+ @Test
+ public void getEmail() {
+ User user = generateUser();
+ assertEquals(user.getEmail(), userMapper.getEmail(user.getId()));
+ }
+
+ @Test
+ public void getDisPlayName() {
+ User user = generateUser();
+ assertNull(userMapper.getDisPlayName(user.getId()));
+ }
+
+ @Test
+ public void getRoleByEmail() {
+ User user = generateUser();
+ assertEquals(RoleEnum.USER_ROLE.getRoleName(), userMapper.getRoleByEmail(user.getEmail()));
+ }
+
+ @Test
+ public void getRoleById() {
+ User user = generateUser();
+ assertEquals(RoleEnum.USER_ROLE.getRoleName(), userMapper.getRoleById(user.getId()));
+ }
+
+ @Test
+ public void count() {
+ generateUser();
+ assertTrue(userMapper.count() >= 1);
+ }
+
+ @Test
+ public void delete() {
+ User user = generateUser();
+ int delete = userMapper.delete(user.getId());
+ assertEquals(1, delete);
+ User byId = userMapper.findById(user.getId());
+ assertEquals(UserAccountStatusEnum.DELETED.getCode(), byId.getStatus());
+ }
+
+ @Test
+ public void lock() {
+ User user = generateUser();
+ int delete = userMapper.lock(user.getId());
+ assertEquals(1, delete);
+ User byId = userMapper.findById(user.getId());
+ assertEquals(UserAccountStatusEnum.LOCKED.getCode(), byId.getStatus());
+ }
+
+ @Test
+ public void setUserRole() {
+ User user = generateUser();
+ userMapper.setUserRole(user.getId(), RoleEnum.ADMIN_ROLE.getRoleName());
+
+ assertEquals(RoleEnum.ADMIN_ROLE.getRoleName(), userMapper.getRoleById(user.getId()));
+ }
+
+ @Test
+ public void findAll() {
+ User user = generateUser();
+ List all = userMapper.findAll();
+ assertTrue(all.size() >= 1);
+ }
+
+ @Test
+ public void update() {
+ User user = generateUser();
+ user.setDesc("aaa");
+ user.setDisplayName("bbb");
+ user.setEmailStatus(true);
+ user.setRole(RoleEnum.ADMIN_ROLE.getRoleName());
+ user.setAvatarImgUrl("https://celess.cn/examcple.jpg");
+ user.setEmail(randomStr(8) + "@celess.cn");
+ user.setPwd(MD5Util.getMD5("010100000100000"));
+ assertEquals(1, userMapper.update(user));
+ User byId = userMapper.findById(user.getId());
+ assertEquals(user.getDesc(), byId.getDesc());
+ assertEquals(user.getDisplayName(), byId.getDisplayName());
+ assertEquals(user.getEmailStatus(), byId.getEmailStatus());
+ assertEquals(user.getRole(), byId.getRole());
+ assertEquals(user.getAvatarImgUrl(), byId.getAvatarImgUrl());
+ assertEquals(user.getEmail(), byId.getEmail());
+ assertEquals(user.getPwd(), byId.getPwd());
+ }
+
+ private User generateUser() {
+ User user = new User(randomStr(6) + "@celess.cn", MD5Util.getMD5("1234567890"));
+ userMapper.addUser(user);
+ User newUser = userMapper.findByEmail(user.getEmail());
+ assertEquals(user.getId(), newUser.getId());
+ return newUser;
+ }
+}
\ No newline at end of file
diff --git a/src/test/java/cn/celess/blog/mapper/VisitorMapperTest.java b/src/test/java/cn/celess/blog/mapper/VisitorMapperTest.java
new file mode 100644
index 0000000..d782c94
--- /dev/null
+++ b/src/test/java/cn/celess/blog/mapper/VisitorMapperTest.java
@@ -0,0 +1,42 @@
+package cn.celess.blog.mapper;
+
+import cn.celess.blog.BaseTest;
+import cn.celess.blog.entity.Visitor;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.Date;
+
+import static org.junit.Assert.*;
+
+public class VisitorMapperTest extends BaseTest {
+
+ @Autowired
+ VisitorMapper visitorMapper;
+
+ @Test
+ public void insert() {
+ Visitor visitor = new Visitor();
+ visitor.setDate(new Date());
+ visitor.setIp("127.0.0.1");
+ visitor.setUa("ua");
+ assertEquals(1, visitorMapper.insert(visitor));
+ }
+
+ @Test
+ public void delete() {
+ Visitor visitor = new Visitor();
+ visitor.setDate(new Date());
+ visitor.setIp("127.0.0.1");
+ visitor.setUa("ua");
+ visitorMapper.insert(visitor);
+ assertEquals(1, visitorMapper.delete(visitor.getId()));
+ }
+
+ @Test
+ public void count() {
+ assertNotEquals(0, visitorMapper.count());
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/test/java/cn/celess/blog/mapper/WebUpdateInfoMapperTest.java b/src/test/java/cn/celess/blog/mapper/WebUpdateInfoMapperTest.java
new file mode 100644
index 0000000..2ddd107
--- /dev/null
+++ b/src/test/java/cn/celess/blog/mapper/WebUpdateInfoMapperTest.java
@@ -0,0 +1,80 @@
+package cn.celess.blog.mapper;
+
+import cn.celess.blog.BaseTest;
+import cn.celess.blog.entity.WebUpdate;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import java.util.List;
+
+import static org.junit.Assert.*;
+
+public class WebUpdateInfoMapperTest extends BaseTest {
+
+ @Autowired
+ WebUpdateInfoMapper webUpdateInfoMapper;
+
+ @Test
+ public void insert() {
+ WebUpdate webUpdate = generateUpdateInfo();
+ assertNotNull(webUpdate);
+ }
+
+ @Test
+ public void delete() {
+ WebUpdate webUpdate = generateUpdateInfo();
+ assertEquals(1, webUpdateInfoMapper.delete(webUpdate.getId()));
+ assertTrue(webUpdateInfoMapper.findById(webUpdate.getId()).isDelete());
+ }
+
+ @Test
+ public void update() {
+ WebUpdate webUpdate = generateUpdateInfo();
+ assertEquals(1, webUpdateInfoMapper.update(webUpdate.getId(), randomStr(6)));
+ }
+
+ @Test
+ public void existsById() {
+ WebUpdate webUpdate = generateUpdateInfo();
+ assertTrue(webUpdateInfoMapper.existsById(webUpdate.getId()));
+ }
+
+ @Test
+ public void findById() {
+ WebUpdate webUpdate = generateUpdateInfo();
+ WebUpdate byId = webUpdateInfoMapper.findById(webUpdate.getId());
+ assertEquals(webUpdate.getUpdateInfo(), byId.getUpdateInfo());
+ assertEquals(webUpdate.getId(), byId.getId());
+ }
+
+ @Test
+ public void findAll() {
+ List all = webUpdateInfoMapper.findAll();
+ assertNotEquals(0, all.size());
+ }
+
+ @Test
+ public void findAllNotDeleted() {
+ this.delete();
+ List allNotDeleted = webUpdateInfoMapper.findAllNotDeleted();
+ allNotDeleted.forEach(webUpdate -> assertFalse(webUpdate.isDelete()));
+ }
+
+ @Test
+ public void getLastestOne() {
+ WebUpdate webUpdate = generateUpdateInfo();
+ List all = webUpdateInfoMapper.findAll();
+ List allNotDeleted = webUpdateInfoMapper.findAllNotDeleted();
+ all.sort(((o1, o2) -> (int) (o2.getId() - o1.getId())));
+ allNotDeleted.sort(((o1, o2) -> (int) (o2.getId() - o1.getId())));
+ assertEquals(webUpdate.getId(), all.get(0).getId());
+ assertEquals(webUpdate.getId(), allNotDeleted.get(0).getId());
+ assertEquals(webUpdate.getId(), webUpdateInfoMapper.getLastestOne().getId());
+ }
+
+ private WebUpdate generateUpdateInfo() {
+ WebUpdate webUpdate = new WebUpdate(randomStr(8));
+ webUpdateInfoMapper.insert(webUpdate);
+ return webUpdate;
+ }
+}
\ No newline at end of file