diff --git a/pom.xml b/pom.xml
index 27b49f0..753bdf9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -91,9 +91,9 @@
4.2.1
- com.github.tobato
- fastdfs-client
- 1.27.2
+ org.csource
+ fastdfs-client-java
+ 1.31-SNAPSHOT
com.github.whvcse
diff --git a/src/main/java/com/upchina/common/config/FastDFSConfig.java b/src/main/java/com/upchina/common/config/FastDFSConfig.java
index 20ab2f5..ff0e7cc 100644
--- a/src/main/java/com/upchina/common/config/FastDFSConfig.java
+++ b/src/main/java/com/upchina/common/config/FastDFSConfig.java
@@ -1,15 +1,57 @@
package com.upchina.common.config;
-import com.github.tobato.fastdfs.FdfsClientConfig;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.EnableMBeanExport;
-import org.springframework.context.annotation.Import;
-import org.springframework.jmx.support.RegistrationPolicy;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Properties;
+import java.util.Set;
+import java.util.stream.Collectors;
-@Configuration
-@Import(FdfsClientConfig.class)
-// 解决jmx重复注册bean的问题
-@EnableMBeanExport(registration = RegistrationPolicy.IGNORE_EXISTING)
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+
+import org.csource.common.MyException;
+import org.csource.fastdfs.*;
+import org.springframework.context.annotation.Bean;
+import org.springframework.core.env.ConfigurableEnvironment;
+import org.springframework.core.env.PropertySource;
+import org.springframework.stereotype.Component;
+
+@Component
public class FastDFSConfig {
+ @Resource
+ private ConfigurableEnvironment environment;
+
+ public Properties getProperties(String prefix) {
+ Properties properties = new Properties();
+
+ // 获取配置源中的所有键值对,并筛选出以指定前缀开头的配置项
+ for (PropertySource> propertySource : environment.getPropertySources()) {
+ if (propertySource.getSource() instanceof java.util.Map) {
+ // 遍历所有的键值对
+ java.util.Map source = (java.util.Map) propertySource.getSource();
+ Set filteredKeys = source.keySet().stream()
+ .filter(key -> key.startsWith(prefix)) // 过滤以prefix开头的键
+ .collect(Collectors.toSet());
+
+ // 将筛选后的配置项加入到Properties对象中
+ for (String key : filteredKeys) {
+ properties.setProperty(key, String.valueOf(source.get(key)));
+ }
+ }
+ }
+
+ return properties;
+ }
+
+ @Bean
+ public StorageClient storageClient() throws IOException, MyException {
+ Properties props = getProperties("fastdfs.");
+ ClientGlobal.initByProperties(props);
+ TrackerClient tracker = new TrackerClient();
+ TrackerServer trackerServer = tracker.getTrackerServer();
+ StorageServer storageServer = null;
+ return new StorageClient(trackerServer, storageServer);
+ }
+
}
\ No newline at end of file
diff --git a/src/main/java/com/upchina/common/controller/FileController.java b/src/main/java/com/upchina/common/controller/FileController.java
index fd542be..a9655c6 100644
--- a/src/main/java/com/upchina/common/controller/FileController.java
+++ b/src/main/java/com/upchina/common/controller/FileController.java
@@ -1,7 +1,8 @@
package com.upchina.common.controller;
-import com.github.tobato.fastdfs.domain.fdfs.StorePath;
-import com.github.tobato.fastdfs.service.FastFileStorageClient;
+import cn.hutool.core.io.IoUtil;
+import cn.hutool.core.io.file.FileNameUtil;
+import cn.hutool.core.util.StrUtil;
import com.upchina.common.result.CommonResult;
import com.upchina.common.util.CodecUtil;
import com.upchina.common.vo.UploadVO;
@@ -10,7 +11,8 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Content;
-import org.apache.commons.io.FilenameUtils;
+import org.csource.common.MyException;
+import org.csource.fastdfs.StorageClient;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
@@ -22,6 +24,8 @@ import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
import java.io.IOException;
+import java.util.Arrays;
+import java.util.stream.Collectors;
@Api(tags = "文件接口")
@RestController
@@ -29,7 +33,7 @@ import java.io.IOException;
public class FileController {
@Resource
- private FastFileStorageClient storageClient;
+ private StorageClient storageClient;
@Value("${file.domain.prefix}")
String domainPrefix;
@@ -40,14 +44,15 @@ public class FileController {
@ApiOperation("上传")
@PostMapping("/upload")
public CommonResult upload(@Parameter(content = @Content(mediaType = MediaType.MULTIPART_FORM_DATA_VALUE))
- @RequestPart("file") @Validated @ApiParam(required = true) MultipartFile file) throws IOException {
- StorePath storePath = storageClient.uploadFile(file.getInputStream(), file.getSize(), FilenameUtils.getExtension(file.getOriginalFilename()), null);
- String path = storePath.getFullPath();
+ @RequestPart("file") @Validated @ApiParam(required = true) MultipartFile file) throws IOException, MyException {
+ byte[] bytes = IoUtil.readBytes(file.getInputStream());
+ String[] results = storageClient.upload_file(bytes, FileNameUtil.getSuffix(file.getOriginalFilename()), null);
+ String path = Arrays.stream(results).filter(StrUtil::isNotBlank).collect(Collectors.joining("/"));
String fullPath = domainPrefix + path;
// 使用nginx
String resizePath = domainResizePrefix + path;
// md5用于文件排重
- String md5 = CodecUtil.md5(file.getBytes());
+ String md5 = CodecUtil.md5(bytes);
return CommonResult.success(new UploadVO(fullPath, resizePath, md5));
}
diff --git a/src/main/resources/conf/advisorServer.yaml b/src/main/resources/conf/advisorServer.yaml
index 6add770..43b5970 100644
--- a/src/main/resources/conf/advisorServer.yaml
+++ b/src/main/resources/conf/advisorServer.yaml
@@ -8,14 +8,11 @@ des:
key: upchina2
file:
domain:
- prefix: https://advisorimg.test.upchina.com/
- resizePrefix: https://advisorimg.test.upchina.com/resize/
+ prefix: http://47.96.178.171:8080/
+ resizePrefix: http://47.96.178.171:8080/resize/
hazelcast:
members: 127.0.0.1:5709 #缓存集群的ip端口号
serverPort: 5709 #自己作为缓存服务器监听的端口号
-taf:
- servant:
- advisorServant: DemoVideoDev.AdvisorServer.AdvisorObj@tcp -h 127.0.0.1 -t 60000 -p 45600
scheduledEnable: false
cron:
saveVideoCount: "10 * * * * ?" #从cache刷新视频播放量到DB 每分钟的第10s执行
@@ -42,21 +39,21 @@ sale:
video:
finishReadRatio: 0.9 #计算视频完播率(完成人数/总人数)大于等于该值即未完成观看
websocket:
- brokerHost: ws://localhost:56700/tgim
+ brokerHost: ws://localhost:8080/tgim
aes:
key: ew0ov3n1xurvhlhl
iv: gbb9qknndntteqc1
resizeUrl:
- main: http://lczqvideodev.test.upchina.com/s/ #生产配置 http://s.upchina.com/s/
- original: http://lczqvideodev.test.upchina.com/syzbh5/videoPlay
+ main: http://8.138.144.54:8080/s/ #生产配置 http://s.upchina.com/s/
+ original: http://8.138.144.54:8080/syzbh5/videoPlay
urlMain: /videoPlay?id=
shortVideoUrl: /shotVideoPlay?id=
pc:
courseRecommendSize: 5
url:
- liveUrl: http://lczqvideodev.test.upchina.com/syzbpc/videoDetail?id=%d&courseId=%d
+ liveUrl: http://8.138.144.54:8080/syzbpc/videoDetail?id=%d&courseId=%d
app:
url:
- liveUrl: https://lczqvideodev.test.upchina.com/syzbh5/videoPlay?id=%d
- advisorListUrl: https://lczqvideodev.test.upchina.com/syzbh5/videoList?advisorId=%d
- deptListUrl: https://lczqvideodev.test.upchina.com/syzbh5/videoList?deptId=%s
\ No newline at end of file
+ liveUrl: https://8.138.144.54:8080/syzbh5/videoPlay?id=%d
+ advisorListUrl: https://8.138.144.54:8080/syzbh5/videoList?advisorId=%d
+ deptListUrl: https://8.138.144.54:8080/syzbh5/videoList?deptId=%s
\ No newline at end of file
diff --git a/src/main/resources/conf/application.yaml b/src/main/resources/conf/application.yaml
index 2659f59..c00baf8 100644
--- a/src/main/resources/conf/application.yaml
+++ b/src/main/resources/conf/application.yaml
@@ -1,8 +1,13 @@
-fdfs:
- connectTimeout: 600
- soTimeout: 1500
- trackerList:
- - 172.16.8.199:22122
+fastdfs:
+ connect_timeout_in_seconds: 10
+ network_timeout_in_seconds: 30
+ charset: UTF-8
+ tracker_servers: 47.96.178.171:22122
+ connection_pool:
+ enabled: true
+ max_count_per_entry: 500
+ max_idle_time: 3600
+ max_wait_time_in_ms: 1000
mybatis-plus:
configuration:
call-setters-on-nulls: true #如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段