更新配套教程

This commit is contained in:
Veal98 2021-07-20 00:11:08 +08:00
parent 71a4b24cfe
commit c0ae1c766b
7 changed files with 126 additions and 20 deletions

View File

@ -76,8 +76,7 @@ Echo 是一套前后端不分离的开源社区系统,基于目前主流 Java
- [Echo 的发送私信是怎么做的](https://mp.weixin.qq.com/s/gLn5VXegsip5Od5gx52iUA)
- [Echo 的点赞模块是怎么做的](https://mp.weixin.qq.com/s/lzPp5XeATTlHOCc8p5MF_w)
- [Echo 的关注模块是怎么做的](https://mp.weixin.qq.com/s/dx2jBqlUnhep7O6oknR5cg)
- Echo 的发送系统通知是怎么做的
- Echo 的系统通知是如何显示的
- [Echo 的系统通知模块是怎么做的](https://mp.weixin.qq.com/s/SqATRA8Wt2a4GYWv0HqQAA)
- Echo 的置顶、加精、删除帖子是怎么做的
- Echo 是如何统计网站数据的
- Echo 的搜索模块是怎么做的
@ -136,6 +135,10 @@ Echo 是一套前后端不分离的开源社区系统,基于目前主流 Java
![](https://gitee.com/veal98/images/raw/master/img/20210211205558.png)
密码重置页:
![](https://gitee.com/veal98/images/raw/master/img/20210709003428.png)
帖子发布页(支持 MarkDown
![](https://gitee.com/veal98/images/raw/master/img/20210512101041.png)
@ -274,9 +277,9 @@ Echo 是一套前后端不分离的开源社区系统,基于目前主流 Java
以下是我觉得本项目还可以添加的功能,同样欢迎各位小伙伴提 issue 指出还可以增加哪些功能,或者直接提 PR 实现该功能:
- [x] 发帖支持 Markdown 格式
- [ ] 忘记密码(发送邮件找回密码
- [x] 忘记密码发送邮件找回密码Implemented by [逆光影者 (cpfree) ](https://gitee.com/cpfree)
- [ ] 查询我的点赞
- [x] 管理员对帖子的二次点击取消置顶功能
- [x] 管理员对帖子的二次点击取消置顶功能Partially Implement by [Max (Lyingfromyou)](https://gitee.com/Lyingfromyou)
- [ ] 管理员对已删除帖子的恢复功能(本项目中的删除帖子并未将其从数据库中删除,只是将其状态设置为了拉黑)
## 🌱 本地运行
@ -516,6 +519,7 @@ double score = Math.log10(Math.max(w, 1))
- [freedom_dh](https://gitee.com/dh_free)
- [paulisusu](https://gitee.com/paulisusu)
- [Max (Lyingfromyou)](https://gitee.com/Lyingfromyou)
- [逆光影者 (cpfree) ](https://gitee.com/cpfree)
> 🔗 友情链接(若您想要出现在这里,可以上方扫描微信二维码联系我):
>

View File

@ -49,8 +49,7 @@ Echo 是一套前后端不分离的开源社区系统,基于目前主流 Java
- [Echo 的发送私信是怎么做的](https://mp.weixin.qq.com/s/gLn5VXegsip5Od5gx52iUA)
- [Echo 的点赞模块是怎么做的](https://mp.weixin.qq.com/s/lzPp5XeATTlHOCc8p5MF_w)
- [Echo 的关注模块是怎么做的](https://mp.weixin.qq.com/s/dx2jBqlUnhep7O6oknR5cg)
- Echo 的发送系统通知是怎么做的
- Echo 的系统通知是如何显示的
- [Echo 的系统通知模块是怎么做的](https://mp.weixin.qq.com/s/SqATRA8Wt2a4GYWv0HqQAA)
- Echo 的置顶、加精、删除帖子是怎么做的
- Echo 是如何统计网站数据的
- Echo 的搜索模块是怎么做的
@ -108,6 +107,12 @@ Echo 是一套前后端不分离的开源社区系统,基于目前主流 Java
![](https://gitee.com/veal98/images/raw/master/img/20210211205558.png)
密码重置页:
![](https://gitee.com/veal98/images/raw/master/img/20210709003428.png)
帖子发布页(支持 MarkDown
![](https://gitee.com/veal98/images/raw/master/img/20210512101041.png)
@ -244,9 +249,9 @@ Echo 是一套前后端不分离的开源社区系统,基于目前主流 Java
以下是我觉得本项目还可以添加的功能,同样欢迎各位小伙伴提 issue 指出还可以增加哪些功能,或者直接提 PR 实现该功能:
- [x] 发帖支持 Markdown 格式
- [ ] 忘记密码(发送邮件找回密码
- [x] 忘记密码发送邮件找回密码Implemented by [逆光影者 (cpfree) ](https://gitee.com/cpfree)
- [ ] 查询我的点赞
- [x] 管理员对帖子的二次点击取消置顶功能
- [x] 管理员对帖子的二次点击取消置顶功能Partially Implement by [Max (Lyingfromyou)](https://gitee.com/Lyingfromyou)
- [ ] 管理员对已删除帖子的恢复功能(本项目中的删除帖子并未将其从数据库中删除,只是将其状态设置为了拉黑)
## 🌱 本地运行
@ -486,6 +491,7 @@ double score = Math.log10(Math.max(w, 1))
- [freedom_dh](https://gitee.com/dh_free)
- [paulisusu](https://gitee.com/paulisusu)
- [Max (Lyingfromyou)](https://gitee.com/Lyingfromyou)
- [逆光影者 (cpfree) ](https://gitee.com/cpfree)
> 🔗 友情链接(若您想要出现在这里,可以上方扫描微信二维码联系我):
>

View File

@ -20,10 +20,8 @@ import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;

View File

@ -36,12 +36,6 @@ public class EventConsumer implements CommunityConstant {
@Autowired
private ElasticsearchService elasticsearchService;
@Value("${qiniu.key.access}")
private String accessKey;
@Value("${qiniu.key.secret}")
private String secretKey;
/**
* 消费评论点赞关注事件
* @param record

View File

@ -44,8 +44,6 @@ public interface CommunityConstant {
// Kafka 主题删帖
String TOPIC_DELETE = "delete";
// Kafka 主题分享
String TOPIC_SHARE = "share";
// 系统用户的 id
int SYSTEM_USER_ID = 1;

View File

@ -0,0 +1,106 @@
<!doctype html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="icon" type="shortcut icon" th:href="@{/img/favicon.ico}"/>
<link rel="stylesheet" type="text/css" th:href="@{/css/bootstrap.min.css}"/>
<link rel="stylesheet" type="text/css" th:href="@{/css/global.css}"/>
<link rel="stylesheet" type="text/css" th:href="@{/css/login.css}"/>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.3.0/font/bootstrap-icons.css">
<title>Echo - 重置密码</title>
</head>
<body>
<div class="nk-container">
<!-- 头部 -->
<header class="bg-dark sticky-top" th:replace="index::header"></header>
<!-- 内容 -->
<div class="main">
<div class="container pl-5 pr-5 pt-3 pb-3 mt-3 mb-3">
<h3 class="text-center text-info border-bottom pb-3">重置&nbsp;&nbsp;密码</h3>
<form class="mt-5" id="resetPwdForm">
<div class="form-group row">
<label for="username" class="col-sm-2 col-form-label text-right">账号或邮箱:</label>
<div class="col-sm-10">
<input type="text" id="username"
th:class="|form-control ${usernameMsg!=null ? 'is-invalid' : ''}|"
th:value="${user!=null ? user.username : ''}"
name="username" placeholder="请输入您的账号或绑定的邮箱!" required>
<!--错误提示消息, 当 上面的 input class = is-invalid 时显示-->
<div class="invalid-feedback">
请输入请输入您的账号或绑定的邮箱
</div>
</div>
</div>
<div class="form-group row mt-4">
<label for="password" class="col-sm-2 col-form-label text-right">新密码:</label>
<div class="col-sm-10">
<input type="password" id="password"
th:class="|form-control ${passwordMsg!=null ? 'is-invalid' : ''}|"
th:value="${user!=null ? user.password : ''}"
name="password" placeholder="请输入新密码!" required>
<!--错误提示消息-->
<div class="invalid-feedback">
请输入新密码
</div>
</div>
</div>
<div class="form-group row mt-4">
<label for="confirm-password" class="col-sm-2 col-form-label text-right">确认新密码:</label>
<div class="col-sm-10">
<input type="password" class="form-control" id="confirm-password"
th:value="${user!=null ? user.password : ''}"
placeholder="请再次输入新密码!" required>
<div class="invalid-feedback">
请确任两次密码是否匹配
</div>
</div>
</div>
<div class="form-group row mt-4">
<label for="kaptchaCode" class="col-sm-2 col-form-label text-right">验证码:</label>
<div class="col-sm-6">
<input type="text" th:class="|form-control ${codeMsg != null ? 'is-invalid' : ''}|"
id="kaptchaCode" name="kaptchaCode" placeholder="请输入验证码!">
<div class="invalid-feedback">
请输入图片验证码
</div>
</div>
<div class="col-sm-4">
<a href="javascript:refresh_kaptcha();" class="font-size-12 align-bottom">
<img th:src="@{/kaptcha}" id = "kaptcha" style="width:100px;height:40px;" class="mr-2"/>
</a>
</div>
</div>
<div class="form-group row mt-4">
<label for="emailVerifyCode" class="col-sm-2 col-form-label text-right">邮箱验证码:</label>
<div class="col-sm-6">
<input type="text" class="form-control" id="emailVerifyCode" name="emailVerifyCode" placeholder="请输入邮箱验证码!">
<div class="invalid-feedback">
请输入邮箱验证码
</div>
</div>
<div class="col-sm-4">
<a id="hideDiv" href="javascript:sendEmailCodeForResetPwd();" class="btn btn-info form-control">获取邮箱验证码</a>
</div>
</div>
<div class="form-group row mt-4">
<div class="col-sm-2"></div>
<div class="col-sm-10 text-center">
<button type="button" id="resetPwd" class="btn btn-info text-white form-control">重置密码</button>
</div>
</div>
</form>
</div>
</div>
<!-- 尾部 -->
<footer class="bg-dark" th:replace="index::footer"></footer>
</div>
<script th:src="@{/js/jquery-3.1.0.min.js}"></script>
<script th:src="@{/js/popper.min.js}"></script>
<script th:src="@{/js/bootstrap.min.js}"></script>
<script th:src="@{/js/forget.js}"></script>
</body>
</html>

View File

@ -18,7 +18,7 @@
<!-- 内容 -->
<div class="main">
<div class="container pl-5 pr-5 pt-3 pb-3 mt-3 mb-3">
<h3 class="text-center text-info border-bottom pb-3">重置&nbsp;&nbsp;密码</h3>
<h3 class="text-center text-info border-bottom pb-3">重置密码</h3>
<form class="mt-5" id="resetPwdForm">
<div class="form-group row">
<label for="username" class="col-sm-2 col-form-label text-right">账号或邮箱:</label>
@ -101,6 +101,6 @@
<script th:src="@{/js/jquery-3.1.0.min.js}"></script>
<script th:src="@{/js/popper.min.js}"></script>
<script th:src="@{/js/bootstrap.min.js}"></script>
<script th:src="@{/js/forget.js}"></script>
<script th:src="@{/static/js/reset-pwd.js}"></script>
</body>
</html>