From e70ad72523c37d9033f4b0e9ab0354dd8eb7a27b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Sat, 15 Aug 2020 09:47:34 +0800 Subject: [PATCH 01/15] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 58c1879..dadc934 100644 --- a/README.md +++ b/README.md @@ -11,8 +11,8 @@ [![GitHub](https://img.shields.io/github/license/xiaohai2271/blog-backEnd)](https://github.com/xiaohai2271/blog-backEnd) [![Website](https://img.shields.io/website?up_message=%E5%B0%8F%E6%B5%B7%E5%8D%9A%E5%AE%A2&url=https%3A%2F%2Fwww.celess.cn)](https://www.celess.cn) - +> 请配合前端项目一起食用 [https://github.com/xiaohai2271/blog-frontEnd](https://github.com/xiaohai2271/blog-frontEnd) ## 🎈主要使用的技术 | 使用的技术 | 名称 | 版本 | @@ -38,4 +38,4 @@ 或者参照[离线API文档](./doc/API.md) ## ☀授权协议 -[MIT](./LICENSE) \ No newline at end of file +[MIT](./LICENSE) -- 2.49.1 From ee4c4bd87eb5ec0e2a839e13aafad7f51b8e7895 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Sat, 15 Aug 2020 09:48:19 +0800 Subject: [PATCH 02/15] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index dadc934..24bcee7 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ [![Test](https://github.com/xiaohai2271/blog-backEnd/workflows/Test/badge.svg)](https://github.com/xiaohai2271/blog-backEnd) [![GitHub](https://img.shields.io/github/license/xiaohai2271/blog-backEnd)](https://github.com/xiaohai2271/blog-backEnd) [![Website](https://img.shields.io/website?up_message=%E5%B0%8F%E6%B5%B7%E5%8D%9A%E5%AE%A2&url=https%3A%2F%2Fwww.celess.cn)](https://www.celess.cn) - + > 请配合前端项目一起食用 [https://github.com/xiaohai2271/blog-frontEnd](https://github.com/xiaohai2271/blog-frontEnd) ## 🎈主要使用的技术 -- 2.49.1 From b55a50d5485e662d3c57cd8ee80bd499e2deafdf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Sun, 30 Aug 2020 14:01:19 +0800 Subject: [PATCH 03/15] =?UTF-8?q?fix(test):=20=E4=B8=8D=E5=90=88=E7=90=86?= =?UTF-8?q?=E7=9A=84=E6=B5=8B=E8=AF=95=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/celess/blog/controller/CategoryControllerTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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()); }); }); -- 2.49.1 From c17b56b43620b7f840b790c284e5332cd5704cd0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Sun, 30 Aug 2020 14:17:34 +0800 Subject: [PATCH 04/15] =?UTF-8?q?style:=20=E4=BF=AE=E6=94=B9=E9=83=A8?= =?UTF-8?q?=E5=88=86=E4=BB=A3=E7=A0=81=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../blog/configuration/RedisConfig.java | 21 ++++++++----------- .../listener/SessionListener.java | 5 +---- .../blog/exception/ExceptionHandle.java | 7 ++++++- 3 files changed, 16 insertions(+), 17 deletions(-) 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/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"); -- 2.49.1 From 9f883d12df3712c0c14d105d8c85564f4c00fc14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Sun, 30 Aug 2020 23:45:18 +0800 Subject: [PATCH 05/15] =?UTF-8?q?feat(article):=20=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../blog/controller/ArticleController.java | 2 +- .../celess/blog/service/ArticleService.java | 2 +- .../serviceimpl/ArticleServiceImpl.java | 9 +++++-- .../blog/service/ArticleServiceTest.java | 27 +++++++++++++++++++ 4 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 src/test/java/cn/celess/blog/service/ArticleServiceTest.java 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/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/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/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 -- 2.49.1 From 450b4a40bd04729bc84493fa199a384ddae74829 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Mon, 31 Aug 2020 00:17:21 +0800 Subject: [PATCH 06/15] =?UTF-8?q?feat(user):=20=E4=BF=AE=E6=94=B9status?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/celess/blog/enmu/UserAccountStatusEnum.java | 11 +++++++++++ .../java/cn/celess/blog/entity/model/UserModel.java | 3 ++- src/main/java/cn/celess/blog/util/ModalTrans.java | 2 ++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/cn/celess/blog/enmu/UserAccountStatusEnum.java b/src/main/java/cn/celess/blog/enmu/UserAccountStatusEnum.java index 81fd9c7..f2d21d3 100644 --- a/src/main/java/cn/celess/blog/enmu/UserAccountStatusEnum.java +++ b/src/main/java/cn/celess/blog/enmu/UserAccountStatusEnum.java @@ -1,5 +1,7 @@ package cn.celess.blog.enmu; +import java.util.Arrays; + /** * @Author: 小海 * @Date: 2020-05-22 21:32 @@ -36,4 +38,13 @@ 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; + } } 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/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()); -- 2.49.1 From a54e04abf3758d749498936ac6f34f726a13ce50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Mon, 31 Aug 2020 00:50:41 +0800 Subject: [PATCH 07/15] =?UTF-8?q?feat:=20=E5=BA=8F=E5=88=97=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../blog/enmu/UserAccountStatusEnum.java | 13 +++++++++- .../blog/enmu/UserAccountStatusEnumTest.java | 24 +++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 src/test/java/cn/celess/blog/enmu/UserAccountStatusEnumTest.java diff --git a/src/main/java/cn/celess/blog/enmu/UserAccountStatusEnum.java b/src/main/java/cn/celess/blog/enmu/UserAccountStatusEnum.java index f2d21d3..c43b098 100644 --- a/src/main/java/cn/celess/blog/enmu/UserAccountStatusEnum.java +++ b/src/main/java/cn/celess/blog/enmu/UserAccountStatusEnum.java @@ -1,6 +1,9 @@ package cn.celess.blog.enmu; -import java.util.Arrays; +import com.fasterxml.jackson.annotation.JsonValue; + +import java.util.HashMap; +import java.util.Map; /** * @Author: 小海 @@ -47,4 +50,12 @@ public enum UserAccountStatusEnum { } 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/test/java/cn/celess/blog/enmu/UserAccountStatusEnumTest.java b/src/test/java/cn/celess/blog/enmu/UserAccountStatusEnumTest.java new file mode 100644 index 0000000..2576f8a --- /dev/null +++ b/src/test/java/cn/celess/blog/enmu/UserAccountStatusEnumTest.java @@ -0,0 +1,24 @@ +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 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)); + } +} \ No newline at end of file -- 2.49.1 From 01407aba7e54aa65307a2d2e8e5a0b98c93e5dca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Mon, 31 Aug 2020 00:53:48 +0800 Subject: [PATCH 08/15] =?UTF-8?q?feat:=20=E5=88=86=E7=A6=BB=E4=B8=8D?= =?UTF-8?q?=E5=90=8C=E7=8A=B6=E6=80=81=E7=9A=84=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../blog/controller/UserController.java | 4 +-- .../cn/celess/blog/mapper/UserMapper.java | 2 ++ .../cn/celess/blog/service/UserService.java | 2 +- .../service/serviceimpl/UserServiceImpl.java | 10 +++---- src/main/resources/mapper/UserMapper.xml | 3 ++ src/main/resources/sql/data.sql | 30 ++++++++++++------- 6 files changed, 32 insertions(+), 19 deletions(-) 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/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/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/UserServiceImpl.java b/src/main/java/cn/celess/blog/service/serviceimpl/UserServiceImpl.java index 2899599..fd8ea2d 100644 --- a/src/main/java/cn/celess/blog/service/serviceimpl/UserServiceImpl.java +++ b/src/main/java/cn/celess/blog/service/serviceimpl/UserServiceImpl.java @@ -28,6 +28,7 @@ import java.beans.Transient; import java.io.InputStream; import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; /** * @author : xiaohai @@ -338,12 +339,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/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..1f858cf 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`) -- 2.49.1 From a26946a583be3b4b2caaedf896bf3a2a360f8936 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Mon, 31 Aug 2020 01:10:12 +0800 Subject: [PATCH 09/15] =?UTF-8?q?feat:=20=E5=8F=8D=E5=BA=8F=E5=88=97?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/celess/blog/enmu/UserAccountStatusEnum.java | 11 +++++++++++ .../celess/blog/enmu/UserAccountStatusEnumTest.java | 12 ++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/main/java/cn/celess/blog/enmu/UserAccountStatusEnum.java b/src/main/java/cn/celess/blog/enmu/UserAccountStatusEnum.java index c43b098..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,6 @@ package cn.celess.blog.enmu; +import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonValue; import java.util.HashMap; @@ -51,6 +52,16 @@ public enum UserAccountStatusEnum { 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); diff --git a/src/test/java/cn/celess/blog/enmu/UserAccountStatusEnumTest.java b/src/test/java/cn/celess/blog/enmu/UserAccountStatusEnumTest.java index 2576f8a..e7d4448 100644 --- a/src/test/java/cn/celess/blog/enmu/UserAccountStatusEnumTest.java +++ b/src/test/java/cn/celess/blog/enmu/UserAccountStatusEnumTest.java @@ -5,6 +5,8 @@ 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 { @@ -18,7 +20,17 @@ public class UserAccountStatusEnumTest extends BaseTest { @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 -- 2.49.1 From 9b460ff33cb97af94ea6cbbd06f84cfea20c6dcb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Mon, 31 Aug 2020 09:46:15 +0800 Subject: [PATCH 10/15] =?UTF-8?q?feat(link):=20=E5=88=86=E7=A6=BB=E4=B8=8D?= =?UTF-8?q?=E5=90=8C=E7=8A=B6=E6=80=81=E7=9A=84=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/cn/celess/blog/controller/LinksController.java | 5 +++-- src/main/java/cn/celess/blog/mapper/PartnerMapper.java | 1 + src/main/java/cn/celess/blog/service/PartnerSiteService.java | 2 +- .../blog/service/serviceimpl/PartnerSiteServiceImpl.java | 4 ++-- src/main/resources/mapper/PartnerSiteMapper.xml | 3 +++ src/main/resources/sql/schema.sql | 2 +- 6 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/cn/celess/blog/controller/LinksController.java b/src/main/java/cn/celess/blog/controller/LinksController.java index 1375acc..f79c588 100644 --- a/src/main/java/cn/celess/blog/controller/LinksController.java +++ b/src/main/java/cn/celess/blog/controller/LinksController.java @@ -59,8 +59,9 @@ public class LinksController { @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/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/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/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/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/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 '友站表'; -- 2.49.1 From 72674f4612a09dd4ffc9d353c50173c96cb69a42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Mon, 31 Aug 2020 10:02:12 +0800 Subject: [PATCH 11/15] =?UTF-8?q?test:=20=E8=A1=A5=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/sql/data.sql | 6 +++- .../blog/service/PartnerSiteServiceTest.java | 32 +++++++++++++++++++ .../celess/blog/service/UserServiceTest.java | 30 +++++++++++++++++ 3 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 src/test/java/cn/celess/blog/service/PartnerSiteServiceTest.java create mode 100644 src/test/java/cn/celess/blog/service/UserServiceTest.java diff --git a/src/main/resources/sql/data.sql b/src/main/resources/sql/data.sql index 1f858cf..1a52c25 100644 --- a/src/main/resources/sql/data.sql +++ b/src/main/resources/sql/data.sql @@ -158,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/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..a273bbb --- /dev/null +++ b/src/test/java/cn/celess/blog/service/UserServiceTest.java @@ -0,0 +1,30 @@ +package cn.celess.blog.service; + +import cn.celess.blog.BaseTest; +import cn.celess.blog.enmu.UserAccountStatusEnum; +import cn.celess.blog.entity.model.PageData; +import cn.celess.blog.entity.model.UserModel; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import static org.junit.Assert.*; + +public class UserServiceTest extends BaseTest { + @Autowired + UserService userService; + + @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())); + } +} \ No newline at end of file -- 2.49.1 From 6eabb3ab2248f66244889a80f57a3e8ade774797 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Mon, 31 Aug 2020 10:10:21 +0800 Subject: [PATCH 12/15] =?UTF-8?q?refactor:=20=E7=B2=BE=E7=AE=80=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/celess/blog/controller/LinksController.java | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/src/main/java/cn/celess/blog/controller/LinksController.java b/src/main/java/cn/celess/blog/controller/LinksController.java index f79c588..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,14 +46,7 @@ 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); } -- 2.49.1 From 7f17c20e017e179eaef3504adbe2b67f714b10ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Mon, 31 Aug 2020 10:34:34 +0800 Subject: [PATCH 13/15] =?UTF-8?q?=E7=A7=BB=E9=99=A4=E6=97=A0=E6=95=88?= =?UTF-8?q?=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.sh | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 build.sh 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 "更新结束" -- 2.49.1 From a59bb7f2312d8b57f9d5e1a69d113a4e34c740ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Mon, 31 Aug 2020 12:45:49 +0800 Subject: [PATCH 14/15] =?UTF-8?q?feat(login):=20=E9=9D=9E=E6=AD=A3?= =?UTF-8?q?=E5=B8=B8=E8=B4=A6=E6=88=B7=E4=B8=8D=E5=8F=AF=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/celess/blog/enmu/ResponseEnum.java | 1 + .../cn/celess/blog/exception/MyException.java | 6 +++ .../service/serviceimpl/UserServiceImpl.java | 10 ++++- .../celess/blog/service/UserServiceTest.java | 43 +++++++++++++++++++ 4 files changed, 58 insertions(+), 2 deletions(-) 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/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/service/serviceimpl/UserServiceImpl.java b/src/main/java/cn/celess/blog/service/serviceimpl/UserServiceImpl.java index fd8ea2d..680f071 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; @@ -99,6 +100,12 @@ 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.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) { @@ -106,8 +113,7 @@ public class UserServiceImpl implements UserService { throw new MyException(ResponseEnum.LOGIN_LATER, loginReq.getEmail()); } } - User user = null; - user = userMapper.findByEmail(loginReq.getEmail()); + String token = null; // 密码比对 if (user == null) { diff --git a/src/test/java/cn/celess/blog/service/UserServiceTest.java b/src/test/java/cn/celess/blog/service/UserServiceTest.java index a273bbb..04661eb 100644 --- a/src/test/java/cn/celess/blog/service/UserServiceTest.java +++ b/src/test/java/cn/celess/blog/service/UserServiceTest.java @@ -1,9 +1,15 @@ 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; @@ -12,6 +18,8 @@ import static org.junit.Assert.*; public class UserServiceTest extends BaseTest { @Autowired UserService userService; + @Autowired + UserMapper userMapper; @Test public void getUserList() { @@ -27,4 +35,39 @@ public class UserServiceTest extends BaseTest { 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 -- 2.49.1 From 925e816f7a9d2525d95a944f36e7f27ac239c0df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A6=BE=E5=87=A0=E6=B5=B7?= Date: Mon, 31 Aug 2020 12:47:19 +0800 Subject: [PATCH 15/15] =?UTF-8?q?fix(login):=20=E8=B4=A6=E6=88=B7=E4=B8=8D?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=E6=97=B6=E5=BC=95=E5=8F=91=E7=9A=84=E7=A9=BA?= =?UTF-8?q?=E5=80=BC=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../blog/service/serviceimpl/UserServiceImpl.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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 680f071..1cae19c 100644 --- a/src/main/java/cn/celess/blog/service/serviceimpl/UserServiceImpl.java +++ b/src/main/java/cn/celess/blog/service/serviceimpl/UserServiceImpl.java @@ -102,6 +102,10 @@ public class UserServiceImpl implements UserService { } 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())); } @@ -114,12 +118,8 @@ public class UserServiceImpl implements UserService { } } - 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()); -- 2.49.1