diff --git a/module/ai-key/iml.go b/module/ai-key/iml.go index 41ac7d90..df6b331a 100644 --- a/module/ai-key/iml.go +++ b/module/ai-key/iml.go @@ -152,7 +152,7 @@ func (i *imlKeyModule) Edit(ctx context.Context, providerId string, id string, i if err != nil { return fmt.Errorf("config check failed: %w", err) } - cfg, err := p.GenConfig(info.Config, *input.Config) + cfg, err := p.GenConfig(*input.Config, info.Config) if err != nil { return fmt.Errorf("config gen failed: %w", err) } @@ -184,16 +184,25 @@ func (i *imlKeyModule) Edit(ctx context.Context, providerId string, id string, i // 停用、超额需要启用,所以维持原状态 status = orgStatus.Int() } - if status == ai_key_dto.KeyNormal.Int() { - // TODO: 发布Key到网关 - } - return i.aiKeyService.Save(ctx, id, &ai_key.Edit{ + err = i.aiKeyService.Save(ctx, id, &ai_key.Edit{ Name: input.Name, Config: input.Config, ExpireTime: input.ExpireTime, Status: &status, }) + if err != nil { + return err + } + if status == ai_key_dto.KeyNormal.Int() { + info, err = i.aiKeyService.Get(ctx, id) + if err != nil { + return err + } + releases := []*gateway.DynamicRelease{newKey(info)} + return i.syncGateway(ctx, cluster.DefaultClusterID, releases, true) + } + return nil }) } @@ -365,7 +374,6 @@ func (i *imlKeyModule) UpdateKeyStatus(ctx context.Context, providerId string, i } return i.transaction.Transaction(ctx, func(ctx context.Context) error { if !enable { - // TODO:下线Key status := ai_key_dto.KeyDisable.Int() err = i.aiKeyService.Save(ctx, id, &ai_key.Edit{ Status: &status, diff --git a/module/catalogue/iml.go b/module/catalogue/iml.go index 18b58def..c43de0c8 100644 --- a/module/catalogue/iml.go +++ b/module/catalogue/iml.go @@ -176,19 +176,6 @@ func (i *imlCatalogueModule) Subscribe(ctx context.Context, subscribeInfo *catal // 修改订阅表状态 subscribers, err := i.subscribeService.ListByApplication(ctx, subscribeInfo.Service, appId) if err != nil { - //if !errors.Is(err, gorm.ErrRecordNotFound) { - // return err - //} - //err = i.subscribeService.Create(ctx, &subscribe.CreateSubscribe{ - // Uuid: uuid.New().String(), - // Service: subscribeInfo.Service, - // Application: appId, - // ApplyStatus: status, - // From: subscribe.FromSubscribe, - //}) - //if err != nil { - // return err - //} return err } else { subscriberMap := utils.SliceToMap(subscribers, func(t *subscribe.Subscribe) string { diff --git a/module/subscribe/iml.go b/module/subscribe/iml.go index 70e43bd2..03dc7935 100644 --- a/module/subscribe/iml.go +++ b/module/subscribe/iml.go @@ -218,33 +218,46 @@ func (i *imlSubscribeModule) AddSubscriber(ctx context.Context, serviceId string if err != nil { return err } - _, err = i.subscribeService.GetByServiceAndApplication(ctx, serviceId, input.Application) - if err == nil { - // 订阅方已存在 - return fmt.Errorf("subscriber is already exists") + clusters, err := i.clusterService.List(ctx) + if err != nil { + return err } - sub := &gateway.SubscribeRelease{ Service: serviceId, Application: input.Application, Expired: "0", } - clusters, err := i.clusterService.List(ctx) - if err != nil { - return err - } - return i.transaction.Transaction(ctx, func(ctx context.Context) error { - err = i.subscribeService.Create(ctx, &subscribe.CreateSubscribe{ - Uuid: uuid.New().String(), - Service: serviceId, - Application: input.Application, - ApplyStatus: subscribe.ApplyStatusSubscribe, - From: subscribe.FromUser, - }) - if err != nil { - return err + info, err := i.subscribeService.GetByServiceAndApplication(ctx, serviceId, input.Application) + if err == nil { + // 订阅方已存在 + if info.ApplyStatus != subscribe.ApplyStatusSubscribe { + // 更新订阅方状态 + status := subscribe.ApplyStatusSubscribe + from := subscribe.FromUser + err = i.subscribeService.Save(ctx, info.Id, &subscribe.UpdateSubscribe{ + ApplyStatus: &status, + From: &from, + }) + if err != nil { + return err + } + } else { + return nil + } + } else { + err = i.subscribeService.Create(ctx, &subscribe.CreateSubscribe{ + Uuid: uuid.New().String(), + Service: serviceId, + Application: input.Application, + ApplyStatus: subscribe.ApplyStatusSubscribe, + From: subscribe.FromUser, + }) + if err != nil { + return err + } } + for _, c := range clusters { err = i.onlineSubscriber(ctx, c.Uuid, sub) if err != nil { diff --git a/service/subscribe/iml.go b/service/subscribe/iml.go index dd3fd460..92d0b4f6 100644 --- a/service/subscribe/iml.go +++ b/service/subscribe/iml.go @@ -200,6 +200,9 @@ func (i *imlSubscribeService) updateHandler(e *subscribe.Subscribe, t *UpdateSub if t.ApplyStatus != nil { e.ApplyStatus = *t.ApplyStatus } + if t.From != nil { + e.From = *t.From + } } var ( diff --git a/service/subscribe/model.go b/service/subscribe/model.go index d9882145..365a9d4d 100644 --- a/service/subscribe/model.go +++ b/service/subscribe/model.go @@ -2,14 +2,14 @@ package subscribe import ( "time" - + "github.com/APIParkLab/APIPark/stores/subscribe" ) type Subscribe struct { Id string Service string - + // 订阅方相关 Application string From int @@ -28,6 +28,7 @@ type CreateSubscribe struct { } type UpdateSubscribe struct { + From *int ApplyStatus *int }