From 301003bb605007c3e035442de4bced9dd02164bb Mon Sep 17 00:00:00 2001
From: wangpengfei <274878379@qq.com>
Date: 星期一, 28 八月 2023 17:46:18 +0800
Subject: [PATCH] fix

---
 api/v1/test/contract.go |  103 ++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 92 insertions(+), 11 deletions(-)

diff --git a/api/v1/test/contract.go b/api/v1/test/contract.go
index 886bab3..a3411c5 100644
--- a/api/v1/test/contract.go
+++ b/api/v1/test/contract.go
@@ -1,14 +1,19 @@
 package test
 
 import (
-	"github.com/flipped-aurora/gin-vue-admin/server/global"
-	"github.com/flipped-aurora/gin-vue-admin/server/model/common/request"
-	"github.com/flipped-aurora/gin-vue-admin/server/model/common/response"
-	"github.com/flipped-aurora/gin-vue-admin/server/model/test"
-	testReq "github.com/flipped-aurora/gin-vue-admin/server/model/test/request"
-	"github.com/flipped-aurora/gin-vue-admin/server/service"
+	"bytes"
+	"fmt"
 	"github.com/gin-gonic/gin"
 	"go.uber.org/zap"
+	"net/http"
+	"srm/global"
+	"srm/model/common/request"
+	"srm/model/common/response"
+	"srm/model/test"
+	testReq "srm/model/test/request"
+	"srm/service"
+	"strconv"
+	"time"
 )
 
 type ContractApi struct {
@@ -184,22 +189,98 @@
 // @Security ApiKeyAuth
 // @accept application/json
 // @Produce application/json
-// @Param data query testReq.ContractSearch true "棰勮Contract"
+// @Param data query test.Contract true "鐢╥d鏌ヨContract"
 // @Success 200 {string} string "{"success":true,"data":{},"msg":"棰勮鎴愬姛"}"
 // @Router /con/previewContract [get]
 func (conApi *ContractApi) PreviewContract(c *gin.Context) {
-	var pageInfo testReq.ContractSearch
-	err := c.ShouldBindQuery(&pageInfo)
+	var con test.Contract
+	err := c.ShouldBindQuery(&con)
 	if err != nil {
 		response.FailWithMessage(err.Error(), c)
 		return
 	}
-	contract, err := conService.GetContract(pageInfo.ID)
+
+	id := c.Query("id")
+	if id == "" {
+		response.FailWithMessage("id涓嶈兘涓虹┖", c)
+		return
+	}
+
+	val64, err := strconv.ParseUint(id, 10, 64)
+	if err != nil {
+		response.FailWithMessage("id鏍煎紡閿欒", c)
+		return
+	}
+
+	// Convert uint64 to uint
+	conId := uint(val64)
+
+	contract, err := conService.GetContract(conId)
 	if err != nil {
 		global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err))
 		response.FailWithMessage("鑾峰彇澶辫触", c)
 		return
 	} else {
-		c.Data(200, "application/pdf", contract.FileContent)
+		//c.Writer.Header().Set("Content-Type", "application/octect-stream")
+		//c.Writer.Header().Set("Content-Disposition", "attachment;filename="+contract.FileName)
+		//c.Writer.Write(contract.FileContent)
+		//c.Data(200, "application/octect-stream", contract.FileContent)
+		//reader := bytes.NewReader(contract.FileContent)
+		//c.DataFromReader(http.StatusOK, int64(len(contract.FileContent)), "application/pdf", reader, map[string]string{"Content-Disposition": fmt.Sprintf("attachment; filename=%s", contract.FileName)})
+		reader := bytes.NewReader(contract.FileContent)
+		c.Writer.Header().Set("Content-Type", "application/pdf")
+		c.Writer.Header().Set("Content-Disposition", "inline; filename="+contract.FileName)
+		http.ServeContent(c.Writer, c.Request, contract.FileName, time.Now(), reader)
+	}
+}
+
+// DownloadContract 涓嬭浇Contract
+// @Tags Contract
+// @Summary 涓嬭浇Contract
+// @Security ApiKeyAuth
+// @accept application/json
+// @Produce application/json
+// @Param data query test.Contract true "鐢╥d鏌ヨContract"
+// @Success 200 {string} string "{"success":true,"data":{},"msg":"涓嬭浇鎴愬姛"}"
+// @Router /con/downloadContract [get]
+func (conApi *ContractApi) DownloadContract(c *gin.Context) {
+	var con test.Contract
+	err := c.ShouldBindQuery(&con)
+	if err != nil {
+		response.FailWithMessage(err.Error(), c)
+		return
+	}
+
+	id := c.Query("id")
+	if id == "" {
+		response.FailWithMessage("id涓嶈兘涓虹┖", c)
+		return
+	}
+
+	val64, err := strconv.ParseUint(id, 10, 64)
+	if err != nil {
+		response.FailWithMessage("id鏍煎紡閿欒", c)
+		return
+	}
+
+	// Convert uint64 to uint
+	conId := uint(val64)
+
+	contract, err := conService.GetContract(conId)
+	if err != nil {
+		global.GVA_LOG.Error("鑾峰彇澶辫触!", zap.Error(err))
+		response.FailWithMessage("鑾峰彇澶辫触", c)
+		return
+	} else {
+		reader := bytes.NewReader(contract.FileContent)
+		// 璁剧疆蹇呰鐨勫ご淇℃伅
+		c.Header("Content-Description", "File Transfer")
+		c.Header("Content-Transfer-Encoding", "binary")
+		c.Header("Content-Disposition", fmt.Sprintf("attachment; filename=%s", contract.FileName))
+		c.Header("Content-Type", "application/pdf")
+
+		// 灏嗘枃浠朵綔涓哄搷搴斾綋鍙戦��
+		http.ServeContent(c.Writer, c.Request, contract.FileName, time.Now(), reader)
+		c.File(contract.FileName)
 	}
 }

--
Gitblit v1.8.0