From ef4366d148cc160670b4c7b2df0df3df3e912dc2 Mon Sep 17 00:00:00 2001 From: liangwen <2357318727@qq.com> Date: Sat, 13 Sep 2025 11:53:33 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E7=94=A8=E6=88=B7=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=A1=A8=E5=A2=9E=E5=8A=A0=E4=B8=8B=E8=BD=BD=E6=AC=A1=E6=95=B0?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=EF=BC=9B=202=E3=80=81=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=8B=E8=BD=BD=E6=AC=A1=E6=95=B0=E8=87=AA?= =?UTF-8?q?=E5=A2=9E+1=E4=B8=9A=E5=8A=A1=E6=8E=A5=E5=8F=A3=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=EF=BC=9B=203=E3=80=81=E4=B8=8B=E8=BD=BD=E5=8F=8A?= =?UTF-8?q?=E6=89=B9=E9=87=8F=E4=B8=8B=E8=BD=BD=E6=8E=A5=E5=8F=A3=E6=9B=B4?= =?UTF-8?q?=E6=96=B0=E4=B8=8B=E8=BD=BD=E6=AC=A1=E6=95=B0+1=EF=BC=9B=204?= =?UTF-8?q?=E3=80=81ES=E6=90=9C=E7=B4=A2=E6=96=87=E4=BB=B6=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=A2=9E=E5=8A=A0=E4=B8=8B=E8=BD=BD=E6=AC=A1=E6=95=B0?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb-admin/src/main/resources/application.yml | 7 ++++ .../file/config/es/ElasticSearchConfig.java | 37 +++++++++++++++++-- .../com/ruoyi/file/config/es/FileSearch.java | 1 + .../controller/FiletransferController.java | 5 +++ .../java/com/ruoyi/file/domain/UserFile.java | 3 ++ .../com/ruoyi/file/mapper/UserFileMapper.java | 2 + .../ruoyi/file/service/IUserFileService.java | 4 +- .../service/impl/UserFileServiceImpl.java | 4 ++ .../com/ruoyi/file/vo/file/FileListVO.java | 1 + .../com/ruoyi/file/vo/file/SearchFileVO.java | 1 + .../main/resources/mapper/UserFileMapper.xml | 11 ++++++ 11 files changed, 71 insertions(+), 5 deletions(-) diff --git a/hb-admin/src/main/resources/application.yml b/hb-admin/src/main/resources/application.yml index 278a22d..1a9e02d 100644 --- a/hb-admin/src/main/resources/application.yml +++ b/hb-admin/src/main/resources/application.yml @@ -278,3 +278,10 @@ elasticsearch: host: 8.134.76.66 port: 9200 scheme: http + # 超时配置(毫秒) + connectTimeout: 5000 + socketTimeout: 60000 + connectionRequestTimeout: 1000 + # 连接池配置 + maxConnTotal: 100 + maxConnPerRoute: 100 diff --git a/hb-file/src/main/java/com/ruoyi/file/config/es/ElasticSearchConfig.java b/hb-file/src/main/java/com/ruoyi/file/config/es/ElasticSearchConfig.java index d10c56c..b51c525 100644 --- a/hb-file/src/main/java/com/ruoyi/file/config/es/ElasticSearchConfig.java +++ b/hb-file/src/main/java/com/ruoyi/file/config/es/ElasticSearchConfig.java @@ -6,6 +6,7 @@ import co.elastic.clients.transport.ElasticsearchTransport; import co.elastic.clients.transport.rest_client.RestClientTransport; import org.apache.http.HttpHost; import org.elasticsearch.client.RestClient; +import org.elasticsearch.client.RestClientBuilder; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -19,13 +20,41 @@ public class ElasticSearchConfig { @Value("${elasticsearch.port}") private int port; - @Value("${elasticsearch.scheme}") + @Value("${elasticsearch.scheme:http}") private String scheme; + @Value("${elasticsearch.connectTimeout:5000}") + private int connectTimeout; + + @Value("${elasticsearch.socketTimeout:60000}") + private int socketTimeout; + + @Value("${elasticsearch.connectionRequestTimeout:1000}") + private int connectionRequestTimeout; + + @Value("${elasticsearch.maxConnTotal:100}") + private int maxConnTotal; + + @Value("${elasticsearch.maxConnPerRoute:100}") + private int maxConnPerRoute; + @Bean - public ElasticsearchClient elasticsearchClient(){ - RestClient client = RestClient.builder(new HttpHost(host, port, scheme)).build(); - ElasticsearchTransport transport = new RestClientTransport(client,new JacksonJsonpMapper()); + public ElasticsearchClient elasticsearchClient() { + RestClientBuilder builder = RestClient.builder(new HttpHost(host, port, scheme)) + .setRequestConfigCallback(requestConfigBuilder -> + requestConfigBuilder + .setConnectTimeout(connectTimeout) // 连接超时 + .setSocketTimeout(socketTimeout) // 读取超时 + .setConnectionRequestTimeout(connectionRequestTimeout) // 从连接池获取连接的超时 + ) + .setHttpClientConfigCallback(httpClientBuilder -> + httpClientBuilder + .setMaxConnTotal(maxConnTotal) // 最大连接数 + .setMaxConnPerRoute(maxConnPerRoute) // 单个路由的最大连接数 + ); + + RestClient client = builder.build(); + ElasticsearchTransport transport = new RestClientTransport(client, new JacksonJsonpMapper()); return new ElasticsearchClient(transport); } } diff --git a/hb-file/src/main/java/com/ruoyi/file/config/es/FileSearch.java b/hb-file/src/main/java/com/ruoyi/file/config/es/FileSearch.java index 940ea43..8f21f34 100644 --- a/hb-file/src/main/java/com/ruoyi/file/config/es/FileSearch.java +++ b/hb-file/src/main/java/com/ruoyi/file/config/es/FileSearch.java @@ -23,4 +23,5 @@ public class FileSearch { private Integer deleteFlag; private String deleteTime; private String deleteBatchNum; + private Long downloadCnt; } diff --git a/hb-file/src/main/java/com/ruoyi/file/controller/FiletransferController.java b/hb-file/src/main/java/com/ruoyi/file/controller/FiletransferController.java index 002cfc0..1e6223b 100644 --- a/hb-file/src/main/java/com/ruoyi/file/controller/FiletransferController.java +++ b/hb-file/src/main/java/com/ruoyi/file/controller/FiletransferController.java @@ -148,6 +148,8 @@ public class FiletransferController { filetransferService.downloadFile(httpServletResponse, downloadFileDTO); // 保存下载记录 downloadRecordService.saveDownloadRecord(Arrays.asList(downloadFileDTO.getUserFileId())); + // 增加下载次数 + userFileService.incrementDownloadCount(Arrays.asList(downloadFileDTO.getUserFileId())); } @Operation(summary = "批量下载文件", description = "批量下载文件", tags = {"filetransfer"}) @@ -198,7 +200,10 @@ public class FiletransferController { String fileName = String.valueOf(date.getTime()); httpServletResponse.addHeader("Content-Disposition", "attachment;fileName=" + fileName + ".zip");// 设置文件名 filetransferService.downloadUserFileList(httpServletResponse, userFile.getFilePath(), fileName, userFileIds); + // 保存下载记录 downloadRecordService.saveDownloadRecord(userFileIds); + // 增加下载次数 + userFileService.incrementDownloadCount(userFileIds); } @Operation(summary="预览文件", description="用于文件预览", tags = {"filetransfer"}) diff --git a/hb-file/src/main/java/com/ruoyi/file/domain/UserFile.java b/hb-file/src/main/java/com/ruoyi/file/domain/UserFile.java index 2384f12..373d375 100644 --- a/hb-file/src/main/java/com/ruoyi/file/domain/UserFile.java +++ b/hb-file/src/main/java/com/ruoyi/file/domain/UserFile.java @@ -69,6 +69,9 @@ public class UserFile { @Column(columnDefinition="char(1) comment '修改用户id'") private String accessPermission; + @Column(columnDefinition="bigint(0) comment '下载次数'") + private Long downloadCnt; + public UserFile() {}; public UserFile(QiwenFile qiwenFile, Long userId, String fileId) { this.userFileId = IdUtil.getSnowflakeNextIdStr(); diff --git a/hb-file/src/main/java/com/ruoyi/file/mapper/UserFileMapper.java b/hb-file/src/main/java/com/ruoyi/file/mapper/UserFileMapper.java index 8f6609c..2e533ca 100644 --- a/hb-file/src/main/java/com/ruoyi/file/mapper/UserFileMapper.java +++ b/hb-file/src/main/java/com/ruoyi/file/mapper/UserFileMapper.java @@ -19,4 +19,6 @@ public interface UserFileMapper extends BaseMapper { List selectByUserFileId(String userFileId); List selectFileTreeByUserId(Long userId); + + int incrementDownloadCount(@Param("userFileIdList") List userFileIdList); } diff --git a/hb-file/src/main/java/com/ruoyi/file/service/IUserFileService.java b/hb-file/src/main/java/com/ruoyi/file/service/IUserFileService.java index 2fdacec..4ecafd0 100644 --- a/hb-file/src/main/java/com/ruoyi/file/service/IUserFileService.java +++ b/hb-file/src/main/java/com/ruoyi/file/service/IUserFileService.java @@ -29,5 +29,7 @@ public interface IUserFileService extends IService { * * @return 文件树结构信息 */ - public List selectUserFileTreeList(); + List selectUserFileTreeList(); + + int incrementDownloadCount(List asList); } diff --git a/hb-file/src/main/java/com/ruoyi/file/service/impl/UserFileServiceImpl.java b/hb-file/src/main/java/com/ruoyi/file/service/impl/UserFileServiceImpl.java index c4584cb..58b4eb7 100644 --- a/hb-file/src/main/java/com/ruoyi/file/service/impl/UserFileServiceImpl.java +++ b/hb-file/src/main/java/com/ruoyi/file/service/impl/UserFileServiceImpl.java @@ -304,6 +304,10 @@ public class UserFileServiceImpl extends ServiceImpl i return treeSelectList; } + @Override + public int incrementDownloadCount(List userFileIdList) { + return userFileMapper.incrementDownloadCount(userFileIdList); + } /** diff --git a/hb-file/src/main/java/com/ruoyi/file/vo/file/FileListVO.java b/hb-file/src/main/java/com/ruoyi/file/vo/file/FileListVO.java index 39d3d19..bb2f897 100644 --- a/hb-file/src/main/java/com/ruoyi/file/vo/file/FileListVO.java +++ b/hb-file/src/main/java/com/ruoyi/file/vo/file/FileListVO.java @@ -43,5 +43,6 @@ public class FileListVO { private Integer imageHeight; private String accessPermission; + private Long downloadCnt; } diff --git a/hb-file/src/main/java/com/ruoyi/file/vo/file/SearchFileVO.java b/hb-file/src/main/java/com/ruoyi/file/vo/file/SearchFileVO.java index 972164c..ac20a6e 100644 --- a/hb-file/src/main/java/com/ruoyi/file/vo/file/SearchFileVO.java +++ b/hb-file/src/main/java/com/ruoyi/file/vo/file/SearchFileVO.java @@ -22,4 +22,5 @@ public class SearchFileVO { private Map> highLight; private Integer isDir; private String uploadTime; + private Long downloadCnt; } diff --git a/hb-file/src/main/resources/mapper/UserFileMapper.xml b/hb-file/src/main/resources/mapper/UserFileMapper.xml index 7a3d92d..bef6cf0 100644 --- a/hb-file/src/main/resources/mapper/UserFileMapper.xml +++ b/hb-file/src/main/resources/mapper/UserFileMapper.xml @@ -24,6 +24,7 @@ + @@ -44,6 +45,7 @@ + + + UPDATE userfile + SET downloadCnt = downloadCnt + 1 + WHERE userFileId IN + + #{userFileId} + + +