.
This commit is contained in:
121
internal/api/package_api.go
Normal file
121
internal/api/package_api.go
Normal file
@@ -0,0 +1,121 @@
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user