From 115bd9b51f5d8eade4658f844de37516486c60e7 Mon Sep 17 00:00:00 2001 From: liujiandao <274878379@qq.com> Date: 星期六, 18 十一月 2023 17:25:25 +0800 Subject: [PATCH] crm获取aps项目模块信息 --- api/v1/file.go | 155 ++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 114 insertions(+), 41 deletions(-) diff --git a/api/v1/file.go b/api/v1/file.go index 1edb6b9..bf86288 100644 --- a/api/v1/file.go +++ b/api/v1/file.go @@ -3,16 +3,16 @@ import ( "aps_crm/model" "aps_crm/model/request" - "aps_crm/model/response" "aps_crm/pkg/contextx" "aps_crm/pkg/ecode" "aps_crm/pkg/httpx" "aps_crm/service" - "github.com/flipped-aurora/gin-vue-admin/server/utils/upload" + "aps_crm/utils/upload" "github.com/gin-gonic/gin" + "github.com/spf13/cast" + "io" "os" "path/filepath" - "strconv" ) type FileApi struct{} @@ -21,7 +21,8 @@ // @Tags 闄勪欢绠$悊 // @Summary 娣诲姞闄勪欢 // @Produce application/json -// @Param object body request.AddFile true "鏌ヨ鍙傛暟" +// @Param object formData request.AddFile true "鏌ヨ鍙傛暟" +// @Param file formData file true "涓婁紶鏂囦欢" // @Success 200 {object} contextx.Response{} // @Router /api/file/add [post] func (s *FileApi) Add(c *gin.Context) { @@ -44,7 +45,7 @@ return } - _, filename := filepath.Split(filePath) + _, filename := filepath.Split(header.Filename) fileRecord := &model.File{ Name: filename, @@ -80,17 +81,11 @@ return } - id, _ := strconv.Atoi(c.Param("id")) - + idx := c.Param("id") + id := cast.ToUint(idx) file, err := model.NewFileSearch().SetId(id).First() if err != nil { ctx.FailWithMsg(ecode.ParamsErr, "鏌ユ壘鏂囦欢澶辫触") - return - } - - err = os.Remove(file.FilePath) - if err != nil { - ctx.FailWithMsg(ecode.ParamsErr, "鍒犻櫎鏂囦欢澶辫触") return } @@ -100,58 +95,136 @@ return } + err = os.Remove(file.FilePath) + if err != nil { + ctx.FailWithMsg(ecode.ParamsErr, "鍒犻櫎鏂囦欢澶辫触") + return + } + ctx.Ok() } -// Update -// @Tags 闄勪欢绠$悊 -// @Summary 鏇存柊闄勪欢 +//// Update +//// @Tags 闄勪欢绠$悊 +//// @Summary 鏇存柊闄勪欢 +//// @Produce application/json +//// @Param object body request.UpdateFile true "鏌ヨ鍙傛暟" +//// @Success 200 {object} contextx.Response{} +//// @Router /api/file/update [put] +//func (s *FileApi) Update(c *gin.Context) { +// var params request.UpdateFile +// ctx, ok := contextx.NewContext(c, ¶ms) +// if !ok { +// return +// } +// if params.Id == 0 { +// ctx.Fail(ecode.ParamsErr) +// } +// params.File.ID = params.Id +// +// errCode := service.NewFileService().UpdateFile(¶ms.File) +// if errCode != ecode.OK { +// ctx.Fail(errCode) +// return +// } +// +// ctx.Ok() +//} + +//// List +//// @Tags 闄勪欢绠$悊 +//// @Summary 鑾峰彇闄勪欢鍒楄〃 +//// @Produce application/json +//// @Param object query request.GetFileList true "鍙傛暟" +//// @Success 200 {object} response.ListResponse{data=[]model.File} +//// @Router /api/file/list [get] +//func (s *FileApi) List(c *gin.Context) { +// var params request.GetFileList +// ctx, ok := contextx.NewContext(c, ¶ms) +// if !ok { +// return +// } +// +// file, total, errCode := service.NewFileService().GetFileList() +// if errCode != ecode.OK { +// ctx.Fail(errCode) +// return +// } +// +// ctx.OkWithDetailed(response.ListResponse{ +// Data: file, +// Count: total, +// }) +//} + +// Download +// @Tags 闄勪欢绠$悊 +// @Summary 闄勪欢涓嬭浇 // @Produce application/json -// @Param object body request.UpdateFile true "鏌ヨ鍙傛暟" +// @Param object body request.DownloadFile true "鍙傛暟" // @Success 200 {object} contextx.Response{} -// @Router /api/file/update [put] -func (s *FileApi) Update(c *gin.Context) { - var params request.UpdateFile +// @Router /api/file/download [post] +func (s *FileApi) Download(c *gin.Context) { + var params request.DownloadFile ctx, ok := contextx.NewContext(c, ¶ms) if !ok { return } - if params.Id == 0 { - ctx.Fail(ecode.ParamsErr) - } - params.File.Id = params.Id - - errCode := service.NewFileService().UpdateFile(¶ms.File) + file, errCode := service.NewFileService().GetFile(params.Id) if errCode != ecode.OK { ctx.Fail(errCode) return } + if file.SourceType != params.SourceType || file.SourceId != params.SourceId || file.Key != params.Key { + ctx.FailWithMsg(ecode.ParamsErr, "鏂囦欢涓嶅瓨鍦�") + return + } + f, err := os.Open(file.FilePath) + if err != nil { + ctx.FailWithMsg(ecode.ParamsErr, "鏂囦欢涓嶅瓨鍦�") + return + } + file.DownloadCount++ + service.NewFileService().UpdateFile(file) - ctx.Ok() + data, err := io.ReadAll(f) + c.Writer.Header().Set("Content-Type", "application/octet-stream") + c.Writer.Header().Set("Content-Disposition", "attachment;filename="+file.Name) + c.Writer.Write(data) } -// List -// @Tags 闄勪欢绠$悊 -// @Summary 鑾峰彇闄勪欢鍒楄〃 +// Preview +// @Tags 闄勪欢绠$悊 +// @Summary 闄勪欢棰勮 // @Produce application/json -// @Param object query request.GetFileList true "鍙傛暟" -// @Success 200 {object} response.ListResponse{data=[]model.File} -// @Router /api/file/list [get] -func (s *FileApi) List(c *gin.Context) { - var params request.GetFileList +// @Param object body request.DownloadFile true "鍙傛暟" +// @Success 200 {object} contextx.Response{} +// @Router /api/file/preview [post] +func (s *FileApi) Preview(c *gin.Context) { + var params request.DownloadFile ctx, ok := contextx.NewContext(c, ¶ms) if !ok { return } - - file, total, errCode := service.NewFileService().GetFileList() + file, errCode := service.NewFileService().GetFile(params.Id) if errCode != ecode.OK { ctx.Fail(errCode) return } + if file.SourceType != params.SourceType || file.SourceId != params.SourceId || file.Key != params.Key { + ctx.FailWithMsg(ecode.ParamsErr, "鏂囦欢涓嶅瓨鍦�") + return + } + f, err := os.Open(file.FilePath) + if err != nil { + ctx.FailWithMsg(ecode.ParamsErr, "鏂囦欢涓嶅瓨鍦�") + return + } + file.PreviewCount++ + service.NewFileService().UpdateFile(file) - ctx.OkWithDetailed(response.ListResponse{ - Data: file, - Count: total, - }) + data, err := io.ReadAll(f) + c.Writer.Header().Set("Content-Type", "application/octect-stream") + c.Writer.Header().Set("Content-Disposition", "attachment;filename="+file.Name) + c.Writer.Write(data) } -- Gitblit v1.8.0