Explorar o código

fix 实物评论上传图片

zoujiajian hai 1 semana
pai
achega
063a1b3b97

+ 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())) {

+ 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();
 	}