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} + + +