From d1f42bfd9f68fc3dece1c8f6c74873416b24d0bf Mon Sep 17 00:00:00 2001 From: fish Date: Thu, 29 Oct 2026 16:23:13 +0800 Subject: [PATCH] =?UTF-8?q?refactor(adcenter):=20/api/app/ads/click=20?= =?UTF-8?q?=E6=94=B9=E7=94=A8=20AdsClickInfo=EF=BC=8C=E6=8E=A5=E6=94=B6?= =?UTF-8?q?=E5=B9=B6=E9=80=8F=E4=BC=A0=20appId?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - handler 绑定 proto.AdsClickInfo{appId, adsId, location} - AsyncAdvertiseClick/AdvertiseClickCenter 新增 appId 参数 - appId<=0 时回落到默认 advertiseAppId=12 Co-Authored-By: Claude Opus 4.7 --- app/api/adsapi/click.go | 10 ++++++---- app/service/configser/advertise_click.go | 22 ++++++++++++++++------ 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/app/api/adsapi/click.go b/app/api/adsapi/click.go index 8ab1f60..f673027 100644 --- a/app/api/adsapi/click.go +++ b/app/api/adsapi/click.go @@ -1,6 +1,8 @@ package adsapi import ( + "strconv" + "videoweb/app/api/proto" "videoweb/app/service/configser" "videoweb/pub/common" @@ -12,18 +14,18 @@ import ( // Click 广告点击上报 // @Tags 广告 // @Summary 广告点击上报 -// @Description 用户点击广告时异步上报到广告中心 +// @Description 用户点击广告时异步上报到广告中心。请求可带 appId 覆盖默认,缺省时按本站 appId 上报。 // @Accept json // @Produce json -// @Param param body proto.AdsClickReq true "参数" +// @Param param body proto.AdsClickInfo true "参数" // @Success 200 {string} json // @Router /api/app/ads/click [POST] func Click(c *gin.Context) { - var req proto.AdsClickReq + var req proto.AdsClickInfo if err := c.ShouldBindJSON(&req); err != nil { common.ServerJSON(c, srvdef.ErrParamError, err.Error()) return } - configser.AsyncAdvertiseClick(req.AdsId) + configser.AsyncAdvertiseClick(strconv.FormatInt(req.AdsId, 10), int32(req.AppId)) common.ServerJSON(c, srvdef.Success, nil) } diff --git a/app/service/configser/advertise_click.go b/app/service/configser/advertise_click.go index 98fc345..ab070ac 100644 --- a/app/service/configser/advertise_click.go +++ b/app/service/configser/advertise_click.go @@ -22,14 +22,23 @@ type advertiseClickResp struct { Code int64 `json:"code"` } -// AdvertiseClickCenter 同步上报单条广告点击到广告中心 -func AdvertiseClickCenter(advertiseId int64) error { +// resolveAdvertiseAppId 请求带了 AppId 用请求的,否则回落到默认 advertiseAppId +func resolveAdvertiseAppId(reqAppId int32) int32 { + if reqAppId > 0 { + return reqAppId + } + return advertiseAppId +} + +// AdvertiseClickCenter 同步上报单条广告点击到广告中心。 +// appId<=0 时回落到默认 advertiseAppId。 +func AdvertiseClickCenter(advertiseId int64, appId int32) error { versionUrl := strings.TrimRight(strings.TrimSpace(appg.Conf.VersionUrl), "/") if versionUrl == "" { return fmt.Errorf("versionUrl 未配置") } url := versionUrl + "/api/stat/advitise/v2/click" - body, _ := json.Marshal(advertiseClickReq{Id: advertiseId, AppId: advertiseAppId}) + body, _ := json.Marshal(advertiseClickReq{Id: advertiseId, AppId: resolveAdvertiseAppId(appId)}) var resp advertiseClickResp code, err := httputil.Client().POSTJsonWithJResp(&resp, url, map[string]string{"Content-Type": "application/json"}, body) if err != nil { @@ -43,14 +52,15 @@ func AdvertiseClickCenter(advertiseId int64) error { return nil } -// AsyncAdvertiseClick 异步上报广告点击,非数字 id 忽略 -func AsyncAdvertiseClick(id string) { +// AsyncAdvertiseClick 异步上报广告点击,非数字 id 忽略。 +// appId<=0 时回落到默认 advertiseAppId。 +func AsyncAdvertiseClick(id string, appId int32) { advertiseId, err := strconv.ParseInt(strings.TrimSpace(id), 10, 64) if err != nil { log.Warn("AsyncAdvertiseClick invalid id", log.Any("id", id)) return } godef.Go(func() { - _ = AdvertiseClickCenter(advertiseId) + _ = AdvertiseClickCenter(advertiseId, appId) }) }