升级为springboot3,更新开发文档

czq
2991692032 2 weeks ago
parent 98634565d9
commit 33c72dc7e4

@ -1,115 +1,145 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId> <groupId>com.example</groupId>
<artifactId>unilife-server</artifactId> <artifactId>unilife-server</artifactId>
<version>0.0.1-SNAPSHOT</version> <version>0.0.1-SNAPSHOT</version>
<name>backend</name> <name>backend</name>
<description>backend</description> <description>backend</description>
<properties> <properties>
<java.version>1.8</java.version> <java.version>17</java.version>
<spring-boot.version>3.4.3</spring-boot.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.7.6</spring-boot.version>
</properties> </properties>
<dependencyManagement>
<dependencies> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- Web -->
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
</dependency> </dependency>
<!-- MyBatis -->
<dependency> <dependency>
<groupId>org.mybatis.spring.boot</groupId> <groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId> <artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.3.0</version> <version>3.0.4</version>
</dependency> </dependency>
<!-- MySQL Connector -->
<dependency> <dependency>
<groupId>com.mysql</groupId> <groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId> <artifactId>mysql-connector-j</artifactId>
<version>8.0.33</version>
<scope>runtime</scope> <scope>runtime</scope>
</dependency> </dependency>
<!-- Lombok -->
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId> <artifactId>lombok</artifactId>
<version>1.18.36</version> <version>1.18.36</version>
<optional>true</optional> <scope>provided</scope>
</dependency> </dependency>
<!-- IP2Region -->
<dependency> <dependency>
<groupId>org.lionsoul</groupId> <groupId>org.lionsoul</groupId>
<artifactId>ip2region</artifactId> <artifactId>ip2region</artifactId>
<version>2.7.0</version> <version>2.7.0</version>
</dependency> </dependency>
<!-- Hutool -->
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>cn.hutool</groupId>
<artifactId>spring-boot-starter-test</artifactId> <artifactId>hutool-all</artifactId>
<scope>test</scope> <version>5.8.16</version>
</dependency> </dependency>
<!-- Knife4j - OpenAPI3 with Jakarta -->
<dependency> <dependency>
<groupId>com.github.xiaoymin</groupId> <groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi2-spring-boot-starter</artifactId> <artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>4.4.0</version> <version>4.4.0</version>
</dependency> </dependency>
<!-- JWT -->
<dependency> <dependency>
<groupId>cn.hutool</groupId> <groupId>io.jsonwebtoken</groupId>
<artifactId>hutool-all</artifactId> <artifactId>jjwt-api</artifactId>
<version>5.8.16</version> <version>0.11.5</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.11.5</version>
<scope>runtime</scope>
</dependency> </dependency>
<!-- jwt-->
<dependency> <dependency>
<groupId>io.jsonwebtoken</groupId> <groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId> <artifactId>jjwt-jackson</artifactId>
<version>0.9.1</version> <version>0.11.5</version>
<scope>runtime</scope>
</dependency> </dependency>
<!-- redis-->
<!-- Redis -->
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId> <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency> </dependency>
<!-- 邮箱服务-->
<!-- Mail -->
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId> <artifactId>spring-boot-starter-mail</artifactId>
</dependency> </dependency>
</dependencies> <!-- Test -->
<dependencyManagement>
<dependencies>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId> <artifactId>spring-boot-starter-test</artifactId>
<version>${spring-boot.version}</version> <scope>test</scope>
<type>pom</type>
<scope>import</scope>
</dependency> </dependency>
</dependencies> </dependencies>
</dependencyManagement>
<build> <build>
<plugins> <plugins>
<!-- 编译器插件 -->
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version> <version>3.11.0</version>
<configuration> <configuration>
<source>1.8</source> <source>${java.version}</source>
<target>1.8</target> <target>${java.version}</target>
<encoding>UTF-8</encoding> <encoding>UTF-8</encoding>
</configuration> </configuration>
</plugin> </plugin>
<!-- Spring Boot 插件 -->
<plugin> <plugin>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId> <artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version> <version>${spring-boot.version}</version>
<configuration>
<mainClass>com.example.unilife.BackendApplication</mainClass>
<skip>true</skip>
</configuration>
<executions> <executions>
<execution> <execution>
<id>repackage</id>
<goals> <goals>
<goal>repackage</goal> <goal>repackage</goal>
</goals> </goals>

@ -21,9 +21,11 @@ public class WebMvcConfig implements WebMvcConfigurer {
"/users/code", "/users/code",
"/users/login/code", "/users/login/code",
"/swagger-resources/**", "/swagger-resources/**",
"/v2/api-docs/**", "/v3/api-docs/**",
"/doc.html", "/doc.html",
"/webjars/**" "/webjars/**",
"/favicon.ico",
"/knife4j/**"
); );
} }

