Files
work_cation/service/erlangCard.go
T
2024-10-17 13:55:12 +08:00

60 lines
1.4 KiB
Go

package service
import (
"encoding/json"
"gorm.io/gorm"
"os"
"path/filepath"
"work_cation/cfg"
"work_cation/global"
"work_cation/models"
"work_cation/repo"
)
type erlangCardService struct{}
var ErlangCard = &erlangCardService{}
func (*erlangCardService) Create(erlangCard *models.ErlangCards) error {
if len(erlangCard.VarName) == 0 {
erlangCard.ToolType = models.ToolTypeNoVarErlang
}
os.RemoveAll(filepath.Join(cfg.T.CardDir, erlangCard.UUID))
err := os.Mkdir(filepath.Join(cfg.T.CardDir, erlangCard.UUID), os.ModeDir)
if err != nil {
return err
}
info, err := os.Create(filepath.Join(cfg.T.CardDir, erlangCard.UUID, cfg.T.CardInfo))
if err != nil {
return err
}
defer info.Close()
jsonB, err := json.Marshal(erlangCard)
if err != nil {
return err
}
_, err = info.Write(jsonB)
if err != nil {
return err
}
return global.DB.Transaction(func(tx *gorm.DB) error {
var baseCard = erlangCard.BaseCard
err = repo.BaseCard.CreateOrSave(global.DB, &baseCard)
return err
})
}
func (*erlangCardService) GetInfoPath(erlangCard *models.ErlangCards) string {
return filepath.Join(cfg.T.CardDir, erlangCard.UUID, cfg.T.CardInfo)
}
func (*erlangCardService) GetImageDir(erlangCard *models.ErlangCards) []string {
var coverPaths []string
for _, cover := range erlangCard.Covers {
coverPaths = append(coverPaths, filepath.Join(cfg.T.CardDir, erlangCard.UUID, cover))
}
return coverPaths
}