diff --git a/README.md b/README.md index c62d7014..48164fa7 100644 --- a/README.md +++ b/README.md @@ -56,8 +56,8 @@ docker run --name yunshu-nas -p 8888:8888 -e MYSQL_URL=mysql8 -e MYSQL_PORT=3306 | nas.basic-auth.password | basic基础认证密码 | basic基础认证密码,默认空 | | nas.basic-auth.ignore-path | basic基础认证忽略路径 | 多个路径使用英文逗号分隔,默认空 | | nas.server-url | 服务端地址,用于前端调用后端API地址 | http://127.0.0.1:8888 | -| ENABLED_ELASTICSEARCH | 是否开启Elasticsearch | true | -| ELASTICSEARCH_URI | Elasticsearch服务端URL | 空 | +| ENABLED_ELASTICSEARCH | 是否开启Elasticsearch | false | +| ELASTICSEARCH_URI | Elasticsearch服务端URL | http://localhost:9200 | # 启动脚本(aria2c 可以不用) diff --git a/nas-common/src/main/java/top/itning/yunshunas/common/socket/ProgressWebSocket.java b/nas-common/src/main/java/top/itning/yunshunas/common/socket/ProgressWebSocket.java index 9c522b99..c1f4bd48 100644 --- a/nas-common/src/main/java/top/itning/yunshunas/common/socket/ProgressWebSocket.java +++ b/nas-common/src/main/java/top/itning/yunshunas/common/socket/ProgressWebSocket.java @@ -4,8 +4,8 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; -import javax.websocket.*; -import javax.websocket.server.ServerEndpoint; +import jakarta.websocket.*; +import jakarta.websocket.server.ServerEndpoint; import java.io.IOException; import java.util.HashMap; import java.util.Map; diff --git a/nas-common/src/main/java/top/itning/yunshunas/common/util/MultipartFileSender.java b/nas-common/src/main/java/top/itning/yunshunas/common/util/MultipartFileSender.java index a986d91b..1c62ca15 100644 --- a/nas-common/src/main/java/top/itning/yunshunas/common/util/MultipartFileSender.java +++ b/nas-common/src/main/java/top/itning/yunshunas/common/util/MultipartFileSender.java @@ -4,9 +4,9 @@ import org.slf4j.LoggerFactory; import org.springframework.http.MediaType; -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.ServletOutputStream; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.io.OutputStream; diff --git a/nas-deploy/pom.xml b/nas-deploy/pom.xml index f0831d35..bef4dc1c 100644 --- a/nas-deploy/pom.xml +++ b/nas-deploy/pom.xml @@ -36,6 +36,11 @@ org.springframework.boot spring-boot-starter-websocket + + org.springframework.boot + spring-boot-properties-migrator + runtime + diff --git a/nas-deploy/src/main/java/top/itning/yunshunas/config/BeanConfig.java b/nas-deploy/src/main/java/top/itning/yunshunas/config/BeanConfig.java index baf9a6bd..78bf45d8 100644 --- a/nas-deploy/src/main/java/top/itning/yunshunas/config/BeanConfig.java +++ b/nas-deploy/src/main/java/top/itning/yunshunas/config/BeanConfig.java @@ -5,7 +5,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.web.socket.server.standard.ServerEndpointExporter; -import javax.servlet.MultipartConfigElement; +import jakarta.servlet.MultipartConfigElement; /** * @author itning diff --git a/nas-deploy/src/main/java/top/itning/yunshunas/config/deploy/CustomWebMvcConfig.java b/nas-deploy/src/main/java/top/itning/yunshunas/config/deploy/CustomWebMvcConfig.java index bf40fb92..955267bc 100644 --- a/nas-deploy/src/main/java/top/itning/yunshunas/config/deploy/CustomWebMvcConfig.java +++ b/nas-deploy/src/main/java/top/itning/yunshunas/config/deploy/CustomWebMvcConfig.java @@ -15,7 +15,7 @@ public class CustomWebMvcConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { - String[] allMethod = Arrays.stream(HttpMethod.values()).map(Enum::name).toArray(String[]::new); + String[] allMethod = Arrays.stream(HttpMethod.values()).map(HttpMethod::name).toArray(String[]::new); registry.addMapping("/**") .allowedOriginPatterns("*") .allowCredentials(true) diff --git a/nas-deploy/src/main/java/top/itning/yunshunas/config/log/LogWebSocket.java b/nas-deploy/src/main/java/top/itning/yunshunas/config/log/LogWebSocket.java index d626b90f..323b66b0 100644 --- a/nas-deploy/src/main/java/top/itning/yunshunas/config/log/LogWebSocket.java +++ b/nas-deploy/src/main/java/top/itning/yunshunas/config/log/LogWebSocket.java @@ -5,8 +5,8 @@ import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; -import javax.websocket.*; -import javax.websocket.server.ServerEndpoint; +import jakarta.websocket.*; +import jakarta.websocket.server.ServerEndpoint; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; diff --git a/nas-deploy/src/main/java/top/itning/yunshunas/config/security/BasicFilter.java b/nas-deploy/src/main/java/top/itning/yunshunas/config/security/BasicFilter.java index bfd954e0..9ae39635 100644 --- a/nas-deploy/src/main/java/top/itning/yunshunas/config/security/BasicFilter.java +++ b/nas-deploy/src/main/java/top/itning/yunshunas/config/security/BasicFilter.java @@ -11,10 +11,10 @@ import org.springframework.web.filter.OncePerRequestFilter; import top.itning.yunshunas.common.config.NasProperties; -import javax.servlet.FilterChain; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.FilterChain; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.PrintWriter; import java.nio.charset.StandardCharsets; diff --git a/nas-deploy/src/main/java/top/itning/yunshunas/controller/FrontPageController.java b/nas-deploy/src/main/java/top/itning/yunshunas/controller/FrontPageController.java index c18cc063..5b988e96 100644 --- a/nas-deploy/src/main/java/top/itning/yunshunas/controller/FrontPageController.java +++ b/nas-deploy/src/main/java/top/itning/yunshunas/controller/FrontPageController.java @@ -9,7 +9,7 @@ import org.springframework.web.bind.annotation.GetMapping; import top.itning.yunshunas.common.config.NasProperties; -import javax.annotation.PostConstruct; +import jakarta.annotation.PostConstruct; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; diff --git a/nas-deploy/src/main/resources/application.properties b/nas-deploy/src/main/resources/application.properties index 0e4b0ec0..65370248 100644 --- a/nas-deploy/src/main/resources/application.properties +++ b/nas-deploy/src/main/resources/application.properties @@ -17,7 +17,7 @@ spring.datasource.url=jdbc:mysql://${MYSQL_URL:localhost}:${MYSQL_PORT:3306}/yun spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver spring.datasource.username=${MYSQL_USERNAME:root} spring.datasource.password=${MYSQL_PASSWORD:root} -spring.jpa.database-platform=org.hibernate.dialect.MySQL8Dialect +spring.jpa.database-platform=org.hibernate.dialect.MySQLDialect spring.jpa.show-sql=false spring.jpa.open-in-view=false spring.jpa.hibernate.ddl-auto=update @@ -69,5 +69,5 @@ nas.file-data-source.lyric-file-dir=/home/lyric_yunshu # ElasticSearch配置 # ########################################################## -spring.data.elasticsearch.repositories.enabled=${ENABLED_ELASTICSEARCH:true} -spring.elasticsearch.uris=${ELASTICSEARCH_URI} +spring.data.elasticsearch.repositories.enabled=${ENABLED_ELASTICSEARCH:false} +spring.elasticsearch.uris=${ELASTICSEARCH_URI:http://localhost:9200} diff --git a/nas-music/src/main/java/top/itning/yunshunas/music/controller/FileController.java b/nas-music/src/main/java/top/itning/yunshunas/music/controller/FileController.java index d948f748..55efd224 100644 --- a/nas-music/src/main/java/top/itning/yunshunas/music/controller/FileController.java +++ b/nas-music/src/main/java/top/itning/yunshunas/music/controller/FileController.java @@ -6,9 +6,9 @@ import org.springframework.web.bind.annotation.*; import top.itning.yunshunas.music.service.FileService; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.validation.constraints.NotNull; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.NotNull; import java.io.IOException; /** diff --git a/nas-music/src/main/java/top/itning/yunshunas/music/controller/MusicController.java b/nas-music/src/main/java/top/itning/yunshunas/music/controller/MusicController.java index f230176a..99ecf709 100644 --- a/nas-music/src/main/java/top/itning/yunshunas/music/controller/MusicController.java +++ b/nas-music/src/main/java/top/itning/yunshunas/music/controller/MusicController.java @@ -21,8 +21,8 @@ import top.itning.yunshunas.music.service.MusicService; import top.itning.yunshunas.music.service.SearchService; -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; import java.util.List; /** diff --git a/nas-music/src/main/java/top/itning/yunshunas/music/controller/MusicManageApiController.java b/nas-music/src/main/java/top/itning/yunshunas/music/controller/MusicManageApiController.java index d57f9b7f..3d09a2ae 100644 --- a/nas-music/src/main/java/top/itning/yunshunas/music/controller/MusicManageApiController.java +++ b/nas-music/src/main/java/top/itning/yunshunas/music/controller/MusicManageApiController.java @@ -14,7 +14,7 @@ import top.itning.yunshunas.music.dto.MusicManageDTO; import top.itning.yunshunas.music.service.MusicManageService; -import javax.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotEmpty; /** * 音乐管理接口 diff --git a/nas-music/src/main/java/top/itning/yunshunas/music/entity/Music.java b/nas-music/src/main/java/top/itning/yunshunas/music/entity/Music.java index 0c6532db..4710f550 100644 --- a/nas-music/src/main/java/top/itning/yunshunas/music/entity/Music.java +++ b/nas-music/src/main/java/top/itning/yunshunas/music/entity/Music.java @@ -4,7 +4,7 @@ import org.hibernate.annotations.CreationTimestamp; import org.hibernate.annotations.UpdateTimestamp; -import javax.persistence.*; +import jakarta.persistence.*; import java.util.Date; /** diff --git a/nas-music/src/main/java/top/itning/yunshunas/music/exception/ExceptionResolver.java b/nas-music/src/main/java/top/itning/yunshunas/music/exception/ExceptionResolver.java index a45189b9..2020cf76 100644 --- a/nas-music/src/main/java/top/itning/yunshunas/music/exception/ExceptionResolver.java +++ b/nas-music/src/main/java/top/itning/yunshunas/music/exception/ExceptionResolver.java @@ -7,8 +7,8 @@ import org.springframework.web.bind.annotation.ResponseBody; import top.itning.yunshunas.common.model.RestModel; -import javax.servlet.http.HttpServletResponse; -import javax.validation.ConstraintViolationException; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.ConstraintViolationException; /** * @author itning diff --git a/nas-music/src/main/java/top/itning/yunshunas/music/service/FileService.java b/nas-music/src/main/java/top/itning/yunshunas/music/service/FileService.java index 974c8167..c31ba1e2 100644 --- a/nas-music/src/main/java/top/itning/yunshunas/music/service/FileService.java +++ b/nas-music/src/main/java/top/itning/yunshunas/music/service/FileService.java @@ -2,8 +2,8 @@ import top.itning.yunshunas.music.dto.MusicMetaInfo; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; /** diff --git a/nas-music/src/main/java/top/itning/yunshunas/music/service/impl/FileServiceImpl.java b/nas-music/src/main/java/top/itning/yunshunas/music/service/impl/FileServiceImpl.java index 55b98790..247a79cd 100644 --- a/nas-music/src/main/java/top/itning/yunshunas/music/service/impl/FileServiceImpl.java +++ b/nas-music/src/main/java/top/itning/yunshunas/music/service/impl/FileServiceImpl.java @@ -14,9 +14,9 @@ import top.itning.yunshunas.music.service.FileService; import top.itning.yunshunas.music.service.MusicMetaInfoService; -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.ServletOutputStream; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; diff --git a/nas-music/src/main/java/top/itning/yunshunas/music/service/impl/MusicServiceImpl.java b/nas-music/src/main/java/top/itning/yunshunas/music/service/impl/MusicServiceImpl.java index f88b0cf4..3d5ff2ad 100644 --- a/nas-music/src/main/java/top/itning/yunshunas/music/service/impl/MusicServiceImpl.java +++ b/nas-music/src/main/java/top/itning/yunshunas/music/service/impl/MusicServiceImpl.java @@ -12,7 +12,7 @@ import top.itning.yunshunas.music.repository.MusicRepository; import top.itning.yunshunas.music.service.MusicService; -import javax.transaction.Transactional; +import jakarta.transaction.Transactional; /** * @author itning diff --git a/nas-music/src/main/java/top/itning/yunshunas/music/service/impl/SearchServiceImpl.java b/nas-music/src/main/java/top/itning/yunshunas/music/service/impl/SearchServiceImpl.java index 4be304de..650ad2d5 100644 --- a/nas-music/src/main/java/top/itning/yunshunas/music/service/impl/SearchServiceImpl.java +++ b/nas-music/src/main/java/top/itning/yunshunas/music/service/impl/SearchServiceImpl.java @@ -1,15 +1,19 @@ package top.itning.yunshunas.music.service.impl; +import co.elastic.clients.elasticsearch._types.query_dsl.MatchPhraseQuery; +import co.elastic.clients.elasticsearch._types.query_dsl.Query; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; -import org.elasticsearch.index.query.QueryBuilders; -import org.elasticsearch.search.fetch.subphase.highlight.HighlightBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.data.domain.Pageable; -import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; +import org.springframework.data.elasticsearch.client.elc.ElasticsearchTemplate; +import org.springframework.data.elasticsearch.client.elc.NativeQueryBuilder; import org.springframework.data.elasticsearch.core.SearchHits; -import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; +import org.springframework.data.elasticsearch.core.query.HighlightQuery; +import org.springframework.data.elasticsearch.core.query.highlight.Highlight; +import org.springframework.data.elasticsearch.core.query.highlight.HighlightField; +import org.springframework.data.elasticsearch.core.query.highlight.HighlightFieldParameters; import org.springframework.stereotype.Service; import top.itning.yunshunas.music.datasource.CoverDataSource; import top.itning.yunshunas.music.datasource.LyricDataSource; @@ -42,20 +46,25 @@ public class SearchServiceImpl implements SearchService { private static final String SEARCH_FILED_FOR_LYRIC = "content"; private final LyricElasticsearchRepository lyricElasticsearchRepository; - private final ElasticsearchRestTemplate elasticsearchRestTemplate; private final MusicRepository musicRepository; private final MusicDataSource musicDataSource; private final LyricDataSource lyricDataSource; private final CoverDataSource coverDataSource; + private final ElasticsearchTemplate elasticsearchTemplate; @Autowired - public SearchServiceImpl(LyricElasticsearchRepository lyricElasticsearchRepository, ElasticsearchRestTemplate elasticsearchRestTemplate, MusicRepository musicRepository, MusicDataSource musicDataSource, LyricDataSource lyricDataSource, CoverDataSource coverDataSource) { + public SearchServiceImpl(LyricElasticsearchRepository lyricElasticsearchRepository, + MusicRepository musicRepository, + MusicDataSource musicDataSource, + LyricDataSource lyricDataSource, + CoverDataSource coverDataSource, + ElasticsearchTemplate elasticsearchTemplate) { this.lyricElasticsearchRepository = lyricElasticsearchRepository; - this.elasticsearchRestTemplate = elasticsearchRestTemplate; this.musicRepository = musicRepository; this.musicDataSource = musicDataSource; this.lyricDataSource = lyricDataSource; this.coverDataSource = coverDataSource; + this.elasticsearchTemplate = elasticsearchTemplate; } @Override @@ -96,14 +105,15 @@ public void deleteLyric(String lyricId) { @Override public List searchLyric(String keyword, Pageable pageable) { - SearchHits search = elasticsearchRestTemplate.search( - new NativeSearchQueryBuilder() - .withQuery(QueryBuilders.matchPhraseQuery(SEARCH_FILED_FOR_LYRIC, keyword)) - .withHighlightBuilder(new HighlightBuilder().field(SEARCH_FILED_FOR_LYRIC, 50, 1)) + SearchHits search = elasticsearchTemplate.search( + new NativeQueryBuilder() + .withQuery(new Query.Builder().matchPhrase(new MatchPhraseQuery.Builder().field(SEARCH_FILED_FOR_LYRIC).query(keyword).build()).build()) + .withHighlightQuery(new HighlightQuery(new Highlight(Collections.singletonList(new HighlightField(SEARCH_FILED_FOR_LYRIC, HighlightFieldParameters.builder().withFragmentSize(50).withNumberOfFragments(1).build()))), null)) .withPageable(pageable) - .build() - , Lyric.class + .build(), + Lyric.class ); + if (!search.hasSearchHits()) { return Collections.emptyList(); } diff --git a/nas-video/src/main/java/top/itning/yunshunas/video/controller/VideoController.java b/nas-video/src/main/java/top/itning/yunshunas/video/controller/VideoController.java index cb4a992d..6bb4cf4a 100644 --- a/nas-video/src/main/java/top/itning/yunshunas/video/controller/VideoController.java +++ b/nas-video/src/main/java/top/itning/yunshunas/video/controller/VideoController.java @@ -9,8 +9,8 @@ import top.itning.yunshunas.video.service.VideoService; import top.itning.yunshunas.video.video.VideoTransformHandler; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; diff --git a/nas-video/src/main/java/top/itning/yunshunas/video/video/VideoRepository.java b/nas-video/src/main/java/top/itning/yunshunas/video/video/VideoRepository.java index 9d419154..9bb729b0 100644 --- a/nas-video/src/main/java/top/itning/yunshunas/video/video/VideoRepository.java +++ b/nas-video/src/main/java/top/itning/yunshunas/video/video/VideoRepository.java @@ -10,7 +10,7 @@ import top.itning.yunshunas.common.config.NasProperties; import top.itning.yunshunas.video.repository.IVideoRepository; -import javax.annotation.Nonnull; +import jakarta.annotation.Nonnull; import java.io.File; /** diff --git a/pom.xml b/pom.xml index 6d2a28f8..1e868afe 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ org.springframework.boot spring-boot-starter-parent - 2.7.6 + 3.0.0 top.itning.yunshu-nas @@ -100,11 +100,6 @@ mapstruct-processor compile - - - javax.validation - validation-api - org.hibernate.validator