70 lines
1.6 KiB
Go
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
|
|
}
|