58 lines
1.3 KiB
Go
58 lines
1.3 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
|
|
}
|
|
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.Create(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
|
|
}
|