From 9acb17a6871d84a85c373eb90b980f98894e30e0 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期二, 18 二月 2025 17:58:48 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'
---
ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/controller/OssController.java | 185 ++++++++++++++++++++++++++++++++++++++--------
1 files changed, 153 insertions(+), 32 deletions(-)
diff --git a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/controller/OssController.java b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/controller/OssController.java
index 6358f23..7f84359 100644
--- a/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/controller/OssController.java
+++ b/ruoyi-service/ruoyi-worker/src/main/java/com/ruoyi/worker/controller/OssController.java
@@ -1,16 +1,20 @@
package com.ruoyi.worker.controller;
-import com.ruoyi.common.core.constant.Constants;
import com.ruoyi.common.core.domain.R;
-import com.ruoyi.common.core.exception.GlobalException;
+import com.ruoyi.common.core.domain.Result;
import com.ruoyi.common.core.utils.GaoDeMapUtil;
-import com.ruoyi.common.core.utils.ObsUploadUtil;
-import com.ruoyi.worker.entity.Order;
-import com.ruoyi.worker.service.OrderService;
+import com.ruoyi.order.api.feignClient.OrderClient;
+import com.ruoyi.worker.utils.FileImageWatermarkUtils;
+import com.ruoyi.worker.utils.TencentCosUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
+import lombok.Synchronized;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
@@ -18,7 +22,18 @@
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
-import java.io.IOException;
+import javax.imageio.ImageIO;
+import javax.imageio.stream.ImageOutputStream;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.*;
+import java.text.SimpleDateFormat;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Date;
+import java.util.concurrent.CompletableFuture;
+
/**
* @author HJL
@@ -28,10 +43,14 @@
@RestController
@RequestMapping("/oss")
@Api(tags = "师傅端-文件上传")
+@Slf4j
public class OssController {
@Resource
- private OrderService orderService;
+ private OrderClient orderClient;
+ @Resource
+ private TencentCosUtil tencentCosUtil;
+
@PostMapping("/upload")
@ApiOperation(value = "文件上传", tags = "师傅端-文件上传")
@@ -39,40 +58,142 @@
@ApiImplicitParam(value = "文件", name = "file", dataType = "MultipartFile", required = true)
})
public R<String> upload(@RequestParam("file") MultipartFile file) {
- try {
- return R.ok(ObsUploadUtil.obsUpload(file), "");
- } catch (IOException e) {
- return R.fail("文件上传失败!");
- }
+ return R.ok(tencentCosUtil.upLoadFile(file));
}
@PostMapping("/uploadPhoto")
- @ApiOperation(value = "师傅端-上传完工照片", tags = "公共-文件上传")
+ @ApiOperation(value = "师傅端-上传完工照片", tags = "师傅端-文件上传")
@ApiImplicitParams({
@ApiImplicitParam(value = "照片", name = "file", dataType = "MultipartFile", required = true),
@ApiImplicitParam(value = "订单id", name = "orderId", dataType = "Integer", required = true),
@ApiImplicitParam(value = "师傅所在经度", name = "longitude", dataType = "String", required = true),
@ApiImplicitParam(value = "师傅所在纬度", name = "latitude", dataType = "String", required = true)
})
- public R<String> uploadPhoto(@RequestParam("file") MultipartFile file, @RequestParam String orderId,
- @RequestParam String longitude, @RequestParam String latitude) {
- // 校验经纬度
- Order order = orderService.lambdaQuery().eq(Order::getIsDelete, orderId).eq(Order::getIsDelete, 0).one();
- // 用户下单位置经纬度
- String orderPosition = order.getLongitude() + "," + order.getLatitude();
- // 师傅经纬度
- String workerPosition = longitude + "," + latitude;
- // 师傅当前位置离用户下单位置具体距离
- Long distance = GaoDeMapUtil.getDistance(orderPosition, workerPosition).getDatas();
- // 上传时判断是否在下单位置附件,距离大于某个值则 不允许上传
- if (distance > Constants.THREE_THOUSAND) {
- throw new GlobalException("您当前手机定位超出当前订单预约地址范围 3km,无法提供回收服务!");
- }
- try {
- return R.ok(ObsUploadUtil.obsUpload(file));
- } catch (IOException e) {
- return R.fail("文件上传失败!");
- }
+ public R<Boolean> uploadPhoto(@RequestParam("file") MultipartFile file, @RequestParam String orderId,
+ @RequestParam String longitude, @RequestParam String latitude) {
+ return R.ok(tencentCosUtil.upLoadFile(file));
}
+// @PostMapping(value = "/pic", produces = "application/json;charset=UTF-8")
+// @ApiOperation(value = "文件上传加水印", tags = "师傅端-文件上传")
+// @ApiImplicitParams({
+// @ApiImplicitParam(value = "文件", name = "file", dataType = "MultipartFile", required = true)
+// })
+// public R<String> pic(@RequestParam("file") MultipartFile file,String longitude,
+// String latitude) {
+//// Result<String> address = GaoDeMapUtil.getAddress(longitude, latitude);
+////// return R.fail();
+////
+//// // 获取当前时间
+////
+//// LocalDateTime date = LocalDateTime.now();
+////
+//// // 设置日期格式
+////
+//// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+////
+//// // 通过format调用转换的方法
+////
+//// String dateWatermark = formatter.format(date);
+////// System.err.println("==========="+LocalDateTime.now());
+//// log.error("==========="+LocalDateTime.now());
+////
+//// MultipartFile watermarkFile = FileImageWatermarkUtils.markWithContent(file,dateWatermark,address.getDatas());
+////// System.err.println("==========="+LocalDateTime.now());
+//// log.error("==========="+LocalDateTime.now());
+////
+////
+//// String url = tencentCosUtil.upLoadFile(watermarkFile);
+////// String url = tencentCosUtil.upLoadFile(file);
+//// log.error("==========="+LocalDateTime.now());
+//// return R.ok(url);
+//
+//
+// // 参数校验
+// if (file == null || file.isEmpty()) {
+// return R.fail("文件不能为空");
+// }
+// if (longitude == null || longitude.isEmpty() || latitude == null || latitude.isEmpty()) {
+// return R.fail("经纬度参数不能为空");
+// }
+//
+// try {
+// // 获取地址信息
+// Result<String> addressResult = GaoDeMapUtil.getAddress(longitude, latitude);
+// if (addressResult == null || addressResult.getDatas() == null) {
+// return R.fail("无法获取地址信息");
+// }
+//
+// // 获取当前时间
+// LocalDateTime date = LocalDateTime.now();
+// DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+// String dateWatermark = formatter.format(date);
+// log.info("===========" + dateWatermark);
+//
+// // 给图片加水印
+// MultipartFile watermarkFile = FileImageWatermarkUtils.markWithContent(file, dateWatermark, addressResult.getDatas());
+// log.info("水印添加成功");
+//
+// // 上传到腾讯云COS
+// String url = tencentCosUtil.upLoadFile(watermarkFile);
+// log.info("文件上传成功,URL: " + url);
+//
+// return R.ok(url);
+// } catch (Exception e) {
+// log.error("文件上传加水印失败: ", e);
+// return R.fail("文件上传加水印失败: " + e.getMessage());
+// }
+// }
+
+ @Autowired
+ private ThreadPoolTaskExecutor taskExecutor;
+ @PostMapping(value = "/pic", produces = "application/json;charset=UTF-8")
+ @ApiOperation(value = "文件上传加水印", tags = "师傅端-文件上传")
+ @ApiImplicitParams({
+ @ApiImplicitParam(value = "文件", name = "file", dataType = "MultipartFile", required = true)
+ })
+ public CompletableFuture<R<String>> pic(@RequestParam("file") MultipartFile file, String longitude, String latitude) {
+ System.out.println("文件上传加水印=====>"+longitude+"====>"+latitude);
+ // 参数校验
+ if (file == null || file.isEmpty()) {
+ return CompletableFuture.completedFuture(R.fail("文件不能为空"));
+ }
+ if (longitude == null || longitude.isEmpty() || latitude == null || latitude.isEmpty()) {
+ return CompletableFuture.completedFuture(R.fail("经纬度参数不能为空"));
+ }
+
+ return CompletableFuture.supplyAsync(() -> {
+ try {
+ // 获取地址信息
+ Result<String> addressResult = GaoDeMapUtil.getAddress(longitude, latitude);
+ if (addressResult == null || addressResult.getDatas() == null) {
+ return R.fail("无法获取地址信息");
+ }
+
+ // 获取当前时间
+ LocalDateTime date = LocalDateTime.now();
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
+ String dateWatermark = formatter.format(date);
+ log.info("===========" + dateWatermark);
+
+ // 给图片加水印
+ MultipartFile watermarkFile = FileImageWatermarkUtils.markWithContent(file, dateWatermark, addressResult.getDatas());
+ log.info("水印添加成功");
+
+ // 上传到腾讯云COS
+ String url = tencentCosUtil.upLoadFile(watermarkFile);
+ log.info("文件上传成功,URL: " + url);
+
+ return R.ok(url);
+ } catch (Exception e) {
+ log.error("文件上传加水印失败: ", e);
+ return R.fail("文件上传加水印失败: " + e.getMessage());
+ }
+ }, taskExecutor);
+ }
+
+
+
+
+
}
--
Gitblit v1.7.1