@ -9,8 +9,8 @@ import com.unilife.model.vo.LoginVO;
import com.unilife.service.UserService; import com.unilife.service.UserService;
import com.unilife.utils.BaseContext; import com.unilife.utils.BaseContext;
import com.unilife.utils.JwtUtil; import com.unilife.utils.JwtUtil;
import io.swagger.annotations.Api; import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.annotations.ApiOperation; import io.swagger.v3.oas.annotations.Operation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
@ -18,10 +18,9 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
@Tag(name = "用户管理")
@Api(tags = "用户管理")
@RestController @RestController
@RequestMapping("/users") @RequestMapping("/users")
@Slf4j @Slf4j
@ -32,17 +31,16 @@ public class UserController {
@Autowired @Autowired
private JwtUtil jwtUtil; private JwtUtil jwtUtil;
@ApiOperation(value = "用户注册") @Operation(summary = "用户注册")
@PostMapping("register") @PostMapping("register")
public Result<?> register(@RequestBody RegisterDTO registerDTO, HttpServletRequest request) { public Result<?> register(@RequestBody RegisterDTO registerDTO, HttpServletRequest request) {
return userService.register(registerDTO, request); return userService.register(registerDTO, request);
} }
@ApiOperation(value = "用户登录") @Operation(summary = "用户登录")
@PostMapping("login") @PostMapping("login")
public Result<?> login(@RequestBody LoginDTO loginDTO, HttpServletRequest request) { public Result<?> login(@RequestBody LoginDTO loginDTO, HttpServletRequest request) {
Result<?> login = userService.login(loginDTO, request); Result<?> login = userService.login(loginDTO, request);
//登陆成功后生成jwt令牌
LoginVO vo = (LoginVO) login.getData(); LoginVO vo = (LoginVO) login.getData();
if (vo == null) { if (vo == null) {
return login; return login;
@ -50,13 +48,11 @@ public class UserController {
Long id = vo.getId(); Long id = vo.getId();
String token = jwtUtil.generateToken(id); String token = jwtUtil.generateToken(id);
vo.setToken(token); vo.setToken(token);
//Threadlocal保存当前用户id
BaseContext.setId(id); BaseContext.setId(id);
return Result.success(vo); return Result.success(vo);
} }
@ApiOperation(value = "获取邮箱验证码") @Operation(summary = "获取邮箱验证码")
@PostMapping("code") @PostMapping("code")
public Result<?> getCode(@RequestBody EmailDTO emailDto, HttpServletRequest request) { public Result<?> getCode(@RequestBody EmailDTO emailDto, HttpServletRequest request) {
String email = emailDto.getEmail(); String email = emailDto.getEmail();
@ -64,7 +60,7 @@ public class UserController {
return userService.sendVerificationCode(email, request); return userService.sendVerificationCode(email, request);
} }
@ApiOperation(value = "邮箱验证码登录") @Operation(summary = "邮箱验证码登录")
@PostMapping("login/code") @PostMapping("login/code")
public Result<?> loginWithEmailCode(@RequestBody LoginEmailDTO loginEmailDTO, HttpServletRequest request) { public Result<?> loginWithEmailCode(@RequestBody LoginEmailDTO loginEmailDTO, HttpServletRequest request) {
return userService.loginWithEmail(loginEmailDTO, request); return userService.loginWithEmail(loginEmailDTO, request);

@ -3,14 +3,15 @@ package com.unilife.interceptor;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.unilife.utils.BaseContext; import com.unilife.utils.BaseContext;
import com.unilife.utils.JwtUtil; import com.unilife.utils.JwtUtil;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Component @Component
@Slf4j @Slf4j

@ -1,7 +1,6 @@
package com.unilife.service; package com.unilife.service;
import com.unilife.model.dto.LoginDTO; import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequest;
public interface IPLocationService { public interface IPLocationService {
public String getIPLocation(String ip); public String getIPLocation(String ip);

@ -4,8 +4,7 @@ import com.unilife.common.result.Result;
import com.unilife.model.dto.LoginDTO; import com.unilife.model.dto.LoginDTO;
import com.unilife.model.dto.LoginEmailDTO; import com.unilife.model.dto.LoginEmailDTO;
import com.unilife.model.dto.RegisterDTO; import com.unilife.model.dto.RegisterDTO;
import jakarta.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequest;
public interface UserService { public interface UserService {

@ -1,13 +1,11 @@
package com.unilife.service.impl; package com.unilife.service.impl;
import com.unilife.service.IPLocationService; import com.unilife.service.IPLocationService;
import jakarta.servlet.http.HttpServletRequest;
import org.lionsoul.ip2region.xdb.Searcher; import org.lionsoul.ip2region.xdb.Searcher;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ReflectionUtils;
import org.springframework.util.ResourceUtils; import org.springframework.util.ResourceUtils;
import javax.servlet.http.HttpServletRequest;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;

@ -15,6 +15,9 @@ import com.unilife.service.IPLocationService;
import com.unilife.service.UserService; import com.unilife.service.UserService;
import com.unilife.utils.JwtUtil; import com.unilife.utils.JwtUtil;
import com.unilife.utils.RegexUtils; import com.unilife.utils.RegexUtils;
import jakarta.mail.MessagingException;
import jakarta.mail.internet.MimeMessage;
import jakarta.servlet.http.HttpServletRequest;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
@ -24,9 +27,7 @@ import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import javax.servlet.http.HttpServletRequest;
import java.time.Duration; import java.time.Duration;
import java.util.HashMap; import java.util.HashMap;

@ -4,7 +4,7 @@ spring:
datasource: datasource:
url: jdbc:mysql://localhost:3306/UniLife?allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8 url: jdbc:mysql://localhost:3306/UniLife?allowPublicKeyRetrieval=true&useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8
username: root username: root
password: zhong20050428 password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
mail: mail:
host: smtp.163.com host: smtp.163.com
@ -20,9 +20,10 @@ spring:
socketFactory: socketFactory:
port: 465 port: 465
class: javax.net.ssl.SSLSocketFactory class: javax.net.ssl.SSLSocketFactory
data:
redis: redis:
host: 127.0.0.1
port: 6379 port: 6379
host: 127.0.0.1
knife4j: knife4j:
enable: true enable: true
openapi: openapi:

Loading…
Cancel
Save