package controller import ( "context" "strconv" "cid/model/dto" "cid/service" ) var Application = new(application) type application struct{} // CreateApplication 创建应用 func (c *application) CreateApplication(ctx context.Context, req *dto.CreateApplicationReq) (res *dto.CreateApplicationRes, err error) { idStr, err := service.Application.CreateApplication(ctx, req) if err != nil { return nil, err } // 将字符串ID转换为int64 id, _ := strconv.ParseInt(idStr, 10, 64) return &dto.CreateApplicationRes{ ID: id, }, nil } // UpdateApplication 更新应用 func (c *application) UpdateApplication(ctx context.Context, req *dto.UpdateApplicationReq) (res *dto.UpdateApplicationRes, err error) { affected, err := service.Application.UpdateApplication(ctx, strconv.FormatInt(req.ID, 10), req) if err != nil { return nil, err } return &dto.UpdateApplicationRes{ Success: affected > 0, }, nil } // GetApplication 获取应用信息 func (c *application) GetApplication(ctx context.Context, req *dto.GetApplicationReq) (res *dto.GetApplicationRes, err error) { app, err := service.Application.GetApplicationByID(ctx, strconv.FormatInt(req.ID, 10)) if err != nil { return nil, err } // 将字符串ID转换为int64 id, _ := strconv.ParseInt(app.Id, 10, 64) // Application实体中没有TenantId字段,暂时设为0 tenantID := int64(0) return &dto.GetApplicationRes{ ID: id, TenantID: tenantID, Name: app.Name, Code: app.Code, Description: app.Description, Platform: app.Platform, PackageName: app.PackageName, AppStoreURL: app.AppStoreURL, Categories: app.Categories, Tags: app.Tags, AdTypes: app.AdTypes, Status: app.Status, AppKey: app.AppKey, CallbackURL: app.CallbackURL, CreatedAt: app.CreatedAt.Unix(), UpdatedAt: app.UpdatedAt.Unix(), }, nil } // ListApplications 获取应用列表 func (c *application) ListApplications(ctx context.Context, req *dto.ListApplicationsReq) (res *dto.ListApplicationsRes, err error) { list, total, err := service.Application.GetApplicationsByTenant(ctx, strconv.FormatInt(req.TenantID, 10), req.Platform, req.Status, req.Page, req.Size) if err != nil { return nil, err } // 转换为响应格式 appItems := make([]dto.ApplicationItem, len(list)) for i, app := range list { id, _ := strconv.ParseInt(app.Id, 10, 64) appItems[i] = dto.ApplicationItem{ ID: id, Name: app.Name, Code: app.Code, Description: app.Description, Platform: app.Platform, PackageName: app.PackageName, Categories: app.Categories, Tags: app.Tags, AdTypes: app.AdTypes, Status: app.Status, DailyRequests: app.DailyRequests, MonthlyRequests: app.MonthlyRequests, CreatedAt: app.CreatedAt.Unix(), } } return &dto.ListApplicationsRes{ List: appItems, Total: total, Page: req.Page, Size: req.Size, }, nil } // ResetAPIKeys 重置API密钥 func (c *application) ResetAPIKeys(ctx context.Context, req *dto.ResetAPIKeysReq) (res *dto.ResetAPIKeysRes, err error) { appKey, appSecret, err := service.Application.ResetAPIKeys(ctx, strconv.FormatInt(req.ID, 10)) if err != nil { return nil, err } return &dto.ResetAPIKeysRes{ AppKey: appKey, AppSecret: appSecret, }, nil } // ValidateApplication 验证应用权限 func (c *application) ValidateApplication(ctx context.Context, req *dto.ValidateApplicationReq) (res *dto.ValidateApplicationRes, err error) { app, err := service.Application.ValidateApplication(ctx, req.AppKey, req.AppSecret) if err != nil { return &dto.ValidateApplicationRes{ Valid: false, }, nil } // 将字符串ID转换为int64 appID, _ := strconv.ParseInt(app.Id, 10, 64) // Application实体中没有TenantId字段,暂时设为0 tenantID := int64(0) tentantName := "" return &dto.ValidateApplicationRes{ Valid: true, AppID: appID, AppName: app.Name, TenantID: tenantID, TenantName: tentantName, Platform: app.Platform, AdTypes: app.AdTypes, }, nil } // DeleteApplication 删除应用 func (c *application) DeleteApplication(ctx context.Context, req *dto.DeleteApplicationReq) (res *dto.DeleteApplicationRes, err error) { affected, err := service.Application.DeleteApplication(ctx, strconv.FormatInt(req.ID, 10)) if err != nil { return nil, err } return &dto.DeleteApplicationRes{ Success: affected > 0, }, nil }