From a615f757084e4d11a90ed42698b8a8cbcc083cb8 Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Fri, 24 Apr 2026 10:32:50 +0800
Subject: [PATCH] fix: 添加成果类型字段,视频或者图片

---
 drone-common/src/main/java/org/sxkj/common/utils/HeaderUtils.java |  115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 115 insertions(+), 0 deletions(-)

diff --git a/drone-common/src/main/java/org/sxkj/common/utils/HeaderUtils.java b/drone-common/src/main/java/org/sxkj/common/utils/HeaderUtils.java
index 71d04ff..28e6dc3 100644
--- a/drone-common/src/main/java/org/sxkj/common/utils/HeaderUtils.java
+++ b/drone-common/src/main/java/org/sxkj/common/utils/HeaderUtils.java
@@ -223,6 +223,121 @@
 	}
 
 	/**
+	 * 根据URL获取附件类型
+	 * 通过文件扩展名判断附件类型:
+	 * - 图片类型:jpg, jpeg, png, gif, bmp, webp, svg 等 -> 返回 1
+	 * - 视频类型:mp4, avi, mov, wmv, flv, mkv, mpeg, mpg 等 -> 返回 2
+	 * - 文档类型:pdf, doc, docx, xls, xlsx, ppt, pptx, txt 等 -> 返回 3
+	 * - 其他类型 -> 返回 0
+	 *
+	 * @param url 文件URL地址
+	 * @return 附件类型:1-图片,2-视频,3-文档,0-其他
+	 */
+	public static Integer getAttachmentType(String url) {
+		if (StringUtils.isEmpty(url)) {
+			return 0;
+		}
+
+		// 提取文件扩展名
+		String extension = getFileExtension(url);
+		if (StringUtils.isEmpty(extension)) {
+			return 0;
+		}
+
+		// 转换为小写进行比较
+		String extLower = extension.toLowerCase();
+
+		// 图片类型
+		if (isImageType(extLower)) {
+			return 1;
+		}
+
+		// 视频类型
+		if (isVideoType(extLower)) {
+			return 2;
+		}
+
+		// 文档类型
+		if (isDocumentType(extLower)) {
+			return 3;
+		}
+
+		// 其他类型
+		return 0;
+	}
+
+	/**
+	 * 从URL中提取文件扩展名
+	 *
+	 * @param url 文件URL地址
+	 * @return 文件扩展名(不包含点),如果无法提取则返回null
+	 */
+	private static String getFileExtension(String url) {
+		if (StringUtils.isEmpty(url)) {
+			return null;
+		}
+
+		// 去除URL参数部分(?后面的内容)
+		int questionMarkIndex = url.indexOf('?');
+		if (questionMarkIndex != -1) {
+			url = url.substring(0, questionMarkIndex);
+		}
+
+		// 查找最后一个点的位置
+		int lastDotIndex = url.lastIndexOf('.');
+		if (lastDotIndex == -1 || lastDotIndex == url.length() - 1) {
+			return null;
+		}
+
+		// 提取扩展名
+		return url.substring(lastDotIndex + 1);
+	}
+
+	/**
+	 * 判断是否为图片类型
+	 *
+	 * @param extension 文件扩展名(小写)
+	 * @return 是否为图片类型
+	 */
+	private static boolean isImageType(String extension) {
+		return extension.equals("jpg") || extension.equals("jpeg") ||
+			extension.equals("png") || extension.equals("gif") ||
+			extension.equals("bmp") || extension.equals("webp") ||
+			extension.equals("svg") || extension.equals("tiff") ||
+			extension.equals("tif") || extension.equals("ico");
+	}
+
+	/**
+	 * 判断是否为视频类型
+	 *
+	 * @param extension 文件扩展名(小写)
+	 * @return 是否为视频类型
+	 */
+	private static boolean isVideoType(String extension) {
+		return extension.equals("mp4") || extension.equals("avi") ||
+			extension.equals("mov") || extension.equals("wmv") ||
+			extension.equals("flv") || extension.equals("mkv") ||
+			extension.equals("mpeg") || extension.equals("mpg") ||
+			extension.equals("webm") || extension.equals("m4v") ||
+			extension.equals("3gp");
+	}
+
+	/**
+	 * 判断是否为文档类型
+	 *
+	 * @param extension 文件扩展名(小写)
+	 * @return 是否为文档类型
+	 */
+	private static boolean isDocumentType(String extension) {
+		return extension.equals("pdf") || extension.equals("doc") ||
+			extension.equals("docx") || extension.equals("xls") ||
+			extension.equals("xlsx") || extension.equals("ppt") ||
+			extension.equals("pptx") || extension.equals("txt") ||
+			extension.equals("csv") || extension.equals("zip") ||
+			extension.equals("rar");
+	}
+
+	/**
 	 * 获取当前HttpServletRequest对象
 	 *
 	 * @return HttpServletRequest对象,可能为null

--
Gitblit v1.9.3