From a4a47867065497e08a20fc08eb2c63f9ff2c7026 Mon Sep 17 00:00:00 2001 From: Linxb <448923515@qq.com> Date: Tue, 24 Sep 2019 13:55:19 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E6=96=B0=E5=BB=BA=E6=A0=8F=E7=9B=AE?= =?UTF-8?q?=E6=97=B6=EF=BC=8C=E5=A2=9E=E5=8A=A0=E6=A0=8F=E7=9B=AE=E5=90=8D?= =?UTF-8?q?=E7=A7=B0=E4=B8=8D=E4=B8=BA=E7=A9=BA=E7=9A=84=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/sang/controller/CategoryController.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/blogserver/src/main/java/org/sang/controller/CategoryController.java b/blogserver/src/main/java/org/sang/controller/CategoryController.java index f099f988..17dfe850 100644 --- a/blogserver/src/main/java/org/sang/controller/CategoryController.java +++ b/blogserver/src/main/java/org/sang/controller/CategoryController.java @@ -36,7 +36,13 @@ public RespBean deleteById(@PathVariable String ids) { @RequestMapping(value = "/", method = RequestMethod.POST) public RespBean addNewCate(Category category) { + + if ("".equals(category.getCateName()) || category.getCateName() == null) { + return new RespBean("error", "请输入栏目名称!"); + } + int result = categoryService.addCategory(category); + if (result == 1) { return new RespBean("success", "添加成功!"); } From 3e0fd4a5fe280d251735a7453a683855693a74c3 Mon Sep 17 00:00:00 2001 From: Linxb <448923515@qq.com> Date: Tue, 24 Sep 2019 20:59:48 +0800 Subject: [PATCH 02/12] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=9B=9E=E6=94=B6?= =?UTF-8?q?=E7=AB=99=E6=96=87=E7=AB=A0=E8=BF=98=E5=8E=9F=E5=88=B0=E8=BF=9C?= =?UTF-8?q?=E5=A4=84=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sang/controller/ArticleController.java | 8 +++++ .../java/org/sang/mapper/ArticleMapper.java | 2 ++ .../java/org/sang/mapper/ArticleMapper.xml | 4 ++- .../java/org/sang/service/ArticleService.java | 4 +++ vueblog/src/components/ArticleList.vue | 10 +++--- vueblog/src/components/BlogTable.vue | 33 ++++++++++++++++++- 6 files changed, 54 insertions(+), 7 deletions(-) diff --git a/blogserver/src/main/java/org/sang/controller/ArticleController.java b/blogserver/src/main/java/org/sang/controller/ArticleController.java index 77a489f1..ffc767b1 100644 --- a/blogserver/src/main/java/org/sang/controller/ArticleController.java +++ b/blogserver/src/main/java/org/sang/controller/ArticleController.java @@ -93,6 +93,14 @@ public RespBean updateArticleState(Long[] aids, Integer state) { return new RespBean("error", "删除失败!"); } + @RequestMapping(value = "/restore", method = RequestMethod.PUT) + public RespBean restoreArticle(Integer articleId) { + if (articleService.restoreArticle(articleId) == 1) { + return new RespBean("success", "还原成功!"); + } + return new RespBean("error", "还原失败!"); + } + @RequestMapping("/dataStatistics") public Map dataStatistics() { Map map = new HashMap<>(); diff --git a/blogserver/src/main/java/org/sang/mapper/ArticleMapper.java b/blogserver/src/main/java/org/sang/mapper/ArticleMapper.java index 7fd00bb6..2f893025 100644 --- a/blogserver/src/main/java/org/sang/mapper/ArticleMapper.java +++ b/blogserver/src/main/java/org/sang/mapper/ArticleMapper.java @@ -23,6 +23,8 @@ public interface ArticleMapper { int updateArticleState(@Param("aids") Long aids[], @Param("state") Integer state); + int updateArticleStateById(@Param("articleId") Integer articleId, @Param("state") Integer state); + int deleteArticleById(@Param("aids") Long[] aids); Article getArticleById(Long aid); diff --git a/blogserver/src/main/java/org/sang/mapper/ArticleMapper.xml b/blogserver/src/main/java/org/sang/mapper/ArticleMapper.xml index d304dd23..9d594272 100644 --- a/blogserver/src/main/java/org/sang/mapper/ArticleMapper.xml +++ b/blogserver/src/main/java/org/sang/mapper/ArticleMapper.xml @@ -65,7 +65,9 @@ #{aid} - + + UPDATE article SET state=#{state} WHERE id = #{articleId} + DELETE FROM article WHERE id IN diff --git a/blogserver/src/main/java/org/sang/service/ArticleService.java b/blogserver/src/main/java/org/sang/service/ArticleService.java index 7842abdf..f4809e5a 100644 --- a/blogserver/src/main/java/org/sang/service/ArticleService.java +++ b/blogserver/src/main/java/org/sang/service/ArticleService.java @@ -113,6 +113,10 @@ public int updateArticleState(Long[] aids, Integer state) { } } + public int restoreArticle(Integer articleId) { + return articleMapper.updateArticleStateById(articleId, 1); // 从回收站还原在原处 + } + public Article getArticleById(Long aid) { Article article = articleMapper.getArticleById(aid); articleMapper.pvIncrement(aid); diff --git a/vueblog/src/components/ArticleList.vue b/vueblog/src/components/ArticleList.vue index 304133eb..ddf90d34 100644 --- a/vueblog/src/components/ArticleList.vue +++ b/vueblog/src/components/ArticleList.vue @@ -3,19 +3,19 @@ - + - + - + - + - + diff --git a/vueblog/src/components/BlogTable.vue b/vueblog/src/components/BlogTable.vue index 6f427447..c91d2f92 100644 --- a/vueblog/src/components/BlogTable.vue +++ b/vueblog/src/components/BlogTable.vue @@ -57,6 +57,10 @@ size="mini" @click="handleEdit(scope.$index, scope.row)" v-if="showEdit">编辑 + 还原 + { + _this.loading = true; + putRequest('/article/restore', {articleId: row.id}).then(resp=> { + if (resp.status == 200) { + var data = resp.data; + _this.$message({type: data.status, message: data.msg}); + if (data.status == 'success') { + window.bus.$emit('blogTableReload')//通过选项卡都重新加载数据 + } + } else { + _this.$message({type: 'error', message: '还原失败!'}); + } + _this.loading = false; + }); + }).catch(() => { + _this.$message({ + type: 'info', + message: '已取消还原' + }); + }); + }, deleteToDustBin(state){ var _this = this; this.$confirm(state != 2 ? '将该文件放入回收站,是否继续?' : '永久删除该文件, 是否继续?', '提示', { @@ -208,6 +239,6 @@ }); } }, - props: ['state', 'showEdit', 'showDelete', 'activeName'] + props: ['state', 'showEdit', 'showDelete', 'activeName', 'showRestore'] } From b47d7b30741b5370532a2bc43550730bd8820d3a Mon Sep 17 00:00:00 2001 From: lenve Date: Sat, 9 Nov 2019 17:31:34 +0800 Subject: [PATCH 03/12] Update .gitattributes --- .gitattributes | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitattributes b/.gitattributes index 0546f650..8a127fc4 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2,4 +2,4 @@ *.less linguist-language=Java *.js linguist-language=Java *.html linguist-language=Java -*.vue linguist-language=Java \ No newline at end of file +*.vue linguist-language=Java From 35a81d6b9154b59378f8f9d3d6eb3bf36563ea55 Mon Sep 17 00:00:00 2001 From: lenve Date: Sat, 9 Nov 2019 18:00:03 +0800 Subject: [PATCH 04/12] Update .gitignore --- vueblog/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/vueblog/.gitignore b/vueblog/.gitignore index 541a820f..81de835b 100644 --- a/vueblog/.gitignore +++ b/vueblog/.gitignore @@ -12,3 +12,4 @@ yarn-error.log* *.ntvs* *.njsproj *.sln +.editorconfig \ No newline at end of file From cf8c294fe1a86fb3a571f3337d94127ee171fbd7 Mon Sep 17 00:00:00 2001 From: lenve Date: Sat, 9 Nov 2019 18:03:09 +0800 Subject: [PATCH 05/12] Create .gitignore --- .gitignore | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..7f4ecdf7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,8 @@ +node_modules/ +/dist/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* +.idea +target/ +!.mvn/wrapper/maven-wrapper.jar \ No newline at end of file From 02a76adb959eae4ab546f52f7f00f43803ff647b Mon Sep 17 00:00:00 2001 From: lenve Date: Sat, 9 Nov 2019 18:06:15 +0800 Subject: [PATCH 06/12] Update .gitattributes --- .gitattributes | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitattributes b/.gitattributes index 8a127fc4..20155573 100644 --- a/.gitattributes +++ b/.gitattributes @@ -3,3 +3,4 @@ *.js linguist-language=Java *.html linguist-language=Java *.vue linguist-language=Java +*.xml linguist-language=Java From 9aee11ba306a632cb16b94bedd245713477fbe3a Mon Sep 17 00:00:00 2001 From: lenve Date: Sat, 9 Nov 2019 18:09:48 +0800 Subject: [PATCH 07/12] Update .gitattributes --- .gitattributes | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitattributes b/.gitattributes index 20155573..6cfd1957 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4,3 +4,4 @@ *.html linguist-language=Java *.vue linguist-language=Java *.xml linguist-language=Java +*.sql linguist-language=Java From dbd6c4b6bfd1bd144049c39e8cbe3ad94c0ff182 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=9F=E5=8D=97=E4=B8=80=E7=82=B9=E9=9B=A8?= Date: Thu, 27 Feb 2020 23:00:55 +0800 Subject: [PATCH 08/12] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1a2302ae..c3e68068 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -扫码加微信,备注V部落,进群讨论。 +扫码加微信(微信ID:a_java_boy2),备注V部落,进群讨论。 ![](http://www.javaboy.org/images/weixin.png) From 63d6ac3c0f12ba801c9e90c0191db1848f665c46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=9F=E5=8D=97=E4=B8=80=E7=82=B9=E9=9B=A8?= Date: Thu, 27 Feb 2020 23:01:59 +0800 Subject: [PATCH 09/12] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index c3e68068..7e131ce0 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ ![](http://www.javaboy.org/images/weixin.png) +V 部落姊妹篇:[https://github.com/lenve/vhr](https://github.com/lenve/vhr) + V部落是一个多用户博客管理平台,采用Vue+SpringBoot开发。 项目演示地址: [http://45.77.146.32:8081/index.html](http://45.77.146.32:8081/index.html) From d49fd14d872716126dd8a09f61fe5d0a245f4b12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=9F=E5=8D=97=E4=B8=80=E7=82=B9=E9=9B=A8?= Date: Thu, 27 Feb 2020 23:26:45 +0800 Subject: [PATCH 10/12] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7e131ce0..8610cb47 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -扫码加微信(微信ID:a_java_boy2),备注V部落,进群讨论。 +扫码加微信(微信ID:**a_java_boy2**),备注V部落,进群讨论。 ![](http://www.javaboy.org/images/weixin.png) From ded0daa2b189f094c89ce4912d3ca803062ff14b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=9F=E5=8D=97=E4=B8=80=E7=82=B9=E9=9B=A8?= Date: Thu, 27 Feb 2020 23:35:23 +0800 Subject: [PATCH 11/12] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8610cb47..930c573d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ 扫码加微信(微信ID:**a_java_boy2**),备注V部落,进群讨论。 -![](http://www.javaboy.org/images/weixin.png) +![](https://user-images.githubusercontent.com/6023444/75459026-ba70d500-59b9-11ea-8cbd-3d5889f356c4.png) V 部落姊妹篇:[https://github.com/lenve/vhr](https://github.com/lenve/vhr) From abc45a9366c00ce81f00f1e1f336f5a053c1dc54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B1=9F=E5=8D=97=E4=B8=80=E7=82=B9=E9=9B=A8?= Date: Fri, 15 May 2020 15:53:24 +0800 Subject: [PATCH 12/12] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=AF=86=E7=A0=81?= =?UTF-8?q?=E5=8A=A0=E5=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- blogserver/pom.xml | 2 +- .../org/sang/config/MyPasswordEncoder.java | 27 +++++++++++++++++++ .../org/sang/config/WebSecurityConfig.java | 17 +----------- .../sang/controller/LoginRegController.java | 3 ++- .../java/org/sang/service/UserService.java | 6 ++++- .../src/main/resources/application.properties | 6 ++--- 6 files changed, 39 insertions(+), 22 deletions(-) create mode 100644 blogserver/src/main/java/org/sang/config/MyPasswordEncoder.java diff --git a/blogserver/pom.xml b/blogserver/pom.xml index ced5cf6d..215beab7 100644 --- a/blogserver/pom.xml +++ b/blogserver/pom.xml @@ -14,7 +14,7 @@ org.springframework.boot spring-boot-starter-parent - 1.5.9.RELEASE + 2.2.7.RELEASE diff --git a/blogserver/src/main/java/org/sang/config/MyPasswordEncoder.java b/blogserver/src/main/java/org/sang/config/MyPasswordEncoder.java new file mode 100644 index 00000000..b51e8665 --- /dev/null +++ b/blogserver/src/main/java/org/sang/config/MyPasswordEncoder.java @@ -0,0 +1,27 @@ +package org.sang.config; + +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Component; +import org.springframework.util.DigestUtils; + +/** + * @作者 江南一点雨 + * @微信公众号 江南一点雨 + * @网站 http://www.itboyhub.com + * @国际站 http://www.javaboy.org + * @微信 a_java_boy + * @GitHub https://github.com/lenve + * @Gitee https://gitee.com/lenve + */ +@Component +public class MyPasswordEncoder implements PasswordEncoder { + @Override + public String encode(CharSequence rawPassword) { + return DigestUtils.md5DigestAsHex(rawPassword.toString().getBytes()); + } + + @Override + public boolean matches(CharSequence rawPassword, String encodedPassword) { + return encodedPassword.equals(DigestUtils.md5DigestAsHex(rawPassword.toString().getBytes())); + } +} diff --git a/blogserver/src/main/java/org/sang/config/WebSecurityConfig.java b/blogserver/src/main/java/org/sang/config/WebSecurityConfig.java index e8a6976f..ae7c648b 100644 --- a/blogserver/src/main/java/org/sang/config/WebSecurityConfig.java +++ b/blogserver/src/main/java/org/sang/config/WebSecurityConfig.java @@ -32,22 +32,7 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { - auth.userDetailsService(userService).passwordEncoder(new PasswordEncoder() { - @Override - public String encode(CharSequence charSequence) { - return DigestUtils.md5DigestAsHex(charSequence.toString().getBytes()); - } - - /** - * @param charSequence 明文 - * @param s 密文 - * @return - */ - @Override - public boolean matches(CharSequence charSequence, String s) { - return s.equals(DigestUtils.md5DigestAsHex(charSequence.toString().getBytes())); - } - }); + auth.userDetailsService(userService); } @Override diff --git a/blogserver/src/main/java/org/sang/controller/LoginRegController.java b/blogserver/src/main/java/org/sang/controller/LoginRegController.java index 23fea02a..0c7a39e9 100644 --- a/blogserver/src/main/java/org/sang/controller/LoginRegController.java +++ b/blogserver/src/main/java/org/sang/controller/LoginRegController.java @@ -4,6 +4,7 @@ import org.sang.bean.User; import org.sang.service.UserService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -38,7 +39,7 @@ public RespBean loginPage() { return new RespBean("error", "尚未登录,请登录!"); } - @RequestMapping("/reg") + @PostMapping("/reg") public RespBean reg(User user) { int result = userService.reg(user); if (result == 0) { diff --git a/blogserver/src/main/java/org/sang/service/UserService.java b/blogserver/src/main/java/org/sang/service/UserService.java index 7a17f2bd..11c67cca 100644 --- a/blogserver/src/main/java/org/sang/service/UserService.java +++ b/blogserver/src/main/java/org/sang/service/UserService.java @@ -2,6 +2,7 @@ import org.sang.bean.Role; import org.sang.bean.User; +import org.sang.config.MyPasswordEncoder; import org.sang.mapper.RolesMapper; import org.sang.mapper.UserMapper; import org.sang.utils.Util; @@ -9,6 +10,7 @@ import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.DigestUtils; @@ -25,6 +27,8 @@ public class UserService implements UserDetailsService { UserMapper userMapper; @Autowired RolesMapper rolesMapper; + @Autowired + PasswordEncoder passwordEncoder; @Override public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException { @@ -51,7 +55,7 @@ public int reg(User user) { return 1; } //插入用户,插入之前先对密码进行加密 - user.setPassword(DigestUtils.md5DigestAsHex(user.getPassword().getBytes())); + user.setPassword(passwordEncoder.encode(user.getPassword())); user.setEnabled(true);//用户可用 long result = userMapper.reg(user); //配置用户的角色,默认都是普通用户 diff --git a/blogserver/src/main/resources/application.properties b/blogserver/src/main/resources/application.properties index 857ce9a6..0e4544cc 100644 --- a/blogserver/src/main/resources/application.properties +++ b/blogserver/src/main/resources/application.properties @@ -1,7 +1,7 @@ spring.datasource.type=com.alibaba.druid.pool.DruidDataSource -spring.datasource.url=jdbc:mysql:///vueblog?useUnicode=true&characterEncoding=UTF-8 -spring.datasource.username=username -spring.datasource.password=password +spring.datasource.url=jdbc:mysql:///vueblog2?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai +spring.datasource.username=root +spring.datasource.password=123 mybatis.config-location=classpath:/mybatis-config.xml server.port=8081