Files
stat_center/api/advitiseV2Api/location.go
T
rootandClaude Opus 5 01d9f7bc86 新增广告V2模块,双端下载落地页调整
- 新增 advitise v2: info/location/bind/click-stat/day-click-stat 模型与
  对应的 service、api、router、proto 定义
- models/index.go 注册 5 个新模型的索引初始化
- 鉴权白名单: /rsdownload/ 改为 /download/,放行 advitise v2 的
  get/click 接口
- statg/config: proxyUrl 增加 fileRes1
- common/genId: lid 生成逻辑补充
- 新增 91fans / huangguo 的 mobileconfig 描述文件
- 新增 deploy/nginx/cpcdownload.mfcg.me.conf 网关配置

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-22 16:53:23 +08:00

107 lines
3.1 KiB
Go

package advitiseV2Api
import (
"stat/api/proto"
"stat/common/stdLog"
"stat/common/utils"
"stat/service/advitiseV2Ser"
"stat/service/opLogSer"
"github.com/gin-gonic/gin"
)
// @Tags 广告管理V2/位置
// @Summary 广告位列表
// @Router /api/stat/advitise/v2/location/list [POST]
// @Param param body proto.AdvitiseLocationListReq true "参数"
// @Success 200 {object} proto.AdvitiseLocationListResp "成功"
// @Security ApiKeyAuth
func LocationList(ctx *gin.Context) {
req := &proto.AdvitiseLocationListReq{}
if err := ctx.ShouldBindJSON(req); err != nil {
stdLog.ServerJSON(ctx, stdLog.ParamError, err.Error())
return
}
resp, err := advitiseV2Ser.LocationList(ctx, req)
if err != nil {
stdLog.ServerJSON(ctx, stdLog.Failure, err.Error())
return
}
stdLog.ServerJSON(ctx, stdLog.Success, resp)
}
// @Tags 广告管理V2/位置
// @Summary 新增广告位
// @Router /api/stat/advitise/v2/location/add [POST]
// @Param param body proto.AddAdvitiseLocationReq true "参数"
// @Success 200 {string} string "成功"
// @Security ApiKeyAuth
func LocationAdd(ctx *gin.Context) {
account, err := utils.GetAdmin(ctx)
if err != nil {
stdLog.ServerJSON(ctx, stdLog.NoToken, err.Error())
return
}
req := &proto.AddAdvitiseLocationReq{}
if err := ctx.ShouldBindJSON(req); err != nil {
stdLog.ServerJSON(ctx, stdLog.ParamError, err.Error())
return
}
if err := advitiseV2Ser.LocationAdd(ctx, req); err != nil {
stdLog.ServerJSON(ctx, stdLog.Failure, err.Error())
return
}
opLogSer.AddOpLog(ctx, account, true, req)
stdLog.ServerJSON(ctx, stdLog.Success, "")
}
// @Tags 广告管理V2/位置
// @Summary 更新广告位
// @Router /api/stat/advitise/v2/location/update [POST]
// @Param param body proto.UpdateAdvitiseLocationReq true "参数"
// @Success 200 {string} string "成功"
// @Security ApiKeyAuth
func LocationUpdate(ctx *gin.Context) {
account, err := utils.GetAdmin(ctx)
if err != nil {
stdLog.ServerJSON(ctx, stdLog.NoToken, err.Error())
return
}
req := &proto.UpdateAdvitiseLocationReq{}
if err := ctx.ShouldBindJSON(req); err != nil {
stdLog.ServerJSON(ctx, stdLog.ParamError, err.Error())
return
}
if err := advitiseV2Ser.LocationUpdate(ctx, req); err != nil {
stdLog.ServerJSON(ctx, stdLog.Failure, err.Error())
return
}
opLogSer.AddOpLog(ctx, account, true, req)
stdLog.ServerJSON(ctx, stdLog.Success, "")
}
// @Tags 广告管理V2/位置
// @Summary 删除广告位
// @Router /api/stat/advitise/v2/location/del [POST]
// @Param param body proto.DelAdvitiseLocationReq true "参数"
// @Success 200 {string} string "成功"
// @Security ApiKeyAuth
func LocationDel(ctx *gin.Context) {
account, err := utils.GetAdmin(ctx)
if err != nil {
stdLog.ServerJSON(ctx, stdLog.NoToken, err.Error())
return
}
req := &proto.DelAdvitiseLocationReq{}
if err := ctx.ShouldBindJSON(req); err != nil {
stdLog.ServerJSON(ctx, stdLog.ParamError, err.Error())
return
}
if err := advitiseV2Ser.LocationDel(ctx, req.Id); err != nil {
stdLog.ServerJSON(ctx, stdLog.Failure, err.Error())
return
}
opLogSer.AddOpLog(ctx, account, true, req)
stdLog.ServerJSON(ctx, stdLog.Success, "")
}