package controller import ( "context" "strconv" "cid/model/dto" "cid/service" "github.com/gogf/gf/v2/errors/gerror" ) var AdSource = new(adSource) type adSource struct{} // Create 创建广告源 func (c *adSource) Create(ctx context.Context, req *dto.CreateAdSourceReq) (res *dto.GetAdSourceRes, err error) { id, err := service.AdSource.CreateAdSource(ctx, req) if err != nil { return nil, err } adSource, err := service.AdSource.GetAdSourceByID(ctx, id) if err != nil { return nil, err } return &dto.GetAdSourceRes{ AdSource: adSource, }, nil } // Update 更新广告源 func (c *adSource) Update(ctx context.Context, req *dto.UpdateAdSourceReq) (res *dto.GetAdSourceRes, err error) { id, err := strconv.ParseInt(req.Id, 10, 64) if err != nil { return nil, gerror.New("无效的广告源ID") } affected, err := service.AdSource.UpdateAdSource(ctx, id, req) if err != nil { return nil, err } if affected == 0 { return nil, gerror.New("广告源更新失败") } adSource, err := service.AdSource.GetAdSourceByID(ctx, id) if err != nil { return nil, err } return &dto.GetAdSourceRes{ AdSource: adSource, }, nil } // Delete 删除广告源 func (c *adSource) Delete(ctx context.Context, req *dto.DeleteAdSourceReq) (res *dto.DeleteAdSourceRes, err error) { id, err := strconv.ParseInt(req.Id, 10, 64) if err != nil { return nil, gerror.New("无效的广告源ID") } affected, err := service.AdSource.DeleteAdSource(ctx, id) if err != nil { return nil, err } if affected == 0 { return nil, gerror.New("广告源删除失败") } return &dto.DeleteAdSourceRes{ Success: true, }, nil } // GetByID 根据ID获取广告源 func (c *adSource) GetByID(ctx context.Context, req *dto.GetAdSourceReq) (res *dto.GetAdSourceRes, err error) { id, err := strconv.ParseInt(req.Id, 10, 64) if err != nil { return nil, gerror.New("无效的广告源ID") } adSource, err := service.AdSource.GetAdSourceByID(ctx, id) if err != nil { return nil, err } if adSource == nil { return nil, gerror.New("广告源不存在") } return &dto.GetAdSourceRes{ AdSource: adSource, }, nil } // GetList 获取广告源列表 func (c *adSource) GetList(ctx context.Context, req *dto.ListAdSourceReq) (res *dto.ListAdSourceRes, err error) { adSources, err := service.AdSource.GetAvailableSources(ctx) if err != nil { return nil, err } return &dto.ListAdSourceRes{ List: adSources, Total: len(adSources), }, nil }