package service import ( "fyne.io/fyne/v2" "fyne.io/fyne/v2/data/binding" "fyne.io/fyne/v2/dialog" "fyne.io/fyne/v2/widget" "gorm.io/gorm" "os" "path/filepath" "work_cation/cfg" "work_cation/global" "work_cation/models" "work_cation/repo" ) type BaseCardService struct{} var BaseCard = &BaseCardService{} func (*BaseCardService) Create(db *gorm.DB, baseCard models.BaseCard) { repo.BaseCard.CreateOrSave(db, &baseCard) } func (*BaseCardService) Update(db *gorm.DB, updateCard models.BaseCard) { } func (*BaseCardService) Delete(db *gorm.DB, deleteCard models.BaseCard) error { fileDir := filepath.Join(cfg.T.CardDir, deleteCard.UUID) err := os.RemoveAll(fileDir) if err != nil { return err } err = db.Model(&models.BaseCard{}).Where("uuid = ?", deleteCard.UUID).Delete(&deleteCard).Error return err } func (*BaseCardService) DownloadCard(w fyne.Window, baseCardCopy models.BaseCard, online *models.Online) { progress := binding.NewFloat() progress.Set(0) progressBar := widget.NewProgressBarWithData(progress) progressBar.Max = 120 smaillWin := dialog.NewCustom("下载中", "关闭", progressBar, w) smaillWin.Show() err := Client.Download(online, baseCardCopy.UUID, progress) if err != nil { smaillWin.SetDismissText("失败") return } // 修改数据 progress.Set(110) err = repo.BaseCard.CreateOrSave(global.DB, &baseCardCopy) if err != nil { smaillWin.SetDismissText("失败") return } progress.Set(120) smaillWin.SetDismissText("完成 请去[我的]查看") }