Pārlūkot izejas kodu

文件上传和环境配置

fanzherong_v 2 mēneši atpakaļ
vecāks
revīzija
557c5db062

+ 4 - 1
snowy-admin-web/.env.development

@@ -1,5 +1,5 @@
 # 接口地址
-VITE_API_BASEURL = http://127.0.0.1:82
+VITE_API_BASEURL = http://127.0.0.1:83
 
 # 本地端口
 VITE_PORT = 88
@@ -12,3 +12,6 @@ NODE_ENV = development
 
 # 检测更新(本地建议关闭)
 VITE_VERSION_UPDATE = false
+
+#文件访问地址
+VITE_PREVIEW_PATH = http://db.js-whzl.com:8065/preview/

+ 4 - 1
snowy-admin-web/.env.production

@@ -1,5 +1,5 @@
 # 接口地址
-VITE_API_BASEURL = http://127.0.0.1:82
+VITE_API_BASEURL = http://127.0.0.1:83
 
 # 本地端口
 VITE_PORT = 81
@@ -9,3 +9,6 @@ VITE_SET_DRAWER = false
 
 # 检测更新(生产建议开启)
 VITE_VERSION_UPDATE = true
+
+#文件访问地址
+VITE_PREVIEW_PATH = http://db.js-whzl.com:8065/preview/

+ 4 - 0
snowy-admin-web/src/api/dev/fileApi.js

