55 lines
1.1 KiB
Go
55 lines
1.1 KiB
Go
package service
|
|
|
|
import (
|
|
"encoding/json"
|
|
"gorm.io/gorm"
|
|
"os"
|
|
"path/filepath"
|
|
"work_cation/cfg"
|
|
"work_cation/global"
|
|
"work_cation/models"
|
|
"work_cation/pkg/utils"
|
|
"work_cation/repo"
|
|
)
|
|
|
|
type ExecFileService struct{}
|
|
|
|
var ExecFile = new(ExecFileService)
|
|
|
|
func (*ExecFileService) Create(info *models.ExecFiles, chooseDir string) error {
|
|
infoPath := filepath.Join(cfg.T.CardDir, info.UUID)
|
|
//if err := os.RemoveAll(infoPath); err != nil && !os.IsNotExist(err) {
|
|
// dialog.ShowInformation("删除失败", err.Error(), w)
|
|
// return
|
|
//}
|
|
if err := utils.File.CopyDir(chooseDir, infoPath); err != nil {
|
|
return err
|
|
}
|
|
|
|
fs, err := os.ReadDir(chooseDir)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
for _, f := range fs {
|
|
info.Files = append(info.Files, f.Name())
|
|
}
|
|
|
|
jsonB, err := json.Marshal(info)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
file, err := os.Create(filepath.Join(infoPath, cfg.T.CardInfo))
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer file.Close()
|
|
_, err = file.Write(jsonB)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return global.DB.Transaction(func(tx *gorm.DB) error {
|
|
var baseCard = info.BaseCard
|
|
return repo.BaseCard.CreateOrSave(tx, &baseCard)
|
|
})
|
|
}
|