Преглед изворни кода

Update:票据处理逻辑更新

XieXing пре 3 месеци
родитељ
комит
a85a1c9b87

+ 21 - 0
shudao-go-backend/controllers/shudaooss.go

@@ -419,31 +419,41 @@ func (c *ShudaoOssController) ParseOSS() {
 	// 获取URL参数(加密的)
 	encryptedURL := c.GetString("url")
 	if encryptedURL == "" {
+		fmt.Printf("OSS代理请求缺少url参数\n")
 		c.Ctx.ResponseWriter.WriteHeader(400)
 		c.Ctx.WriteString("缺少url参数")
 		return
 	}
 
+	fmt.Printf("OSS代理请求 - 加密URL: %s\n", encryptedURL)
+
 	// 解密URL
 	decryptedURL, err := utils.DecryptURL(encryptedURL)
 	if err != nil {
+		fmt.Printf("OSS代理请求 - URL解密失败: %v\n", err)
 		c.Ctx.ResponseWriter.WriteHeader(400)
 		c.Ctx.WriteString("URL解密失败: " + err.Error())
 		return
 	}
 
+	fmt.Printf("OSS代理请求 - 解密后URL: %s\n", decryptedURL)
+
 	// URL解码,处理可能的编码问题
 	decodedURL, err := neturl.QueryUnescape(decryptedURL)
 	if err != nil {
 		decodedURL = decryptedURL
 	}
 
+	fmt.Printf("OSS代理请求 - URL解码后: %s\n", decodedURL)
+
 	var actualOSSURL string
 
 	// 检查是否是代理URL格式(包含?url=参数)
 	if strings.Contains(decodedURL, "?url=") {
+		fmt.Printf("OSS代理请求 - 检测到嵌套代理URL格式\n")
 		parsedProxyURL, err := neturl.Parse(decodedURL)
 		if err != nil {
+			fmt.Printf("OSS代理请求 - 代理URL解析失败: %v\n", err)
 			c.Ctx.ResponseWriter.WriteHeader(400)
 			c.Ctx.WriteString("代理URL格式无效: " + err.Error())
 			return
@@ -451,28 +461,35 @@ func (c *ShudaoOssController) ParseOSS() {
 
 		actualOSSURL = parsedProxyURL.Query().Get("url")
 		if actualOSSURL == "" {
+			fmt.Printf("OSS代理请求 - 代理URL中缺少url参数\n")
 			c.Ctx.ResponseWriter.WriteHeader(400)
 			c.Ctx.WriteString("代理URL中缺少url参数")
 			return
 		}
+		fmt.Printf("OSS代理请求 - 从嵌套URL提取的实际URL: %s\n", actualOSSURL)
 	} else {
 		actualOSSURL = decodedURL
+		fmt.Printf("OSS代理请求 - 直接使用解密URL: %s\n", actualOSSURL)
 	}
 
 	// 验证实际OSS URL格式
 	parsedOSSURL, err := neturl.Parse(actualOSSURL)
 	if err != nil {
+		fmt.Printf("OSS代理请求 - OSS URL解析失败: %v\n", err)
 		c.Ctx.ResponseWriter.WriteHeader(400)
 		c.Ctx.WriteString("OSS URL格式无效: " + err.Error())
 		return
 	}
 
 	if parsedOSSURL.Scheme == "" {
+		fmt.Printf("OSS代理请求 - OSS URL缺少协议方案: %s\n", actualOSSURL)
 		c.Ctx.ResponseWriter.WriteHeader(400)
 		c.Ctx.WriteString("OSS URL缺少协议方案")
 		return
 	}
 
+	fmt.Printf("OSS代理请求 - 最终请求URL: %s\n", actualOSSURL)
+
 	// 创建HTTP客户端,设置超时时间
 	client := &http.Client{
 		Timeout: 30 * time.Second,
@@ -481,14 +498,18 @@ func (c *ShudaoOssController) ParseOSS() {
 	// 发送GET请求到实际的OSS URL
 	resp, err := client.Get(actualOSSURL)
 	if err != nil {
+		fmt.Printf("OSS代理请求 - 连接OSS失败: %v\n", err)
 		c.Ctx.ResponseWriter.WriteHeader(502)
 		c.Ctx.WriteString("无法连接到OSS: " + err.Error())
 		return
 	}
 	defer resp.Body.Close()
 
+	fmt.Printf("OSS代理请求 - OSS响应状态码: %d\n", resp.StatusCode)
+
 	// 检查HTTP状态码
 	if resp.StatusCode != http.StatusOK {
+		fmt.Printf("OSS代理请求 - OSS返回错误状态码: %d\n", resp.StatusCode)
 		c.Ctx.ResponseWriter.WriteHeader(resp.StatusCode)
 		c.Ctx.WriteString(fmt.Sprintf("OSS返回错误: %d", resp.StatusCode))
 		return

+ 1 - 1
shudao-go-backend/utils/crypto.go

@@ -13,7 +13,7 @@ import (
 
 // GetEncryptKey 获取加密密钥
 func GetEncryptKey() string {
-	return web.AppConfig.DefaultString("OSS_PARSSE_ENCRYPT_KEY", "jgqwk7sirqlz2602")
+	return web.AppConfig.DefaultString("OSS_PARSE_ENCRYPT_KEY", "jgqwk7sirqlz2602")
 }
 
 // EncryptURL 加密URL

+ 9 - 4
shudao-vue-frontend/src/views/HazardDetection.vue

@@ -53,10 +53,7 @@
                                     :src="item.originalImageUrl"
                                     alt="隐患图标"
                                     class="history-icon-img"
-                                    @error="
-                                        $event.target.src =
-                                            item.originalImageUrl
-                                    "
+                                    @error="handleHistoryImageError($event, item)"
                                 />
                             </div>
                             <div class="history-desc">
@@ -1295,6 +1292,14 @@ const cancelDeleteHistory = () => {
     deleteTargetItem.value = null;
 };
 
+// 处理历史记录图片加载错误
+const handleHistoryImageError = (event, item) => {
+    console.log("历史记录图片加载失败:", item.originalImageUrl);
+    // 避免无限循环,设置一个简单的占位符
+    event.target.onerror = null; // 移除错误处理,防止再次触发
+    event.target.src = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHJlY3Qgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIiBmaWxsPSIjRjVGNUY1Ii8+CjxwYXRoIGQ9Ik0yMCAyNkMyMy4zMTM3IDI2IDI2IDIzLjMxMzcgMjYgMjBDMjYgMTYuNjg2MyAyMy4zMTM3IDE0IDIwIDE0QzE2LjY4NjMgMTQgMTQgMTYuNjg2MyAxNCAyMEMxNCAyMy4zMTM3IDE2LjY4NjMgMjYgMjAgMjZaIiBmaWxsPSIjQ0NDQ0NDIi8+Cjx0ZXh0IHg9IjIwIiB5PSIzMiIgZm9udC1mYW1pbHk9IkFyaWFsIiBmb250LXNpemU9IjgiIGZpbGw9IiM5OTk5OTkiIHRleHQtYW5jaG9yPSJtaWRkbGUiPuWbvueJhzwvdGV4dD4KPHN2Zz4K";
+};
+
 // 方法
 const createNewChat = () => {
     console.log("createNewChat 被调用");