Browse Source

Merge remote-tracking branch 'refs/remotes/origin/test-1.7.0-shandong' into dev-1.8.0-20241128

# Conflicts:
#	720yun_fd_manage/gis_application/src/main/resources/application.yml
#	720yun_fd_manage/gis_service/src/main/java/com/gis/service/impl/FodderServiceImpl.java
#	720yun_fd_manage/gis_service/src/main/java/com/gis/service/impl/SysUserServiceImpl.java
#	720yun_fd_manage/gis_service/src/main/java/com/gis/service/impl/WorkServiceImpl.java
#	720yun_fd_manage/pom.xml
xiewj 8 tháng trước cách đây
mục cha
commit
484f8c30d3
37 tập tin đã thay đổi với 960 bổ sung5740 xóa
  1. 1 1
      720yun_fd_consumer/gis_consumer/src/main/java/com/gis/constant/CmdConstant.java
  2. 1 15
      720yun_fd_consumer/gis_consumer/src/main/java/com/gis/constant/ConfigConstant.java
  3. 0 1
      720yun_fd_consumer/gis_consumer/src/main/java/com/gis/entity/SceneQueueDTO.java
  4. 31 21
      720yun_fd_consumer/gis_consumer/src/main/java/com/gis/listener/SceneListener.java
  5. 0 20
      720yun_fd_consumer/gis_consumer/src/main/java/com/gis/listener/SceneMigrateListener.java
  6. 0 27
      720yun_fd_consumer/gis_consumer/src/main/java/com/gis/listener/ScenePayStatusListener.java
  7. 5 2
      720yun_fd_consumer/gis_consumer/src/main/java/com/gis/service/impl/FodderServiceImpl.java
  8. 0 236
      720yun_fd_consumer/gis_consumer/src/main/java/com/gis/util/AliyunOssUtil.java
  9. 75 0
      720yun_fd_consumer/gis_consumer/src/main/resources/application-locsitSD.yml
  10. 59 0
      720yun_fd_consumer/gis_consumer/src/main/resources/application-proSD.yml
  11. 77 0
      720yun_fd_consumer/gis_consumer/src/main/resources/application-sitSD.yml
  12. 123 116
      720yun_fd_consumer/gis_consumer/src/main/resources/logback-spring.xml
  13. 40 39
      720yun_fd_consumer/gis_consumer_oss/pom.xml
  14. 14 2
      720yun_fd_consumer/gis_consumer_oss/src/main/java/com/gis/oss/command/CmdConstant.java
  15. 0 346
      720yun_fd_consumer/gis_consumer_oss/src/main/java/com/gis/oss/util/AliYunOssUtil.java
  16. 0 184
      720yun_fd_consumer/gis_consumer_oss/src/main/java/com/gis/oss/util/AwsOssUtil.java
  17. 34 1249
      720yun_fd_consumer/gis_consumer_oss/src/main/java/com/gis/oss/util/FileAndOssUtil.java
  18. 109 0
      720yun_fd_consumer/gis_consumer_oss/src/main/java/com/gis/oss/util/OssShUtil.java
  19. 0 138
      720yun_fd_consumer/gis_consumer_oss/src/main/java/com/gis/oss/util/QiNiuOssUtil.java
  20. 0 1244
      720yun_fd_consumer/gis_consumer_oss/src/main/java/com/gis/oss/util/UploadToOssUtil.java
  21. 56 23
      720yun_fd_consumer/pom.xml
  22. 105 0
      720yun_fd_manage/gis_application/src/main/resources/application-proSD.yml
  23. 102 0
      720yun_fd_manage/gis_application/src/main/resources/application-sitSD.yml
  24. 31 14
      720yun_fd_manage/gis_common/pom.xml
  25. 2 23
      720yun_fd_manage/gis_common/src/main/java/com/gis/common/constant/ConfigConstant.java
  26. 7 0
      720yun_fd_manage/gis_mapper/src/main/java/com/gis/mapper/provider/WorkProvider.java
  27. 0 38
      720yun_fd_manage/gis_oss/pom.xml
  28. 0 292
      720yun_fd_manage/gis_oss/src/main/java/com/gis/oss/util/AliYunOssUtil.java
  29. 0 161
      720yun_fd_manage/gis_oss/src/main/java/com/gis/oss/util/AwsOssUtil.java
  30. 9 76
      720yun_fd_manage/gis_oss/src/main/java/com/gis/oss/util/FileAndOssUtil.java
  31. 0 177
      720yun_fd_manage/gis_oss/src/main/java/com/gis/oss/util/QiNiuOssUtil.java
  32. 0 1244
      720yun_fd_manage/gis_oss/src/main/java/com/gis/oss/util/UploadToOssUtil.java
  33. 10 8
      720yun_fd_manage/gis_service/src/main/java/com/gis/service/impl/FodderServiceImpl.java
  34. 7 9
      720yun_fd_manage/gis_service/src/main/java/com/gis/service/impl/TestServiceImpl.java
  35. 12 6
      720yun_fd_manage/gis_service/src/main/java/com/gis/service/impl/WorkServiceImpl.java
  36. 4 5
      720yun_fd_manage/gis_web/src/main/java/com/gis/web/controller/TestController.java
  37. 46 23
      720yun_fd_manage/pom.xml

+ 1 - 1
720yun_fd_consumer/gis_consumer/src/main/java/com/gis/constant/CmdConstant.java

