diff --git a/build.sh b/build.sh deleted file mode 100644 index d8d463c..0000000 --- a/build.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/sh -echo "查询已存在进程" -pgrep -af blog-0.0.1-SNAPSHOT.jar -echo "结束已存在进程" -pkill -f blog-0.0.1-SNAPSHOT.jar -echo "开始运行小海博客" -nohup java -jar -Dfile.encoding=UTF-8 blog-0.0.1-SNAPSHOT.jar >blog.log & -echo "更新结束" diff --git a/src/main/java/cn/celess/blog/configuration/RedisConfig.java b/src/main/java/cn/celess/blog/configuration/RedisConfig.java index c36798c..cc48849 100644 --- a/src/main/java/cn/celess/blog/configuration/RedisConfig.java +++ b/src/main/java/cn/celess/blog/configuration/RedisConfig.java @@ -31,19 +31,16 @@ public class RedisConfig extends CachingConfigurerSupport { @Override @Bean public KeyGenerator keyGenerator() { - return new KeyGenerator() { - @Override - public Object generate(Object target, Method method, Object... params) { - StringBuilder sb = new StringBuilder(); - String name = target.getClass().getName(); - sb.append(name.substring(name.lastIndexOf(".") + 1)); - sb.append(":"); - sb.append(method.getName()); - for (Object obj : params) { - sb.append("-").append(obj.toString()); - } - return sb.toString(); + return (target, method, params) -> { + StringBuilder sb = new StringBuilder(); + String name = target.getClass().getName(); + sb.append(name.substring(name.lastIndexOf(".") + 1)); + sb.append(":"); + sb.append(method.getName()); + for (Object obj : params) { + sb.append("-").append(obj.toString()); } + return sb.toString(); }; } diff --git a/src/main/java/cn/celess/blog/configuration/listener/SessionListener.java b/src/main/java/cn/celess/blog/configuration/listener/SessionListener.java index 6241c32..f56c598 100644 --- a/src/main/java/cn/celess/blog/configuration/listener/SessionListener.java +++ b/src/main/java/cn/celess/blog/configuration/listener/SessionListener.java @@ -25,7 +25,6 @@ public class SessionListener implements HttpSessionListener { @Override public void sessionCreated(HttpSessionEvent se) { - // TODO : can move 'visit' api to here se.getSession().setAttribute("visitDetail", new HashMap()); // 10s for debug // se.getSession().setMaxInactiveInterval(10); @@ -44,9 +43,7 @@ public class SessionListener implements HttpSessionListener { sb.append("\t登录情况 => "); String email = (String) se.getSession().getAttribute("email"); sb.append(email == null ? "游客访问" : email); - visitDetail.forEach((s, integer) -> { - sb.append("\n").append("Method:[").append(s.split(":")[1]).append("]\tTimes:[").append(integer).append("]\tPath:[").append(s.split(":")[0]).append("]"); - }); + visitDetail.forEach((s, integer) -> sb.append("\n").append("Method:[").append(s.split(":")[1]).append("]\tTimes:[").append(integer).append("]\tPath:[").append(s.split(":")[0]).append("]")); log.info(sb.toString()); } } diff --git a/src/main/java/cn/celess/blog/controller/ArticleController.java b/src/main/java/cn/celess/blog/controller/ArticleController.java index e611d94..80fd4cc 100644 --- a/src/main/java/cn/celess/blog/controller/ArticleController.java +++ b/src/main/java/cn/celess/blog/controller/ArticleController.java @@ -120,7 +120,7 @@ public class ArticleController { @GetMapping("/admin/articles") public Response adminArticles(@RequestParam(name = "page", defaultValue = "1") int page, @RequestParam(name = "count", defaultValue = "10") int count, - @RequestParam(name = "deleted", defaultValue = "false") boolean deleted) { + @RequestParam(name = "deleted", required = false) Boolean deleted) { return Response.success(articleService.adminArticles(count, page, deleted)); } diff --git a/src/main/java/cn/celess/blog/controller/LinksController.java b/src/main/java/cn/celess/blog/controller/LinksController.java index 1375acc..3c5db4b 100644 --- a/src/main/java/cn/celess/blog/controller/LinksController.java +++ b/src/main/java/cn/celess/blog/controller/LinksController.java @@ -11,8 +11,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; -import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * @author : xiaohai @@ -46,21 +46,15 @@ public class LinksController { @GetMapping("/links") public Response allForOpen() { - List sites = new ArrayList<>(); - for (PartnerSite p : partnerSiteService.findAll()) { - if (p.getOpen()) { - //隐藏open字段 - p.setOpen(null); - sites.add(p); - } - } + List sites = partnerSiteService.findAll().stream().peek(partnerSite -> partnerSite.setOpen(null)).collect(Collectors.toList()); return Response.success(sites); } @GetMapping("/admin/links") public Response all(@RequestParam("page") int page, - @RequestParam("count") int count) { - return Response.success(partnerSiteService.partnerSitePages(page, count)); + @RequestParam("count") int count, + @RequestParam(value = "deleted", required = false) Boolean deleted) { + return Response.success(partnerSiteService.partnerSitePages(page, count, deleted)); } @PostMapping("/apply") diff --git a/src/main/java/cn/celess/blog/controller/UserController.java b/src/main/java/cn/celess/blog/controller/UserController.java index 7b7f9f1..5bbe04d 100644 --- a/src/main/java/cn/celess/blog/controller/UserController.java +++ b/src/main/java/cn/celess/blog/controller/UserController.java @@ -116,8 +116,8 @@ public class UserController { } @GetMapping("/admin/users") - public Response getAllUser(@RequestParam("page") int pageNum, @RequestParam("count") int count) { - return Response.success(userService.getUserList(pageNum, count)); + public Response getAllUser(@RequestParam("page") int pageNum, @RequestParam("count") int count, @RequestParam(name = "status", required = false) Integer status) { + return Response.success(userService.getUserList(pageNum, count, status)); } @GetMapping("/emailStatus/{email}") diff --git a/src/main/java/cn/celess/blog/enmu/ResponseEnum.java b/src/main/java/cn/celess/blog/enmu/ResponseEnum.java index 6c98fa5..919fa5f 100644 --- a/src/main/java/cn/celess/blog/enmu/ResponseEnum.java +++ b/src/main/java/cn/celess/blog/enmu/ResponseEnum.java @@ -34,6 +34,7 @@ public enum ResponseEnum { PWD_NOT_SAME(3602, "新密码与原密码不相同"), LOGIN_EXPIRED(3700, "登陆过期"), LOGOUT(3710, "账户已注销"), + CAN_NOT_USE(3711, "账户不可用"), PWD_WRONG(3800, "密码不正确"), JWT_EXPIRED(3810, "Token过期"), diff --git a/src/main/java/cn/celess/blog/enmu/UserAccountStatusEnum.java b/src/main/java/cn/celess/blog/enmu/UserAccountStatusEnum.java index 81fd9c7..31973e9 100644 --- a/src/main/java/cn/celess/blog/enmu/UserAccountStatusEnum.java +++ b/src/main/java/cn/celess/blog/enmu/UserAccountStatusEnum.java @@ -1,5 +1,11 @@ package cn.celess.blog.enmu; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + +import java.util.HashMap; +import java.util.Map; + /** * @Author: 小海 * @Date: 2020-05-22 21:32 @@ -36,4 +42,31 @@ public enum UserAccountStatusEnum { public String getDesc() { return desc; } + + public static UserAccountStatusEnum get(int code) { + for (UserAccountStatusEnum value : UserAccountStatusEnum.values()) { + if (value.code == code) { + return value; + } + } + return null; + } + + @JsonCreator + public static UserAccountStatusEnum get(Map map) { + for (UserAccountStatusEnum value : UserAccountStatusEnum.values()) { + if (value.code == (int) map.get("code") && value.desc.equals(map.get("desc"))) { + return value; + } + } + return null; + } + + @JsonValue + public Map toJson() { + Map map = new HashMap<>(2); + map.put("code", code); + map.put("desc", desc); + return map; + } } diff --git a/src/main/java/cn/celess/blog/entity/model/UserModel.java b/src/main/java/cn/celess/blog/entity/model/UserModel.java index 52ec7c6..cc925fd 100644 --- a/src/main/java/cn/celess/blog/entity/model/UserModel.java +++ b/src/main/java/cn/celess/blog/entity/model/UserModel.java @@ -1,5 +1,6 @@ package cn.celess.blog.entity.model; +import cn.celess.blog.enmu.UserAccountStatusEnum; import lombok.Getter; import lombok.Setter; @@ -38,5 +39,5 @@ public class UserModel { private String token; - private int status; + private UserAccountStatusEnum status; } diff --git a/src/main/java/cn/celess/blog/exception/ExceptionHandle.java b/src/main/java/cn/celess/blog/exception/ExceptionHandle.java index 7dc8064..0b85dd8 100644 --- a/src/main/java/cn/celess/blog/exception/ExceptionHandle.java +++ b/src/main/java/cn/celess/blog/exception/ExceptionHandle.java @@ -83,7 +83,12 @@ public class ExceptionHandle { simpleMailMessage.setTo("a@celess.cn"); simpleMailMessage.setSubject("服务器出现了错误"); StringBuilder msg = new StringBuilder(); - msg.append("requirePath:\n").append(request.getRequestURL().toString()).append("?").append(request.getQueryString()).append("\n\n\n"); + String queryString = request.getQueryString(); + msg.append("requirePath:\n").append(request.getRequestURL().toString()); + if (queryString != null) { + msg.append("?").append(queryString); + } + msg.append("\n\n\n"); msg.append("msg:\n").append(e.getMessage()).append("\n\n\n"); msg.append("date:\n").append(DateFormatUtil.getNow()).append("\n\n\n"); msg.append("from:\n").append(request.getHeader("User-Agent")).append("\n\n\n"); diff --git a/src/main/java/cn/celess/blog/exception/MyException.java b/src/main/java/cn/celess/blog/exception/MyException.java index 6046d4f..a681356 100644 --- a/src/main/java/cn/celess/blog/exception/MyException.java +++ b/src/main/java/cn/celess/blog/exception/MyException.java @@ -22,6 +22,12 @@ public class MyException extends RuntimeException { this.code = e.getCode(); } + public MyException(ResponseEnum e, Object result) { + super(e.getMsg()); + this.code = e.getCode(); + this.result = result; + } + public MyException(ResponseEnum e, String msg) { super(msg + e.getMsg()); this.code = e.getCode(); diff --git a/src/main/java/cn/celess/blog/mapper/PartnerMapper.java b/src/main/java/cn/celess/blog/mapper/PartnerMapper.java index 4785ee5..c1c2de6 100644 --- a/src/main/java/cn/celess/blog/mapper/PartnerMapper.java +++ b/src/main/java/cn/celess/blog/mapper/PartnerMapper.java @@ -36,5 +36,6 @@ public interface PartnerMapper { List findAll(); + List findAll(Boolean deleted); } diff --git a/src/main/java/cn/celess/blog/mapper/UserMapper.java b/src/main/java/cn/celess/blog/mapper/UserMapper.java index ab7ec7d..8f80077 100644 --- a/src/main/java/cn/celess/blog/mapper/UserMapper.java +++ b/src/main/java/cn/celess/blog/mapper/UserMapper.java @@ -53,6 +53,8 @@ public interface UserMapper { int setUserRole(Long id, String role); + List findAll(Integer status); + List findAll(); int update(User user); diff --git a/src/main/java/cn/celess/blog/service/ArticleService.java b/src/main/java/cn/celess/blog/service/ArticleService.java index 53e1494..f74b875 100644 --- a/src/main/java/cn/celess/blog/service/ArticleService.java +++ b/src/main/java/cn/celess/blog/service/ArticleService.java @@ -52,7 +52,7 @@ public interface ArticleService { * @param page 数据页 * @return 分页数据 */ - PageData adminArticles(int count, int page, boolean deleted); + PageData adminArticles(int count, int page, Boolean deleted); /** * 获取文章状态为开放的文章 diff --git a/src/main/java/cn/celess/blog/service/PartnerSiteService.java b/src/main/java/cn/celess/blog/service/PartnerSiteService.java index e76db4a..a0b4f69 100644 --- a/src/main/java/cn/celess/blog/service/PartnerSiteService.java +++ b/src/main/java/cn/celess/blog/service/PartnerSiteService.java @@ -45,7 +45,7 @@ public interface PartnerSiteService { * @param page 数据页 * @return 分页数据 */ - PageData partnerSitePages(int page, int count); + PageData partnerSitePages(int page, int count, Boolean deleted); /** * 获取全部数据 diff --git a/src/main/java/cn/celess/blog/service/UserService.java b/src/main/java/cn/celess/blog/service/UserService.java index 3c45203..e34d231 100644 --- a/src/main/java/cn/celess/blog/service/UserService.java +++ b/src/main/java/cn/celess/blog/service/UserService.java @@ -129,7 +129,7 @@ public interface UserService { * @param page 数据页 * @return 分页数据 */ - PageData getUserList(Integer page, Integer count); + PageData getUserList(Integer page, Integer count, Integer status); /** * 更改用户信息 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 ed7d788..f05158c 100644 --- a/src/main/java/cn/celess/blog/service/serviceimpl/ArticleServiceImpl.java +++ b/src/main/java/cn/celess/blog/service/serviceimpl/ArticleServiceImpl.java @@ -278,11 +278,16 @@ public class ArticleServiceImpl implements ArticleService { * @return PageInfo */ @Override - public PageData adminArticles(int count, int page, boolean deleted) { + public PageData adminArticles(int count, int page, Boolean deleted) { List
articleList = articleMapper.findAll(); PageData pageData = new PageData<>(null, 0, count, page); - List
collect = articleList.stream().filter(article -> article.isDeleted() == deleted).collect(Collectors.toList()); + List
collect; + if (deleted != null) { + collect = articleList.stream().filter(article -> article.isDeleted() == deleted).collect(Collectors.toList()); + } else { + collect = articleList; + } pageData.setTotal(collect.size()); List articleModels = collect.stream() .peek(article -> article.setMdContent(null)) 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 0e790fe..7c79525 100644 --- a/src/main/java/cn/celess/blog/service/serviceimpl/PartnerSiteServiceImpl.java +++ b/src/main/java/cn/celess/blog/service/serviceimpl/PartnerSiteServiceImpl.java @@ -123,9 +123,9 @@ public class PartnerSiteServiceImpl implements PartnerSiteService { } @Override - public PageData partnerSitePages(int page, int count) { + public PageData partnerSitePages(int page, int count, Boolean deleted) { PageHelper.startPage(page, count); - List sitePage = partnerMapper.findAll(); + List sitePage = partnerMapper.findAll(deleted); PageInfo pageInfo = new PageInfo(sitePage); return new PageData<>(pageInfo, sitePage); } 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 2899599..1cae19c 100644 --- a/src/main/java/cn/celess/blog/service/serviceimpl/UserServiceImpl.java +++ b/src/main/java/cn/celess/blog/service/serviceimpl/UserServiceImpl.java @@ -2,6 +2,7 @@ package cn.celess.blog.service.serviceimpl; import cn.celess.blog.enmu.ResponseEnum; import cn.celess.blog.enmu.RoleEnum; +import cn.celess.blog.enmu.UserAccountStatusEnum; import cn.celess.blog.entity.Response; import cn.celess.blog.entity.User; import cn.celess.blog.entity.model.PageData; @@ -28,6 +29,7 @@ import java.beans.Transient; import java.io.InputStream; import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; /** * @author : xiaohai @@ -98,6 +100,16 @@ public class UserServiceImpl implements UserService { if (!RegexUtil.pwdMatch(loginReq.getPassword())) { throw new MyException(ResponseEnum.PARAMETERS_PWD_ERROR); } + + User user = userMapper.findByEmail(loginReq.getEmail()); + if (user == null) { + // 用户不存在 + throw new MyException(ResponseEnum.USER_NOT_EXIST); + } + if (user.getStatus() != UserAccountStatusEnum.NORMAL.getCode()) { + throw new MyException(ResponseEnum.CAN_NOT_USE, UserAccountStatusEnum.get(user.getStatus())); + } + //获取redis缓存中登录失败次数 String s = redisUtil.get(loginReq.getEmail() + "-passwordWrongTime"); if (s != null) { @@ -105,14 +117,9 @@ public class UserServiceImpl implements UserService { throw new MyException(ResponseEnum.LOGIN_LATER, loginReq.getEmail()); } } - User user = null; - user = userMapper.findByEmail(loginReq.getEmail()); - String token = null; + + String token; // 密码比对 - if (user == null) { - // 用户不存在 - throw new MyException(ResponseEnum.USER_NOT_EXIST); - } if (user.getPwd().equals(MD5Util.getMD5(loginReq.getPassword()))) { logger.info("====> {} 进行权限认证 状态:登录成功 <====", loginReq.getEmail()); userMapper.updateLoginTime(loginReq.getEmail()); @@ -338,12 +345,11 @@ public class UserServiceImpl implements UserService { } @Override - public PageData getUserList(Integer page, Integer count) { + public PageData getUserList(Integer page, Integer count, Integer status) { PageHelper.startPage(page, count); - List all = userMapper.findAll(); - List modelList = new ArrayList<>(); - all.forEach(user -> modelList.add(ModalTrans.userFullInfo(user))); - return new PageData(PageInfo.of(all), modelList); + List all = userMapper.findAll(status); + List modelList = all.stream().map(ModalTrans::userFullInfo).collect(Collectors.toList()); + return new PageData<>(PageInfo.of(all), modelList); } @Override diff --git a/src/main/java/cn/celess/blog/util/ModalTrans.java b/src/main/java/cn/celess/blog/util/ModalTrans.java index 76848c9..348b8f7 100644 --- a/src/main/java/cn/celess/blog/util/ModalTrans.java +++ b/src/main/java/cn/celess/blog/util/ModalTrans.java @@ -1,5 +1,6 @@ package cn.celess.blog.util; +import cn.celess.blog.enmu.UserAccountStatusEnum; import cn.celess.blog.entity.*; import cn.celess.blog.entity.model.*; import org.springframework.beans.BeanUtils; @@ -46,6 +47,7 @@ public class ModalTrans { } UserModel userModel = new UserModel(); BeanUtils.copyProperties(user, userModel); + userModel.setStatus(UserAccountStatusEnum.get(user.getStatus())); userModel.setAvatarImgUrl(user.getAvatarImgUrl() == null || user.getAvatarImgUrl().length() == 0 ? null : "http://cdn.celess.cn/" + user.getAvatarImgUrl()); diff --git a/src/main/resources/mapper/PartnerSiteMapper.xml b/src/main/resources/mapper/PartnerSiteMapper.xml index b763e3d..4b625f2 100644 --- a/src/main/resources/mapper/PartnerSiteMapper.xml +++ b/src/main/resources/mapper/PartnerSiteMapper.xml @@ -78,6 +78,9 @@ diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml index 151740a..98be7f6 100644 --- a/src/main/resources/mapper/UserMapper.xml +++ b/src/main/resources/mapper/UserMapper.xml @@ -130,5 +130,8 @@ diff --git a/src/main/resources/sql/data.sql b/src/main/resources/sql/data.sql index 955c2c3..1a52c25 100644 --- a/src/main/resources/sql/data.sql +++ b/src/main/resources/sql/data.sql @@ -1,3 +1,22 @@ +INSERT INTO `user` (`u_id`, `u_email`, `u_pwd`, `u_email_status`, `u_avatar`, `u_desc`, `u_recently_landed_time`, + `u_display_name`, `u_role`, `status`) +VALUES (1, 'a@celess.cn', '25f9e794323b453885f5181f1b624d0b', 1, 'a@celess.cn_2.png', '禾几海不需要自我介绍', + '2020-07-02 11:30:38', '禾几海', 'admin', 0), + (3, 'zh56462271@qq.com', '25f9e794323b453885f5181f1b624d0b', 1, NULL, NULL, '2020-05-16 13:21:35', NULL, 'user', + 0), + (2, 'b@celess.cn', '25f9e794323b453885f5181f1b624d0b', 1, NULL, NULL, '2020-05-16 13:21:35', NULL, 'user', 0), + (4, 'c@celess.cn', '25f9e794323b453885f5181f1b624d0b', 1, NULL, NULL, '2020-05-16 13:21:35', NULL, 'user', 1), + (5, 'd@celess.cn', '25f9e794323b453885f5181f1b624d0b', 1, NULL, NULL, '2020-05-16 13:21:35', NULL, 'user', 1), + (6, 'e@celess.cn', '25f9e794323b453885f5181f1b624d0b', 1, NULL, NULL, '2020-05-16 13:21:35', NULL, 'user', 2), + (7, 'f@celess.cn', '25f9e794323b453885f5181f1b624d0b', 1, NULL, NULL, '2020-05-16 13:21:35', NULL, 'user', 2), + (8, 'g@celess.cn', '25f9e794323b453885f5181f1b624d0b', 1, NULL, NULL, '2020-05-16 13:21:35', NULL, 'user', 0), + (9, 'h@celess.cn', '25f9e794323b453885f5181f1b624d0b', 1, NULL, NULL, '2020-05-16 13:21:35', NULL, 'user', 1), + (10, 'i@celess.cn', '25f9e794323b453885f5181f1b624d0b', 1, NULL, NULL, '2020-05-16 13:21:35', NULL, 'user', 2), + (11, 'j@celess.cn', '25f9e794323b453885f5181f1b624d0b', 1, NULL, NULL, '2020-05-16 13:21:35', NULL, 'user', 0), + (12, 'k@celess.cn', '25f9e794323b453885f5181f1b624d0b', 1, NULL, NULL, '2020-05-16 13:21:35', NULL, 'user', 1); + + +-- 密码123456789 INSERT INTO `tag_category` (`t_id`, `t_name`, `is_category`, `is_delete`) VALUES (1, '随笔', 1, 0), (2, '后端', 1, 0), @@ -28,17 +47,6 @@ VALUES (1, '随笔', 1, 0), (27, '网课', 0, 0); --- 密码123456789 -INSERT INTO `user` (`u_id`, `u_email`, `u_pwd`, `u_email_status`, `u_avatar`, `u_desc`, `u_recently_landed_time`, - `u_display_name`, `u_role`, `status`) -VALUES (1, 'a@celess.cn', '25f9e794323b453885f5181f1b624d0b', 1, 'a@celess.cn_2.png', '禾几海不需要自我介绍', - '2020-07-02 11:30:38', '禾几海', 'admin', 0), - (2, 'b@celess.cn', '25f9e794323b453885f5181f1b624d0b', 1, NULL, NULL, '2020-05-16 13:21:35', NULL, 'user', - 0), - (3, 'zh56462271@qq.com', '25f9e794323b453885f5181f1b624d0b', 1, NULL, NULL, '2020-05-16 13:21:35', NULL, 'user', - 0); - - INSERT INTO `article` (`a_id`, `a_title`, `a_summary`, `a_md_content`, `a_url`, `a_author_id`, `a_is_original`, `a_reading_number`, `a_like`, `a_dislike`, `a_category_id`, `a_publish_date`, `a_update_date`, `a_is_open`, `is_delete`) @@ -150,7 +158,11 @@ VALUES (1, '程序猿张先生', 1, 'https://zhyocean.cn', '', '', 0), (3, '罗炜杰个人博客', 1, 'http://www.lwjppz.cn', '', '', 0), (4, '强子博客', 1, 'https://www.lqnb.xyz', '', '', 0), (5, '原创博客技术联盟', 1, 'http://techblog.pub/', '', '', 0), - (6, 'WarlockMT', 1, 'https://www.warlock.live/', '', '', 0); + (6, 'WarlockMT', 1, 'https://www.warlock.live/', '', '', 0), + (7, '测试例1', 1, 'https://t1.celess.cn/', '', '', 1), + (8, '测试例2', 1, 'https://t2.celess.cn/', '', '', 1), + (9, '测试例3', 1, 'https://t3.celess.cn/', '', '', 1), + (10, '测试例4', 1, 'https://t4.celess.cn/', '', '', 1); diff --git a/src/main/resources/sql/schema.sql b/src/main/resources/sql/schema.sql index d755609..fe1c62a 100644 --- a/src/main/resources/sql/schema.sql +++ b/src/main/resources/sql/schema.sql @@ -88,7 +88,7 @@ CREATE TABLE `links` `l_url` varchar(255) unique not null comment '首页地址', `l_icon_path` varchar(255) not null comment '友链的icon地址', `l_desc` varchar(255) COLLATE utf8mb4_unicode_ci not null comment '友链的说明描述', - `is_delete` boolean not null default false comment '该数据是否被删除', + `is_delete` boolean not null default false comment '该数据是否被删除', `l_email` varchar(255) comment '网站管理员的邮箱', `l_notification` boolean default false comment '是否通知了' ) comment '友站表'; diff --git a/src/test/java/cn/celess/blog/controller/CategoryControllerTest.java b/src/test/java/cn/celess/blog/controller/CategoryControllerTest.java index cb5e78c..286f367 100644 --- a/src/test/java/cn/celess/blog/controller/CategoryControllerTest.java +++ b/src/test/java/cn/celess/blog/controller/CategoryControllerTest.java @@ -32,7 +32,7 @@ public class CategoryControllerTest extends BaseTest { CategoryModel category = response.getResult(); assertEquals(categoryName, category.getName()); assertNotNull(category.getId()); - assertNotEquals(0, category.getArticles()); + assertNull(category.getArticles()); }); } @@ -56,7 +56,7 @@ public class CategoryControllerTest extends BaseTest { assertEquals(SUCCESS.getCode(), response.getCode()); CategoryModel c = response.getResult(); assertEquals(name, c.getName()); - assertNotEquals(0, c.getArticles()); + assertNull(c.getArticles()); assertNotNull(c.getId()); }); } @@ -70,7 +70,7 @@ public class CategoryControllerTest extends BaseTest { response.getResult().getList().forEach(c -> { assertNotNull(c.getName()); assertNotNull(c.getId()); - assertNotEquals(0, c.getArticles()); + assertNotNull(c.getArticles()); }); }); diff --git a/src/test/java/cn/celess/blog/enmu/UserAccountStatusEnumTest.java b/src/test/java/cn/celess/blog/enmu/UserAccountStatusEnumTest.java new file mode 100644 index 0000000..e7d4448 --- /dev/null +++ b/src/test/java/cn/celess/blog/enmu/UserAccountStatusEnumTest.java @@ -0,0 +1,36 @@ +package cn.celess.blog.enmu; + +import cn.celess.blog.BaseTest; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Test; + +import java.io.IOException; + +import static org.junit.Assert.*; + +public class UserAccountStatusEnumTest extends BaseTest { + + @Test + public void get() { + assertEquals(UserAccountStatusEnum.NORMAL, UserAccountStatusEnum.get(0)); + assertEquals(UserAccountStatusEnum.LOCKED, UserAccountStatusEnum.get(1)); + assertEquals(UserAccountStatusEnum.DELETED, UserAccountStatusEnum.get(2)); + } + + @Test + public void toJson() throws JsonProcessingException { + // 序列化 + ObjectMapper objectMapper = new ObjectMapper(); + assertEquals("{\"code\":0,\"desc\":\"正常\"}", objectMapper.writeValueAsString(UserAccountStatusEnum.NORMAL)); + } + + @Test + public void testGet() throws IOException { + // 反序列化 + ObjectMapper mapper = new ObjectMapper(); + UserAccountStatusEnum userAccountStatusEnum = mapper.readValue(mapper.writeValueAsString(UserAccountStatusEnum.NORMAL), UserAccountStatusEnum.class); + assertEquals(UserAccountStatusEnum.NORMAL.getCode(), userAccountStatusEnum.getCode()); + assertEquals(UserAccountStatusEnum.NORMAL.getDesc(), userAccountStatusEnum.getDesc()); + } +} \ No newline at end of file diff --git a/src/test/java/cn/celess/blog/service/ArticleServiceTest.java b/src/test/java/cn/celess/blog/service/ArticleServiceTest.java new file mode 100644 index 0000000..b32c223 --- /dev/null +++ b/src/test/java/cn/celess/blog/service/ArticleServiceTest.java @@ -0,0 +1,27 @@ +package cn.celess.blog.service; + +import cn.celess.blog.BaseTest; +import cn.celess.blog.entity.model.ArticleModel; +import cn.celess.blog.entity.model.PageData; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import static org.junit.Assert.*; + +public class ArticleServiceTest extends BaseTest { + + @Autowired + ArticleService articleService; + + @Test + public void adminArticles() { + // 测deleted参数传值 + PageData pageData = articleService.adminArticles(10, 1, true); + assertTrue(pageData.getList().stream().allMatch(ArticleModel::isDeleted)); + pageData = articleService.adminArticles(10, 1, false); + assertFalse(pageData.getList().stream().allMatch(ArticleModel::isDeleted)); + pageData = articleService.adminArticles(10, 1, null); + assertTrue(pageData.getList().stream().anyMatch(ArticleModel::isDeleted)); + assertTrue(pageData.getList().stream().anyMatch(articleModel -> !articleModel.isDeleted())); + } +} \ No newline at end of file diff --git a/src/test/java/cn/celess/blog/service/PartnerSiteServiceTest.java b/src/test/java/cn/celess/blog/service/PartnerSiteServiceTest.java new file mode 100644 index 0000000..0ae95d8 --- /dev/null +++ b/src/test/java/cn/celess/blog/service/PartnerSiteServiceTest.java @@ -0,0 +1,32 @@ +package cn.celess.blog.service; + +import cn.celess.blog.BaseTest; +import cn.celess.blog.entity.PartnerSite; +import cn.celess.blog.entity.model.PageData; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.List; +import java.util.stream.Stream; + +import static org.junit.Assert.*; + +public class PartnerSiteServiceTest extends BaseTest { + + @Autowired + PartnerSiteService partnerSiteService; + + @Test + public void partnerSitePages() { + // 测试deleted 参数 + PageData pageData = partnerSiteService.partnerSitePages(1, 10, true); + assertTrue(pageData.getList().stream().allMatch(PartnerSite::getDelete)); + pageData = partnerSiteService.partnerSitePages(1, 10, false); + assertTrue(pageData.getList().stream().noneMatch(PartnerSite::getDelete)); + pageData = partnerSiteService.partnerSitePages(1, 10, null); + + List list = pageData.getList(); + assertNotEquals(0, list.stream().filter(PartnerSite::getDelete).count()); + assertNotEquals(0, list.stream().filter(partnerSite -> !partnerSite.getDelete()).count()); + } +} \ No newline at end of file diff --git a/src/test/java/cn/celess/blog/service/UserServiceTest.java b/src/test/java/cn/celess/blog/service/UserServiceTest.java new file mode 100644 index 0000000..04661eb --- /dev/null +++ b/src/test/java/cn/celess/blog/service/UserServiceTest.java @@ -0,0 +1,73 @@ +package cn.celess.blog.service; + +import cn.celess.blog.BaseTest; +import cn.celess.blog.enmu.ResponseEnum; +import cn.celess.blog.enmu.UserAccountStatusEnum; +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.exception.MyException; +import cn.celess.blog.mapper.UserMapper; +import cn.celess.blog.util.MD5Util; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import static org.junit.Assert.*; + +public class UserServiceTest extends BaseTest { + @Autowired + UserService userService; + @Autowired + UserMapper userMapper; + + @Test + public void getUserList() { + // 测试status 参数 + PageData userList = userService.getUserList(1, 10, UserAccountStatusEnum.NORMAL.getCode()); + assertTrue(userList.getList().stream().allMatch(userModel -> userModel.getStatus().getCode() == UserAccountStatusEnum.NORMAL.getCode())); + userList = userService.getUserList(1, 10, UserAccountStatusEnum.LOCKED.getCode()); + assertTrue(userList.getList().stream().allMatch(userModel -> userModel.getStatus().getCode() == UserAccountStatusEnum.LOCKED.getCode())); + userList = userService.getUserList(1, 10, UserAccountStatusEnum.DELETED.getCode()); + assertTrue(userList.getList().stream().allMatch(userModel -> userModel.getStatus().getCode() == UserAccountStatusEnum.DELETED.getCode())); + userList = userService.getUserList(1, 10, null); + assertTrue(userList.getList().stream().anyMatch(userModel -> userModel.getStatus().getCode() == UserAccountStatusEnum.NORMAL.getCode())); + assertTrue(userList.getList().stream().anyMatch(userModel -> userModel.getStatus().getCode() == UserAccountStatusEnum.LOCKED.getCode())); + assertTrue(userList.getList().stream().anyMatch(userModel -> userModel.getStatus().getCode() == UserAccountStatusEnum.DELETED.getCode())); + } + + @Test + public void testLogin() { + // 测试账户 被锁 被删除 登录 + String email = randomStr(5) + "@celess.cn"; + String pwd = MD5Util.getMD5("123456789"); + User user = new User(email, pwd); + userMapper.addUser(user); + assertNotNull(user.getId()); + + user = userMapper.findByEmail(email); + LoginReq loginReq = new LoginReq(email, "123456789", false); + UserModel login = userService.login(loginReq); + assertEquals(UserAccountStatusEnum.NORMAL, login.getStatus()); + + userMapper.lock(user.getId()); + try { + userService.login(loginReq); + fail("测试登录被锁账户 失败!"); + } catch (MyException e) { + assertEquals(ResponseEnum.CAN_NOT_USE.getCode(), e.getCode()); + assertEquals(UserAccountStatusEnum.LOCKED, e.getResult()); + } + + userMapper.delete(user.getId()); + try { + userService.login(loginReq); + fail("测试登录被删除账户 失败!"); + } catch (MyException e) { + assertEquals(ResponseEnum.CAN_NOT_USE.getCode(), e.getCode()); + assertEquals(UserAccountStatusEnum.DELETED, e.getResult()); + } + + + } +} \ No newline at end of file