195 lines
6.3 KiB
Go
195 lines
6.3 KiB
Go
// ==========================================================================
|
||
// 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
|
||
}
|