1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- package service
- import (
- "gin-vue-admin/global"
- "gin-vue-admin/model"
- )
- func FindOrCreateFile(fileMd5 string, fileName string, chunkTotal int) (err error, file model.ExaFile) {
- var cfile model.ExaFile
- cfile.FileMd5 = fileMd5
- cfile.FileName = fileName
- cfile.ChunkTotal = chunkTotal
- notHaveSameMd5Finish := global.GVA_DB.Where("file_md5 = ? AND is_finish = ?", fileMd5, true).First(&file).RecordNotFound()
- if notHaveSameMd5Finish {
- err = global.GVA_DB.Where("file_md5 = ? AND file_name = ?", fileMd5, fileName).Preload("ExaFileChunk").FirstOrCreate(&file, cfile).Error
- return err, file
- } else {
- cfile.IsFinish = true
- cfile.FilePath = file.FilePath
- err = global.GVA_DB.Create(&cfile).Error
- return err, cfile
- }
- }
- func CreateFileChunk(id uint, fileChunkPath string, fileChunkNumber int) error {
- var chunk model.ExaFileChunk
- chunk.FileChunkPath = fileChunkPath
- chunk.ExaFileId = id
- chunk.FileChunkNumber = fileChunkNumber
- err := global.GVA_DB.Create(&chunk).Error
- return err
- }
- func FileCreateComplete(fileMd5 string, fileName string, filePath string) error {
- var file model.ExaFile
- upDateFile := make(map[string]interface{})
- upDateFile["FilePath"] = filePath
- upDateFile["IsFinish"] = true
- err := global.GVA_DB.Where("file_md5 = ? AND file_name = ?", fileMd5, fileName).First(&file).Updates(upDateFile).Error
- return err
- }
- func DeleteFileChunk(fileMd5 string, fileName string, filePath string) error {
- var chunks []model.ExaFileChunk
- var file model.ExaFile
- err := global.GVA_DB.Where("file_md5 = ? AND file_name = ?", fileMd5, fileName).First(&file).Update("IsFinish", true).Update("file_path", filePath).Error
- err = global.GVA_DB.Where("exa_file_id = ?", file.ID).Delete(&chunks).Unscoped().Error
- return err
- }
|