From dd2c694c124c4a0f5b1d9c5a876337bd424d697f Mon Sep 17 00:00:00 2001
From: yinbangzhong <zhongbangyin@126.com>
Date: 星期三, 19 六月 2024 17:46:08 +0800
Subject: [PATCH] download file by attach model

---
 docs/swagger.yaml    |   22 +++++++
 controllers/audio.go |   26 ++++++++
 docs/docs.go         |   39 +++++++++++++
 docs/swagger.json    |   39 +++++++++++++
 response/audio.go    |    4 +
 router/router.go     |    1 
 6 files changed, 129 insertions(+), 2 deletions(-)

diff --git a/controllers/audio.go b/controllers/audio.go
index 8f5f108..9ce7cba 100644
--- a/controllers/audio.go
+++ b/controllers/audio.go
@@ -111,6 +111,9 @@
 	if err := models.NewAudioSearch().Create(audio); err != nil {
 		util.ResponseFormat(c, code.SaveFail, "涓婁紶澶辫触")
 		return
+	} else {
+		util.ResponseFormat(c, code.SaveFail, "涓婁紶鎴愬姛")
+		return
 	}
 	go func() {
 		var trainInfoNames = []string{audio.LocomotiveNumber, audio.TrainNumber, audio.Station}
@@ -290,13 +293,17 @@
 	filepath := ""
 	if params.Filetype == 1 {
 		filepath = audio.FilePath
-		c.Header("Content-Type", "audio/mpeg") // 璁剧疆闊抽鏂囦欢绫诲瀷
+		c.Header("Content-Type", "audio/mpeg")                                              // 璁剧疆闊抽鏂囦欢绫诲瀷
+		c.Header("Content-Disposition", "attachment; filename="+url.PathEscape(audio.Name)) // 鍦ㄦ祻瑙堝櫒涓洿鎺ユ墦寮�
 	}
 	if params.Filetype == 2 {
 		filepath = audio.TxtFilePath
 		//璁剧疆Content-Type涓簍xt鏂囦欢绫诲瀷,閬垮厤涓枃涔辩爜
 		c.Header("Content-Type", "text/plain; charset=utf-8")
 		c.Header("Content-Transfer-Encoding", "binary")
+		//鍘绘帀audio.Name涓�.涔嬪悗鐨勫唴瀹癸紝鍙繚鐣欐枃浠跺悕绉�
+		fileName := strings.Split(audio.Name, ".")[0]
+		c.Header("Content-Disposition", "attachment; filename="+url.PathEscape(fmt.Sprintf("%s.txt", fileName))) // 鍦ㄦ祻瑙堝櫒涓洿鎺ユ墦寮�
 	}
 	if filepath == "" {
 		util.ResponseFormat(c, code.InternalError, "鏌ヨ澶辫触")
@@ -316,7 +323,6 @@
 		return
 	}
 
-	c.Header("Content-Disposition", "inline; filename="+url.PathEscape(audio.Name)) // 鍦ㄦ祻瑙堝櫒涓洿鎺ユ墦寮�
 	c.Header("Content-Length", fmt.Sprint(fileInfo.Size()))
 
 	if _, err := io.Copy(c.Writer, file); err != nil {
@@ -470,3 +476,19 @@
 
 	util.ResponseFormat(c, code.UpdateSuccess, resp)
 }
+
+// PreLoadPath
+// @Tags      闊抽鑷姩鍔犺浇璺緞
+// @Summary   闊抽鑷姩鍔犺浇璺緞
+// @Produce   application/json
+// @Success   200 {object} util.Response{data=response.PreLoadPathResp} "鎴愬姛"
+// @Router    /api-sa/v1/audio/preLoadPath [get]
+func (slf AudioCtl) PreLoadPath(c *gin.Context) {
+	//鑾峰彇PRELOAD_PATH鐜鍙橀噺
+	preLoadPath := os.Getenv("PRELOAD_PATH")
+	if len(preLoadPath) == 0 {
+		preLoadPath = "./preloads"
+	}
+	resp := response.PreLoadPathResp{PreLoadPath: preLoadPath}
+	util.ResponseFormat(c, code.UpdateSuccess, resp)
+}
diff --git a/docs/docs.go b/docs/docs.go
index d60e36c..41fc6df 100644
--- a/docs/docs.go
+++ b/docs/docs.go
@@ -360,6 +360,37 @@
                 }
             }
         },
