Files
work_cation/service/erlangCard.go
T
2024-09-25 17:45:38 +08:00

70 lines
1.6 KiB
Go

package service
import (
"encoding/json"
"gorm.io/gorm"
"os"
"path/filepath"
"time"
"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 {
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
}
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 {
err = repo.ErlangCardRepo.Create(global.DB, erlangCard)
if err != nil {
return err
}
var baseCard = models.BaseCard{
UUID: erlangCard.UUID,
UserID: erlangCard.UserID,
Title: erlangCard.Title,
Text: erlangCard.Text,
Covers: erlangCard.Covers,
ToolType: models.ToolTypeErlang,
UpdateTx: time.Now(),
Number: 0,
Goods: 0,
Collection: 0,
}
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
}