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 + - + select t_id + from tag_category + where is_category = true + and t_name = #{name} \ 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 * - from comment - where co_id = #{id} + from commentView + where commentId = #{sqid} - select * - from comment - where author_id = #{id} - and is_comment = #{isComment} + from commentView + where fromAuthorId = #{id} - select * - from comment - where co_pid = #{pid} + from commentView + where pid = #{pid} - select * - from comment - where co_article_id = #{articleId} + from commentView + # 无奈之举 + + where pagePath = #{pagePath} + - select * - from comment - where co_article_id = #{articleID} - and co_pid = #{pid} + from commentView + where + + pagePath = #{pagePath} and + + fromAuthorId = #{userId} - select * - from comment - where is_comment = #{isComment} - and co_pid = #{pid} + from commentView + where + + pagePath = #{pagePath} and + + pid = #{pid} and status = 0 - - select count(*) - from comment - where is_comment = #{isComment} + from commentView + where pagePath = #{pagePath} - select * - from comment - order by co_id desc + from commentView + order by commentId desc limit 1 + 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 user where u_email = #{email}) @@ -96,7 +102,7 @@ @@ -107,16 +113,17 @@ where u_email = #{email} 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 EXISTS(select * from web_update where update_id = #{id}) + select EXISTS(select * from web_update where wu_id = #{id}) + + + + 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 * - 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 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 * - from article - order by a_id desc + from articleView + where categoryId = #{id} + and isDelete = false + order by articleId desc - + select * + from articleView + where categoryId = #{id} + and isDelete = false + and isOpen = true + order by articleId desc - - + select * + from articleView + where isDelete = false + + + + \ 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; + - - - - - \ 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