KnowledgeSpace-后端
操作说明
超级管理员
-
一位
-
可注册用户(目前仅ROOT)
-
可修改用户为管理员
-
可创建任意用户的文件夹(请勿创建他人的根目录)
-
删除他人文件夹或文件
-
不可删除自身
-
管理员↓
管理员
- 可添加用户
- 可修改用户信息(姓名,密码)
- 可删除用户
- 角色↓
用户
- 自身信息
- 可上传、删除头像
- 可修改用户名,密码
- 可重置密码
- 可设置邮箱
- 可删除自己
- 文件夹
- 可创建文件夹
- 可修改文件夹名
- 可删除除根目录外的自身的文件夹
- 文件
- 可创建md文档
- 可上传文件(md,word,pdf)
- 可修改文件名
- 可修改文件内容(md,word)
- 可删除自身的文件
- 通用↓
通用
- 可分页查询用户
- 可通过姓名查询(模糊匹配)
- 可查看用户文件夹
- 可查看文件内容(md,word)
数据库
报错
端口占用
问题: 使用IDEA运行Spring Boot项目时,提示端口被占用.Web server failed to start. Port 8000 was already in use.
解决方法 1.更换端口 在更换多个端口后,依然报错。
2.查看是什么占用的端口
发现端口并没有被占用。
3.最终解决
除了端口确实被占用之外,还有一种可能就是端口属于系统保留端口,idea也会报端口被占用。
我们使用netsh interface ipv4 show excludedportrange protocol=tcp查看
我们发现我们之前使用的端口在7985~8084范围内。 知道原因后,我们有两个中解决方法: 一:选择这些端口范围之外的端口。 二:使用命令行修改动态端口的范围,使得这个保留端口的范围避开我们需要的端口范围。
原文链接:https://blog.csdn.net/zhengshuangyue/article/details/123181832
接口文档的配置
检查 Knife4j 配置
确保 Knife4j 配置正确,特别是在 Spring Boot 项目中,需要正确配置 Knife4j 的依赖和相关参数。
Maven 依赖配置示例:
xml复制代码<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>3.0.2</version>
</dependency>
Spring Boot 配置示例(application.yml)(如果下面的配置文件写了,这里可忽略):
knife4j:
enable: true
openapi:
title: "Your API Documentation"
version: 1.0
contact:
name: "Your Contact Name"
email: "[email protected]"
url: "https://yourwebsite.com"
license:
name: "Apache License 2.0"
url: "https://www.apache.org/licenses/LICENSE-2.0.html"
确保配置中的参数正确,特别是 enabled: true 表示启用 Swagger UI。
-
knife4j.enable: 启用 Knife4j。设置为true表示启用 Knife4j 功能,可以访问生成的 Swagger UI 页面查看 API 文档。 -
knife4j.openapi.title: 设置 OpenAPI 文档的标题。此标题将显示在 Swagger UI 页面上,通常用来描述 API 文档的名称或项目名称。在这个例子中,标题被设置为 "Your API Documentation"。 -
knife4j.openapi.version: 设置 OpenAPI 文档的版本号。此版本号将显示在 Swagger UI 页面上,帮助用户了解当前文档的版本。在这个例子中,版本号被设置为1.0。 -
knife4j.openapi.contact: 设置联系人信息:
knife4j.openapi.contact.name: 设置 API 文档的联系人姓名。knife4j.openapi.contact.email: 设置 API 文档的联系人邮箱地址。knife4j.openapi.contact.url: 设置 API 文档的联系地址 URL,通常是相关项目或组织的网站链接。
-
knife4j.openapi.license: 设置许可证信息:
knife4j.openapi.license.name: 设置 API 文档的许可证名称,例如 Apache License 2.0。knife4j.openapi.license.url: 设置 API 文档的许可证 URL,通常是具体许可证条款的网址链接,供用户查阅详细信息。
在config文件夹里写Knife4jConfig配置文件
package com.happlay.ks.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2WebMvc;
@Configuration
@EnableSwagger2WebMvc
public class Knife4jConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2) // 使用 OAS 3.0 文档类型
.apiInfo(new ApiInfoBuilder()
.title("接口文档")
.description("KnowledgeSpace")
.version("1.0")
.build())
.select()
.apis(RequestHandlerSelectors.basePackage("com.happlay.ks.controller")) // 与对应的Controller层一致
.paths(PathSelectors.any())
.build();
}
}
创建工具类-common
工具类(Utility Class)是指那些包含一组静态方法或常量的类,这些方法或常量通常是与特定任务或一组相关任务相关联的。工具类不持有任何状态,不创建实例,提供的是一些通用功能,供其他类和组件调用。
工具类的特点
- 静态方法:工具类中的方法通常是静态的,因为它们不需要依赖类的实例来调用。
- 不可实例化:通常通过私有构造函数(private constructor)来防止实例化。
- 通用性强:提供通用、复用的功能,简化其他类的开发工作。
工具类的作用
- 代码复用:将通用的功能抽取到工具类中,避免代码重复,提高代码的复用性。
- 代码清晰:将杂乱的工具性代码集中到工具类中,使得业务类的逻辑更加清晰。
- 维护性高:集中管理通用功能,如果需要修改某个通用功能,只需要修改工具类中的方法。
DTO,VO,POJO

