From d1aa4bd1c97060d77b41e1afa3952252d8471aee Mon Sep 17 00:00:00 2001 From: JeshuaRen <270813223@qq.com> Date: Fri, 27 Jun 2025 15:12:15 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=B8=80=E4=BA=9B=E7=BB=93?= =?UTF-8?q?=E6=9E=84=E4=BD=93=E7=9B=AE=E5=BD=95=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../uploader_models.go} | 120 ++++++------------ sdks/{uploader => sso}/client.go | 2 +- sdks/{uploader => sso}/config.go | 2 +- sdks/sso/sso.go | 51 ++++++++ sdks/storage/models.go | 6 + sdks/uploader/uploader.go | 41 ------ 6 files changed, 99 insertions(+), 123 deletions(-) rename sdks/{uploader/models.go => pcmscheduler/uploader_models.go} (67%) rename sdks/{uploader => sso}/client.go (97%) rename sdks/{uploader => sso}/config.go (71%) create mode 100644 sdks/sso/sso.go delete mode 100644 sdks/uploader/uploader.go diff --git a/sdks/uploader/models.go b/sdks/pcmscheduler/uploader_models.go similarity index 67% rename from sdks/uploader/models.go rename to sdks/pcmscheduler/uploader_models.go index 0a2e74e..762ce86 100644 --- a/sdks/uploader/models.go +++ b/sdks/pcmscheduler/uploader_models.go @@ -1,15 +1,12 @@ -package uploadersdk +package sch import ( - "gitlink.org.cn/cloudream/common/pkgs/types" - sch "gitlink.org.cn/cloudream/common/sdks/pcmscheduler" - schsdk "gitlink.org.cn/cloudream/common/sdks/scheduler" + "gitlink.org.cn/cloudream/common/sdks/scheduler" cdssdk "gitlink.org.cn/cloudream/common/sdks/storage" - "gitlink.org.cn/cloudream/common/utils/serder" "time" ) -type ClusterID string +//type ClusterID string type BlockChain struct { ObjectID cdssdk.ObjectID `gorm:"column:object_id" json:"objectID"` @@ -25,7 +22,7 @@ func (BlockChain) TableName() string { } type Binding struct { - ID DataID `gorm:"column:id;primaryKey;autoIncrement" json:"ID"` + ID schsdk.DataID `gorm:"column:id;primaryKey;autoIncrement" json:"ID"` UserID cdssdk.UserID `gorm:"column:user_id" json:"userID"` Name string `gorm:"column:name" json:"Name"` DataType string `gorm:"column:data_type" json:"dataType"` @@ -35,7 +32,7 @@ type Binding struct { } type BindingDAO struct { - ID DataID `gorm:"column:id;primaryKey;autoIncrement" json:"ID"` + ID schsdk.DataID `gorm:"column:id;primaryKey;autoIncrement" json:"ID"` UserID cdssdk.UserID `gorm:"column:user_id" json:"userID"` Name string `gorm:"column:name" json:"Name"` DataType string `gorm:"column:data_type" json:"dataType"` @@ -46,7 +43,7 @@ type BindingDAO struct { } type BindingAccessData struct { - ID DataID `gorm:"column:id;primaryKey;autoIncrement" json:"ID"` + ID schsdk.DataID `gorm:"column:id;primaryKey;autoIncrement" json:"ID"` UserID cdssdk.UserID `gorm:"column:user_id" json:"userID"` UserName string `gorm:"column:username" json:"userName"` SSOId string `gorm:"column:sso_id" json:"ssoID"` @@ -60,16 +57,16 @@ type BindingAccessData struct { } type BindingDetail struct { - ID DataID `json:"ID"` - UserID cdssdk.UserID `json:"ownerID"` - UserName string `json:"userName"` - SSOId string `json:"ssoID"` - Name string `json:"Name"` - Info sch.DataBinding `json:"info"` - Package Package `json:"package"` - Status string `json:"status"` - AccessLevel string `json:"accessLevel"` - CreateTime time.Time `json:"createTime"` + ID schsdk.DataID `json:"ID"` + UserID cdssdk.UserID `json:"ownerID"` + UserName string `json:"userName"` + SSOId string `json:"ssoID"` + Name string `json:"Name"` + Info DataBinding `json:"info"` + Package Package `json:"package"` + Status string `json:"status"` + AccessLevel string `json:"accessLevel"` + CreateTime time.Time `json:"createTime"` } func (Binding) TableName() string { @@ -77,11 +74,11 @@ func (Binding) TableName() string { } type BindingCluster struct { - BindingID DataID `gorm:"column:binding_id" json:"bindingID"` - ClusterID ClusterID `gorm:"column:cluster_id" json:"clusterID"` - Status string `gorm:"column:status" json:"status"` - Param string `gorm:"column:param" json:"Param"` - JsonData string `gorm:"column:json_data" json:"jsonData"` + BindingID schsdk.DataID `gorm:"column:binding_id" json:"bindingID"` + ClusterID schsdk.ClusterID `gorm:"column:cluster_id" json:"clusterID"` + Status string `gorm:"column:status" json:"status"` + Param string `gorm:"column:param" json:"Param"` + JsonData string `gorm:"column:json_data" json:"jsonData"` } func (BindingCluster) TableName() string { @@ -98,7 +95,7 @@ func (Folder) TableName() string { return "folders" } -type DataID int64 +// type DataID int64 type FolderID int64 type Cluster struct { @@ -112,19 +109,19 @@ func (Cluster) TableName() string { } type Package struct { - UserID cdssdk.UserID `gorm:"column:user_id" json:"userID"` - PackageID cdssdk.PackageID `gorm:"column:package_id" json:"packageID"` - PackageName string `gorm:"column:package_name" json:"packageName"` - BucketID cdssdk.BucketID `gorm:"column:bucket_id" json:"bucketID"` - DataType string `gorm:"column:data_type" json:"dataType"` - BindingID DataID `gorm:"column:binding_id" json:"bindingID"` - CreateTime time.Time `gorm:"column:create_time" json:"createTime"` - Objects []cdssdk.Object `gorm:"column:objects" json:"objects"` - UploadedCluster []Cluster `gorm:"column:uploadedCluster" json:"uploadedCluster"` - Versions []PackageCloneDAO `gorm:"foreignKey:parent_package_id;references:package_id" json:"versions"` - UploadPriority sch.UploadPriority `gorm:"column:upload_priority" json:"uploadPriority"` - BindingInfo sch.DataBinding `gorm:"column:binding_info" json:"bindingInfo"` - PackageType string `gorm:"column:package_type" json:"packageType"` + UserID cdssdk.UserID `gorm:"column:user_id" json:"userID"` + PackageID cdssdk.PackageID `gorm:"column:package_id" json:"packageID"` + PackageName string `gorm:"column:package_name" json:"packageName"` + BucketID cdssdk.BucketID `gorm:"column:bucket_id" json:"bucketID"` + DataType string `gorm:"column:data_type" json:"dataType"` + BindingID schsdk.DataID `gorm:"column:binding_id" json:"bindingID"` + CreateTime time.Time `gorm:"column:create_time" json:"createTime"` + Objects []cdssdk.Object `gorm:"column:objects" json:"objects"` + UploadedCluster []Cluster `gorm:"column:uploadedCluster" json:"uploadedCluster"` + Versions []PackageCloneDAO `gorm:"foreignKey:parent_package_id;references:package_id" json:"versions"` + UploadPriority UploadPriority `gorm:"column:upload_priority" json:"uploadPriority"` + BindingInfo DataBinding `gorm:"column:binding_info" json:"bindingInfo"` + PackageType string `gorm:"column:package_type" json:"packageType"` } type PackageDAO struct { @@ -133,7 +130,7 @@ type PackageDAO struct { PackageName string `gorm:"column:package_name" json:"packageName"` BucketID cdssdk.BucketID `gorm:"column:bucket_id" json:"bucketID"` DataType string `gorm:"column:data_type" json:"dataType"` - BindingID DataID `gorm:"column:binding_id" json:"bindingID"` + BindingID schsdk.DataID `gorm:"column:binding_id" json:"bindingID"` CreateTime time.Time `gorm:"column:create_time" json:"createTime"` UploadedCluster []Cluster `gorm:"foreignKey:package_id;references:package_id" json:"clusters"` // 关联 Cluster 数据 Versions []PackageCloneDAO `gorm:"foreignKey:parent_package_id;references:package_id" json:"versions"` @@ -143,7 +140,7 @@ type PackageDAO struct { } type PackageCloneDAO struct { - ID DataID `gorm:"column:id;primaryKey;autoIncrement" json:"ID"` + ID schsdk.DataID `gorm:"column:id;primaryKey;autoIncrement" json:"ID"` ParentPackageID cdssdk.PackageID `gorm:"column:parent_package_id" json:"parentPackageID"` ClonePackageID cdssdk.PackageID `gorm:"column:clone_package_id" json:"clonePackageID"` Name string `gorm:"column:name" json:"name"` @@ -152,7 +149,7 @@ type PackageCloneDAO struct { ClusterID schsdk.ClusterID `gorm:"column:cluster_id" json:"clusterID"` //ParentImageID schsdk.ImageID `gorm:"column:parent_image_id" json:"parentImageID"` ImageID schsdk.ImageID `gorm:"column:image_id" json:"imageID"` - BindingID DataID `gorm:"column:binding_id" json:"bindingID"` + BindingID schsdk.DataID `gorm:"column:binding_id" json:"bindingID"` CreateTime time.Time `gorm:"column:created_at" json:"createTime"` } @@ -174,7 +171,7 @@ type PackageCloneParam struct { } type PackageCloneVO struct { - ID DataID `gorm:"column:id;primaryKey;autoIncrement" json:"ID"` + ID schsdk.DataID `gorm:"column:id;primaryKey;autoIncrement" json:"ID"` ParentPackageID cdssdk.PackageID `gorm:"column:parent_package_id" json:"parentPackageID"` ClonePackageID cdssdk.PackageID `gorm:"column:clone_package_id" json:"clonePackageID"` Name string `gorm:"column:name" json:"name"` @@ -183,7 +180,7 @@ type PackageCloneVO struct { ClusterID schsdk.ClusterID `gorm:"column:cluster_id" json:"clusterID"` //ParentImageID schsdk.ImageID `gorm:"column:parent_image_id" json:"parentImageID"` ImageID string `gorm:"column:image_id" json:"imageID"` - BindingID DataID `gorm:"column:binding_id" json:"bindingID"` + BindingID schsdk.DataID `gorm:"column:binding_id" json:"bindingID"` CreateTime time.Time `gorm:"column:created_at" json:"createTime"` ClusterMapping ClusterMapping `gorm:"foreignKey:cluster_id;references:cluster_id" json:"cluster"` } @@ -199,40 +196,3 @@ type ClusterMapping struct { func (ClusterMapping) TableName() string { return "cluster_mapping" } - -type ScheduleTarget interface { - Noop() -} - -var DataScheduleTargetTypeUnion = types.NewTypeUnion[ScheduleTarget]( - (*JCSScheduleTarget)(nil), - (*UrlScheduleTarget)(nil), -) - -var _ = serder.UseTypeUnionInternallyTagged(&DataScheduleTargetTypeUnion, "type") - -type ScheduleTargetBase struct{} - -func (d *ScheduleTargetBase) Noop() {} - -type JCSScheduleTarget struct { - ScheduleTargetBase - UserID cdssdk.UserID `json:"userID"` - ScheduleStorages []ScheduleStorage `json:"scheduleStorages"` -} - -type UrlScheduleTarget struct { - ScheduleTargetBase - ScheduleUrls []ScheduleUrl `json:"scheduleUrls"` -} - -type ScheduleUrl struct { - ClusterID ClusterID `json:"clusterID"` - //RepositoryName string `json:"repositoryName"` - JsonData string `json:"jsonData"` -} - -type ScheduleStorage struct { - StorageID cdssdk.StorageID `json:"storageID"` - RootPath string `json:"rootPath"` -} diff --git a/sdks/uploader/client.go b/sdks/sso/client.go similarity index 97% rename from sdks/uploader/client.go rename to sdks/sso/client.go index 44533eb..81eb255 100644 --- a/sdks/uploader/client.go +++ b/sdks/sso/client.go @@ -1,4 +1,4 @@ -package uploadersdk +package sso import ( "fmt" diff --git a/sdks/uploader/config.go b/sdks/sso/config.go similarity index 71% rename from sdks/uploader/config.go rename to sdks/sso/config.go index 71cf23d..395e31d 100644 --- a/sdks/uploader/config.go +++ b/sdks/sso/config.go @@ -1,4 +1,4 @@ -package uploadersdk +package sso type Config struct { URL string `json:"url"` diff --git a/sdks/sso/sso.go b/sdks/sso/sso.go new file mode 100644 index 0000000..f266757 --- /dev/null +++ b/sdks/sso/sso.go @@ -0,0 +1,51 @@ +package sso + +import ( + "fmt" + "gitlink.org.cn/cloudream/common/consts/errorcode" + "gitlink.org.cn/cloudream/common/utils/http2" + "gitlink.org.cn/cloudream/common/utils/serder" + "net/url" + "strings" +) + +type SSOInfoResp struct { + NickName string `json:"nickName"` + Roles []string `json:"roles"` + ID string `json:"id"` + Username string `json:"username"` +} + +func (c *Client) GetSSOInfo(token string) (*SSOInfoResp, error) { + targetUrl, err := url.JoinPath(c.baseURL, "/admin/info") + if err != nil { + return nil, err + } + + resp, err := http2.GetJSON(targetUrl, http2.RequestParam{ + Header: map[string]string{ + "Authorization": token, + "Host": "ai4m.jointcloud.net", + "Connection": "keep-alive", + }, + }) + if err != nil { + return nil, err + } + + contType := resp.Header.Get("Content-Type") + if strings.Contains(contType, http2.ContentTypeJSON) { + var codeResp response[SSOInfoResp] + if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil { + return nil, fmt.Errorf("parsing response: %w", err) + } + + if codeResp.Code == errorcode.OK { + return &codeResp.Data, nil + } + + return nil, codeResp.ToError() + } + + return nil, fmt.Errorf("unknow response content type: %s", contType) +} diff --git a/sdks/storage/models.go b/sdks/storage/models.go index e1c622f..c7d3812 100644 --- a/sdks/storage/models.go +++ b/sdks/storage/models.go @@ -396,3 +396,9 @@ type UserStats struct { FileCount int64 `json:"fileCount" gorm:"column:FileCount"` TotalSize int64 `json:"totalSize" gorm:"column:TotalSize"` } + +type UserInfo struct { + Name string `json:"name"` + UserID UserID `json:"userID"` + SsoID string `json:"ssoID"` +} diff --git a/sdks/uploader/uploader.go b/sdks/uploader/uploader.go deleted file mode 100644 index 479ab11..0000000 --- a/sdks/uploader/uploader.go +++ /dev/null @@ -1,41 +0,0 @@ -package uploadersdk - -import ( - "gitlink.org.cn/cloudream/common/sdks/storage/cdsapi" - "mime/multipart" -) - -type ObjectUploadReq struct { - Info cdsapi.ObjectUploadInfo `form:"info" binding:"required"` - Files []*multipart.FileHeader `form:"files"` -} - -//func (c *Client) Upload(req ObjectUploadReq) (*cdsapi.ObjectUploadResp, error) { -// targetUrl, err := url.JoinPath(c.baseURL, "/object/upload") -// if err != nil { -// return nil, err -// } -// -// resp, err := http2.PostJSON(targetUrl, http2.RequestParam{ -// Body: req, -// }) -// if err != nil { -// return nil, err -// } -// -// contType := resp.Header.Get("Content-Type") -// if strings.Contains(contType, http2.ContentTypeJSON) { -// var codeResp response[cdsapi.ObjectUploadResp] -// if err := serder.JSONToObjectStream(resp.Body, &codeResp); err != nil { -// return nil, fmt.Errorf("parsing response: %w", err) -// } -// -// if codeResp.Code == errorcode.OK { -// return &codeResp.Data, nil -// } -// -// return nil, codeResp.ToError() -// } -// -// return nil, fmt.Errorf("unknow response content type: %s", contType) -//}