@@ -13,7 +13,7 @@ public class CmdConstant {
      *
      * yes y | 出现提醒,强制执行
      * */
-    public final static String PANO_KRPANO = "krpanotools makepano -config=templates/vtour-multires.config ";
+    public final static String PANO_KRPANO = "/opt/krpano-1.21.2/krpanotools makepano -config=templates/vtour-multires.config ";
 
     /**
      * ossUtil上传目录

+ 1 - 15
720yun_fd_consumer/gis_consumer/src/main/java/com/gis/constant/ConfigConstant.java

@@ -20,23 +20,9 @@ public class ConfigConstant {
     @Value("${project.name}")
     public String projectName;
 
-    @Value("${oss.point}")
-    public  String ossPoint;
-
-    @Value("${oss.key}")
-    public  String ossKey;
-
-    @Value("${oss.secrecy}")
-    public  String ossSecrecy;
-
-    @Value("${oss.bucket}")
-    public  String ossBucket;
-
-    @Value("${oss.file.path}")
+    @Value("${config.bashPath}")
     public  String ossBasePath;
 
-    @Value("${oss.domain}")
-    public  String ossDomain;
 
     /*********************** 其他参数 ***********************/
 

+ 0 - 1
720yun_fd_consumer/gis_consumer/src/main/java/com/gis/entity/SceneQueueDTO.java

@@ -1,6 +1,5 @@
 package com.gis.entity;
 
-import com.amazonaws.services.dynamodbv2.xspec.S;
 import com.alibaba.fastjson.JSONObject;
 import com.google.gson.JsonObject;
 import io.swagger.annotations.ApiModelProperty;

+ 31 - 21
720yun_fd_consumer/gis_consumer/src/main/java/com/gis/listener/SceneListener.java

@@ -1,6 +1,7 @@
 package com.gis.listener;
 
 import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.io.file.FileWriter;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.http.HttpRequest;
@@ -8,7 +9,7 @@ import cn.hutool.http.HttpResponse;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.amazonaws.services.dynamodbv2.xspec.S;
+import com.fdkankan.filestorage.FileStorageTemplate;
 import com.gis.constant.CmdConstant;
 import com.gis.constant.ConfigConstant;
 import com.gis.entity.RelicsSceneInitQueueDTO;
@@ -17,7 +18,6 @@ import com.gis.entity.SceneQueueDTO;
 import com.gis.entity.WorkEntity;
 import com.gis.exception.BaseRuntimeException;
 import com.gis.mq.RabbitMqProducerUtil;
-import com.gis.oss.util.AliYunOssUtil;
 import com.gis.oss.util.FileAndOssUtil;
 import com.gis.service.ScenePanoService;
 import com.gis.service.WorkService;
@@ -36,11 +36,13 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 import org.springframework.util.ObjectUtils;
 
+import javax.annotation.Resource;
 import java.io.File;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
 import java.util.*;
 import java.util.concurrent.*;
 import java.util.regex.Matcher;
@@ -58,8 +60,6 @@ import java.util.regex.Pattern;
 public class SceneListener {
 
     @Autowired
-    AliYunOssUtil aliyunOssUtil;
-    @Autowired
     ConfigConstant configConstant;
     @Autowired
     FileAndOssUtil fileAndOssUtil;
@@ -76,8 +76,11 @@ public class SceneListener {
 
     @Value("${queue.scene-queue-work}")
     String sceneQueueWork;
+    @Resource
+    private FileStorageTemplate ossUtil;
 
-
+    @Value("${domain.4dkk}")
+    public  String domain4dKK;
     /**
      * 全景场景初始化方法
      *
@@ -202,7 +205,7 @@ public class SceneListener {
                     scenePanoService.update(scenePanoEntity);
                 }
 
-                String visionUrl = "http://4dkk.4dage.com/scene_view_data/"+param.getSceneCode()+"/images/vision.txt";
+                String visionUrl = "http://"+domain4dKK+"/oss/scene_view_data/"+param.getSceneCode()+"/images/vision.txt";
                 HttpResponse execute = HttpRequest.get(visionUrl+"?m="+System.currentTimeMillis()).execute();
                 JSONArray sweepLocations = new JSONArray();
                 if (execute.getStatus()==200){
@@ -274,16 +277,23 @@ public class SceneListener {
     private void updateOssStatusJson(String sceneCode, int status) throws IOException {
         //修改OSS,status状态 scene_view_data/场景码/data/status.json
         String statusJson = "scene_view_data/"+sceneCode+"/data/status.json";
-        Boolean exist=aliyunOssUtil.existKey("4dkankan",statusJson);
-        if (exist){
-            String statusJsonUrl = "http://4dkk.4dage.com/"+statusJson;
-            HttpResponse execute = HttpRequest.get(statusJsonUrl+"?m="+System.currentTimeMillis()).execute();
-            if (execute.getStatus()==200){
-                log.info("statusJson存在: {}");
-                JSONObject statusJsonObj = JSONObject.parseObject(execute.body());
-                statusJsonObj.put("status",status);
-                fileAndOssUtil.upload("4dkankan",statusJsonObj.toJSONString().getBytes(StandardCharsets.UTF_8), statusJson);
-            }
+        String statusJsonUrl = "http://"+domain4dKK+"/oss/"+statusJson;
+        HttpResponse execute = HttpRequest.get(statusJsonUrl+"?m="+System.currentTimeMillis()).execute();
+        if (execute.getStatus()==200){
+            log.info("statusJson存在: {}");
+            JSONObject statusJsonObj = JSONObject.parseObject(execute.body());
+            statusJsonObj.put("status",status);
+//            fileAndOssUtil.upload("4dkankan",statusJsonObj.toJSONString().getBytes(StandardCharsets.UTF_8), statusJson);
+
+            File tempDir = Files.createTempDirectory("temp").toFile();
+            tempDir.deleteOnExit(); // 设置临时文件夹在JVM退出时删除
+            // 在临时文件夹中创建一个临时文件
+            File tempFile = File.createTempFile("temp", ".json", tempDir);
+            tempFile.deleteOnExit(); // 设置临时文件在JVM退出时删除
+            FileWriter writer = new FileWriter(tempFile);
+            writer.write(statusJsonObj.toJSONString());
+            fileAndOssUtil.uploadBySh(tempFile.getAbsolutePath(), statusJson,"4dkankan","local");
+            tempFile.delete();
         }
     }
 
@@ -344,7 +354,7 @@ public class SceneListener {
             sceneCode = RandomUtils.getSceneCode("fd720_");
             newName = sceneCode + ".jpg";
             filePath = configConstant.serverBasePath + sceneCode+ "/" + newName;
-            aliyunOssUtil.downloadFile("4dkankan",item,filePath );
+            fileAndOssUtil.downloadBySh(item, filePath,"4dkankan","local");
             entity = new ScenePanoEntity();
             entity.setFilePath(filePath);
             entity.setFileName(FileUtil.getName(filePath));
@@ -377,7 +387,7 @@ public class SceneListener {
 
 
             log.info("生成过,重新下载");
-            aliyunOssUtil.downloadFile("4dkankan",item,filePath );
+            fileAndOssUtil.downloadBySh(item, filePath,"4dkankan","local");
             log.info("下载完成重新切图");
             long size = FileUtil.size(new File(filePath));
             size = size / 1024;
@@ -413,7 +423,7 @@ public class SceneListener {
             entity.setTour(tourXmlScene);
             // 上传切图
             this.uploadOss(sceneCode);
-            String ossUrl = configConstant.ossDomain + configConstant.ossBasePath + sceneCode+"/vtour/panos/"+sceneCode+".tiles/thumb.jpg";
+            String ossUrl = ossUtil.calculateUrl("") + configConstant.ossBasePath + sceneCode+"/vtour/panos/"+sceneCode+".tiles/thumb.jpg";
             log.info("切图预览图ossUrl: {}",ossUrl);
             entity.setIcon(ossUrl);
             log.info("任务成功返回: " + obj);
@@ -562,7 +572,7 @@ public class SceneListener {
 
         // 创建二维码、二维码url
         String shareUrl = configConstant.domain4dKK + "/panorama/showMobile.html?id=" + workEntity.getId();
-        String qrCode = qrCodeUtils.generateLogoQrCode(shareUrl, configConstant.serverBasePath, configConstant.ossBasePath, configConstant.ossDomain, workEntity.getId());
+        String qrCode = qrCodeUtils.generateLogoQrCode(shareUrl, configConstant.serverBasePath, configConstant.ossBasePath, ossUtil.calculateUrl(""), workEntity.getId());
         jsonObject.put("share", shareUrl);
         jsonObject.put("qrCode", qrCode);
         jsonObject.put("icon",workEntity.getIcon());
@@ -591,7 +601,7 @@ public class SceneListener {
         } catch (IOException e) {
             e.printStackTrace();
         }
-        String ossUrl = configConstant.ossDomain + ossKeyPath;
+        String ossUrl = ossUtil.calculateUrl("") + ossKeyPath;
         log.info("ossSomeData:{}", ossUrl);
         return jsonObject;
     }

+ 0 - 20
720yun_fd_consumer/gis_consumer/src/main/java/com/gis/listener/SceneMigrateListener.java

@@ -1,27 +1,17 @@
 package com.gis.listener;
 
-import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
-import cn.hutool.http.HttpRequest;
-import cn.hutool.http.HttpResponse;
 import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.gis.constant.CmdConstant;
 import com.gis.constant.ConfigConstant;
 import com.gis.entity.OpenSceneMigrateDto;
 import com.gis.entity.WorkEntity;
-import com.gis.exception.BaseRuntimeException;
 import com.gis.mq.RabbitMqProducerUtil;
-import com.gis.oss.util.AliYunOssUtil;
 import com.gis.oss.util.FileAndOssUtil;
 import com.gis.service.ScenePanoService;
 import com.gis.service.WorkService;
-import com.gis.util.CmdUtils;
-import com.gis.util.FileUtils;
 import com.gis.util.QrCodeUtils;
-import com.gis.util.RandomUtils;
 import com.rabbitmq.client.Channel;
 import lombok.extern.slf4j.Slf4j;
 import org.slf4j.MDC;
@@ -29,19 +19,11 @@ import org.springframework.amqp.core.Message;
 import org.springframework.amqp.rabbit.annotation.Queue;
 import org.springframework.amqp.rabbit.annotation.RabbitListener;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 import org.springframework.util.ObjectUtils;
 
-import java.io.File;
 import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.StringWriter;
 import java.nio.charset.StandardCharsets;
-import java.util.*;
-import java.util.concurrent.*;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
 /**
  * 消息监听器
@@ -55,8 +37,6 @@ import java.util.regex.Pattern;
 public class SceneMigrateListener {
 
     @Autowired
-    AliYunOssUtil aliyunOssUtil;
-    @Autowired
     ConfigConstant configConstant;
     @Autowired
     FileAndOssUtil fileAndOssUtil;

+ 0 - 27
720yun_fd_consumer/gis_consumer/src/main/java/com/gis/listener/ScenePayStatusListener.java

@@ -1,30 +1,11 @@
 package com.gis.listener;
 
-import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.util.ArrayUtil;
 import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
-import cn.hutool.http.HttpRequest;
-import cn.hutool.http.HttpResponse;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.gis.constant.CmdConstant;
-import com.gis.constant.ConfigConstant;
-import com.gis.entity.RelicsSceneInitQueueDTO;
-import com.gis.entity.ScenePanoEntity;
 import com.gis.entity.SceneQueueDTO;
 import com.gis.entity.WorkEntity;
-import com.gis.exception.BaseRuntimeException;
-import com.gis.mq.RabbitMqProducerUtil;
-import com.gis.oss.util.AliYunOssUtil;
-import com.gis.oss.util.FileAndOssUtil;
-import com.gis.service.ScenePanoService;
 import com.gis.service.WorkService;
-import com.gis.util.CmdUtils;
-import com.gis.util.FileUtils;
-import com.gis.util.QrCodeUtils;
-import com.gis.util.RandomUtils;
 import com.rabbitmq.client.Channel;
 import lombok.extern.slf4j.Slf4j;
 import org.slf4j.MDC;
@@ -32,19 +13,11 @@ import org.springframework.amqp.core.Message;
 import org.springframework.amqp.rabbit.annotation.Queue;
 import org.springframework.amqp.rabbit.annotation.RabbitListener;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 import org.springframework.util.ObjectUtils;
 
-import java.io.File;
 import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.StringWriter;
 import java.nio.charset.StandardCharsets;
-import java.util.*;
-import java.util.concurrent.*;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
 /**
  * 消息监听器

+ 5 - 2
720yun_fd_consumer/gis_consumer/src/main/java/com/gis/service/impl/FodderServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.io.FileUtil;
 import cn.hutool.core.thread.ThreadUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.XmlUtil;
+import com.fdkankan.filestorage.FileStorageTemplate;
 import com.gis.constant.CmdConstant;
 import com.gis.constant.ConfigConstant;
 import com.gis.entity.FodderEntity;
@@ -18,6 +19,7 @@ import org.slf4j.MDC;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.io.File;
 import java.io.PrintWriter;
 import java.io.StringWriter;
@@ -41,7 +43,8 @@ public class FodderServiceImpl implements FodderService {
 
     @Autowired
     FileAndOssUtil fileAndOssUtil;
-
+    @Resource
+    private FileStorageTemplate ossUtil;
     // 获取切图后的tour.xml
     private String getTourXmlScene(String code) {
         log.info("处理tour.xml");
@@ -146,7 +149,7 @@ public class FodderServiceImpl implements FodderService {
             entity.setTour(tourXmlScene);
             // 上传切图
             this.uploadOss(sceneCode);
-            String ossUrl = configConstant.ossDomain + configConstant.ossBasePath + sceneCode+"/vtour/panos/"+sceneCode+".tiles/thumb.jpg";
+            String ossUrl = ossUtil.calculateUrl("") + configConstant.ossBasePath + sceneCode+"/vtour/panos/"+sceneCode+".tiles/thumb.jpg";
             log.info("切图预览图ossUrl: {}",ossUrl);
 
             entity.setIcon(ossUrl);

+ 0 - 236
720yun_fd_consumer/gis_consumer/src/main/java/com/gis/util/AliyunOssUtil.java

@@ -1,236 +0,0 @@
-package com.gis.util;
-
-import com.aliyun.oss.OSSClient;
-import com.aliyun.oss.model.OSSObject;
-import com.aliyun.oss.model.OSSObjectSummary;
-import com.aliyun.oss.model.ObjectListing;
-import com.gis.constant.ConfigConstant;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 阿里云oss工具类
- */
-@Slf4j
-@Component
-public class AliyunOssUtil {
-
-    @Autowired
-    ConfigConstant configConstant;
-
-    @Autowired
-    FileUtils fileUtils;
-
-
-//    private static final String END_POINT = "http://oss-cn-shenzhen.aliyuncs.com";
-//    private static final String ACCESS_KEY_ID = "LTAIUrvuHqj8pvry";
-//    private static final String ACCESS_KEY_SECREY = "JLOVl0k8Ke0aaM8nLMMiUAZ3EiiqI4";
-//    private static final String BUCKET_NAME = "oss-xiaoan";
-
-    // 加载对象
-//    private static OSSClient ossClient = new OSSClient(END_POINT, ACCESS_KEY_ID, ACCESS_KEY_SECREY);
-//    private static OSSClient ossClient = new OSSClient(END_POINT, ACCESS_KEY_ID, ACCESS_KEY_SECREY);
-
-    private OSSClient init(){
-        return new OSSClient(configConstant.ossPoint, configConstant.ossKey, configConstant.ossSecrecy);
-    }
-
-
-    public void delete(String key) throws IOException {
-        OSSClient ossClient = init();
-        try {
-
-            // 2019-2-28 启动aliyun oss 空间
-            ossClient.deleteObject(configConstant.ossBucket, key);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    //上传的数据是byte[],key是上传后的文件名
-    public void upload(byte[] data, String key) throws IOException {
-        OSSClient ossClient = init();
-        try {
-            // 2019-2-28 启动aliyun oss 空间
-            ossClient.putObject(configConstant.ossBucket, key, new ByteArrayInputStream(data));
-        } catch (Exception e) {
-            log.error(e.toString() + key);
-        }
-    }
-
-
-    public void upload(String filePath, String key) {
-        OSSClient ossClient = init();
-        try {
-            File file = new File(filePath);
-            if (!file.exists()) {
-                log.error("要上传的文件不存在:" + filePath);
-            }
-            ossClient.putObject(configConstant.ossBucket, key, new File(filePath));
-
-        } catch (Exception e) {
-            log.error(e.toString() + filePath);
-        }
-    }
-
-    public  void upload2(String filePath, String key) {
-        OSSClient ossClient = init();
-        try {
-
-            // 2019-2-28 启动aliyun oss 空间
-            ossClient.putObject(configConstant.ossBucket, key, new File(filePath));
-        } catch (Exception e) {
-            log.error(e.toString() + filePath);
-        }
-    }
-
-
-    /**
-     * 上传的数据是文件夹,参数是文件夹路径,key是上传后的文件名
-     *
-     * @param filepaths key : 原文件路径
-     *                  value: oss路径, oss会自动创建目录
-     */
-
-    public  void uploadMulFiles(Map<String, String> filepaths) {
-        if (filepaths == null) {
-            return;
-        }
-        log.info("开始批量上传到阿里云:" + new Date().toString());
-        if (filepaths.size() > 50) {
-            int i = 1;
-            for (String filePath : filepaths.keySet()) {
-                if (i%100 == 0) {
-
-                    log.info("i= " +i + ", 文件:" + filePath + "到阿里云:" + filepaths.get(filePath));
-                }
-                upload2(filePath, filepaths.get(filePath));
-                i ++ ;
-            }
-            log.info("上传文件数量:"+ i);
-        } else {
-            for (String filePath : filepaths.keySet()) {
-                log.debug("文件:" + filePath + "到阿里云:" + filepaths.get(filePath));
-                upload(filePath, filepaths.get(filePath));
-            }
-        }
-        log.info("批量上传阿里云完毕:" + new Date().toString());
-    }
-
-
-    /**
-     * 可以删除目录
-     *
-     * @param prefix 图片路径
-     * @return
-     */
-    public  int deleteFile(String prefix) {
-        OSSClient ossClient = init();
-        ObjectListing objectListing = ossClient.listObjects(configConstant.ossBucket, prefix);
-        List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
-        try {
-            for (OSSObjectSummary s : sums) {
-                delete(s.getKey());
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        return sums.size();
-    }
-
-
-
-    /**
-     * 上传目录到oss
-     * @param dirPath 目录地址
-     * @param sceneCode 场景码
-     * @param ossBasePath oss基础地址
-     * @throws IOException
-     */
-    public void uploadDir(String dirPath, String sceneCode, String ossBasePath, String houseId) throws IOException {
-//        Map map = FileUtils.eachFile(dirPath, sceneCode, ossBasePath, houseId);
-        Map map = fileUtils.eachFile(dirPath, sceneCode, ossBasePath, houseId);
-
-        uploadMulFiles(map);
-        log.info("oss上传完成");
-    }
-
-
-
-
-
-    /**
-     * 通过文件名判断并获取OSS服务文件上传时文件的contentType
-     *
-     * @param fileName 文件名
-     * @return 文件的contentType
-     */
-    private static String getContentType(String fileName) {
-        log.info("getContentType:" + fileName);
-        // 文件的后缀名
-        String fileExtension = fileName.substring(fileName.lastIndexOf("."));
-        if (".bmp".equalsIgnoreCase(fileExtension)) {
-            return "image/bmp";
-        }
-        if (".gif".equalsIgnoreCase(fileExtension)) {
-            return "image/gif";
-        }
-        if (".jpeg".equalsIgnoreCase(fileExtension) || ".jpg".equalsIgnoreCase(fileExtension)
-                || ".png".equalsIgnoreCase(fileExtension)) {
-            return "image/jpeg";
-        }
-        if (".html".equalsIgnoreCase(fileExtension)) {
-            return "text/html";
-        }
-        if (".txt".equalsIgnoreCase(fileExtension)) {
-            return "text/plain";
-        }
-        if (".vsd".equalsIgnoreCase(fileExtension)) {
-            return "application/vnd.visio";
-        }
-        if (".ppt".equalsIgnoreCase(fileExtension) || "pptx".equalsIgnoreCase(fileExtension)) {
-            return "application/vnd.ms-powerpoint";
-        }
-        if (".doc".equalsIgnoreCase(fileExtension) || "docx".equalsIgnoreCase(fileExtension)) {
-            return "application/msword";
-        }
-        if (".xml".equalsIgnoreCase(fileExtension)) {
-            return "text/xml";
-        }
-        if (".pdf".equalsIgnoreCase(fileExtension)) {
-            return "application/pdf";
-        }
-        // 默认返回类型
-        return "image/jpeg";
-    }
-
-    /**
-     * 以流下载图片
-     *
-     * @param
-     * @return
-     * @Title: getInputStreamByFileUrl
-     * @Description: 根据文件路径获取InputStream流
-     * @return: InputStream
-     */
-    public InputStream getInputStreamByFileUrl(String filePath) {
-        // ossObject包含文件所在的存储空间名称、文件名称、文件元信息以及一个输入流。
-        OSSClient ossClient = init();
-        OSSObject ossObject = ossClient.getObject(configConstant.ossBucket, filePath);
-        return ossObject.getObjectContent();
-    }
-
-
-
-
-
-}

+ 75 - 0
720yun_fd_consumer/gis_consumer/src/main/resources/application-locsitSD.yml

@@ -0,0 +1,75 @@
+domain:
+    4dkk: https://192.168.0.64
+logging:
+    config: classpath:logback-spring.xml
+    fdkk:
+        level: INFO
+        maxHistory: 180
+    file:
+        path: /home/backend/4dkankan_v4/qjkankan/logs/${project.name}_log
+    level:
+        com:
+            gis: info
+filestorage:
+    active: minio
+    minio:
+        endpoint: http://192.168.0.64:13008
+        internal-endpoint: http://4dkankan-mix3d-minio:13008
+        access-key: rohVjfYyZRJH0ovNEVWg
+        access-key-secret: ffTI2PHAzDSfV6WNElOh6S2Qdtwpux0D1nssmK9g
+        bucket: qjkankan
+        bucket-custom-domain:
+            qjkankan: http://${FILE_STORAGE_IP}
+        full-path: false
+server:
+    file:
+        path: /mnt/720yun_fd_manage_data/
+spring:
+    datasource:
+        driver-class-name: com.mysql.cj.jdbc.Driver
+        druid:
+            initial-size: 5
+            max-active: 20
+            max-evictable-idle-time-millis: 90000
+            max-wait: 60000
+            min-evictable-idle-time-millis: 30000
+            min-idle: 10
+            password: 4dkk2024cuikuan%
+            stat-view-servlet:
+                enabled: true
+            test-on-borrow: false
+            test-on-return: false
+            test-while-idle: true
+            time-between-eviction-runs-millis: 60000
+            url: jdbc:mysql://192.168.0.64:13001/720yun_fd_manage?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
+            username: root
+            validation-query: SELECT 1 FROM DUAL
+            web-stat-filter:
+                enabled: true
+        type: com.alibaba.druid.pool.DruidDataSource
+    rabbitmq:
+        host: 192.168.0.64
+        port: 13006
+        username: root
+        password: JHroot2024
+        virtual-host: 4dkankan
+        connection-timeout: 0
+        listener:
+            simple:
+                prefetch: 1
+                max-concurrency: 2
+                acknowledge-mode: manual #开启消费者手动确认
+        #开启消息投递确认机制
+        publisher-confirm-type: correlated
+tlog:
+    enable-invoke-time-print: true
+config:
+    bashPath: ${project.name}/
+queue:
+    scene-queue: queue-pano-scene
+    do-slice-queue: queue-do-slice
+    relics-init-queue: relics-init-queue
+    relics-update-name-queue: relics-update-name-queue
+    pano-migrate-scene-queue: pano-migrate-scene-queue
+    pano-paystatus-scene-queue: pano-paystatus-scene-queue
+    scene-queue-work: queue-pano-scene-work

+ 59 - 0
720yun_fd_consumer/gis_consumer/src/main/resources/application-proSD.yml

@@ -0,0 +1,59 @@
+logging:
+    config: classpath:logback-spring.xml
+    fdkk:
+        level: INFO
+        maxHistory: 180
+    level:
+        com:
+            gis: info
+    path: /root/data/${project.name}_log
+filestorage:
+    active: minio
+    minio:
+        endpoint: http://${FILE_STORAGE_IP}:9001
+        internal-endpoint: http://${FILE_STORAGE_IP}:9001
+        access-key: FYxjWFQzycMhdxUXDVYU
+        access-key-secret: TRQJGvWk4SSZXFg1BDQ3jFcTMeXKAb0i4W59dxYZ
+        bucket: laser-data
+        bucket-custom-domain:
+            laser-data: http://${FILE_STORAGE_IP}
+        full-path: false
+server:
+    file:
+        path: /mnt/720yun_fd_manage_data/
+spring:
+    datasource:
+        driver-class-name: com.mysql.cj.jdbc.Driver
+        druid:
+            initial-size: 5
+            max-active: 20
+            max-evictable-idle-time-millis: 90000
+            max-wait: 60000
+            min-evictable-idle-time-millis: 30000
+            min-idle: 10
+            password: JK20220120%JIK
+            stat-view-servlet:
+                enabled: true
+            test-on-borrow: false
+            test-on-return: false
+            test-while-idle: true
+            time-between-eviction-runs-millis: 60000
+            url: jdbc:mysql://127.0.0.1:3306/720yun_fd_manage?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false
+            username: root
+            validation-query: SELECT 1 FROM DUAL
+            web-stat-filter:
+                enabled: true
+        type: com.alibaba.druid.pool.DruidDataSource
+    rabbitmq:
+        address: 127.0.0.1:5672
+        connection-timeout: 15000
+        password: 123456
+        publisher-confirms: true
+        publisher-returns: true
+        template:
+            mandatory: true
+        username: admin
+        virtual-host: /
+tlog:
+    enable-invoke-time-print: true
+    pano-migrate-scene-queue: pano-migrate-scene-queue

+ 77 - 0
720yun_fd_consumer/gis_consumer/src/main/resources/application-sitSD.yml

@@ -0,0 +1,77 @@
+domain:
+    4dkk: ${FILE_STORAGE_IP}
+logging:
+    config: classpath:logback-spring.xml
+    fdkk:
+        level: INFO
+        maxHistory: 180
+    file:
+        path: /home/backend/4dkankan_v4/qjkankan/logs/${project.name}_log
+    level:
+        com:
+            gis: info
+filestorage:
+    active: minio
+    minio:
+        endpoint: http://4dkankan-mix3d-minio:9000
+        internal-endpoint: http://4dkankan-mix3d-minio:9000
+        access-key: rohVjfYyZRJH0ovNEVWg
+        access-key-secret: ffTI2PHAzDSfV6WNElOh6S2Qdtwpux0D1nssmK9g
+        bucket: qjkankan
+        bucket-custom-domain:
+            qjkankan: http://${FILE_STORAGE_IP}
+        full-path: false
+server:
+    port: 8002
+    file:
+        path: /mnt/720yun_fd_manage_data/
+spring:
+    datasource:
+        driver-class-name: com.mysql.cj.jdbc.Driver
+        druid:
+            initial-size: 5
+            max-active: 20
+            max-evictable-idle-time-millis: 90000
+            max-wait: 60000
+            min-evictable-idle-time-millis: 30000
+            min-idle: 10
+            password: 4dkk2024cuikuan%
+            stat-view-servlet:
+                enabled: true
+            test-on-borrow: false
+            test-on-return: false
+            test-while-idle: true
+            time-between-eviction-runs-millis: 60000
+            url: jdbc:mysql://4dkankan-mix3d-mysql:3306/720yun_fd_manage?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
+            username: root
+            validation-query: SELECT 1 FROM DUAL
+            web-stat-filter:
+                enabled: true
+        type: com.alibaba.druid.pool.DruidDataSource
+    rabbitmq:
+        host: 4dkankan-mix3d-rabbitmq
+        port: 5672
+        username: root
+        password: JHroot2024
+        virtual-host: 4dkankan
+        connection-timeout: 0
+        listener:
+            simple:
+                prefetch: 1
+                max-concurrency: 2
+                acknowledge-mode: manual #开启消费者手动确认
+        #开启消息投递确认机制
+        publisher-confirm-type: correlated
+tlog:
+    enable-invoke-time-print: true
+    pano-migrate-scene-queue: pano-migrate-scene-queue
+config:
+    bashPath: 720yun_fd_manage/
+queue:
+    scene-queue: queue-pano-scene
+    do-slice-queue: queue-do-slice
+    relics-init-queue: relics-init-queue
+    relics-update-name-queue: relics-update-name-queue
+    pano-migrate-scene-queue: pano-migrate-scene-queue
+    pano-paystatus-scene-queue: pano-paystatus-scene-queue
+    scene-queue-work: queue-pano-scene-work

+ 123 - 116
720yun_fd_consumer/gis_consumer/src/main/resources/logback-spring.xml

@@ -1,156 +1,163 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<configuration scan="true" scanPeriod="60 seconds" debug="false">
-    <property name="LOG_MAX_HISTORY" value="180"/>
-    <springProperty scope="context" name="LOG_PATH" source="logging.path"/>
+<configuration>
+    <springProperty scope="context" name="LOG_MAX_HISTORY" source="logging.fdkk.maxHistory"/>
+    <!-- 日志根目录-->
+    <springProperty scope="context" name="LOG_HOME" source="logging.file.path"/>
 
-    <!-- 控制台输出 -->
-    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+    <!-- 日志级别 -->
+    <springProperty scope="context" name="LOG_LEVEL" source="logging.fdkk.level" defaultValue="DEBUG"/>
+
+    <!--  标识这个"STDOUT" 将会添加到这个logger -->
+    <springProperty scope="context" name="STDOUT" source="log.stdout" defaultValue="STDOUT"/>
+
+    <!-- 日志文件名称-->
+    <property name="LOG_PREFIX" value="720yun"/>
+
+    <!-- 日志文件编码-->
+    <property name="LOG_CHARSET" value="UTF-8"/>
+
+    <!-- 日志文件路径+日期-->
+    <property name="LOG_DIR" value="${LOG_HOME}/%d{yyyyMMdd}"/>
+
+    <!--对日志进行格式化-->
+
+    <!--文件大小,默认10MB-->
+    <property name="MAX_FILE_SIZE" value="50MB"/>
+
+    <!-- 配置日志的滚动时间 ,表示只保留最近 10 天的日志-->
+    <property name="MAX_HISTORY" value="10"/>
+
+    <!--输出到控制台-->
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder">
             <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
-            <pattern>${LOG_PATH}/%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %X{TRACE_ID} %-5level %logger{50} - %msg%n</pattern>
-            <!--<charset>utf-8</charset>-->
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>utf-8</charset>
         </encoder>
     </appender>
-    <!-- 按照每天生成日志文件:主项目日志 -->
-    <appender name="file.all" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <!-- 追加日志到原文件结尾 -->
-        <Prudent>true</Prudent>
+    <!--输出到文件-->
+    <appender name="0" class="ch.qos.logback.core.rolling.RollingFileAppender">
+    </appender>
+
+    <!-- 定义 ALL 日志的输出方式:-->
+    <appender name="FILE_ALL" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!--日志文件路径,日志文件名称-->
+        <File>${LOG_HOME}/${LOG_PREFIX}_all.log</File>
+        <!-- 设置滚动策略,当天的日志大小超过 ${MAX_FILE_SIZE} 文件大小时候,新的内容写入新的文件, 默认10MB -->
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!--日志文件输出的文件名 -->
-            <FileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}.%i.log</FileNamePattern>
+            <!--日志文件路径,新的 ALL 日志文件名称,“ i ” 是个变量 -->
+            <FileNamePattern>${LOG_DIR}/${LOG_PREFIX}_all%i.log</FileNamePattern>
+
+            <!-- 配置日志的滚动时间 ,表示只保留最近 10 天的日志-->
             <MaxHistory>${LOG_MAX_HISTORY}</MaxHistory>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+            <!--当天的日志大小超过 ${MAX_FILE_SIZE} 文件大小时候,新的内容写入新的文件, 默认10MB-->
             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
-                <!-- 除按日志记录之外,还配置了日志文件不能超过10M(默认),若超过10M,日志文件会以索引0开始, -->
-                <maxFileSize>10MB</maxFileSize>
+                <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
             </timeBasedFileNamingAndTriggeringPolicy>
         </rollingPolicy>
-        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
+        <encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder">
             <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
-            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %X{TRACE_ID} %-5level %logger{500} - %msg%n</pattern>
-            <!--<charset>utf-8</charset>-->
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n </pattern>
+            <charset>utf-8</charset>
         </encoder>
     </appender>
 
-    <!--info日志统一输出到这里-->
-    <appender name="file.info" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <Prudent>true</Prudent>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!--日志文件输出的文件名 每小时生成日志文件 -->
-            <FileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/info/console-info.%d{yyyy-MM-dd-HH}.%i.log</FileNamePattern>
-            <MaxHistory>${LOG_MAX_HISTORY}</MaxHistory>
-            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
-                <!-- 除按日志记录之外,还配置了日志文件不能超过10M(默认),若超过10M,日志文件会以索引0开始, -->
-                <maxFileSize>10MB</maxFileSize>
-            </timeBasedFileNamingAndTriggeringPolicy>
-        </rollingPolicy>
-        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
-            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %method 方法名  %L 行数 %msg:日志消息,%n是换行符-->
-            <pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %X{TRACE_ID} %-5level %logger{56}.%method:%L - %msg%n</pattern>
-            <!--<charset>utf-8</charset>-->
-        </encoder>
-        <!-- 此日志文件只记录info级别的 -->
+    <!-- 定义 INFO 日志的输出方式:-->
+    <appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 下面为配置只输出error级别的日志 -->
         <filter class="ch.qos.logback.classic.filter.LevelFilter">
             <level>INFO</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
+            <OnMismatch>DENY</OnMismatch>
+            <OnMatch>ACCEPT</OnMatch>
         </filter>
-    </appender>
-
-    <!--错误日志统一输出到这里-->
-    <appender name="file.error" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <Prudent>true</Prudent>
+        <append>true</append>
+        <!--日志文件路径,日志文件名称-->
+        <File>${LOG_HOME}/${LOG_PREFIX}_info.log</File>
+        <!-- 设置滚动策略,当天的日志大小超过 ${MAX_FILE_SIZE} 文件大小时候,新的内容写入新的文件, 默认10MB -->
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!--日志文件输出的文件名-->
-            <FileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/error/console-error.%d{yyyy-MM-dd-HH}.%i.log</FileNamePattern>
-            <!--日志文件保留天数-->
+
+            <!--日志文件路径,新的 INFO 日志文件名称,“ i ” 是个变量 -->
+            <FileNamePattern>${LOG_DIR}/${LOG_PREFIX}_info%i.log</FileNamePattern>
+
+            <!-- 配置日志的滚动时间 ,表示只保留最近 10 天的日志-->
             <MaxHistory>${LOG_MAX_HISTORY}</MaxHistory>
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+
+            <!--当天的日志大小超过 ${MAX_FILE_SIZE} 文件大小时候,新的内容写入新的文件, 默认10MB-->
             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
-                <!-- 除按日志记录之外,还配置了日志文件不能超过10M(默认),若超过10M,日志文件会以索引0开始, -->
-                <maxFileSize>10MB</maxFileSize>
+                <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
             </timeBasedFileNamingAndTriggeringPolicy>
         </rollingPolicy>
-        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
-            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %method 方法名  %L 行数 %msg:日志消息,%n是换行符-->
-            <pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %X{TRACE_ID} %-5level %logger{56}.%method:%L - %msg%n</pattern>
-            <!--<charset>utf-8</charset>-->
+
+        <!-- 输出的日志内容格式化-->
+        <encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder">
+            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n </pattern>
+            <charset>utf-8</charset>
         </encoder>
-        <!-- 此日志文件只记录error级别的 -->
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>ERROR</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-        </filter>
     </appender>
 
-    <!--warn日志统一输出到这里-->
-    <appender name="file.warn" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <Prudent>true</Prudent>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!--日志文件输出的文件名 按小时生成日志-->
-            <FileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/warn/console-warn.%d{yyyy-MM-dd-HH}.%i.log</FileNamePattern>
-            <!--日志文件保留天数-->
-            <MaxHistory>${LOG_MAX_HISTORY}</MaxHistory>
-            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
-                <!-- 除按日志记录之外,还配置了日志文件不能超过10M(默认),若超过10M,日志文件会以索引0开始, -->
-                <maxFileSize>10MB</maxFileSize>
-            </timeBasedFileNamingAndTriggeringPolicy>
-        </rollingPolicy>
-        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
-            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %method 方法名  %L 行数 %msg:日志消息,%n是换行符-->
-            <pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %X{TRACE_ID} %-5level %logger{56}.%method:%L - %msg%n</pattern>
-            <!--<charset>utf-8</charset>-->
-        </encoder>
-        <!-- 此日志文件只记录warn级别的 -->
+    <!-- 定义 ERROR 日志的输出方式:-->
+    <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 下面为配置只输出error级别的日志 -->
         <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>WARN</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
+            <level>ERROR</level>
+            <OnMismatch>DENY</OnMismatch>
+            <OnMatch>ACCEPT</OnMatch>
         </filter>
-    </appender>
+        <!--日志文件路径,日志文件名称-->
+        <File>${LOG_HOME}/${LOG_PREFIX}_err.log</File>
 
-    <!--debug级别日志统一输出到这里-->
-    <appender name="file.debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <Prudent>true</Prudent>
+        <!-- 设置滚动策略,当天的日志大小超过 ${MAX_FILE_SIZE} 文件大小时候,新的内容写入新的文件, 默认10MB -->
         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!--日志文件输出的文件名 按小时生成日志-->
-            <FileNamePattern>${LOG_PATH}/%d{yyyy-MM-dd}/debug/console-debug.%d{yyyy-MM-dd-HH}.%i.log</FileNamePattern>
-            <!--日志文件保留天数-->
+
+            <!--日志文件路径,新的 ERR 日志文件名称,“ i ” 是个变量 -->
+            <FileNamePattern>${LOG_DIR}/${LOG_PREFIX}_err%i.log</FileNamePattern>
+
+            <!-- 配置日志的滚动时间 ,表示只保留最近 10 天的日志-->
             <MaxHistory>${LOG_MAX_HISTORY}</MaxHistory>
-            <!-- 除按日志记录之外,还配置了日志文件不能超过5M,若超过5M,日志文件会以索引0开始,命名日志文件,例如console-debug.2018-08-24-09.1.log -->
+            <cleanHistoryOnStart>true</cleanHistoryOnStart>
+
+            <!--当天的日志大小超过 ${MAX_FILE_SIZE} 文件大小时候,新的内容写入新的文件, 默认10MB-->
             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
-                <maxFileSize>10MB</maxFileSize>
+                <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
             </timeBasedFileNamingAndTriggeringPolicy>
         </rollingPolicy>
-        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
-            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度 %method 方法名  %L 行数 %msg:日志消息,%n是换行符-->
-            <pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %X{TRACE_ID} %-5level %logger{56}.%method:%L - %msg%n</pattern>
-            <!--<charset>utf-8</charset>-->
+
+        <!-- 输出的日志内容格式化-->
+        <encoder class="com.yomahub.tlog.core.enhance.logback.AspectLogbackEncoder">
+            <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>utf-8</charset>
         </encoder>
-        <!-- 此日志文件只记录debug级别的 -->
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>DEBUG</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY </onMismatch>
-        </filter>
     </appender>
 
-    <!-- 不丢失日志.默认的,如果队列的80%已满,则会丢弃TRACT、DEBUG、INFO级别的日志 -->
-    <appender name="file.async" class="ch.qos.logback.classic.AsyncAppender">
-        <discardingThreshold>0</discardingThreshold>
-        <queueSize>256</queueSize>
-        <includeCallerData>true</includeCallerData>
-        <appender-ref ref="file.all" />
-    </appender>
+    <logger name="org.springframework" level="ERROR"/>
+    <logger name="org.apache.commons" level="ERROR"/>
+    <logger name="com.alibaba.dubbo.monitor" level="ERROR"/>
+    <logger name="com.alibaba.dubbo.remoting" level="ERROR"/>
+    <logger name="com.apache.ibatis" level="${LOG_LEVEL}"/>
+    <logger name="java.sql.Connection" level="${LOG_LEVEL}"/>
+    <logger name="java.sql.Statement" level="${LOG_LEVEL}"/>
+    <logger name="java.sql.PreparedStatement" level="${LOG_LEVEL}"/>
+    <logger name="io.lettuce.core.protocol" level="ERROR"/>
+    <logger name="io.lettuce.core" level="ERROR"/>
 
-    <!--  日志输出级别 -->
-    <!-- TRACE\DEBUG\INFO\WARN\ERROR\FATAL\OFF -->
+    <!-- ${LOG_ROOT_LEVEL} 日志级别 -->
     <root level="INFO">
-        <appender-ref ref="console" />
-        <appender-ref ref="file.async"/>
-        <appender-ref ref="file.error" />
-        <appender-ref ref="file.info" />
-        <appender-ref ref="file.debug" />
-        <appender-ref ref="file.warn" />
+
+        <!-- 标识这个"${STDOUT}"将会添加到这个logger -->
+        <appender-ref ref="STDOUT"/>
+
+        <!-- FILE_ALL 日志输出添加到 logger -->
+        <appender-ref ref="FILE_ALL"/>
+
+        <!-- FILE_INFO 日志输出添加到 logger -->
+        <appender-ref ref="FILE_INFO"/>
+
+        <!-- FILE_ERROR 日志输出添加到 logger -->
+        <appender-ref ref="FILE_ERROR"/>
     </root>
 
-</configuration>
+</configuration>

+ 40 - 39
720yun_fd_consumer/gis_consumer_oss/pom.xml

@@ -18,46 +18,9 @@
     <dependencies>
 
 
-        <!--AliYun sdk-->
-        <dependency>
-            <groupId>com.aliyun</groupId>
-            <artifactId>aliyun-java-sdk-core</artifactId>
-            <version>4.0.3</version>
-        </dependency>
-        <dependency>
-            <groupId>com.aliyun</groupId>
-            <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
-            <version>1.1.0</version>
-        </dependency>
-        <dependency>
-            <groupId>com.aliyun.oss</groupId>
-            <artifactId>aliyun-sdk-oss</artifactId>
-            <version>2.5.0</version>
-        </dependency>
-
-
-        <!--七牛云oss info-->
-        <dependency>
-            <groupId>com.qiniu</groupId>
-            <artifactId>happy-dns-java</artifactId>
-            <version>0.1.6</version>
-            <scope>compile</scope>
-        </dependency>
 
 
-        <dependency>
-            <groupId>com.qiniu</groupId>
-            <artifactId>qiniu-java-sdk</artifactId>
-            <version>7.10.0</version>
-        </dependency>
-
 
-        <!--aws s3 -->
-        <dependency>
-            <groupId>com.amazonaws</groupId>
-            <artifactId>aws-java-sdk</artifactId>
-            <version>1.11.327</version>
-        </dependency>
 
         <dependency>
             <groupId>commons-fileupload</groupId>
@@ -191,11 +154,49 @@
             <version>3.0.0-SNAPSHOT</version>
         </dependency>
         <dependency>
+            <groupId>com.fdkankan</groupId>
+            <artifactId>4dkankan-utils-filestorage</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.iherus</groupId>
             <artifactId>qrext4j</artifactId>
         </dependency>
-
-
+        <dependency>
+            <groupId>com.amazonaws</groupId>
+            <artifactId>aws-java-sdk-s3</artifactId>
+            <version>${aws.version}</version>
+        </dependency>
+        <!-- https://mvnrepository.com/artifact/com.qcloud/cos_api -->
+        <dependency>
+            <groupId>com.qcloud</groupId>
+            <artifactId>cos_api</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>okio</artifactId>
+                    <groupId>com.squareup.okio</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>okhttp</artifactId>
+                    <groupId>com.squareup.okhttp3</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.aliyun.oss</groupId>
+            <artifactId>aliyun-sdk-oss</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.minio</groupId>
+            <artifactId>minio</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.jetbrains.kotlin</groupId>
+            <artifactId>kotlin-stdlib</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.yomahub</groupId>
+            <artifactId>tlog-all-spring-boot-starter</artifactId>
+        </dependency>
     </dependencies>
 
 

+ 14 - 2
720yun_fd_consumer/gis_consumer_oss/src/main/java/com/gis/oss/command/CmdConstant.java

@@ -41,8 +41,20 @@ public class CmdConstant {
      * 参数4:aws|oss|load
      * 参数5:file|folder  文件或目录
      *
-     *  sudo bash /opt/ossutil/fyun-upload.sh test-4dkankan /root/data test_2/data aws folder
+     *  bash /opt/ossutil/fyun-upload.sh test-4dkankan /root/data test_2/data aws folder
      */
-//    public final static String UPLOAD_DIR = "sudo bash /opt/ossutil/fyun-upload.sh %s %s %s %s folder";
+//    public final static String UPLOAD_DIR = "bash /opt/ossutil/fyun-upload.sh %s %s %s %s folder";
     public final static String UPLOAD_DIR = "bash /opt/ossutil/fyun-upload.sh %s %s %s %s folder";
+
+    /**
+     * oss文件上传命令 bash /opt/ossutil/fyun-upload.sh {bucket} {srcPath} {destPath} {fyunType} {opType}
+     * opType: file or folder
+     * fyunType : oss ,aws
+     */
+    public static final String FYUN_UPLOAD = "bash /mnt/shell/fyun/fyun-upload.sh %s %s /%s %s %s";
+
+    public static final String FYUN_DOWN = "bash /mnt/shell/fyun/fyun-download.sh %s /%s %s %s %s";
+
+    public static final String FYUN_DELETE = "bash /mnt/shell/fyun/fyun-deled.sh %s /%s %s %s %s";
+
 }

+ 0 - 346
720yun_fd_consumer/gis_consumer_oss/src/main/java/com/gis/oss/util/AliYunOssUtil.java

@@ -1,346 +0,0 @@
-package com.gis.oss.util;
-
-import cn.hutool.core.io.FileUtil;
-import cn.hutool.core.util.RuntimeUtil;
-import com.alibaba.fastjson.JSON;
-import com.aliyun.oss.OSSClient;
-import com.aliyun.oss.model.*;
-import com.gis.oss.command.CmdConstant;
-import com.gis.oss.command.CmdUtils;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-import org.springframework.util.CollectionUtils;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * 阿里云oss工具类
- */
-@Slf4j
-@Component
-public class AliYunOssUtil {
-
-//    @Autowired
-//    ConfigConstant configConstant;
-
-    @Value("${oss.key}")
-    public  String ossKey;
-
-    @Value("${oss.secrecy}")
-    public  String ossSecrecy;
-
-    @Value("${oss.bucket}")
-    public  String ossBucket;
-
-    @Value("${oss.point}")
-    public  String ossPoint;
-
-
-    // 加载对象
-    private OSSClient init(){
-//        return new OSSClient(configConstant.ossPoint, configConstant.ossKey, configConstant.ossSecrecy);
-        return new OSSClient(ossPoint, ossKey, ossSecrecy);
-    }
-
-
-
-    public  void delete(String key) throws IOException {
-        OSSClient ossClient = init();
-        try {
-
-            // 2019-2-28 启动aliyun oss 空间
-            ossClient.deleteObject(ossBucket, key);
-            ossClient.deleteObject(ossBucket, key);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    //上传的数据是byte[],key是上传后的文件名
-    public void upload(byte[] data, String key) throws IOException {
-        OSSClient ossClient = init();
-        try {
-            // 2019-2-28 启动aliyun oss 空间
-            ossClient.putObject(ossBucket, key, new ByteArrayInputStream(data));
-        } catch (Exception e) {
-            log.error(e.toString() + key);
-        }
-    }
-    /**
-     * 获取文件内容-阿里云
-     * @param objectName
-     * @return
-     */
-    public boolean existKey(String bucket,String objectName){
-        //创建oss客户端
-        OSSClient ossClient = init();
-        // ossObject包含文件所在的存储空间名称、文件名称、文件元信息以及一个输入流。
-        try{
-            boolean exist = ossClient.doesObjectExist(bucket, objectName);
-            return exist;
-        }catch (Exception e){
-            log.error("s4判断是否存在key异常,key=" + objectName, e);
-        }finally {
-            if(ossClient != null){
-                ossClient.shutdown();
-            }
-        }
-        return false;
-    }
-    /**
-     *
-     * @param data
-     * @param key
-     * @param contentType : 不设置,默认浏览器打开图片
-     * application/octet-stream 使用cdn后会自动下载
-     * @throws IOException
-     */
-    public void upload(byte[] data, String key, String contentType) throws IOException {
-        OSSClient ossClient = init();
-
-        // 创建上传文件的元信息,可以通过文件元信息设置HTTP header。
-        ObjectMetadata meta = new ObjectMetadata();
-        meta.setContentType(contentType);
-
-        try {
-            // 2019-2-28 启动aliyun oss 空间
-            ossClient.putObject(ossBucket, key, new ByteArrayInputStream(data), meta);
-        } catch (Exception e) {
-            log.error(e.toString() + key);
-        }
-    }
-    /**
-     *
-     * @param data
-     * @param key
-     * application/octet-stream 使用cdn后会自动下载
-     * @throws IOException
-     */
-    public void upload(String bucket,byte[] data, String key ) throws IOException {
-        OSSClient ossClient = init();
-        // 创建上传文件的元信息,可以通过文件元信息设置HTTP header。
-        try {
-            ObjectMetadata metadata = new ObjectMetadata();
-            if (key.contains(".jpg")) {
-                metadata.setContentType("image/jpeg");
-            } else if (key.contains(".png")) {
-                metadata.setContentType("image/png");
-            } else if (key.contains(".json")) {
-                metadata.setContentType("application/json");
-            }
-            // 2019-2-28 启动aliyun oss 空间
-            ossClient.putObject(bucket, key, new ByteArrayInputStream(data),metadata);
-        } catch (Exception e) {
-            log.error(e.toString() + key);
-        }
-    }
-
-
-    public void upload(String filePath, String key) {
-        OSSClient ossClient = init();
-        try {
-            File file = new File(filePath);
-            if (!file.exists()) {
-                log.error("要上传的文件不存在:" + filePath);
-            }
-            ObjectMetadata metadata = new ObjectMetadata();
-            if (filePath.contains(".jpg")) {
-                metadata.setContentType("image/jpeg");
-            } else if (filePath.contains(".png")) {
-                metadata.setContentType("image/png");
-            } else if (filePath.contains(".json")) {
-                metadata.setContentType("application/json");
-            }
-            ossClient.putObject(ossBucket, key, new File(filePath),metadata);
-
-        } catch (Exception e) {
-            log.error(e.toString() + filePath);
-        }
-    }
-
-    public  void upload2(String filePath, String key) {
-        OSSClient ossClient = init();
-        try {
-
-            // 2019-2-28 启动aliyun oss 空间
-            ossClient.putObject(ossBucket, key, new File(filePath));
-        } catch (Exception e) {
-            log.error(e.toString() + filePath);
-        }
-    }
-
-
-    /**
-     * 上传的数据是文件夹,参数是文件夹路径,key是上传后的文件名
-     *
-     * @param filepaths key : 原文件路径
-     *                  value: oss路径, oss会自动创建目录
-     */
-    public  void uploadMulFiles(Map<String, String> filepaths) {
-        if (filepaths == null) {
-            return;
-        }
-        log.info("开始批量上传到阿里云:" + new Date().toString());
-        if (filepaths.size() > 50) {
-            for (String filePath : filepaths.keySet()) {
-                upload2(filePath, filepaths.get(filePath));
-            }
-        } else {
-            for (String filePath : filepaths.keySet()) {
-                log.info("文件:" + filePath + "到阿里云:" + filepaths.get(filePath));
-                upload(filePath, filepaths.get(filePath));
-            }
-        }
-        log.info("批量上传阿里云完毕:" + new Date().toString());
-    }
-
-    public List<String> getFileFolder(String bucket, String keyName) {
-        log.info("获取文件夹bucket-{},路径{}",bucket,keyName);
-        OSSClient ossClient = init();
-        List<String> keyList = new ArrayList<>();
-        try {
-            boolean flag = true;
-            String nextMaker = null;
-            ListObjectsRequest listObjectsRequest = new ListObjectsRequest(bucket);
-            //指定下一级文件
-            listObjectsRequest.setPrefix(keyName);
-            //设置分页的页容量
-            listObjectsRequest.setMaxKeys(200);
-            do {
-                //获取下一页的起始点,它的下一项
-                listObjectsRequest.setMarker(nextMaker);
-                ObjectListing objectListing = ossClient.listObjects(listObjectsRequest);
-                List<String> collect = objectListing.getObjectSummaries().parallelStream()
-                        .map(OSSObjectSummary::getKey).collect(Collectors.toList());
-                if (!CollectionUtils.isEmpty(collect)) {
-                    keyList.addAll(collect);
-                }
-                nextMaker = objectListing.getNextMarker();
-                //全部执行完后,为false
-                flag = objectListing.isTruncated();
-            } while (flag);
-        } catch (Exception e) {
-            log.error("获取文件列表失败,path=" + keyName, e);
-            e.printStackTrace();
-        }
-        log.info("获取文件夹集合={}", JSON.toJSONString(keyList));
-        return keyList;
-    }
-    public ObjectMetadata downloadFile(String bucket, String pathKey, String file) {
-        OSSClient ossClient = init();
-        GetObjectRequest request = new GetObjectRequest(bucket, pathKey);
-        log.info("下载开始:下载bucket={},下载pathKey={},下载filePath={}", bucket, pathKey, file);
-        File downloadFile = new File(file);
-        if (!FileUtil.exist(downloadFile.getParent())){
-            FileUtil.mkdir(downloadFile.getParent());
-        }
-        return ossClient.getObject(request, downloadFile);
-    }
-    /**
-     * 可以删除目录
-     *
-     * @param prefix 图片路径
-     * @return
-     */
-    public  int deleteFile(String prefix) {
-        OSSClient ossClient = init();
-        ObjectListing objectListing = ossClient.listObjects(ossBucket, prefix);
-        List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
-        try {
-            for (OSSObjectSummary s : sums) {
-                delete(s.getKey());
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        return sums.size();
-    }
-
-    public  void main(String[] args) throws IOException {
-
-        HashMap<String, String> map = new HashMap<>();
-//		map.put("F:\\test\\aa.jpg", "kanfang/test/aa.jpg");
-        map.put("F:\\test\\oss\\floor.json", "kanfang/test/faa.json");
-        uploadMulFiles(map);
-
-
-    }
-
-
-
-
-
-
-    /**
-     * 通过文件名判断并获取OSS服务文件上传时文件的contentType
-     *
-     * @param fileName 文件名
-     * @return 文件的contentType
-     */
-    private static String getContentType(String fileName) {
-        log.info("getContentType:" + fileName);
-        // 文件的后缀名
-        String fileExtension = fileName.substring(fileName.lastIndexOf("."));
-        if (".bmp".equalsIgnoreCase(fileExtension)) {
-            return "image/bmp";
-        }
-        if (".gif".equalsIgnoreCase(fileExtension)) {
-            return "image/gif";
-        }
-        if (".jpeg".equalsIgnoreCase(fileExtension) || ".jpg".equalsIgnoreCase(fileExtension)
-                || ".png".equalsIgnoreCase(fileExtension)) {
-            return "image/jpeg";
-        }
-        if (".html".equalsIgnoreCase(fileExtension)) {
-            return "text/html";
-        }
-        if (".txt".equalsIgnoreCase(fileExtension)) {
-            return "text/plain";
-        }
-        if (".vsd".equalsIgnoreCase(fileExtension)) {
-            return "application/vnd.visio";
-        }
-        if (".ppt".equalsIgnoreCase(fileExtension) || "pptx".equalsIgnoreCase(fileExtension)) {
-            return "application/vnd.ms-powerpoint";
-        }
-        if (".doc".equalsIgnoreCase(fileExtension) || "docx".equalsIgnoreCase(fileExtension)) {
-            return "application/msword";
-        }
-        if (".xml".equalsIgnoreCase(fileExtension)) {
-            return "text/xml";
-        }
-        if (".pdf".equalsIgnoreCase(fileExtension)) {
-            return "application/pdf";
-        }
-        // 默认返回类型
-        return "image/jpeg";
-    }
-
-    /**
-     * 以流下载图片
-     *
-     * @param
-     * @return
-     * @Title: getInputStreamByFileUrl
-     * @Description: 根据文件路径获取InputStream流
-     * @return: InputStream
-     */
-    public  InputStream getInputStreamByFileUrl(String filePath) {
-        // ossObject包含文件所在的存储空间名称、文件名称、文件元信息以及一个输入流。
-        OSSClient ossClient = init();
-        OSSObject ossObject = ossClient.getObject(ossBucket, filePath);
-        return ossObject.getObjectContent();
-    }
-
-
-    public void uploadBySh(String filePath, String key) {
-        String cmd = String.format(CmdConstant.UPLOAD_DIR, ossBucket, filePath, key , "oss");
-        CmdUtils.callShell(cmd);
-    }
-}

+ 0 - 184
720yun_fd_consumer/gis_consumer_oss/src/main/java/com/gis/oss/util/AwsOssUtil.java

@@ -1,184 +0,0 @@
-package com.gis.oss.util;
-
-import cn.hutool.core.util.RuntimeUtil;
-import com.amazonaws.auth.AWSStaticCredentialsProvider;
-import com.amazonaws.auth.BasicAWSCredentials;
-import com.amazonaws.regions.Regions;
-import com.amazonaws.services.s3.AmazonS3;
-import com.amazonaws.services.s3.AmazonS3ClientBuilder;
-import com.amazonaws.services.s3.model.CannedAccessControlList;
-import com.amazonaws.services.s3.model.DeleteObjectsRequest;
-import com.amazonaws.services.s3.model.PutObjectRequest;
-import com.amazonaws.services.s3.model.S3ObjectSummary;
-import com.gis.oss.command.CmdConstant;
-import com.gis.oss.command.CmdUtils;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-/**
- * aws-s3工具类
- */
-@Slf4j
-@Component
-public class AwsOssUtil {
-
-
-//    @Value("${oss.key:AKIAWCV5QFZ3ZNELKYUY}")
-    private static String s3key="AKIAWCV5QFZ3ZNELKYUY";
-
-//    @Value("${oss.secrecy:epS5ghyR4LJ7rxk/qJO9ZYh6m9Oz6g5haKDu4yws}")
-    private static String s3secrecy="epS5ghyR4LJ7rxk/qJO9ZYh6m9Oz6g5haKDu4yws";
-
-    @Value("${oss.bucket}")
-    private String bucket;
-
-    public void uploadAws(String filePath, String key1){
-        uploadAwsWithHeaders(filePath,key1,null);
-    }
-
-    public void uploadAws(byte[] data,String objectName){
-        BasicAWSCredentials awsCreds = new BasicAWSCredentials(s3key, s3secrecy);
-        AmazonS3 s3 = AmazonS3ClientBuilder.standard()
-                .withCredentials(new AWSStaticCredentialsProvider(awsCreds))
-                .withRegion(Regions.EU_WEST_2)
-                .build();
-        try {
-            com.amazonaws.services.s3.model.ObjectMetadata metadata = new com.amazonaws.services.s3.model.ObjectMetadata();
-            s3.putObject(this.bucket, objectName, new ByteArrayInputStream(data), metadata);
-        }catch (Exception e){
-            log.error("s3上传文件失败", e);
-        }finally {
-            if(s3 != null){
-                s3.shutdown();
-            }
-        }
-    }
-    public void uploadAws(String bucket,byte[] data,String objectName){
-        BasicAWSCredentials awsCreds = new BasicAWSCredentials(s3key, s3secrecy);
-        AmazonS3 s3 = AmazonS3ClientBuilder.standard()
-                .withCredentials(new AWSStaticCredentialsProvider(awsCreds))
-                .withRegion(Regions.EU_WEST_2)
-                .build();
-        try {
-            com.amazonaws.services.s3.model.ObjectMetadata metadata = new com.amazonaws.services.s3.model.ObjectMetadata();
-            s3.putObject(bucket, objectName, new ByteArrayInputStream(data), metadata);
-        }catch (Exception e){
-            log.error("s3上传文件失败", e);
-        }finally {
-            if(s3 != null){
-                s3.shutdown();
-            }
-        }
-    }
-
-    public void uploadAwsWithHeaders(String filePath, String key1,Map<String,String> headers){
-        try{
-            uploadS3File(filePath, key1);
-        }catch (Exception e){
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * s3上传文件
-     * @param filePath
-     * @param key1
-     * @throws IOException
-     */
-    private void uploadS3File(String filePath, String key1) throws Exception {
-        /**
-         * 创建s3对象
-         */
-        BasicAWSCredentials awsCreds = new BasicAWSCredentials(s3key, s3secrecy);
-        AmazonS3 s3 = AmazonS3ClientBuilder.standard()
-                .withCredentials(new AWSStaticCredentialsProvider(awsCreds))
-                .withRegion(Regions.EU_WEST_2)
-                .build();
-        try{
-            File file = new File(filePath);
-            if(!file.exists()){
-                log.info("要上传s3的文件不存在");
-                return;
-            }
-
-            // 设置文件并设置公读
-            com.amazonaws.services.s3.model.ObjectMetadata metadata = new com.amazonaws.services.s3.model.ObjectMetadata();
-            if(filePath.contains(".jpg")){
-                metadata.setContentType("image/jpeg");
-            }
-            if(filePath.contains(".png")){
-                metadata.setContentType("image/png");
-            }
-//            PutObjectRequest request = new PutObjectRequest(s3bucket, key1, file);
-            PutObjectRequest request = new PutObjectRequest(bucket, key1, file);
-            request.withCannedAcl(CannedAccessControlList.PublicRead);
-            request.withMetadata(metadata);
-
-            // 上传文件
-            com.amazonaws.services.s3.model.PutObjectResult putObjectResult = s3.putObject(request);
-            if (StringUtils.isNotEmpty(putObjectResult.getETag())) {
-                log.info("s3上传文件成功:" + key1);
-            }
-        }catch (Exception e){
-            throw e;
-        }finally {
-            s3.shutdown();
-        }
-
-    }
-
-    private void deleteAwsFile(String prefix){
-
-        int maxKeys = 200;
-        String nextMaker = null;
-        BasicAWSCredentials awsCreds = new BasicAWSCredentials(s3key, s3secrecy);
-        AmazonS3 s3 = AmazonS3ClientBuilder.standard()
-                .withCredentials(new AWSStaticCredentialsProvider(awsCreds))
-                .withRegion(Regions.EU_WEST_2)
-                .build();
-        try {
-            com.amazonaws.services.s3.model.ListObjectsRequest listObjectsRequest = new com.amazonaws.services.s3.model.ListObjectsRequest();
-            listObjectsRequest.setBucketName(this.bucket);
-            listObjectsRequest.setPrefix(prefix);
-            listObjectsRequest.setMaxKeys(maxKeys);
-
-            com.amazonaws.services.s3.model.ObjectListing objectListing;
-            do{
-                listObjectsRequest.setMarker(nextMaker);
-                objectListing = s3.listObjects(listObjectsRequest);
-                List<S3ObjectSummary> objectSummaries = objectListing.getObjectSummaries();
-                List<DeleteObjectsRequest.KeyVersion> keys =objectSummaries.stream().map(summary->new DeleteObjectsRequest.KeyVersion(summary.getKey())).collect(Collectors.toList());
-
-                com.amazonaws.services.s3.model.DeleteObjectsRequest multiObjectDeleteRequest =
-                        new com.amazonaws.services.s3.model.DeleteObjectsRequest(this.bucket)
-                                .withKeys(keys)
-                                .withQuiet(false);
-                com.amazonaws.services.s3.model.DeleteObjectsResult delObjRes = s3.deleteObjects(multiObjectDeleteRequest);
-                int successfulDeletes = delObjRes.getDeletedObjects().size();
-                log.info("删除aws文件成功,删除文件数;{}", successfulDeletes);
-                nextMaker = objectListing.getNextMarker();
-            }while (objectListing.isTruncated());
-        }catch (Exception e){
-            log.error("删除was文件失败,path="+prefix, e);
-        }finally {
-            if(s3 != null){
-                s3.shutdown();
-            }
-        }
-    }
-
-
-    public void uploadBySh(String filePath, String key) {
-        String cmd = String.format(CmdConstant.UPLOAD_DIR, bucket, filePath, key , "aws");
-         CmdUtils.callShell(cmd);
-    }
-}

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 34 - 1249
720yun_fd_consumer/gis_consumer_oss/src/main/java/com/gis/oss/util/FileAndOssUtil.java


+ 109 - 0
720yun_fd_consumer/gis_consumer_oss/src/main/java/com/gis/oss/util/OssShUtil.java

@@ -0,0 +1,109 @@
+package com.gis.oss.util;
+
+import cn.hutool.extra.spring.SpringUtil;
+import com.fdkankan.filestorage.FileStorageTemplate;
+import com.gis.oss.command.CmdConstant;
+import com.gis.oss.command.StreamGobblerLine;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author Xiewj
+ * @date 2023/6/6
+ */
+@Slf4j
+@Component
+public class OssShUtil {
+    @Autowired
+    FileStorageTemplate fileStorageTemplate;
+    /**
+     * 调用sh脚本上传oss
+     */
+    public static void ossUploadDir(String cmd){
+
+//        log.info("ossCmd: " + cmd);
+        long start = System.currentTimeMillis();
+        callLineSh(cmd);
+        long end = System.currentTimeMillis();
+        log.info("场景码目录:{} 上传完成, 耗时:{} s" , (end-start)/1000 );
+    }
+
+//    public static void ossDeleteDir(String srcPath) {
+//        log.info("删除目录开始,路径:{} s" ,srcPath);
+//        long start = System.currentTimeMillis();
+//        String opType = srcPath.contains(".")? "file":"folder" ;
+//        FileStorageTemplate bean = SpringUtil.getBean(FileStorageTemplate.class);
+//        String cmd = String.format(CmdConstant.FYUN_DELETE, bean.getBucket(),fdkkLaserConfig.getDefaultFolder(),srcPath,bean.getActive(),opType);
+//        log.info("ossDeleteDir-{}",cmd);
+//        callLineSh(cmd);
+//        long end = System.currentTimeMillis();
+//        log.info("删除目录完成, 耗时:{} s" , (end-start)/1000 );
+//    }
+    /**
+     * oss文件上传命令 bash /opt/ossutil/fyun-upload.sh {bucket} {srcPath} {destPath} {fyunType} {opType}
+     * opType: file or folder
+     *  //@param bucket     桶名
+     * @param srcPath    源文件路径
+     * @param destPath   目标文件路径
+     *  //@param fyunType   oss or aws
+     */
+    public static void yunUpload(String srcPath,String destPath){
+        String opType = srcPath.contains(".")? "file":"folder" ;
+        FileStorageTemplate bean = SpringUtil.getBean(FileStorageTemplate.class);
+        String cmd = String.format(CmdConstant.FYUN_UPLOAD, bean.getBucket(),srcPath,destPath,bean.getActive(),opType);
+        callLineSh(cmd);
+    }
+    public static void yunUpload(String srcPath,String destPath,String bucket,String active){
+        String opType = srcPath.contains(".")? "file":"folder" ;
+        FileStorageTemplate bean = SpringUtil.getBean(FileStorageTemplate.class);
+        String cmd = String.format(CmdConstant.FYUN_UPLOAD,bucket,srcPath,destPath,active,opType);
+        callLineSh(cmd);
+    }
+    public static void yunDownload(String srcPath,String destPath){
+        String opType = srcPath.contains(".")? "file":"folder" ;
+        FileStorageTemplate bean = SpringUtil.getBean(FileStorageTemplate.class);
+        if("/".equals(srcPath.substring(0,1))){
+            srcPath = srcPath.substring(1);
+        }
+        String cmd = String.format(CmdConstant.FYUN_DOWN,bean.getBucket(),srcPath,destPath,bean.getActive(),opType);
+        callLineSh(cmd);
+    }
+    public static void yunDownloadOther(String srcPath,String destPath,String bucket,String active){
+        String opType = srcPath.contains(".")? "file":"folder" ;
+        FileStorageTemplate bean = SpringUtil.getBean(FileStorageTemplate.class);
+        if("/".equals(srcPath.substring(0,1))){
+            srcPath = srcPath.substring(1);
+        }
+        String cmd = String.format(CmdConstant.FYUN_DOWN,bucket,srcPath,destPath,active,opType);
+        callLineSh(cmd);
+    }
+    public static void yunDownload(String bucket,String srcPath,String destPath){
+        String opType = srcPath.contains(".")? "file":"folder" ;
+        if("/".equals(srcPath.substring(0,1))){
+            srcPath = srcPath.substring(1);
+        }
+        FileStorageTemplate bean = SpringUtil.getBean(FileStorageTemplate.class);
+        String cmd = String.format(CmdConstant.FYUN_DOWN,bucket,srcPath,destPath,bean.getActive(),opType);
+        callLineSh(cmd);
+    }
+    /**
+     * @param command 命令
+     */
+    public static void callLineSh(String command){
+        log.info("cmd: " + command);
+        try {
+            String[] cmd = new String[]{"/bin/sh", "-c", command};
+            Process process = Runtime.getRuntime().exec(cmd);
+            log.info("开始运行");
+            StreamGobblerLine errorGobbler = new StreamGobblerLine(process.getErrorStream(), "ERROR");
+            errorGobbler.start();
+            // 200行打印一次日志
+            StreamGobblerLine outGobbler = new StreamGobblerLine(process.getInputStream(), "STDOUT", null);
+            outGobbler.start();
+            process.waitFor();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}

+ 0 - 138
720yun_fd_consumer/gis_consumer_oss/src/main/java/com/gis/oss/util/QiNiuOssUtil.java

@@ -1,138 +0,0 @@
-package com.gis.oss.util;
-
-import com.qiniu.common.QiniuException;
-import com.qiniu.http.Response;
-import com.qiniu.storage.BucketManager;
-import com.qiniu.storage.Configuration;
-import com.qiniu.storage.Region;
-import com.qiniu.storage.UploadManager;
-import com.qiniu.storage.model.FileInfo;
-import com.qiniu.util.Auth;
-import lombok.extern.slf4j.Slf4j;
-import org.junit.Test;
-
-import java.util.Map;
-
-/**
- * 七牛云oss上传工具
- */
-@Slf4j
-public class QiNiuOssUtil {
-
-    private static String ACCESS_KEY = "dlPPwgZky_F-iP8CbSbJpiAtAcqw3BYwb9rdHMrS";
-    private static String SECRET_KEY = "YEtkLKDsImXB-8m1CT1zV_YwCwwGvrUvo2ktj9KZ";
-
-    // 大场景 super 华南区域
-    private static String bucketName = "super";
-
-
-    //构造一个带指定 Region 对象的配置类, Region.region2(): 华南区域
-//    private static Configuration cfg = new Configuration(Region.region2());
-//    private static Configuration cfg = new Configuration(Zone.autoZone());
-    private static Configuration cfg = new Configuration(Region.huanan());
-
-    // 华北
-//    private static String bucketName = "model3d";
-//    private static Configuration cfg = new Configuration(Zone.autoZone());
-
-    //...其他参数参考类注释
-    private static UploadManager uploadManager = new UploadManager(cfg);
-
-    private static Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
-//    private static  String upToken = auth.uploadToken(bucketName);
-
-
-
-    /**
-     * localFilePath: 本地文件路径
-     * ossFilePath: ossw文件存放路径, 注意前面不要用"/" ,data/aa.jpg
-     */
-    public static void upload(String localFilePath, String ossFilePath) throws QiniuException {
-        // 覆盖需要把ossKey放到uploadToken里
-        String upToken = auth.uploadToken(bucketName, ossFilePath);
-        Response response = uploadManager.put(localFilePath, ossFilePath, upToken);
-        if (response.statusCode!=200){
-            String errorMsg = response.toString();
-            log.error("七牛云响应值:{}", errorMsg);
-//            BaseRuntimeException.isTrue(true, null, "七牛云返回上传失败: " + errorMsg);
-        }
-    }
-
-
-    public static void main(String[] args) throws QiniuException {
-        String localFilePath = "F:\\test\\ngin\\11.txt";
-        String ossFilePath = "data/owen/11.txt";
-        upload(localFilePath, ossFilePath);
-        System.out.println("11111");
-
-//        getInfo(ossFilePath);
-    }
-
-
-    /**
-     * 批量上传
-     * key: localFilePath
-     * value: ossFilePath
-     */
-    public static void uploads(Map<String, String> param) {
-        log.info("开始批量上传到七牛云");
-        String upToken = auth.uploadToken(bucketName);
-        param.forEach((key, val)->{
-            try {
-                uploadManager.put(key, val, upToken);
-            } catch (QiniuException e) {
-                e.printStackTrace();
-            }
-        });
-        log.info("完成批量上传到七牛云");
-    }
-
-
-
-    /**
-     * by owen 2022-5-13
-     * @param key :文件路径
-     * 第一级目录不能带/ 例如: owen/aa.jpg
-     * 不支持删除目录, 删除目录使用脚本
-     */
-    public static void delete(String key){
-        BucketManager bucketManager = new BucketManager(auth, cfg);
-        try {
-            bucketManager.delete(bucketName, key);
-        } catch (QiniuException ex) {
-            //如果遇到异常,说明删除失败
-            log.error(ex.response.toString());
-        }
-    }
-
-
-
-
-    @Test
-    public void testDelete(){
-        delete("owen/a");
-    }
-
-
-    /**
-     * 获取文件信息
-     * @param key
-     */
-    public static void getInfo(String key){
-
-        BucketManager bucketManager = new BucketManager(auth, cfg);
-        try {
-            FileInfo fileInfo = bucketManager.stat(bucketName, key);
-            System.out.println(fileInfo.hash);
-            System.out.println(fileInfo.fsize);
-            System.out.println(fileInfo.mimeType);
-            System.out.println(fileInfo.putTime);
-        } catch (QiniuException ex) {
-            System.err.println(ex.response.toString());
-        }
-    }
-
-
-
-
-}

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 1244
720yun_fd_consumer/gis_consumer_oss/src/main/java/com/gis/oss/util/UploadToOssUtil.java


+ 56 - 23
720yun_fd_consumer/pom.xml

@@ -36,15 +36,20 @@
         <shiro.version>1.3.2</shiro.version>
         <jwt.version>3.2.0</jwt.version>
         <jjwt.version>0.6.0</jjwt.version>
-        <aliyun.core.version>4.0.3</aliyun.core.version>
-        <aliyun.dysmsapi.version>1.1.0</aliyun.dysmsapi.version>
-        <aliyun.oss.version>2.5.0</aliyun.oss.version>
         <tk.mybatis.version>2.0.2</tk.mybatis.version>
         <tk.mapper.version>4.0.3</tk.mapper.version>
         <pagehelper.version>1.2.5</pagehelper.version>
         <knife4j.version>3.0.3</knife4j.version>
         <junit.version>4.12</junit.version>
         <qrext4j.version>1.3.1</qrext4j.version>
+        <tlog-all-spring-boot-starter.version>1.5.0</tlog-all-spring-boot-starter.version>
+
+
+
+        <minio.version>8.2.2</minio.version>
+        <aws.version>1.12.481</aws.version>
+        <cos.version>5.6.166</cos.version>
+        <aliyun-sdk-oss.version>3.15.1</aliyun-sdk-oss.version>
 
     </properties>
 
@@ -102,7 +107,11 @@
                 <artifactId>4dkankan-utils-rabbitmq</artifactId>
                 <version>3.0.0-SNAPSHOT</version>
             </dependency>
-
+            <dependency>
+                <groupId>com.fdkankan</groupId>
+                <artifactId>4dkankan-utils-filestorage</artifactId>
+                <version>3.0.0-SNAPSHOT</version>
+            </dependency>
             <!-- lombok -->
             <dependency>
                 <groupId>org.projectlombok</groupId>
@@ -173,25 +182,6 @@
                 <version>${jjwt.version}</version>
             </dependency>
 
-            <!--aliyun sdk-->
-            <dependency>
-                <groupId>com.aliyun</groupId>
-                <artifactId>aliyun-java-sdk-core</artifactId>
-                <version>${aliyun.core.version}</version>
-            </dependency>
-
-            <dependency>
-                <groupId>com.aliyun</groupId>
-                <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
-                <version>${aliyun.dysmsapi.version}</version>
-            </dependency>
-
-            <!--aliyun oss-->
-            <dependency>
-                <groupId>com.aliyun.oss</groupId>
-                <artifactId>aliyun-sdk-oss</artifactId>
-                <version>${aliyun.oss.version}</version>
-            </dependency>
 
             <!--tk.mybatis 依赖-->
             <dependency>
@@ -226,7 +216,50 @@
                 <artifactId>qrext4j</artifactId>
                 <version>${qrext4j.version}</version>
             </dependency>
+
+            <dependency>
+                <groupId>com.amazonaws</groupId>
+                <artifactId>aws-java-sdk-s3</artifactId>
+                <version>${aws.version}</version>
+            </dependency>
+            <!-- https://mvnrepository.com/artifact/com.qcloud/cos_api -->
+            <dependency>
+                <groupId>com.qcloud</groupId>
+                <artifactId>cos_api</artifactId>
+                <version>${cos.version}</version>
+                <exclusions>
+                    <exclusion>
+                        <artifactId>okio</artifactId>
+                        <groupId>com.squareup.okio</groupId>
+                    </exclusion>
+                    <exclusion>
+                        <artifactId>okhttp</artifactId>
+                        <groupId>com.squareup.okhttp3</groupId>
+                    </exclusion>
+                </exclusions>
+            </dependency>
+            <dependency>
+                <groupId>com.aliyun.oss</groupId>
+                <artifactId>aliyun-sdk-oss</artifactId>
+                <version>${aliyun-sdk-oss.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.minio</groupId>
+                <artifactId>minio</artifactId>
+                <version>${minio.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jetbrains.kotlin</groupId>
+                <artifactId>kotlin-stdlib</artifactId>
+                <version>1.3.70</version>
+            </dependency>
+            <dependency>
+                <groupId>com.yomahub</groupId>
+                <artifactId>tlog-all-spring-boot-starter</artifactId>
+                <version>${tlog-all-spring-boot-starter.version}</version>
+            </dependency>
         </dependencies>
+
     </dependencyManagement>
 
     <!--<build>-->

+ 105 - 0
720yun_fd_manage/gis_application/src/main/resources/application-proSD.yml

@@ -0,0 +1,105 @@
+domain:
+    4dkk: https://www.4dkankan.com
+knife4j:
+    basic:
+        enable: true
+        password: owen
+        username: owen
+logging:
+    config: classpath:logback-spring.xml
+    fdkk:
+        level: INFO
+        maxHistory: 180
+    file:
+        path: /root/log/${project.name}_log
+    level:
+        com:
+            gis: debug
+oss:
+    bucket: 4dkankan
+    domain: https://4dkk.4dage.com/
+    file:
+        path: ${project.name}/
+    key: LTAI5tSkKQbEmxxuTbPtHqK6
+    point: http://oss-cn-shenzhen-internal.aliyuncs.com
+    secrecy: JI21tOnZbJuqt5NDRcQq2qvAUA4KTf
+    type: oss
+server:
+    domain: ''
+    file:
+        path: /mnt/${project.name}_data/
+spring:
+    datasource:
+        driver-class-name: com.mysql.cj.jdbc.Driver
+        druid:
+            initial-size: 5
+            max-active: 20
+            max-evictable-idle-time-millis: 90000
+            max-wait: 60000
+            min-evictable-idle-time-millis: 30000
+            min-idle: 10
+            password: JK20220120&JIK
+            stat-view-servlet:
+                enabled: true
+            test-on-borrow: false
+            test-on-return: false
+            test-while-idle: true
+            time-between-eviction-runs-millis: 60000
+            url: jdbc:mysql://172.18.157.42:13306/720yun_fd_manage?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
+            username: laser
+            validation-query: SELECT 1 FROM DUAL
+            web-stat-filter:
+                enabled: true
+        type: com.alibaba.druid.pool.DruidDataSource
+    rabbitmq:
+        host: 172.18.157.42
+        port: 5672
+        username: guest
+        password: guest
+        virtual-host: 4dkankan
+        connection-timeout: 0
+        listener:
+            simple:
+                prefetch: 5
+                max-concurrency: 10
+                acknowledge-mode: manual #开启消费者手动确认
+            direct:
+                acknowledge-mode: manual #开启消费者手动确认
+        #开启消息投递确认机制
+        publisher-confirm-type: correlated
+    redis:
+        database: 0
+        host: r-wz9owsphxqwi4ztqlf.redis.rds.aliyuncs.com
+        jedis:
+            pool:
+                max-active: 8
+                max-idle: 8
+                max-wait: -1ms
+                min-idle: 0
+        password: 3oo19bgh0cae2406&
+        port: 6379
+        timeout: 3000ms
+    servlet:
+        multipart:
+            location: /mnt
+tlog:
+    enable-invoke-time-print: true
+forest:
+    backend: okhttp3 # 后端HTTP框架(默认为 okhttp3)
+    max-connections: 1000 # 连接池最大连接数(默认为 500)
+    max-route-connections: 500 # 每个路由的最大连接数(默认为 500)
+    timeout: 50000 # 请求超时时间,单位为毫秒(默认为 3000)
+    connect-timeout: 20000 # 连接超时时间,单位为毫秒(默认为 timeout)
+    read-timeout: 50000 # 数据读取超时时间,单位为毫秒(默认为 timeout)
+    max-retry-count: 0 # 请求失败后重试次数(默认为 0 次不重试)
+    ssl-protocol: SSLv3 # 单向验证的HTTPS的默认SSL协议(默认为 SSLv3)
+    logEnabled: true # 打开或关闭日志(默认为 true)
+    log-request: true # 打开/关闭Forest请求日志(默认为 true)
+    log-response-status: true # 打开/关闭Forest响应状态日志(默认为 true)
+    log-response-content: true # 打开/关闭Forest响应内容日志(默认为 false)
+    base-address-scheme: https
+    base-address-host: www.4dkankan.com
+queue:
+    scene-queue: queue-pano-scene
+    do-slice-queue: queue-do-slice
+    relics-update-name-queue: relics-update-name-queue

+ 102 - 0
720yun_fd_manage/gis_application/src/main/resources/application-sitSD.yml

@@ -0,0 +1,102 @@
+domain:
+    4dkk: ${FILE_STORAGE_IP}
+logging:
+    config: classpath:logback-spring.xml
+    fdkk:
+        level: INFO
+        maxHistory: 180
+    file:
+        path: /home/backend/4dkankan_v4/qjkankan/logs/${project.name}_log
+    level:
+        com:
+            gis: debug
+filestorage:
+    active: minio
+    minio:
+        endpoint: http://4dkankan-mix3d-minio:9000
+        internal-endpoint: http://4dkankan-mix3d-minio:9000
+        access-key: rohVjfYyZRJH0ovNEVWg
+        access-key-secret: ffTI2PHAzDSfV6WNElOh6S2Qdtwpux0D1nssmK9g
+        bucket: qjkankan
+        bucket-custom-domain:
+            qjkankan: http://${FILE_STORAGE_IP}
+        full-path: false
+server:
+    port: 8001
+    file:
+        path: /mnt/${project.name}_data/
+spring:
+    datasource:
+        driver-class-name: com.mysql.cj.jdbc.Driver
+        druid:
+            initial-size: 5
+            max-active: 20
+            max-evictable-idle-time-millis: 90000
+            max-wait: 60000
+            min-evictable-idle-time-millis: 30000
+            min-idle: 10
+            password: 4dkk2024cuikuan%
+            stat-view-servlet:
+                enabled: true
+            test-on-borrow: false
+            test-on-return: false
+            test-while-idle: true
+            time-between-eviction-runs-millis: 60000
+            url: jdbc:mysql://4dkankan-mix3d-mysql:3306/${project.name}?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
+            username: root
+            validation-query: SELECT 1 FROM DUAL
+            web-stat-filter:
+                enabled: true
+        type: com.alibaba.druid.pool.DruidDataSource
+    rabbitmq:
+        host: 4dkankan-mix3d-rabbitmq
+        port: 5672
+        username: root
+        password: JHroot2024
+        virtual-host: 4dkankan
+        connection-timeout: 0
+        listener:
+            simple:
+                prefetch: 1
+                max-concurrency: 2
+                acknowledge-mode: manual #开启消费者手动确认
+        #开启消息投递确认机制
+        publisher-confirm-type: correlated
+    redis:
+        database: 0
+        host: 4dkankan-mix3d-redis
+        jedis:
+            pool:
+                max-active: 8
+                max-idle: 8
+                max-wait: -1ms
+                min-idle: 0
+        password: JK20230411dage
+        port: 6379
+        timeout: 3000ms
+    servlet:
+        multipart:
+            location: /mnt
+tlog:
+    enable-invoke-time-print: true
+forest:
+    backend: okhttp3 # 后端HTTP框架(默认为 okhttp3)
+    max-connections: 1000 # 连接池最大连接数(默认为 500)
+    max-route-connections: 500 # 每个路由的最大连接数(默认为 500)
+    timeout: 50000 # 请求超时时间,单位为毫秒(默认为 3000)
+    connect-timeout: 20000 # 连接超时时间,单位为毫秒(默认为 timeout)
+    read-timeout: 50000 # 数据读取超时时间,单位为毫秒(默认为 timeout)
+    max-retry-count: 0 # 请求失败后重试次数(默认为 0 次不重试)
+    ssl-protocol: SSLv3 # 单向验证的HTTPS的默认SSL协议(默认为 SSLv3)
+    logEnabled: true # 打开或关闭日志(默认为 true)
+    log-request: true # 打开/关闭Forest请求日志(默认为 true)
+    log-response-status: true # 打开/关闭Forest响应状态日志(默认为 true)
+    log-response-content: true # 打开/关闭Forest响应内容日志(默认为 false)
+    base-address-scheme: http
+    base-address-host: 192.168.0.64:13000
+queue:
+    scene-queue: queue-pano-scene
+    do-slice-queue: queue-do-slice
+    relics-update-name-queue: relics-update-name-queue
+config:
+    bashPath: ${project.name}/

+ 31 - 14
720yun_fd_manage/gis_common/pom.xml

@@ -117,19 +117,6 @@
             <artifactId>jjwt</artifactId>
         </dependency>
 
-        <!--AliYun sdk-->
-        <dependency>
-            <groupId>com.aliyun</groupId>
-            <artifactId>aliyun-java-sdk-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.aliyun</groupId>
-            <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.aliyun.oss</groupId>
-            <artifactId>aliyun-sdk-oss</artifactId>
-        </dependency>
 
 
         <dependency>
@@ -186,6 +173,10 @@
             <groupId>org.iherus</groupId>
             <artifactId>qrext4j</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.fdkankan</groupId>
+            <artifactId>4dkankan-utils-filestorage</artifactId>
+        </dependency>
         <!-- redis-config 需要此包 -->
         <!--<dependency>-->
             <!--<groupId>com.fasterxml.jackson.core</groupId>-->
@@ -193,7 +184,33 @@
             <!--<version>2.11.2</version>-->
         <!--</dependency>-->
 
-
+        <dependency>
+            <groupId>com.amazonaws</groupId>
+            <artifactId>aws-java-sdk-s3</artifactId>
+        </dependency>
+        <!-- https://mvnrepository.com/artifact/com.qcloud/cos_api -->
+        <dependency>
+            <groupId>com.qcloud</groupId>
+            <artifactId>cos_api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.aliyun.oss</groupId>
+            <artifactId>aliyun-sdk-oss</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.minio</groupId>
+            <artifactId>minio</artifactId>
+            <exclusions>
+                <exclusion>
+                    <artifactId>okio</artifactId>
+                    <groupId>com.squareup.okio</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>okhttp</artifactId>
+                    <groupId>com.squareup.okhttp3</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
     </dependencies>
 
 

+ 2 - 23
720yun_fd_manage/gis_common/src/main/java/com/gis/common/constant/ConfigConstant.java

@@ -15,10 +15,6 @@ public class ConfigConstant {
     @Value("${server.file.path}")
     public  String serverBasePath;
 
-    /** 服务器域名*/
-    @Value("${server.domain}")
-    public  String serverDomain;
-
     /**环境配置*/
     @Value("${spring.profiles.active}")
     public String active;
@@ -26,25 +22,6 @@ public class ConfigConstant {
     @Value("${project.name}")
     public String projectName;
 
-    @Value("${oss.point}")
-    public  String ossPoint;
-
-    @Value("${oss.key}")
-    public  String ossKey;
-
-    @Value("${oss.secrecy}")
-    public  String ossSecrecy;
-
-    @Value("${oss.bucket}")
-    public  String ossBucket;
-
-    @Value("${oss.file.path}")
-    public  String ossBasePath;
-
-    @Value("${oss.domain}")
-    public  String ossDomain;
-
-
     @Value("${swagger.package}")
     public  String swaggerPackage;
 
@@ -57,6 +34,8 @@ public class ConfigConstant {
     @Value("${swagger.version}")
     public  String swaggerVersion;
 
+    @Value("${config.bashPath}")
+    public  String ossBasePath;
 
     /*********************** 其他参数 ***********************/
 

+ 7 - 0
720yun_fd_manage/gis_mapper/src/main/java/com/gis/mapper/provider/WorkProvider.java

@@ -64,6 +64,13 @@ public class WorkProvider {
             if (ArrayUtil.isNotEmpty(nums)) {
                 sql.append(" and (  num in ('").append(StringUtils.join(nums, "','")).append("') )");
             }
+            List<String> snCodes = param.getSnCodes();
+            if (ArrayUtil.isNotEmpty(snCodes)){
+//            sql.append(" and (  sn_code in (").append(StringUtils.join(snCodes, ",")).append(") )");
+                sql.append(" and (  sn_code in ('").append(StringUtils.join(snCodes, "','")).append("') )");
+            }else {
+                sql.append(" and status > 0 and location IS NULL");
+            }
         }else {
             List<String> snCodes = param.getSnCodes();
             if (ArrayUtil.isNotEmpty(snCodes)){

+ 0 - 38
720yun_fd_manage/gis_oss/pom.xml

@@ -22,46 +22,8 @@
             <artifactId>gis_common</artifactId>
         </dependency>
 
-        <!--AliYun sdk-->
-        <dependency>
-            <groupId>com.aliyun</groupId>
-            <artifactId>aliyun-java-sdk-core</artifactId>
-            <version>4.0.3</version>
-        </dependency>
-        <dependency>
-            <groupId>com.aliyun</groupId>
-            <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
-            <version>1.1.0</version>
-        </dependency>
-        <dependency>
-            <groupId>com.aliyun.oss</groupId>
-            <artifactId>aliyun-sdk-oss</artifactId>
-            <version>2.5.0</version>
-        </dependency>
 
 
-        <!--七牛云oss info-->
-        <dependency>
-            <groupId>com.qiniu</groupId>
-            <artifactId>happy-dns-java</artifactId>
-            <version>0.1.6</version>
-            <scope>compile</scope>
-        </dependency>
-
-
-        <dependency>
-            <groupId>com.qiniu</groupId>
-            <artifactId>qiniu-java-sdk</artifactId>
-            <version>7.10.0</version>
-        </dependency>
-
-
-        <!--aws s3 -->
-        <dependency>
-            <groupId>com.amazonaws</groupId>
-            <artifactId>aws-java-sdk</artifactId>
-            <version>1.11.327</version>
-        </dependency>
 
         <dependency>
             <groupId>commons-fileupload</groupId>

+ 0 - 292
720yun_fd_manage/gis_oss/src/main/java/com/gis/oss/util/AliYunOssUtil.java

@@ -1,292 +0,0 @@
-package com.gis.oss.util;
-
-import cn.hutool.core.collection.CollUtil;
-import com.aliyun.oss.ClientException;
-import com.aliyun.oss.OSSClient;
-import com.aliyun.oss.model.*;
-import com.gis.common.constant.ConfigConstant;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.io.*;
-import java.net.URLDecoder;
-import java.util.*;
-
-/**
- * 阿里云oss工具类
- * 参考:https://help.aliyun.com/document_detail/84842.htm?spm=a2c4g.11186623.0.0.606a282dA00Gt3#t22290.html
- */
-@Slf4j
-@Component
-public class AliYunOssUtil {
-
-    @Autowired
-    ConfigConstant configConstant;
-
-    // 加载对象
-    private OSSClient init(){
-        return new OSSClient(configConstant.ossPoint, configConstant.ossKey, configConstant.ossSecrecy);
-    }
-
-
-
-    public  void delete(String key) throws IOException {
-        OSSClient ossClient = init();
-        try {
-
-            // 2019-2-28 启动aliyun oss 空间
-            ossClient.deleteObject(configConstant.ossBucket, key);
-            ossClient.deleteObject(configConstant.ossBucket, key);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    //上传的数据是byte[],key是上传后的文件名
-    public void upload(byte[] data, String key) throws IOException {
-        OSSClient ossClient = init();
-        try {
-            // 2019-2-28 启动aliyun oss 空间
-            ossClient.putObject(configConstant.ossBucket, key, new ByteArrayInputStream(data));
-        } catch (Exception e) {
-            log.error(e.toString() + key);
-        }
-    }
-
-    /**
-     *
-     * @param data
-     * @param key
-     * @param contentType : 不设置,默认浏览器打开图片
-     * application/octet-stream 使用cdn后会自动下载
-     * @throws IOException
-     */
-    public void upload(byte[] data, String key, String contentType) throws IOException {
-        OSSClient ossClient = init();
-
-        // 创建上传文件的元信息,可以通过文件元信息设置HTTP header。
-        ObjectMetadata meta = new ObjectMetadata();
-        meta.setContentType(contentType);
-
-        try {
-            // 2019-2-28 启动aliyun oss 空间
-            ossClient.putObject(configConstant.ossBucket, key, new ByteArrayInputStream(data), meta);
-        } catch (Exception e) {
-            log.error(e.toString() + key);
-        }
-    }
-
-
-    public void upload(String filePath, String key) {
-        OSSClient ossClient = init();
-        try {
-            File file = new File(filePath);
-            if (!file.exists()) {
-                log.error("要上传的文件不存在:" + filePath);
-            }
-            ossClient.putObject(configConstant.ossBucket, key, new File(filePath));
-
-        } catch (Exception e) {
-            log.error(e.toString() + filePath);
-        }
-    }
-
-    public  void upload2(String filePath, String key) {
-        OSSClient ossClient = init();
-        try {
-
-            // 2019-2-28 启动aliyun oss 空间
-            ossClient.putObject(configConstant.ossBucket, key, new File(filePath));
-        } catch (Exception e) {
-            log.error(e.toString() + filePath);
-        }
-    }
-
-
-    /**
-     * 上传的数据是文件夹,参数是文件夹路径,key是上传后的文件名
-     *
-     * @param filepaths key : 原文件路径
-     *                  value: oss路径, oss会自动创建目录
-     */
-    public  void uploadMulFiles(Map<String, String> filepaths) {
-        if (filepaths == null) {
-            return;
-        }
-        log.info("开始批量上传到阿里云:" + new Date().toString());
-        if (filepaths.size() > 50) {
-            for (String filePath : filepaths.keySet()) {
-                upload2(filePath, filepaths.get(filePath));
-            }
-        } else {
-            for (String filePath : filepaths.keySet()) {
-                log.info("文件:" + filePath + "到阿里云:" + filepaths.get(filePath));
-                upload(filePath, filepaths.get(filePath));
-            }
-        }
-        log.info("批量上传阿里云完毕:" + new Date().toString());
-    }
-
-
-    /**
-     * 可以删除目录
-     *
-     * @param prefix 图片路径
-     * @return
-     */
-    public  int deleteDir(String prefix) {
-        OSSClient ossClient = init();
-        ObjectListing objectListing = ossClient.listObjects(configConstant.ossBucket, prefix);
-        List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
-        try {
-            for (OSSObjectSummary s : sums) {
-                delete(s.getKey());
-            }
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        return sums.size();
-    }
-
-    /**
-     * 2023-1-31
-     * 删除单个文件, 不能删除目录
-     * @param ossKey 填写文件完整路径。文件完整路径中不能包含Bucket名称。
-     * 同时也不能以“/”或者“\”开头。
-     */
-    public void deleteFile(String ossKey) {
-        OSSClient ossClient = init();
-        try {
-            ossClient.deleteObject(configConstant.ossBucket, ossKey);
-            log.info("删除oss文件完成:{}", ossKey);
-        } catch (ClientException e) {
-            e.printStackTrace();
-        }
-    }
-
-
-
-    public void deleteOssFile(String prefix){
-        int maxKeys = 200;
-        OSSClient ossClient = init();
-        try {
-
-            String nextMarker = null;
-            ObjectListing objectListing;
-
-            do {
-                objectListing = ossClient.listObjects(new ListObjectsRequest(configConstant.ossBucket).withPrefix(prefix).withMarker(nextMarker).withMaxKeys(maxKeys));
-                List<OSSObjectSummary> sums = objectListing.getObjectSummaries();
-                if (CollUtil.isEmpty(sums)) {
-                    return;
-                }
-                List<String> keys = new ArrayList<>();
-                for (OSSObjectSummary sum : sums) {
-                    keys.add(sum.getKey());
-                }
-                DeleteObjectsRequest deleteObjectsRequest =
-                        new DeleteObjectsRequest(configConstant.ossBucket).withKeys(keys).withEncodingType("url");
-                DeleteObjectsResult deleteObjectsResult = ossClient
-                        .deleteObjects(deleteObjectsRequest);
-                List<String> deletedObjects = deleteObjectsResult.getDeletedObjects();
-                try {
-                    for (String deletedObject : deletedObjects) {
-                        String decode = URLDecoder.decode(deletedObject, "UTF-8");
-                        log.info("删除oss文件:{}", decode);
-                    }
-                } catch (UnsupportedEncodingException e) {
-                    e.printStackTrace();
-                }
-
-            }while (objectListing.isTruncated());
-        }catch (Exception  e){
-            e.printStackTrace();
-        }finally {
-            if(ossClient != null){
-                ossClient.shutdown();
-            }
-        }
-    }
-
-    public  void main(String[] args) throws IOException {
-
-        HashMap<String, String> map = new HashMap<>();
-//		map.put("F:\\test\\aa.jpg", "kanfang/test/aa.jpg");
-        map.put("F:\\test\\oss\\floor.json", "kanfang/test/faa.json");
-        uploadMulFiles(map);
-
-
-    }
-
-
-
-
-
-
-    /**
-     * 通过文件名判断并获取OSS服务文件上传时文件的contentType
-     *
-     * @param fileName 文件名
-     * @return 文件的contentType
-     */
-    private static String getContentType(String fileName) {
-        log.info("getContentType:" + fileName);
-        // 文件的后缀名
-        String fileExtension = fileName.substring(fileName.lastIndexOf("."));
-        if (".bmp".equalsIgnoreCase(fileExtension)) {
-            return "image/bmp";
-        }
-        if (".gif".equalsIgnoreCase(fileExtension)) {
-            return "image/gif";
-        }
-        if (".jpeg".equalsIgnoreCase(fileExtension) || ".jpg".equalsIgnoreCase(fileExtension)
-                || ".png".equalsIgnoreCase(fileExtension)) {
-            return "image/jpeg";
-        }
-        if (".html".equalsIgnoreCase(fileExtension)) {
-            return "text/html";
-        }
-        if (".txt".equalsIgnoreCase(fileExtension)) {
-            return "text/plain";
-        }
-        if (".vsd".equalsIgnoreCase(fileExtension)) {
-            return "application/vnd.visio";
-        }
-        if (".ppt".equalsIgnoreCase(fileExtension) || "pptx".equalsIgnoreCase(fileExtension)) {
-            return "application/vnd.ms-powerpoint";
-        }
-        if (".doc".equalsIgnoreCase(fileExtension) || "docx".equalsIgnoreCase(fileExtension)) {
-            return "application/msword";
-        }
-        if (".xml".equalsIgnoreCase(fileExtension)) {
-            return "text/xml";
-        }
-        if (".pdf".equalsIgnoreCase(fileExtension)) {
-            return "application/pdf";
-        }
-        // 默认返回类型
-        return "image/jpeg";
-    }
-
-    /**
-     * 以流下载图片
-     *
-     * @param
-     * @return
-     * @Title: getInputStreamByFileUrl
-     * @Description: 根据文件路径获取InputStream流
-     * @return: InputStream
-     */
-    public  InputStream getInputStreamByFileUrl(String filePath) {
-        // ossObject包含文件所在的存储空间名称、文件名称、文件元信息以及一个输入流。
-        OSSClient ossClient = init();
-        OSSObject ossObject = ossClient.getObject(configConstant.ossBucket, filePath);
-        return ossObject.getObjectContent();
-    }
-
-
-
-
-
-}

+ 0 - 161
720yun_fd_manage/gis_oss/src/main/java/com/gis/oss/util/AwsOssUtil.java

@@ -1,161 +0,0 @@
-package com.gis.oss.util;
-
-import com.amazonaws.auth.AWSStaticCredentialsProvider;
-import com.amazonaws.auth.BasicAWSCredentials;
-import com.amazonaws.regions.Regions;
-import com.amazonaws.services.s3.AmazonS3;
-import com.amazonaws.services.s3.AmazonS3ClientBuilder;
-import com.amazonaws.services.s3.model.CannedAccessControlList;
-import com.amazonaws.services.s3.model.DeleteObjectsRequest;
-import com.amazonaws.services.s3.model.PutObjectRequest;
-import com.amazonaws.services.s3.model.S3ObjectSummary;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-/**
- * aws-s3工具类
- */
-@Slf4j
-@Component
-public class AwsOssUtil {
-
-
-//    @Value("${oss.key:AKIAWCV5QFZ3ZNELKYUY}")
-    private static String s3key="AKIAWCV5QFZ3ZNELKYUY";
-
-//    @Value("${oss.secrecy:epS5ghyR4LJ7rxk/qJO9ZYh6m9Oz6g5haKDu4yws}")
-    private static String s3secrecy="epS5ghyR4LJ7rxk/qJO9ZYh6m9Oz6g5haKDu4yws";
-
-    @Value("${oss.bucket}")
-    private String bucket;
-
-    public void uploadAws(String filePath, String key1){
-        uploadAwsWithHeaders(filePath,key1,null);
-    }
-
-    public void uploadAws(byte[] data,String objectName){
-        BasicAWSCredentials awsCreds = new BasicAWSCredentials(s3key, s3secrecy);
-        AmazonS3 s3 = AmazonS3ClientBuilder.standard()
-                .withCredentials(new AWSStaticCredentialsProvider(awsCreds))
-                .withRegion(Regions.EU_WEST_2)
-                .build();
-        try {
-            com.amazonaws.services.s3.model.ObjectMetadata metadata = new com.amazonaws.services.s3.model.ObjectMetadata();
-            s3.putObject(this.bucket, objectName, new ByteArrayInputStream(data), metadata);
-        }catch (Exception e){
-            log.error("s3上传文件失败", e);
-        }finally {
-            if(s3 != null){
-                s3.shutdown();
-            }
-        }
-    }
-
-    public void uploadAwsWithHeaders(String filePath, String key1,Map<String,String> headers){
-        try{
-            uploadS3File(filePath, key1);
-        }catch (Exception e){
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * s3上传文件
-     * @param filePath
-     * @param key1
-     * @throws IOException
-     */
-    private void uploadS3File(String filePath, String key1) throws Exception {
-        /**
-         * 创建s3对象
-         */
-        BasicAWSCredentials awsCreds = new BasicAWSCredentials(s3key, s3secrecy);
-        AmazonS3 s3 = AmazonS3ClientBuilder.standard()
-                .withCredentials(new AWSStaticCredentialsProvider(awsCreds))
-                .withRegion(Regions.EU_WEST_2)
-                .build();
-        try{
-            File file = new File(filePath);
-            if(!file.exists()){
-                log.info("要上传s3的文件不存在");
-                return;
-            }
-
-            // 设置文件并设置公读
-            com.amazonaws.services.s3.model.ObjectMetadata metadata = new com.amazonaws.services.s3.model.ObjectMetadata();
-            if(filePath.contains(".jpg")){
-                metadata.setContentType("image/jpeg");
-            }
-            if(filePath.contains(".png")){
-                metadata.setContentType("image/png");
-            }
-//            PutObjectRequest request = new PutObjectRequest(s3bucket, key1, file);
-            PutObjectRequest request = new PutObjectRequest(bucket, key1, file);
-            request.withCannedAcl(CannedAccessControlList.PublicRead);
-            request.withMetadata(metadata);
-
-            // 上传文件
-            com.amazonaws.services.s3.model.PutObjectResult putObjectResult = s3.putObject(request);
-            if (StringUtils.isNotEmpty(putObjectResult.getETag())) {
-                log.info("s3上传文件成功:" + key1);
-            }
-        }catch (Exception e){
-            throw e;
-        }finally {
-            s3.shutdown();
-        }
-
-    }
-
-    public void deleteAwsFile(String prefix){
-
-        int maxKeys = 200;
-        String nextMaker = null;
-        BasicAWSCredentials awsCreds = new BasicAWSCredentials(s3key, s3secrecy);
-        AmazonS3 s3 = AmazonS3ClientBuilder.standard()
-                .withCredentials(new AWSStaticCredentialsProvider(awsCreds))
-                .withRegion(Regions.EU_WEST_2)
-                .build();
-        try {
-            com.amazonaws.services.s3.model.ListObjectsRequest listObjectsRequest = new com.amazonaws.services.s3.model.ListObjectsRequest();
-            listObjectsRequest.setBucketName(this.bucket);
-            listObjectsRequest.setPrefix(prefix);
-            listObjectsRequest.setMaxKeys(maxKeys);
-
-            com.amazonaws.services.s3.model.ObjectListing objectListing;
-            do{
-                listObjectsRequest.setMarker(nextMaker);
-                objectListing = s3.listObjects(listObjectsRequest);
-                List<S3ObjectSummary> objectSummaries = objectListing.getObjectSummaries();
-                List<DeleteObjectsRequest.KeyVersion> keys =objectSummaries.stream().map(summary->new DeleteObjectsRequest.KeyVersion(summary.getKey())).collect(Collectors.toList());
-
-                com.amazonaws.services.s3.model.DeleteObjectsRequest multiObjectDeleteRequest =
-                        new com.amazonaws.services.s3.model.DeleteObjectsRequest(this.bucket)
-                                .withKeys(keys)
-                                .withQuiet(false);
-                com.amazonaws.services.s3.model.DeleteObjectsResult delObjRes = s3.deleteObjects(multiObjectDeleteRequest);
-                int successfulDeletes = delObjRes.getDeletedObjects().size();
-                log.info("删除aws文件成功,删除文件数;{}", successfulDeletes);
-                nextMaker = objectListing.getNextMarker();
-            }while (objectListing.isTruncated());
-        }catch (Exception e){
-            log.error("删除was文件失败,path="+prefix, e);
-        }finally {
-            if(s3 != null){
-                s3.shutdown();
-            }
-        }
-    }
-
-
-
-}

+ 9 - 76
720yun_fd_manage/gis_oss/src/main/java/com/gis/oss/util/FileAndOssUtil.java

@@ -22,10 +22,8 @@ import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;
 import com.amazonaws.services.s3.model.GetObjectRequest;
 import com.amazonaws.services.s3.model.PutObjectRequest;
 import com.amazonaws.services.s3.model.*;
+import com.fdkankan.filestorage.FileStorageTemplate;
 import com.gis.oss.constant.StorageType;
-import com.qiniu.common.Zone;
-import com.qiniu.storage.Configuration;
-import com.qiniu.storage.UploadManager;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.fileupload.FileItem;
 import org.apache.commons.fileupload.FileItemFactory;
@@ -38,6 +36,7 @@ import org.springframework.stereotype.Component;
 import org.springframework.web.multipart.MultipartFile;
 import org.springframework.web.multipart.commons.CommonsMultipartFile;
 
+import javax.annotation.Resource;
 import java.io.*;
 import java.net.FileNameMap;
 import java.net.URL;
@@ -53,46 +52,8 @@ import java.util.stream.Collectors;
 @Component
 public class FileAndOssUtil {
 
-//	Zone zone = Zone.autoZone();
-//
-//	Configuration config = new Configuration(zone);
-//	UploadManager uploadManager = new UploadManager(config);
-//
-//	@Value("${oss.point:http://oss-cn-shenzhen-internal.aliyuncs.com}")
-//	private String point;
-//
-//	@Value("${oss.key:LTAIUrvuHqj8pvry}")
-//	private String key;
-//
-//	@Value("${oss.secrey:JLOVl0k8Ke0aaM8nLMMiUAZ3EiiqI4}")
-//	private String secrey;
-//
-//	@Value("${oss.bucket:4dkankan}")
-//	private String bucket;
-//
-//	@Value("${oss.sdk:4dscene}")
-//	private String bucketSdk;
-//
-	@Value("${oss.type}")
-	private String type;
-//
-//	@Value("${aws.s3key:AKIAWCV5QFZ3ZNELKYUY}")
-//	private String s3key;
-//
-//	@Value("${aws.s3secrey:epS5ghyR4LJ7rxk/qJO9ZYh6m9Oz6g5haKDu4yws}")
-//	private String s3secrey;
-//
-//	@Value("${aws.s3bucket:4dkankan}")
-//	private String s3bucket;
-//
-//	@Value("${local.path:/home/4dkankan}")
-//	private String localPath;
-
-	@Autowired
-	AliYunOssUtil aliyunOssUtil;
-
-	@Autowired
-	AwsOssUtil awsOssUtil;
+	@Resource
+	private FileStorageTemplate ossUtil;
 
 	/**
 	 * oss文件上传命令
@@ -104,37 +65,13 @@ public class FileAndOssUtil {
 	//上传的数据是byte[],key是上传后的文件名
 	public void upload(byte[] data,String key1) throws IOException{
 //		log.info("开始上传文件 源路径:{},目标路径:{}, type:{}" , new String(data, "UTF-8"), key1, type);
-		log.info("开始上传文件 ,目标路径:{}, type:{}" ,  key1, type);
-		StorageType storageType = StorageType.get(type);
-		switch (storageType){
-			case OSS:
-//				uploadOss(data,key1);
-				aliyunOssUtil.upload(data, key1);
-				break;
-			case AWS:
-//				uploadAws(data,key1);
-				awsOssUtil.uploadAws(data, key1);
-				break;
-			case LOCAL:
-//				uploadLocal(data,key1);
-				break;
-		}
+		log.info("开始上传文件 ,目标路径:{}, type:{}" ,  key1);
+		ossUtil.uploadFileBytes(key1,data);
 	}
 
 	public void upload(String filePath, String key1) {
-		log.info("开始上传文件 源路径:{},目标路径:{},type:{}" , filePath, key1, type);
-		StorageType storageType = StorageType.get(type);
-		switch (storageType){
-			case OSS:
-				aliyunOssUtil.upload(filePath,key1);
-				break;
-			case AWS:
-				awsOssUtil.uploadAws(filePath,key1);
-				break;
-			case LOCAL:
-//				uploadLocal(filePath,key1);
-				break;
-		}
+		log.info("开始上传文件 源路径:{},目标路径:{}" , filePath, key1);
+		ossUtil.uploadFile(key1,filePath);
 	}
 
 //	public void uploadFileWithHeaders(String filePath, String key1,Map<String,String> headers) {
@@ -204,11 +141,7 @@ public class FileAndOssUtil {
 		if (StringUtils.isBlank(prefix)){
 			return 0;
 		}
-		switch (type){
-			case "oss":aliyunOssUtil.deleteFile(prefix); break;
-			case "aws": awsOssUtil.deleteAwsFile(prefix); break;
-			case "local":FileUtil.del(prefix);  break;
-		}
+		ossUtil.deleteObject(prefix);
 		return 1;
 	}
 //

+ 0 - 177
720yun_fd_manage/gis_oss/src/main/java/com/gis/oss/util/QiNiuOssUtil.java

@@ -1,177 +0,0 @@
-package com.gis.oss.util;
-
-import com.gis.common.exception.BaseRuntimeException;
-import com.qiniu.common.QiniuException;
-import com.qiniu.http.Response;
-import com.qiniu.storage.BucketManager;
-import com.qiniu.storage.Configuration;
-import com.qiniu.storage.Region;
-import com.qiniu.storage.UploadManager;
-import com.qiniu.storage.model.FileInfo;
-import com.qiniu.util.Auth;
-import lombok.extern.slf4j.Slf4j;
-import org.junit.Test;
-
-import java.util.Map;
-
-/**
- * 七牛云oss上传工具
- */
-@Slf4j
-public class QiNiuOssUtil {
-
-    private static String ACCESS_KEY = "dlPPwgZky_F-iP8CbSbJpiAtAcqw3BYwb9rdHMrS";
-    private static String SECRET_KEY = "YEtkLKDsImXB-8m1CT1zV_YwCwwGvrUvo2ktj9KZ";
-
-    // 大场景 super 华南区域
-    private static String bucketName = "super";
-
-
-    //构造一个带指定 Region 对象的配置类, Region.region2(): 华南区域
-//    private static Configuration cfg = new Configuration(Region.region2());
-//    private static Configuration cfg = new Configuration(Zone.autoZone());
-    private static Configuration cfg = new Configuration(Region.huanan());
-
-    // 华北
-//    private static String bucketName = "model3d";
-//    private static Configuration cfg = new Configuration(Zone.autoZone());
-
-    //...其他参数参考类注释
-    private static UploadManager uploadManager = new UploadManager(cfg);
-
-    private static Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
-//    private static  String upToken = auth.uploadToken(bucketName);
-
-
-
-    /**
-     * localFilePath: 本地文件路径
-     * ossFilePath: ossw文件存放路径, 注意前面不要用"/" ,data/aa.jpg
-     */
-    public static void upload(String localFilePath, String ossFilePath) throws QiniuException {
-        // 覆盖需要把ossKey放到uploadToken里
-        String upToken = auth.uploadToken(bucketName, ossFilePath);
-        Response response = uploadManager.put(localFilePath, ossFilePath, upToken);
-        if (response.statusCode!=200){
-            String errorMsg = response.toString();
-            log.error("七牛云响应值:{}", errorMsg);
-            BaseRuntimeException.isTrue(true, null, "七牛云返回上传失败: " + errorMsg);
-        }
-    }
-
-
-    public static void main(String[] args) throws QiniuException {
-        String localFilePath = "F:\\test\\ngin\\11.txt";
-        String ossFilePath = "data/owen/11.txt";
-        upload(localFilePath, ossFilePath);
-        System.out.println("11111");
-
-//        getInfo(ossFilePath);
-    }
-
-
-    /**
-     * 批量上传
-     * key: localFilePath
-     * value: ossFilePath
-     */
-    public static void uploads(Map<String, String> param) {
-        log.info("开始批量上传到七牛云");
-        String upToken = auth.uploadToken(bucketName);
-        param.forEach((key, val)->{
-            try {
-                uploadManager.put(key, val, upToken);
-            } catch (QiniuException e) {
-                e.printStackTrace();
-            }
-        });
-        log.info("完成批量上传到七牛云");
-    }
-
-
-
-    /**
-     * by owen 2022-5-13
-     * @param key :文件路径
-     * 第一级目录不能带/ 例如: owen/aa.jpg
-     * 不支持删除目录, 删除目录使用脚本
-     */
-    public static void delete(String key){
-        BucketManager bucketManager = new BucketManager(auth, cfg);
-        try {
-            bucketManager.delete(bucketName, key);
-        } catch (QiniuException ex) {
-            //如果遇到异常,说明删除失败
-            log.error(ex.response.toString());
-        }
-    }
-
-
-
-
-    @Test
-    public void testDelete(){
-        delete("owen/a");
-    }
-
-
-    /**
-     * 获取文件信息
-     * @param key
-     */
-    public static void getInfo(String key){
-
-        BucketManager bucketManager = new BucketManager(auth, cfg);
-        try {
-            FileInfo fileInfo = bucketManager.stat(bucketName, key);
-            System.out.println(fileInfo.hash);
-            System.out.println(fileInfo.fsize);
-            System.out.println(fileInfo.mimeType);
-            System.out.println(fileInfo.putTime);
-        } catch (QiniuException ex) {
-            System.err.println(ex.response.toString());
-        }
-    }
-
-
-//    /**
-//     * 测试demo
-//     */
-//    @Test
-//    public void test() {
-//        //构造一个带指定 Region 对象的配置类
-//        Configuration cfg = new Configuration();
-//        //...其他参数参考类注释
-//
-//        UploadManager uploadManager = new UploadManager(cfg);
-//        //...生成上传凭证,然后准备上传
-//
-//        //如果是Windows情况下,格式是 D:\\qiniu\\test.png
-//        String localFilePath = "F:\\test\\22.jpg";
-//        //默认不指定key的情况下,以文件内容的hash值作为文件名
-//        Date date = new Date();
-//        String key = "data_" + date + ".jpg";
-//
-//        Auth auth = Auth.create(ACCESS_KEY, SECRET_KEY);
-//        String upToken = auth.uploadToken(bucketName);
-//
-//        try {
-//            Response response = uploadManager.put(localFilePath, key, upToken);
-//            //解析上传成功的结果
-//            DefaultPutRet putRet = new Gson().fromJson(response.bodyString(), DefaultPutRet.class);
-//            System.out.println(response.bodyString());
-//            System.out.println(putRet.key);
-//            System.out.println(putRet.hash);
-//        } catch (QiniuException ex) {
-//            Response r = ex.response;
-//            System.err.println(r.toString());
-//            try {
-//                System.err.println(r.bodyString());
-//            } catch (QiniuException ex2) {
-//                //ignore
-//            }
-//        }
-//
-//    }
-
-}

Những thai đổi đã bị hủy bỏ vì nó quá lớn
+ 0 - 1244
720yun_fd_manage/gis_oss/src/main/java/com/gis/oss/util/UploadToOssUtil.java


+ 10 - 8
720yun_fd_manage/gis_service/src/main/java/com/gis/service/impl/FodderServiceImpl.java

@@ -8,6 +8,7 @@ import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.filestorage.FileStorageTemplate;
 import com.gis.common.constant.CmdConstant;
 import com.gis.common.constant.ConfigConstant;
 import com.gis.common.constant.ErrorEnum;
@@ -61,7 +62,8 @@ public class FodderServiceImpl extends ServiceImpl<FodderMapper,FodderEntity> im
 
     @Autowired
     ConfigConstant configConstant;
-
+    @Resource
+    private FileStorageTemplate ossUtil;
     @Autowired
     FileUtils fileUtils;
 
@@ -167,11 +169,11 @@ public class FodderServiceImpl extends ServiceImpl<FodderMapper,FodderEntity> im
 
                 // 全景图的预览图
                 ossPreviewIcon = convertAndUploadOss(
-                        savePath, configConstant.ossBasePath + sceneCode, configConstant.ossDomain, 1920, 960, "/preview.jpg");
+                        savePath, configConstant.ossBasePath + sceneCode, ossUtil.calculateUrl(""), 1920, 960, "/preview.jpg");
 
                 // 使用oss截取缩略图
                 iconPath = ossPreviewIcon;
-                ossUrl = configConstant.ossDomain + configConstant.ossBasePath + sceneCode;
+                ossUrl = ossUtil.calculateUrl("") + configConstant.ossBasePath + sceneCode;
 
 
                 entity.setSceneCode(sceneCode);
@@ -179,7 +181,7 @@ public class FodderServiceImpl extends ServiceImpl<FodderMapper,FodderEntity> im
                 entity.setStatus(1);
 
             } else {
-                ossUrl = configConstant.ossDomain + ossPath;
+                ossUrl = ossUtil.calculateUrl("") + ossPath;
 
                 if (type.equals("image")) {
                     // 2022-10-27,图片大于1MB生成缩略图, 小于1MB使用原图作为缩略图
@@ -318,8 +320,8 @@ public class FodderServiceImpl extends ServiceImpl<FodderMapper,FodderEntity> im
 
     @Override
     public Result search(FodderPageDto param) {
-        PageHelper.startPage(param.getPageNum(), param.getPageSize(), true);
-        List<FodderEntity> search = entityMapper.search(param, userRequest.getUserNameForToken());
+        startPage(param);
+        List<FodderEntity> search = entityMapper.search(param, getUserNameForToken());
         return Result.success(new PageInfo<>(search));
     }
 
@@ -327,7 +329,7 @@ public class FodderServiceImpl extends ServiceImpl<FodderMapper,FodderEntity> im
 
     @Override
     public Result checkStatus(String ids) {
-        List<FodderEntity> list = entityMapper.checkStatus(ids, userRequest.getUserNameForToken());
+        List<FodderEntity> list = entityMapper.checkStatus(ids, getUserNameForToken());
         return Result.success(list);
     }
 
@@ -645,7 +647,7 @@ public class FodderServiceImpl extends ServiceImpl<FodderMapper,FodderEntity> im
 
         // 缩略图
         String ossKey = configConstant.ossBasePath + "fodder/thumb/thumb_" + time + ".jpg";
-        String iconPath = configConstant.ossDomain + ossKey;
+        String iconPath = ossUtil.calculateUrl("") + ossKey;
 
         // asw 环境需要使用ffmpeg 截图视频第一帧  修改为无论什么环境都使用ffmpeg
         if (/*configConstant.active.contains("Aws")&&  */"video".equals(type)){

+ 7 - 9
720yun_fd_manage/gis_service/src/main/java/com/gis/service/impl/TestServiceImpl.java

@@ -6,6 +6,7 @@ import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.fdkankan.filestorage.FileStorageTemplate;
 import com.gis.common.constant.ConfigConstant;
 import com.gis.common.constant.ErrorEnum;
 import com.gis.common.exception.BaseRuntimeException;
@@ -16,7 +17,6 @@ import com.gis.common.util.Result;
 import com.gis.domain.dto.TestShDto;
 import com.gis.domain.entity.FodderEntity;
 import com.gis.domain.entity.WorkEntity;
-import com.gis.oss.util.AliYunOssUtil;
 import com.gis.oss.util.FileAndOssUtil;
 import com.gis.service.FodderService;
 import com.gis.service.TestService;
@@ -30,6 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.annotation.Resource;
 import java.io.File;
 import java.io.IOException;
 import java.util.*;
@@ -48,10 +49,6 @@ public class TestServiceImpl implements TestService {
     ConfigConstant configConstant;
 
 
-
-    @Autowired
-    AliYunOssUtil aliyunOssUtil;
-
     @Autowired
     WorkService workService;
 
@@ -68,7 +65,8 @@ public class TestServiceImpl implements TestService {
     @Autowired
     VisitTask visitTask;
 
-
+    @Resource
+    private FileStorageTemplate ossUtil;
     @Override
     public Result batchReplaceSomeData(String isBatch) {
         String basePath = "F:\\work\\四维-全景看看\\data\\";
@@ -381,7 +379,7 @@ public class TestServiceImpl implements TestService {
      * @return
      */
     private List<String> downLoadSomeData(String id) {
-        String someData = configConstant.ossDomain + configConstant.ossBasePath + id + "/someData.json";
+        String someData = ossUtil.calculateUrl("") + configConstant.ossBasePath + id + "/someData.json";
         String locSomeData = configConstant.serverBasePath + id + "/someData.json";
         try {
             HttpUtil.downloadFile(someData, locSomeData);
@@ -445,7 +443,7 @@ public class TestServiceImpl implements TestService {
         BaseRuntimeException.isTrue(!FileUtil.isFile(tourPath), ErrorEnum.FAILURE_CODE_3103.code(), "服务器tour.xml文件不存在");
 
         String ossKeyPath = configConstant.ossBasePath + id + "/tour.xml";
-        aliyunOssUtil.upload(tourPath, ossKeyPath);
+        ossUtil.uploadFile( ossKeyPath,tourPath);
         log.info("tour.xml上传完成 : {}", ossKeyPath);
     }
 
@@ -714,7 +712,7 @@ public class TestServiceImpl implements TestService {
         log.info("oss准备上传: {}", srcPath);
         String targetPath = configConstant.ossBasePath + workId + "/someData.json";
         log.info("oss上传地址: {}", targetPath);
-        aliyunOssUtil.upload(srcPath, targetPath);
+        ossUtil.uploadFile(targetPath,srcPath);
         log.info("上传oss完成: {}", targetPath);
 
     }

+ 12 - 6
720yun_fd_manage/gis_service/src/main/java/com/gis/service/impl/WorkServiceImpl.java

@@ -13,6 +13,7 @@ import com.alibaba.fastjson.serializer.SerializerFeature;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.filestorage.FileStorageTemplate;
 import com.gis.common.constant.*;
 import com.gis.common.exception.BaseRuntimeException;
 import com.gis.common.httpclient.FdkkClient;
@@ -125,6 +126,10 @@ public class WorkServiceImpl extends ServiceImpl<WorkMapper,WorkEntity> implemen
     @Value("${queue.relics-update-name-queue:#{null}}")
     String relicsUpdateNameQueue;
 
+    @Resource
+    private FileStorageTemplate ossUtil;
+
+
 
     @Override
     public Result search(AgePageDto param, boolean isAdmin) {
@@ -229,7 +234,7 @@ public class WorkServiceImpl extends ServiceImpl<WorkMapper,WorkEntity> implemen
 
         // 创建二维码、二维码url
         String shareUrl = configConstant.domain4dKK + "/panorama/showMobile.html?id=" + id;
-        String qrCode = qrCodeUtils.generateLogoQrCode(shareUrl, configConstant.serverBasePath, configConstant.ossBasePath, configConstant.ossDomain, id,"zh");
+        String qrCode = qrCodeUtils.generateLogoQrCode(shareUrl, configConstant.serverBasePath, configConstant.ossBasePath, ossUtil.calculateUrl(""), id,"zh");
         jsonObject.put("share", shareUrl);
         jsonObject.put("qrCode", qrCode);
 
@@ -241,7 +246,7 @@ public class WorkServiceImpl extends ServiceImpl<WorkMapper,WorkEntity> implemen
         } catch (IOException e) {
             e.printStackTrace();
         }
-        String ossUrl = configConstant.ossDomain + ossKeyPath;
+        String ossUrl = ossUtil.calculateUrl("") + ossKeyPath;
         log.info("ossSomeData:{}", ossUrl);
 
         return Result.success(entity);
@@ -398,7 +403,7 @@ public class WorkServiceImpl extends ServiceImpl<WorkMapper,WorkEntity> implemen
         String ossKey = configConstant.ossBasePath + sceneCode + "/hot" + rename;
         log.info("保存oss位置:{}", ossKey);
 
-        Object urlPath = configConstant.ossDomain + ossKey;
+        Object urlPath = ossUtil.calculateUrl("") + ossKey;
 
         try {
             fileAndOssUtil.upload(file.getBytes(), ossKey);
@@ -863,6 +868,7 @@ public class WorkServiceImpl extends ServiceImpl<WorkMapper,WorkEntity> implemen
 
     /**
      * 场景码字符串转list
+     *
      * @param param
      * @return
      */
@@ -904,7 +910,7 @@ public class WorkServiceImpl extends ServiceImpl<WorkMapper,WorkEntity> implemen
         DateUtils.spendTime(startTime, "logo网络下载");
         log.info("网络下载logo完成");
         String shareUrl = configConstant.domain4dKK + "/panorama/show.html?id=" + id;
-        qrCodeUtils.diyLogoQrCode(shareUrl, configConstant.serverBasePath, configConstant.ossBasePath, configConstant.ossDomain, id, logoPath);
+        qrCodeUtils.diyLogoQrCode(shareUrl, configConstant.serverBasePath, configConstant.ossBasePath, ossUtil.calculateUrl(""), id, logoPath);
         log.info("二维码更新完成");
         DateUtils.spendTime(startTime, "logo上传oss完成");
         return true;
@@ -932,7 +938,7 @@ public class WorkServiceImpl extends ServiceImpl<WorkMapper,WorkEntity> implemen
 //        aliyunOssUtil.upload(saveSomeDataPath, ossKeyPath);
         fileAndOssUtil.upload(saveSomeDataPath, ossKeyPath);
         log.info("someData.json 上传完成 : {}", ossKeyPath);
-        String ossUrl = configConstant.ossDomain + ossKeyPath;
+        String ossUrl = ossUtil.calculateUrl("") + ossKeyPath;
         log.info("ossUrl: {}", ossUrl);
         DateUtils.spendTime(startTime, "someData上传oss");
 
@@ -1003,7 +1009,7 @@ public class WorkServiceImpl extends ServiceImpl<WorkMapper,WorkEntity> implemen
         if (!checkFile) {
             return Result.failure("上传文件格式有误, 请重新上传");
         }
-        return Result.success(fileUtils.renameUploadOss(file, configConstant.serverBasePath, configConstant.ossBasePath, configConstant.ossDomain));
+        return Result.success(fileUtils.renameUploadOss(file, configConstant.serverBasePath, configConstant.ossBasePath, ossUtil.calculateUrl("")));
     }
 
     @Override

+ 4 - 5
720yun_fd_manage/gis_web/src/main/java/com/gis/web/controller/TestController.java

@@ -1,18 +1,17 @@
 package com.gis.web.controller;
 
 import cn.hutool.core.io.FileUtil;
+import com.fdkankan.filestorage.FileStorageTemplate;
 import com.gis.common.constant.ConfigConstant;
 import com.gis.common.mq.RabbitMqProducerUtil;
 import com.gis.common.util.Result;
 import com.gis.domain.dto.DoSliceDTO;
 import com.gis.domain.dto.TestShDto;
 import com.gis.domain.entity.WorkEntity;
-import com.gis.oss.util.AliYunOssUtil;
 import com.gis.oss.util.FileUtils;
 import com.gis.service.FodderService;
 import com.gis.service.TestService;
 import com.gis.service.WorkService;
-import com.gis.task.VisitTask;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -64,7 +63,7 @@ public class TestController extends BaseController {
     TestService testService;
 
     @Autowired
-    AliYunOssUtil aliyunOssUtil;
+    FileStorageTemplate ossUtil;
 
     @Autowired
     FodderService fodderService;
@@ -206,14 +205,14 @@ public class TestController extends BaseController {
     @PostMapping("uploadOss")
     @ApiOperation(value = "文件上传oss")
     public Result uploadOss(MultipartFile file){
-        return Result.success(fileUtils.renameUploadOssMap(file, configConstant.serverBasePath, configConstant.ossBasePath, configConstant.ossDomain));
+        return Result.success(fileUtils.renameUploadOssMap(file, configConstant.serverBasePath, configConstant.ossBasePath, ossUtil.calculateUrl("")));
     }
 
 
     @PostMapping("uploadOssBye")
     @ApiOperation(value = "文件上传oss-字节上传")
     public Result uploadOssBye(MultipartFile file){
-        return Result.success(fileUtils.renameUploadOssBye(file, configConstant.ossBasePath, configConstant.ossDomain));
+        return Result.success(fileUtils.renameUploadOssBye(file, configConstant.ossBasePath, ossUtil.calculateUrl("")));
     }
 
     @PostMapping("uploadOssByeByType")

+ 46 - 23
720yun_fd_manage/pom.xml

@@ -44,9 +44,9 @@
         <shiro.version>1.3.2</shiro.version>
         <jwt.version>3.2.0</jwt.version>
         <jjwt.version>0.6.0</jjwt.version>
-        <aliyun.core.version>4.0.3</aliyun.core.version>
-        <aliyun.dysmsapi.version>1.1.0</aliyun.dysmsapi.version>
-        <aliyun.oss.version>2.5.0</aliyun.oss.version>
+
+        <pagehelper.version>1.2.5</pagehelper.version>
+        <knife4j.version>2.0.2</knife4j.version>
         <mybatisPlus.version>3.5.3.2</mybatisPlus.version>
         <pagehelper.version>1.4.6</pagehelper.version>
         <knife4j.version>3.0.3</knife4j.version>
@@ -61,6 +61,13 @@
         <skipTests>true</skipTests>
 
         <qrext4j.version>1.3.1</qrext4j.version>
+
+
+        <minio.version>8.2.2</minio.version>
+        <aws.version>1.12.481</aws.version>
+        <cos.version>5.6.166</cos.version>
+        <aliyun-sdk-oss.version>3.15.1</aliyun-sdk-oss.version>
+
     </properties>
 
 
@@ -232,26 +239,6 @@
                 <version>${jjwt.version}</version>
             </dependency>
 
-            <!--aliyun sdk-->
-            <dependency>
-                <groupId>com.aliyun</groupId>
-                <artifactId>aliyun-java-sdk-core</artifactId>
-                <version>${aliyun.core.version}</version>
-            </dependency>
-
-            <dependency>
-                <groupId>com.aliyun</groupId>
-                <artifactId>aliyun-java-sdk-dysmsapi</artifactId>
-                <version>${aliyun.dysmsapi.version}</version>
-            </dependency>
-
-            <!--aliyun oss-->
-            <dependency>
-                <groupId>com.aliyun.oss</groupId>
-                <artifactId>aliyun-sdk-oss</artifactId>
-                <version>${aliyun.oss.version}</version>
-            </dependency>
-
 
             <dependency>
                 <groupId>com.baomidou</groupId>
@@ -309,6 +296,42 @@
                 <artifactId>4dkankan-utils-rabbitmq</artifactId>
                 <version>3.0.0-SNAPSHOT</version>
             </dependency>
+            <dependency>
+                <groupId>com.fdkankan</groupId>
+                <artifactId>4dkankan-utils-filestorage</artifactId>
+                <version>3.0.0-SNAPSHOT</version>
+            </dependency>
+            <dependency>
+                <groupId>com.amazonaws</groupId>
+                <artifactId>aws-java-sdk-s3</artifactId>
+                <version>${aws.version}</version>
+            </dependency>
+            <!-- https://mvnrepository.com/artifact/com.qcloud/cos_api -->
+            <dependency>
+                <groupId>com.qcloud</groupId>
+                <artifactId>cos_api</artifactId>
+                <version>${cos.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.aliyun.oss</groupId>
+                <artifactId>aliyun-sdk-oss</artifactId>
+                <version>${aliyun-sdk-oss.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>io.minio</groupId>
+                <artifactId>minio</artifactId>
+                <version>${minio.version}</version>
+                <exclusions>
+                    <exclusion>
+                        <artifactId>okio</artifactId>
+                        <groupId>com.squareup.okio</groupId>
+                    </exclusion>
+                    <exclusion>
+                        <artifactId>okhttp</artifactId>
+                        <groupId>com.squareup.okhttp3</groupId>
+                    </exclusion>
+                </exclusions>
+            </dependency>
         </dependencies>
     </dependencyManagement>