Files
zmkgC/internal/app/system/controller/document.go
2025-07-07 20:11:59 +08:00

195 lines
6.3 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// ==========================================================================
// GFast自动生成controller操作代码。
// 生成日期2023-09-16 10:32:04
// 生成路径: internal/app/system/controller/document.go
// 生成人gfast
// desc:母板
// company:云南奇讯科技有限公司
// ==========================================================================
package controller
import (
"context"
"encoding/json"
"errors"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
"github.com/tiger1103/gfast/v3/api/v1/common/coryCommon"
"github.com/tiger1103/gfast/v3/api/v1/system"
"github.com/tiger1103/gfast/v3/internal/app/system/service"
"github.com/tiger1103/gfast/v3/library/liberr"
"github.com/tiger1103/gfast/v3/third/officeWeb365"
"io"
"net/http"
"os"
"strings"
)
type documentController struct {
BaseController
}
type Action struct {
Type int `json:"type"`
UserID string `json:"userid"`
}
type MyStruct struct {
Actions []Action `json:"actions"`
ForceSaveType string `json:"forcesavetype"`
Key string `json:"key"`
Status int `json:"status"`
URL string `json:"url"`
Userdata string `json:"userdata"`
Users []string `json:"users"`
}
var Document = new(documentController)
func (c *documentController) SendFile(ctx context.Context, req *system.SendFileReq) (res *system.SendFileRes, err error) {
res = new(system.SendFileRes)
err, path := officeWeb365.SendFile199(ctx, req.FilePath, req.FileType)
res.FilePath = path
return
}
// List 列表
func (c *documentController) List(ctx context.Context, req *system.DocumentSearchReq) (res *system.DocumentSearchRes, err error) {
res, err = service.Document().List(ctx, req)
return
}
// AllList 列表
func (c *documentController) AllList(ctx context.Context, req *system.AllDocumentSearchReq) (res *system.AllDocumentSearchRes, err error) {
res, err = service.Document().AllList(ctx, req)
return
}
// Get 获取母板根据id
func (c *documentController) Get(ctx context.Context, req *system.DocumentGetReq) (res *system.DocumentGetRes, err error) {
res = new(system.DocumentGetRes)
res.DocumentInfoRes, err = service.Document().GetById(ctx, req.Id)
return
}
// Add 本地导入(文件/压缩文件夹)
func (c *documentController) Add(ctx context.Context, req *system.DocumentAddReq) (res *system.DocumentAddRes, err error) {
err = service.Document().Add(ctx, req)
return
}
// NewFolderFunc 新建文件夹
func (c *documentController) NewFolderFunc(ctx context.Context, req *system.NewFolderReq) (res *system.NewFolderRes, err error) {
err = service.Document().NewFolderFunc(ctx, req)
return
}
// Edit 修改母板
func (c *documentController) Edit(ctx context.Context, req *system.DocumentEditReq) (res *system.DocumentEditRes, err error) {
err = service.Document().Edit(ctx, req)
return
}
// Delete 删除母板
func (c *documentController) Delete(ctx context.Context, req *system.DocumentDeleteReq) (res *system.DocumentDeleteRes, err error) {
err = service.Document().Delete(ctx, req.Ids)
return
}
// TreeStructureFunc 树形结构
func (c *documentController) TreeStructureFunc(ctx context.Context, req *system.TreeStructureReq) (res *system.TreeStructureRes, err error) {
res, err = service.Document().TreeStructureFunc(ctx, req)
return
}
// CompressedDownload 根据文件目录进行下载压缩包
func (c *documentController) CompressedDownload(ctx context.Context, req *system.CompressedDownloadReq) (res *system.CompressedDownloadRes, err error) {
res = new(system.CompressedDownloadRes)
download, err := ZIPDownload(ctx, req.RelativePath)
if err != nil {
return
} else {
res = download
return
}
}
// ZIPDownload 生成压缩包
func ZIPDownload(ctx context.Context, relativePath string) (res *system.CompressedDownloadRes, err error) {
res = new(system.CompressedDownloadRes)
sourceDir := strings.ReplaceAll(relativePath, "/file", coryCommon.GetCWD()+"/resource/public") // 指定要压缩的文件夹路径
zipFile := coryCommon.GetCWD() + coryCommon.Temporary + "/" + coryCommon.FileName("") + ".zip"
err = coryCommon.CreateZipFile(sourceDir, zipFile)
if err != nil {
err = errors.New("下载失败!")
return
} else {
res.RelativePath = strings.Replace(zipFile, coryCommon.GetCWD()+"/resource/public", "/file", 1)
return
}
}
// UniFileDownload 单文件下载
func (c *documentController) UniFileDownload(ctx context.Context, req *system.UniFileDownloadReq) (res *system.UniFileDownloadRes, err error) {
res = new(system.UniFileDownloadRes)
rpath := coryCommon.FileToFunc(req.RelativePath, 2)
g.RequestFromCtx(ctx).Response.ServeFileDownload(rpath)
return
}
// TemplateRecycleBinFunc 模板回收站
func (c *documentDataController) TemplateRecycleBinFunc(ctx context.Context, req *system.TemplateRecycleBinReq) (res *system.TemplateRecycleBinRes, err error) {
err = service.Document().TemplateRecycleBinFunc(ctx, req)
return
}
func (c *busConstructionUserController) ExposeSingleFileUploads(ctx context.Context, req *system.WriteFreelyReq) (res *system.WriteFreelyRes, err error) {
res = new(system.WriteFreelyRes)
res, err = SingleFileUploads(ctx, req.Path)
return
}
// SingleFileUploads 畅写回调地址
func SingleFileUploads(ctx context.Context, path string) (res *system.WriteFreelyRes, err error) {
err = g.Try(ctx, func(ctx context.Context) {
var my MyStruct
r := ghttp.RequestFromCtx(ctx)
writer := r.Response.Writer
//正文
body := r.GetBody()
err = json.Unmarshal(body, &my)
res = new(system.WriteFreelyRes)
status := my.Status
if status == 0 {
err = errors.New("Invalid status format")
} else if status == 2 || status == 6 {
downloadURL := my.URL
if downloadURL == "" {
err = errors.New("Invalid URL format")
}
resp, err := http.Get(downloadURL)
if err != nil {
err = errors.New("Error downloading file")
}
defer resp.Body.Close()
fileContent, err := io.ReadAll(resp.Body)
if err != nil {
err = errors.New("Error reading file content")
}
pathForSave := coryCommon.FileToFunc(path, 2)
err = os.WriteFile(pathForSave, fileContent, 0644)
if err != nil {
err = errors.New("Error saving file")
}
} else if status == 3 || status == 7 {
writer.Write([]byte("{\"error\":-1}"))
return
}
writer.Write([]byte("{\"error\":0}"))
liberr.ErrIsNil(ctx, err)
})
return
}