+        "/api-sa/v1/audio/preLoadPath": {
+            "get": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "闊抽鑷姩鍔犺浇璺緞"
+                ],
+                "summary": "闊抽鑷姩鍔犺浇璺緞",
+                "responses": {
+                    "200": {
+                        "description": "鎴愬姛",
+                        "schema": {
+                            "allOf": [
+                                {
+                                    "$ref": "#/definitions/util.Response"
+                                },
+                                {
+                                    "type": "object",
+                                    "properties": {
+                                        "data": {
+                                            "$ref": "#/definitions/response.PreLoadPathResp"
+                                        }
+                                    }
+                                }
+                            ]
+                        }
+                    }
+                }
+            }
+        },
         "/api-sa/v1/audio/process": {
             "post": {
                 "produces": [
@@ -927,6 +958,14 @@
                 }
             }
         },
+        "response.PreLoadPathResp": {
+            "type": "object",
+            "properties": {
+                "preLoadPath": {
+                    "type": "string"
+                }
+            }
+        },
         "util.Response": {
             "type": "object",
             "properties": {
diff --git a/docs/swagger.json b/docs/swagger.json
index 9f1dd40..e64e250 100644
--- a/docs/swagger.json
+++ b/docs/swagger.json
@@ -349,6 +349,37 @@
                 }
             }
         },
+        "/api-sa/v1/audio/preLoadPath": {
+            "get": {
+                "produces": [
+                    "application/json"
+                ],
+                "tags": [
+                    "闊抽鑷姩鍔犺浇璺緞"
+                ],
+                "summary": "闊抽鑷姩鍔犺浇璺緞",
+                "responses": {
+                    "200": {
+                        "description": "鎴愬姛",
+                        "schema": {
+                            "allOf": [
+                                {
+                                    "$ref": "#/definitions/util.Response"
+                                },
+                                {
+                                    "type": "object",
+                                    "properties": {
+                                        "data": {
+                                            "$ref": "#/definitions/response.PreLoadPathResp"
+                                        }
+                                    }
+                                }
+                            ]
+                        }
+                    }
+                }
+            }
+        },
         "/api-sa/v1/audio/process": {
             "post": {
                 "produces": [
@@ -916,6 +947,14 @@
                 }
             }
         },
+        "response.PreLoadPathResp": {
+            "type": "object",
+            "properties": {
+                "preLoadPath": {
+                    "type": "string"
+                }
+            }
+        },
         "util.Response": {
             "type": "object",
             "properties": {
diff --git a/docs/swagger.yaml b/docs/swagger.yaml
index 7bce983..791bf30 100644
--- a/docs/swagger.yaml
+++ b/docs/swagger.yaml
@@ -192,6 +192,11 @@
         - $ref: '#/definitions/constvar.BoolType'
         description: 1 宸插叧娉� 2鏈叧娉�
     type: object
+  response.PreLoadPathResp:
+    properties:
+      preLoadPath:
+        type: string
+    type: object
   util.Response:
     properties:
       code:
@@ -430,6 +435,23 @@
       summary: 闊抽鍒嗘瀽妫�绱�
       tags:
       - 闊抽
+  /api-sa/v1/audio/preLoadPath:
+    get:
+      produces:
+      - application/json
+      responses:
+        "200":
+          description: 鎴愬姛
+          schema:
+            allOf:
+            - $ref: '#/definitions/util.Response'
+            - properties:
+                data:
+                  $ref: '#/definitions/response.PreLoadPathResp'
+              type: object
+      summary: 闊抽鑷姩鍔犺浇璺緞
+      tags:
+      - 闊抽鑷姩鍔犺浇璺緞
   /api-sa/v1/audio/process:
     post:
       parameters:
diff --git a/response/audio.go b/response/audio.go
index 23f45c9..faa3f6f 100644
--- a/response/audio.go
+++ b/response/audio.go
@@ -5,3 +5,7 @@
 type FollowResp struct {
 	FollowStatus constvar.BoolType `json:"followStatus"` //1 宸插叧娉� 2鏈叧娉�
 }
+
+type PreLoadPathResp struct {
+	PreLoadPath string `json:"preLoadPath"`
+}
diff --git a/router/router.go b/router/router.go
index 4cc3f67..0b32b31 100644
--- a/router/router.go
+++ b/router/router.go
@@ -35,6 +35,7 @@
 		audioAPi.DELETE("delete", audioCtl.Delete)            // 闊抽鍒犻櫎
 		audioAPi.DELETE("batchDelete", audioCtl.BatchDelete)  // 闊抽鎵归噺鍒犻櫎
 		audioAPi.POST("follow", audioCtl.Follow)              // 鍏虫敞/鍙栨秷鍏虫敞
+		audioAPi.GET("preLoadPath", audioCtl.PreLoadPath)     // 鑾峰彇鑷姩鍔犺浇璺緞
 
 	}
 

--
Gitblit v1.8.0