This commit is contained in:
yangk 2020-11-12 20:41:02 +08:00
commit 4e6f420450
5 changed files with 56 additions and 10 deletions

View File

@ -154,6 +154,7 @@ type AppInterface interface {
// ApplicationInterface tenant application interface
type ApplicationInterface interface {
CreateApp(w http.ResponseWriter, r *http.Request)
BatchCreateApp(w http.ResponseWriter, r *http.Request)
UpdateApp(w http.ResponseWriter, r *http.Request)
ListApps(w http.ResponseWriter, r *http.Request)
ListServices(w http.ResponseWriter, r *http.Request)

View File

@ -137,6 +137,7 @@ func (v2 *V2) tenantNameRouter() chi.Router {
r.Get("/chargesverify", controller.ChargesVerifyController)
//tenant app
r.Post("/apps", controller.GetManager().CreateApp)
r.Post("/batch_create_apps", controller.GetManager().BatchCreateApp)
r.Get("/apps", controller.GetManager().ListApps)
r.Mount("/apps/{app_id}", v2.applicationRouter())
//get some service pod info

View File

@ -36,6 +36,23 @@ func (a *ApplicationController) CreateApp(w http.ResponseWriter, r *http.Request
httputil.ReturnSuccess(r, w, app)
}
// BatchCreateApp -
func (a *ApplicationController) BatchCreateApp(w http.ResponseWriter, r *http.Request) {
var apps model.CreateAppRequest
if !httputil.ValidatorRequestStructAndErrorResponse(r, w, &apps, nil) {
return
}
// get current tenant
tenant := r.Context().Value(middleware.ContextKey("tenant")).(*dbmodel.Tenants)
respList, err := handler.GetApplicationHandler().BatchCreateApp(&apps, tenant.UUID)
if err != nil {
httputil.ReturnBcodeError(r, w, err)
return
}
httputil.ReturnSuccess(r, w, respList)
}
// UpdateApp -
func (a *ApplicationController) UpdateApp(w http.ResponseWriter, r *http.Request) {
var updateAppReq model.UpdateAppRequest

View File

@ -26,6 +26,7 @@ type ApplicationAction struct {
// ApplicationHandler defines handler methods to TenantApplication.
type ApplicationHandler interface {
CreateApp(req *model.Application) (*model.Application, error)
BatchCreateApp(req *model.CreateAppRequest, tenantID string) ([]model.CreateAppResponse, error)
UpdateApp(srcApp *dbmodel.Application, req model.UpdateAppRequest) (*dbmodel.Application, error)
ListApps(tenantID, appName string, page, pageSize int) (*model.ListAppResponse, error)
GetAppByID(appID string) (*dbmodel.Application, error)
@ -72,12 +73,6 @@ func (a *ApplicationAction) CreateApp(req *model.Application) (*model.Applicatio
return nil, err
}
if len(req.ServiceIDs) != 0 {
for _, sid := range req.ServiceIDs {
if _, err := db.GetManager().TenantServiceDao().GetServiceByID(sid); err != nil {
tx.Rollback()
return nil, err
}
}
if err := db.GetManager().TenantServiceDao().BindAppByServiceIDs(appReq.AppID, req.ServiceIDs); err != nil {
tx.Rollback()
return nil, err
@ -91,6 +86,26 @@ func (a *ApplicationAction) CreateApp(req *model.Application) (*model.Applicatio
return req, nil
}
// BatchCreateApp -
func (a *ApplicationAction) BatchCreateApp(apps *model.CreateAppRequest, tenantID string) ([]model.CreateAppResponse, error) {
var (
resp model.CreateAppResponse
respList []model.CreateAppResponse
)
for _, app := range apps.AppsInfo {
app.TenantID = tenantID
regionApp, err := GetApplicationHandler().CreateApp(&app)
if err != nil {
logrus.Errorf("Batch Create App [%v] error is [%v] ", app.AppName, err)
continue
}
resp.AppID = app.ConsoleAppID
resp.RegionAppID = regionApp.AppID
respList = append(respList, resp)
}
return respList, nil
}
// UpdateApp -
func (a *ApplicationAction) UpdateApp(srcApp *dbmodel.Application, req model.UpdateAppRequest) (*dbmodel.Application, error) {
if req.AppName != "" {

View File

@ -1629,10 +1629,22 @@ func NewAppStatusFromImport(app *ImportAppStruct) *dbmodel.AppStatus {
// Application -
type Application struct {
AppName string `json:"app_name" validate:"required"`
AppID string `json:"app_id"`
TenantID string `json:"tenant_id"`
ServiceIDs []string `json:"service_ids"`
AppName string `json:"app_name" validate:"required"`
ConsoleAppID int64 `json:"console_app_id"`
AppID string `json:"app_id"`
TenantID string `json:"tenant_id"`
ServiceIDs []string `json:"service_ids"`
}
// CreateAppRequest -
type CreateAppRequest struct {
AppsInfo []Application `json:"apps_info"`
}
// CreateAppResponse -
type CreateAppResponse struct {
AppID int64 `json:"app_id"`
RegionAppID string `json:"region_app_id"`
}
// ListAppResponse -