Browse Source

feat(family): 添加家庭成员实名认证图片校验功能

- 新增实名认证图片下载与大小校验逻辑
- 限制图片大小范围为60KB到200KB之间
- 实现图片下载异常处理机制
- 集成IOUtils工具类用于图片流转换
- 增加对图片URL的网络请求支持
- 完善图片处理失败的日志记录与错误返回
SheepHy 3 weeks ago
parent
commit
ac6502c07c

+ 24 - 1
national-motion-module-system/national-motion-system-biz/src/main/java/org/jeecg/modules/app/controller/my/AppFamilyMembersController.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.compress.utils.IOUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
@@ -20,6 +21,10 @@ import org.springframework.transaction.annotation.Transactional;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+
 /**
  * 家庭成员
  */
@@ -59,12 +64,30 @@ public class AppFamilyMembersController {
             }
             iFamilyMembersService.addFamilyMembers(addFamilyMembersDTO);
         }
+        if (StringUtils.isNotEmpty(addFamilyMembersDTO.getRealNameImg())) {
+            try {
+                byte[] imageBytes = downloadImage(addFamilyMembersDTO.getRealNameImg()); // 下载图片
+                if (imageBytes.length < 60 * 1024) {
+                    return Result.error("图片太小,请重新上传大于60KB的图片");
+                } else if (imageBytes.length > 200 * 1024) {
+                    return Result.error("图片太小,请重新上传小于200KB的图片");
+                }
+            } catch (Exception e) {
+                log.error("处理实名认证图片失败", e);
+                return Result.error("实名认证图片处理失败");
+            }
+        }
         LoginUser principal = (LoginUser) SecurityUtils.getSubject().getPrincipal();
         String userId=principal.getId();
         addFamilyMembersDTO.setUserId(userId);
         return iFamilyMembersService.addFamilyMembers(addFamilyMembersDTO);
     }
-
+    private byte[] downloadImage(String imageUrl) throws IOException {
+        URL url = new URL(imageUrl);
+        try (InputStream in = url.openStream()) {
+            return IOUtils.toByteArray(in);
+        }
+    }
     @GetMapping("/FindByIdFamilyMembers")
     @Operation(summary = "根据id查询家庭成员")
     public Result<FamilyMembers> addFamilyMembers(@RequestParam("id") String id){