Ver código fonte

Merge branch 'pic_third_upload' into pre

zoujiajian 1 semana atrás
pai
commit
c5837ee573

+ 4 - 3
netflix-service/src/main/java/com/cyksj/service/market/impl/MarketFrontServiceImpl.java

@@ -327,7 +327,7 @@ public class MarketFrontServiceImpl implements MarketFrontService {
 				.eq(TaskFollowPlatVerify::getUserId, userId)) > 0) {
 			throw BusinessRuntimeException.getInstance("请勿重复提交关注任务");
 		}
-		String imgUrl = thirdPartyFileUploadService.uploadImage(file);
+		String imgUrl = file == null || file.isEmpty() ? null : thirdPartyFileUploadService.uploadImage(file);
 		TaskFollowPlatVerify taskFollowPlatVerify = new TaskFollowPlatVerify();
 		taskFollowPlatVerify.setTaskId(taskId);
 		taskFollowPlatVerify.setUserId(userId);
@@ -366,10 +366,11 @@ public class MarketFrontServiceImpl implements MarketFrontService {
 		if (!taskFollowReq.getTaskId().equals(dbTaskFollowPlatVerify.getTaskId())) {
 			throw BusinessRuntimeException.getInstance("任务与提交记录不匹配");
 		}
-		String imgUrl = thirdPartyFileUploadService.uploadImage(file);
 		dbTaskFollowPlatVerify.setPlatNickname(taskFollowReq.getPlatNickname());
 		dbTaskFollowPlatVerify.setStatus(TaskFollowPlatVerify.Status.verifying);
-		dbTaskFollowPlatVerify.setImg(imgUrl);
+		if (file != null && !file.isEmpty()) {
+			dbTaskFollowPlatVerify.setImg(thirdPartyFileUploadService.uploadImage(file));
+		}
 		taskFollowPlatVerifyMapper.updateById(dbTaskFollowPlatVerify);
 
 		TaskUserCompleteRecord record = taskUserCompleteRecordMapper.selectOne(Wrappers.lambdaQuery(TaskUserCompleteRecord.class)

+ 2 - 1
netflix-service/src/main/java/com/cyksj/service/order/OrderCommentFrontService.java

@@ -1,6 +1,7 @@
 package com.cyksj.service.order;
 
 import com.cyksj.model.request.OrderCommentReq;
+import org.springframework.web.multipart.MultipartFile;
 
 /*
  *项目名: netflix
@@ -9,5 +10,5 @@ import com.cyksj.model.request.OrderCommentReq;
  *创建时间:2023/7/28 13:46
  */
 public interface OrderCommentFrontService {
-	void saveComment(OrderCommentReq request);
+	void saveComment(OrderCommentReq request, MultipartFile[] files);
 }

+ 19 - 2
netflix-service/src/main/java/com/cyksj/service/order/impl/OrderCommentFrontServiceImpl.java

@@ -15,6 +15,7 @@ import com.cyksj.model.manage.views.OrderDonView;
 import com.cyksj.model.request.OrderCommentReq;
 import com.cyksj.redis.RedisService;
 import com.cyksj.service.order.OrderCommentFrontService;
+import com.cyksj.service.market.ThirdPartyFileUploadService;
 import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.param.Operator;
 import com.ejlchina.searcher.util.MapUtils;
@@ -23,6 +24,9 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.Arrays;
+import java.util.stream.Collectors;
+import org.springframework.web.multipart.MultipartFile;
 
 /*
  *项目名: netflix
@@ -44,8 +48,20 @@ public class OrderCommentFrontServiceImpl implements OrderCommentFrontService {
 
 	private final RedisService redisService;
 
+	private final ThirdPartyFileUploadService thirdPartyFileUploadService;
+
 	@Override
-	public void saveComment(OrderCommentReq request) {
+	public void saveComment(OrderCommentReq request, MultipartFile[] files) {
+		if (files != null && files.length > 9) {
+			throw BusinessRuntimeException.getInstance("最多上传9张图片");
+		}
+		if (files != null && files.length > 0) {
+			String picture = Arrays.stream(files)
+					.filter(file -> file != null && !file.isEmpty())
+					.map(thirdPartyFileUploadService::uploadImage)
+					.collect(Collectors.joining(","));
+			request.setPicture(picture);
+		}
 		Long orderId = request.getOrderId();
 		Long userId = request.getUserId();
 		List<Long> userIds = request.getUserIds();
@@ -66,7 +82,8 @@ public class OrderCommentFrontServiceImpl implements OrderCommentFrontService {
 		if (request.getContent().length() > 1000) {
 			throw BusinessRuntimeException.getInstance("评论内容过多");
 		}
-		if (StrUtil.isNotBlank(request.getPicture()) && request.getPicture().length() > 2000) {
+		// 最多9张图片的CDN地址以逗号拼接保存,不能沿用单图2000字符限制。
+		if (StrUtil.isNotBlank(request.getPicture()) && request.getPicture().length() > 10000) {
 			throw BusinessRuntimeException.getInstance("图片过多");
 		}
 		if (Constant.noOrderStatus.contains(orderDonView.getStatus().name())) {

+ 2 - 2
netflix-web/src/main/java/com/cyksj/web/controller/market/TaskFrontController.java

@@ -180,7 +180,7 @@ public class TaskFrontController {
 	@PostMapping(value = "/post/follow", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
 	@NoSubmit
 	public Result<String> toCompleteFollowTask(@ModelAttribute @Validated TaskFollowReq taskFollowReq,
-			@RequestParam("file") MultipartFile file) {
+			@RequestParam(value = "file", required = false) MultipartFile file) {
 		Long userId = StpUserUtil.getLoginIdAsLong();
 		taskFollowReq.setUserId(userId);
 		marketFrontService.toCompleteFollowTask(taskFollowReq, file);
@@ -204,7 +204,7 @@ public class TaskFrontController {
 	@PutMapping(value = "/put/follow", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
 	@NoSubmit
 	public Result<String> updateFailFollowTask(@ModelAttribute @Validated TaskFollowReq taskFollowReq,
-			@RequestParam("file") MultipartFile file) {
+			@RequestParam(value = "file", required = false) MultipartFile file) {
 		Long userId = StpUserUtil.getLoginIdAsLong();
 		taskFollowReq.setUserId(userId);
 		marketFrontService.updateFailFollowTask(taskFollowReq, file);

+ 6 - 3
netflix-web/src/main/java/com/cyksj/web/controller/payment/OrderCommentFrontController.java

@@ -13,8 +13,10 @@ import com.ejlchina.searcher.BeanSearcher;
 import com.ejlchina.searcher.util.MapUtils;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.MediaType;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
 
@@ -38,13 +40,14 @@ public class OrderCommentFrontController {
 	/**
 	 * 新增评价
 	 */
-	@PostMapping("/post")
+	@PostMapping(value = "/post", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
 	@NoSubmit
-	public Result<String> post(@RequestBody @Validated OrderCommentReq request) {
+	public Result<String> post(@ModelAttribute @Validated OrderCommentReq request,
+			@RequestParam(value = "files", required = false) MultipartFile[] files) {
 		long userId = StpUserUtil.getLoginIdAsLong();
 		request.setUserId(userId);
 		request.setUserIds(userService.getRelationUserIdList(userId, null));
-		orderCommentFrontService.saveComment(request);
+		orderCommentFrontService.saveComment(request, files);
 		return GatewayResponse.SUCCESS.newBuilder().toResult();
 	}