| | |
| | | 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/utils/upload" |
| | | "github.com/gin-gonic/gin" |
| | | "github.com/spf13/cast" |
| | | "io" |
| | | "os" |
| | | "path/filepath" |
| | | ) |
| | |
| | | // ctx.Ok() |
| | | //} |
| | | |
| | | // List |
| | | // @Tags 附件管理 |
| | | // @Summary 获取附件列表 |
| | | //// 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 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/download [post] |
| | | func (s *FileApi) Download(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.DownloadCount++ |
| | | 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) |
| | | } |
| | | |
| | | // Preview |
| | | // @Tags 附件管理 |
| | | // @Summary 附件预览 |
| | | // @Produce application/json |
| | | // @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, 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) |
| | | |
| | | 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) |
| | | } |