实现邮箱验证
为了使用谷歌的邮箱来发送邮件,你需要配置SMTP服务器,并确保你的应用可以通过Gmail的SMTP服务器发送邮件。以下是实现这个功能的完整流程,包括代码示例:
1. 添加依赖
确保在pom.xml中添加了spring-boot-starter-mail依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2. 配置邮件属性
在application.properties或application.yml中添加Gmail SMTP配置:
spring:
mail:
host: smtp.163.com
port: 587
username: your-[email protected]
password: your-email-password
properties:
mail:
smtp:
auth: true
starttls:
enable: true
required: true
socketFactory:
class: javax.net.ssl.SSLSocketFactory
fallback: false
- spring.mail.host: smtp.gmail.com
- 指定邮件服务器的主机地址为
smtp.gmail.com,这是用于发送邮件的Gmail SMTP服务器地址。
- 指定邮件服务器的主机地址为
- spring.mail.port: 587
- 设置邮件服务器的端口号为
587,这是Gmail SMTP服务器的TLS加密连接端口。
- 设置邮件服务器的端口号为
- spring.mail.username: [email protected]
- 指定用于登录SMTP服务器的邮箱账号,这里替换为你的Gmail邮箱地址。
- spring.mail.password: your-password
- 设置用于登录SMTP服务器的邮箱密码,这里替换为你的Gmail邮箱密码。这是敏感信息,应该保护好,避免直接暴露在公开的代码仓库中。
- spring.mail.properties.mail.smtp.auth: true
- 配置SMTP认证机制为开启,确保可以使用指定的用户名和密码进行SMTP服务器的认证。
- spring.mail.properties.mail.smtp.starttls.enable: true
- 开启STARTTLS支持,这是一种安全传输协议,用于在SMTP连接中启用TLS加密。
- spring.mail.properties.mail.smtp.ssl.trust: smtp.gmail.com
- 配置SMTP服务器的SSL信任,指 定信任的SMTP服务器地址为
smtp.gmail.com,确保与Gmail SMTP服务器建立安全连接。
- 配置SMTP服务器的SSL信任,指 定信任的SMTP服务器地址为
3. 创建邮件服务类
创建一个服务类来处理邮件发送逻辑:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.stereotype.Service;
@Service
public class EmailService {
@Resource
private JavaMailSender mailSender;
public void sendVerificationCode(String fromEmail, String to, String subject, String text) {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(fromEmail); // 直接设置完整的发件人邮箱地址
message.setTo(to);
message.setSubject(subject);
message.setText(text);
mailSender.send(message);
}
}
