91 lines
2.1 KiB
Go
91 lines
2.1 KiB
Go
package services
|
|
|
|
import (
|
|
"fmt"
|
|
sch "gitlink.org.cn/cloudream/common/sdks/pcmscheduler"
|
|
cdssdk "gitlink.org.cn/cloudream/common/sdks/storage"
|
|
"gitlink.org.cn/cloudream/common/sdks/storage/cdsapi"
|
|
schglb "gitlink.org.cn/cloudream/scheduler/common/globals"
|
|
"strconv"
|
|
"time"
|
|
)
|
|
|
|
type UserService struct {
|
|
*Service
|
|
}
|
|
|
|
func (svc *Service) UserSvc() *UserService {
|
|
return &UserService{Service: svc}
|
|
}
|
|
|
|
func (svc *UserService) QueryUser(id string) (cdssdk.UserID, error) {
|
|
userID, err := svc.db.Access().GetUserBySsoID(svc.db.DefCtx(), id)
|
|
if err != nil {
|
|
return userID, err
|
|
}
|
|
|
|
return userID, err
|
|
}
|
|
|
|
func (svc *UserService) AddUser(id string, userName string) error {
|
|
cdsCli, err := schglb.CloudreamStoragePool.Acquire()
|
|
if err != nil {
|
|
return fmt.Errorf("new scheduler client: %w", err)
|
|
}
|
|
defer schglb.CloudreamStoragePool.Release(cdsCli)
|
|
|
|
// 注册用户
|
|
createReq := &cdsapi.UserCreate{
|
|
Name: userName,
|
|
}
|
|
createResp, err := cdsCli.UserCreate(createReq)
|
|
if err != nil {
|
|
return fmt.Errorf("failed to create user: %w", err)
|
|
}
|
|
|
|
user := sch.User{
|
|
ID: int64(createResp.User.UserID),
|
|
SsoID: id,
|
|
UserName: userName,
|
|
Created: time.Now(),
|
|
}
|
|
|
|
// 根据不同的数据类型,创建不同的桶
|
|
var buckets []sch.Bucket
|
|
dataTypes := []string{sch.CODE, sch.DATASET, sch.MODEL, sch.IMAGE}
|
|
for _, dataType := range dataTypes {
|
|
bucketName := strconv.FormatInt(int64(createResp.User.UserID), 10) + "_" + dataType
|
|
bucketCreateReq := cdsapi.BucketCreate{
|
|
Name: bucketName,
|
|
UserID: createResp.User.UserID,
|
|
}
|
|
|
|
bucketCreateResp, err := cdsCli.Bucket().Create(bucketCreateReq)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
buckets = append(buckets, sch.Bucket{
|
|
ID: bucketCreateResp.Bucket.BucketID,
|
|
UserID: createResp.User.UserID,
|
|
DataType: dataType,
|
|
})
|
|
}
|
|
|
|
err = svc.db.Access().AddUser(svc.db.DefCtx(), user, buckets)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return err
|
|
}
|
|
|
|
func (svc *UserService) UpdateUser(id string, userName string) error {
|
|
err := svc.db.Access().UpdateUser(svc.db.DefCtx(), id, userName)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return err
|
|
}
|