@@ -34,6 +34,10 @@ export default {
 	fileUploadReturnMap(data) {
 		return request('uploadReturnMap', data)
 	},
+	// 文件上传地磅服务器
+	uploadImgMap(data){
+		return request('uploadImgMap',data)
+	},
 	// 阿里云文件上传,返回文件id
 	fileUploadAliyunReturnId(data) {
 		return request('uploadAliyunReturnId', data)

+ 3 - 0
snowy-admin-web/src/config/index.js

@@ -18,6 +18,9 @@ const DEFAULT_CONFIG = {
 	// 接口地址
 	API_URL: import.meta.env.VITE_API_BASEURL,
 
+	// 文件访问地址
+	PREVIEW_PATH:import.meta.env.VITE_PREVIEW_PATH,
+
 	// 请求超时
 	TIMEOUT: 60000,
 

+ 13 - 0
snowy-plugin/snowy-plugin-dev/src/main/java/vip/xiaonuo/dev/modular/file/controller/DevFileController.java

@@ -123,6 +123,19 @@ public class DevFileController {
         return CommonResult.data(devFileService.uploadReturnMap(DevFileEngineTypeEnum.LOCAL.getValue(), file));
     }
 
+    /**
+     * 图片上传地磅服务器
+     *
+     * @author xuyuxiang
+     * @date 2021/10/13 14:01
+     **/
+    @Operation(summary = "图片上传地磅服务器")
+    @CommonLog("图片上传地磅服务器")
+    @PostMapping("/dev/file/uploadImgMap")
+    public CommonResult<Map<String,Object>> uploadImgMap(@RequestPart("file") MultipartFile file) {
+        return CommonResult.data(devFileService.uploadImgMap(DevFileEngineTypeEnum.LOCAL.getValue(), file));
+    }
+
     /**
      * 阿里云文件上传,返回文件id
      *

+ 2 - 0
snowy-plugin/snowy-plugin-dev/src/main/java/vip/xiaonuo/dev/modular/file/service/DevFileService.java

@@ -52,6 +52,8 @@ public interface DevFileService extends IService<DevFile> {
 
     Map<String,Object> uploadReturnMap(String engine, MultipartFile file);
 
+    Map<String,Object> uploadImgMap(String engine, MultipartFile file);
+
     /**
      * 文件分页列表接口
      *

+ 52 - 0
snowy-plugin/snowy-plugin-dev/src/main/java/vip/xiaonuo/dev/modular/file/service/impl/DevFileServiceImpl.java

@@ -21,14 +21,18 @@ import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.util.NumberUtil;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpRequest;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Maps;
 import jakarta.annotation.Resource;
 import jakarta.servlet.http.HttpServletResponse;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 import org.springframework.web.multipart.MultipartFile;
 import vip.xiaonuo.common.exception.CommonException;
@@ -51,6 +55,7 @@ import vip.xiaonuo.dev.modular.file.util.DevFileMinIoUtil;
 import vip.xiaonuo.dev.modular.file.util.DevFileTencentUtil;
 
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
@@ -63,6 +68,7 @@ import java.util.Map;
  * @author xuyuxiang
  * @date 2022/2/23 18:43
  **/
+@Slf4j
 @Service
 public class DevFileServiceImpl extends ServiceImpl<DevFileMapper, DevFile> implements DevFileService {
 
@@ -91,6 +97,52 @@ public class DevFileServiceImpl extends ServiceImpl<DevFileMapper, DevFile> impl
         return map;
     }
 
+    @Override
+    public Map<String, Object> uploadImgMap(String engine, MultipartFile file) {
+        Map<String,Object> map = Maps.newHashMap();
+        String bucketName;
+        if(StringUtils.equals(devConfigApi.getValueByKey("SNOWY_ENVIRONMENT_CONFIG"),"linux")){
+            //linux环境
+            bucketName = devConfigApi.getValueByKey("SNOWY_FILE_LOCAL_FOLDER_FOR_UNIX")+"/hnzy/";
+        }else{
+            //windows环境
+            bucketName = devConfigApi.getValueByKey("SNOWY_FILE_LOCAL_FOLDER_FOR_WINDOWS")+"/hnzy";
+        }
+        File localFile = new File(bucketName);
+        if(!localFile.exists()) {
+            localFile.mkdir();
+        }
+        String localPath = bucketName +"/" + file.getOriginalFilename();
+        File imgFile = new File(localPath);
+        try {
+            // 保存文件到本地
+            file.transferTo(imgFile);
+
+            log.info("文件上传成功!文件保存路径:" + localPath);
+            String result = HttpRequest.post(devConfigApi.getValueByKey("SNOWY_FILE_PATH")).
+                    form("groupName", "hnzy").
+                    form("imageFile", imgFile).execute().body();
+            JSONObject json = (JSONObject) JSONObject.parse(result);
+            log.info("result:"+result);
+            if(StringUtils.equals(json.getString("success"),"true")){
+                map.put("imageFile",json.get("imageFile"));
+            }
+            if (imgFile.exists()) { // 检查文件是否存在
+                if (imgFile.delete()) { // 删除文件
+                    log.info("文件删除成功!");
+                } else {
+                    log.info("文件删除失败!");
+                }
+            } else {
+                log.info("文件不存在!");
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+            log.info("文件上传失败:" + e.getMessage());
+        }
+        return map;
+    }
+
     @Override
     public Page<DevFile> page(DevFilePageParam devFilePageParam) {
         QueryWrapper<DevFile> queryWrapper = new QueryWrapper<DevFile>().checkSqlInjection();

+ 10 - 4
snowy-web-app/src/main/resources/application-test.properties → snowy-web-app/src/main/resources/application-dev.properties

@@ -1,7 +1,7 @@
 #########################################
 # server configuration
 #########################################
-server.port=82
+server.port=83
 
 #########################################
 # spring allow-circular-references
@@ -20,9 +20,9 @@ spring.servlet.multipart.max-file-size=100MB
 
 # mysql
 spring.datasource.dynamic.datasource.master.driver-class-name=com.mysql.cj.jdbc.Driver
-spring.datasource.dynamic.datasource.master.url=jdbc:mysql://localhost:3306/snowy?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&useInformationSchema=true&rewriteBatchedStatements=true
+spring.datasource.dynamic.datasource.master.url=jdbc:mysql://localhost:3306/hnzy?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&useInformationSchema=true&rewriteBatchedStatements=true
 spring.datasource.dynamic.datasource.master.username=root
-spring.datasource.dynamic.datasource.master.password=123456
+spring.datasource.dynamic.datasource.master.password=MRXPibTNd6FNLRSp
 spring.datasource.dynamic.strict=true
 
 # postgres
@@ -95,7 +95,7 @@ spring.jackson.serialization.write-dates-as-timestamps=false
 spring.data.redis.database=1
 spring.data.redis.host=127.0.0.1
 spring.data.redis.port=6379
-spring.data.redis.password=
+spring.data.redis.password=4008809192
 spring.data.redis.timeout=10s
 
 spring.data.redis.lettuce.pool.max-active=200
@@ -194,3 +194,9 @@ springdoc.group-configs[6].packages-to-scan=vip.xiaonuo.sys
 # common configuration
 snowy.config.common.front-url=http://localhost:81
 snowy.config.common.backend-url=http://localhost:82
+
+#mqtt
+snowy.config.common.mqtt-url=tcp://218.2.6.74:13883
+snowy.config.common.mqtt-name=bydz-smt
+snowy.config.common.mqtt-password=bydzsmt123!@#
+snowy.config.common.mqtt-clientId=my-mqtt-client-id