Переглянути джерело

bugfix:修复商家端上传举报返回空图片问题

penghao 17 годин тому
батько
коміт
6c834c4576

+ 40 - 28
alien-second/src/main/java/shop/alien/second/service/impl/SecondGoodsReportingServiceImpl.java

@@ -4,15 +4,12 @@ import cn.hutool.core.collection.CollectionUtil;
 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.conditions.update.LambdaUpdateWrapper;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import shop.alien.entity.second.SecondGoods;
 import shop.alien.entity.second.SecondGoodsRecord;
-import shop.alien.entity.second.vo.SecondGoodsVo;
 import shop.alien.entity.second.vo.SecondReportingVo;
 import shop.alien.entity.second.vo.SecondUserViolationVo;
 import shop.alien.entity.store.*;
@@ -24,7 +21,6 @@ import shop.alien.second.service.SecondGoodsReportingService;
 import shop.alien.second.util.AiUserViolationUtils;
 import shop.alien.second.util.JsonUtils;
 import shop.alien.util.common.Constants;
-import shop.alien.util.common.EnumUtil;
 import shop.alien.util.common.JwtUtil;
 
 import java.math.BigDecimal;
@@ -32,7 +28,6 @@ import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
-import java.util.stream.Collectors;
 
 /**
  * 二手商品服务实现类
@@ -127,32 +122,43 @@ public class SecondGoodsReportingServiceImpl implements SecondGoodsReportingServ
         List<String> videoList = new ArrayList<>();
 
         if (lifeUserViolation.getReportContextType().equals("1") || lifeUserViolation.getReportContextType().equals("2") || lifeUserViolation.getReportContextType().equals("3")) {
-            List<String> urlList = Arrays.asList(lifeUserViolation.getReportEvidenceImg().split(","));
-            for (int i = 0; i < urlList.size(); i++) {
-                Map<String, Object> map = new HashMap<>();
+            if (StringUtils.isNotBlank(lifeUserViolation.getReportEvidenceImg())) {
+                List<String> urlList = Arrays.asList(lifeUserViolation.getReportEvidenceImg().split(","));
+                for (int i = 0; i < urlList.size(); i++) {
+                    String url = urlList.get(i);
+                    // 过滤掉空的URL
+                    if (StringUtils.isBlank(url)) {
+                        continue;
+                    }
 
-                // 查找最后一个点的位置
-                int lastDotIndex = urlList.get(i).lastIndexOf('.');
+                    Map<String, Object> map = new HashMap<>();
 
-                String fileType = urlList.get(i).substring(urlList.get(i).lastIndexOf(".") + 1);
-                String contains = null;
-                if (lastDotIndex != -1) { // 确保存在
-                    contains = urlList.get(i).substring(0, lastDotIndex);
-                }
+                    // 查找最后一个点的位置
+                    int lastDotIndex = url.lastIndexOf('.');
 
-                if (!videoList.contains(contains)) {
-                    videoList.add(contains);
-                    if (videoFileType.contains(fileType.toLowerCase())) {
-                        map.put("type", "video");
-                        map.put("imgUrl", urlList.get(i + 1));
-                        map.put("videoUrl", urlList.get(i));
-                    } else {
-                        map.put("type", "image");
-                        map.put("imgUrl", urlList.get(i));
+                    String fileType = url.substring(url.lastIndexOf(".") + 1);
+                    String contains = null;
+                    if (lastDotIndex != -1) { // 确保存在
+                        contains = url.substring(0, lastDotIndex);
                     }
-                    list.add(map);
-                }
 
+                    if (!videoList.contains(contains)) {
+                        videoList.add(contains);
+                        if (videoFileType.contains(fileType.toLowerCase())) {
+                            map.put("type", "video");
+                            if (i + 1 < urlList.size() && StringUtils.isNotBlank(urlList.get(i + 1))) {
+                                map.put("imgUrl", urlList.get(i + 1));
+                                map.put("videoUrl", url);
+                                list.add(map);
+                            }
+                        } else {
+                            map.put("type", "image");
+                            map.put("imgUrl", url);
+                            list.add(map);
+                        }
+                    }
+
+                }
             }
         } else {
             LambdaQueryWrapper<StoreImg> wrapper = new LambdaQueryWrapper<>();
@@ -160,16 +166,22 @@ public class SecondGoodsReportingServiceImpl implements SecondGoodsReportingServ
             wrapper.eq(StoreImg::getImgType, Constants.ImageType.SECOND_HAND_REPORT);
             List<StoreImg> imgList = storeImgMapper.selectList(wrapper);
             for (int i = 0; i < imgList.size(); i++) {
+                StoreImg storeImg = imgList.get(i);
+                // 过滤掉imgUrl为空或null的记录
+                if (storeImg == null || StringUtils.isBlank(storeImg.getImgUrl())) {
+                    continue;
+                }
+
                 Map<String, Object> map = new HashMap<>();
 
-                String fileType = imgList.get(i).getImgUrl().substring(imgList.get(i).getImgUrl().lastIndexOf(".") + 1);
+                String fileType = storeImg.getImgUrl().substring(storeImg.getImgUrl().lastIndexOf(".") + 1);
 
                 if (videoFileType.contains(fileType.toLowerCase())) {
                     map.put("type", "video");
                 } else {
                     map.put("type", "image");
                 }
-                map.put("imgUrl", imgList.get(i).getImgUrl());
+                map.put("imgUrl", storeImg.getImgUrl());
                 list.add(map);
             }
             secondReportingVo.setVideoFirstFrame(lifeUserViolation.getVideoFirstFrame());

+ 8 - 3
alien-second/src/main/java/shop/alien/second/service/impl/SecondGoodsServiceImpl.java

@@ -14,11 +14,11 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.google.common.collect.Lists;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
-import org.springframework.util.StringUtils;
 import shop.alien.config.properties.RiskControlProperties;
 import shop.alien.entity.SecondVideoTask;
 import shop.alien.entity.second.*;
@@ -563,6 +563,11 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
         List<String> videoFileType = Arrays.asList("mp4", "avi", "flv", "mkv", "rmvb", "wmv", "3gp", "mov");
 
         for (StoreImg img : imageList) {
+            // 过滤掉imgUrl为空或null的记录
+            if (img == null || StringUtils.isBlank(img.getImgUrl())) {
+                continue;
+            }
+            
             Map<String, Object> map = new HashMap<>();
             String fileType = img.getImgUrl().substring(img.getImgUrl().lastIndexOf(".") + 1);
             if (videoFileType.contains(fileType.toLowerCase())) {
@@ -1403,7 +1408,7 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
             );
         }
         // 添加对 orderData 的排序 若不为空
-        if (!StringUtils.isEmpty(secondGoodsVo.getOrderData()) && !StringUtils.isEmpty(secondGoodsVo.getOrderType())) {
+        if (!StringUtils.isEmpty(secondGoodsVo.getOrderData()) && secondGoodsVo.getOrderType() != null) {
             // 正序
             if (secondGoodsVo.getOrderType() == 1){
                 queryWrapper.orderByAsc(secondGoodsVo.getOrderData())
@@ -1741,7 +1746,7 @@ public class SecondGoodsServiceImpl extends ServiceImpl<SecondGoodsMapper, Secon
                 List<StoreImg> storeImgs = storeImgMapper.selectList(imgQueryWrapper);
                 List<String> imgUrls = storeImgs.stream()
                         .map(StoreImg::getImgUrl)
-                        .filter(imgUrl -> StringUtils.hasText(imgUrl))
+                        .filter(imgUrl -> StringUtils.isNotBlank(imgUrl))
                         .collect(Collectors.toList());
                 secondGoodsVo.setImgUrl(imgUrls);