
* beta:2.7.8-a 增加自动化创建树形结构 (#1941) * feat: 支持创建树形结构 --------- Co-authored-by: piexlMax(奇淼 <qimiaojiangjizhao@gmail.com> * 优化user store部分写法 * Update user.js * feat: 升级版本号 * Dev 278 beta2 (#1954) * 在关闭详情弹窗后 detailFrom为空对象,arr为undefined 使用slice控制台会报错 * 查询不重置pageSize * 优化主题模式相关内容 * 优化弹窗手机端显示 * bugfix:PostgreSQL initdb (#1953) * bugfix:postgresql增加显示指定template --------- Co-authored-by: PiexlMax(奇淼 <165128580+pixelmaxQm@users.noreply.github.com> --------- Co-authored-by: zayn <972858472@qq.com> Co-authored-by: Azir <2075125282@qq.com> Co-authored-by: Qing Liang <106448173+xue-ding-e@users.noreply.github.com> * docs:调整部分代码注释以及代码格式 * feat: 自动化代码字典支持多选 * fix:调整值接收器和指针接收器 * feat: 支持导出表格复制,优化增加方法页面。 * chore:初始化代码规范化。 --------- Co-authored-by: piexlMax(奇淼 <qimiaojiangjizhao@gmail.com> Co-authored-by: Azir <2075125282@qq.com> Co-authored-by: zayn <972858472@qq.com> Co-authored-by: Qing Liang <106448173+xue-ding-e@users.noreply.github.com> Co-authored-by: cjb <75364055@qq.com>
72 lines
2.4 KiB
Go
72 lines
2.4 KiB
Go
package example
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/flipped-aurora/gin-vue-admin/server/global"
|
|
"github.com/flipped-aurora/gin-vue-admin/server/model/example"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type FileUploadAndDownloadService struct{}
|
|
|
|
var FileUploadAndDownloadServiceApp = new(FileUploadAndDownloadService)
|
|
|
|
//@author: [piexlmax](https://github.com/piexlmax)
|
|
//@function: FindOrCreateFile
|
|
//@description: 上传文件时检测当前文件属性,如果没有文件则创建,有则返回文件的当前切片
|
|
//@param: fileMd5 string, fileName string, chunkTotal int
|
|
//@return: file model.ExaFile, err error
|
|
|
|
func (e *FileUploadAndDownloadService) FindOrCreateFile(fileMd5 string, fileName string, chunkTotal int) (file example.ExaFile, err error) {
|
|
var cfile example.ExaFile
|
|
cfile.FileMd5 = fileMd5
|
|
cfile.FileName = fileName
|
|
cfile.ChunkTotal = chunkTotal
|
|
|
|
if errors.Is(global.GVA_DB.Where("file_md5 = ? AND is_finish = ?", fileMd5, true).First(&file).Error, gorm.ErrRecordNotFound) {
|
|
err = global.GVA_DB.Where("file_md5 = ? AND file_name = ?", fileMd5, fileName).Preload("ExaFileChunk").FirstOrCreate(&file, cfile).Error
|
|
return file, err
|
|
}
|
|
cfile.IsFinish = true
|
|
cfile.FilePath = file.FilePath
|
|
err = global.GVA_DB.Create(&cfile).Error
|
|
return cfile, err
|
|
}
|
|
|
|
//@author: [piexlmax](https://github.com/piexlmax)
|
|
//@function: CreateFileChunk
|
|
//@description: 创建文件切片记录
|
|
//@param: id uint, fileChunkPath string, fileChunkNumber int
|
|
//@return: error
|
|
|
|
func (e *FileUploadAndDownloadService) CreateFileChunk(id uint, fileChunkPath string, fileChunkNumber int) error {
|
|
var chunk example.ExaFileChunk
|
|
chunk.FileChunkPath = fileChunkPath
|
|
chunk.ExaFileID = id
|
|
chunk.FileChunkNumber = fileChunkNumber
|
|
err := global.GVA_DB.Create(&chunk).Error
|
|
return err
|
|
}
|
|
|
|
//@author: [piexlmax](https://github.com/piexlmax)
|
|
//@function: DeleteFileChunk
|
|
//@description: 删除文件切片记录
|
|
//@param: fileMd5 string, fileName string, filePath string
|
|
//@return: error
|
|
|
|
func (e *FileUploadAndDownloadService) DeleteFileChunk(fileMd5 string, filePath string) error {
|
|
var chunks []example.ExaFileChunk
|
|
var file example.ExaFile
|
|
err := global.GVA_DB.Where("file_md5 = ?", fileMd5).First(&file).
|
|
Updates(map[string]interface{}{
|
|
"IsFinish": true,
|
|
"file_path": filePath,
|
|
}).Error
|
|
if err != nil {
|
|
return err
|
|
}
|
|
err = global.GVA_DB.Where("exa_file_id = ?", file.ID).Delete(&chunks).Unscoped().Error
|
|
return err
|
|
}
|