package api import ( "ssq-desk/internal/service" ) // PackageAPI 离线数据包 API type PackageAPI struct { packageService *service.PackageService } // NewPackageAPI 创建数据包 API func NewPackageAPI() (*PackageAPI, error) { packageService, err := service.NewPackageService() if err != nil { return nil, err } return &PackageAPI{ packageService: packageService, }, nil } // DownloadPackage 下载数据包 func (api *PackageAPI) DownloadPackage(downloadURL string) (map[string]interface{}, error) { if api.packageService == nil { newAPI, err := NewPackageAPI() if err != nil { return nil, err } api.packageService = newAPI.packageService } result, err := api.packageService.DownloadPackage(downloadURL, nil) if err != nil { return nil, err } return map[string]interface{}{ "file_path": result.FilePath, "file_size": result.FileSize, "duration": result.Duration, }, nil } // ImportPackage 导入数据包 func (api *PackageAPI) ImportPackage(packagePath string) (map[string]interface{}, error) { if api.packageService == nil { newAPI, err := NewPackageAPI() if err != nil { return nil, err } api.packageService = newAPI.packageService } result, err := api.packageService.ImportPackage(packagePath) if err != nil { return nil, err } return map[string]interface{}{ "imported_count": result.ImportedCount, "updated_count": result.UpdatedCount, "error_count": result.ErrorCount, "duration": result.Duration, }, nil } // CheckPackageUpdate 检查数据包更新 func (api *PackageAPI) CheckPackageUpdate(remoteURL string) (map[string]interface{}, error) { if api.packageService == nil { newAPI, err := NewPackageAPI() if err != nil { return nil, err } api.packageService = newAPI.packageService } info, err := api.packageService.CheckPackageUpdate(remoteURL) if err != nil { return nil, err } if info == nil { return map[string]interface{}{ "need_update": false, }, nil } return map[string]interface{}{ "need_update": true, "version": info.Version, "total_count": info.TotalCount, "latest_issue": info.LatestIssue, "package_size": info.PackageSize, "download_url": info.DownloadURL, "release_date": info.ReleaseDate, "checksum": info.CheckSum, }, nil } // ListLocalPackages 列出本地数据包 func (api *PackageAPI) ListLocalPackages() (map[string]interface{}, error) { if api.packageService == nil { newAPI, err := NewPackageAPI() if err != nil { return nil, err } api.packageService = newAPI.packageService } packages, err := api.packageService.ListLocalPackages() if err != nil { return nil, err } return map[string]interface{}{ "packages": packages, "count": len(packages), }, nil }