package v1 import ( "git.lzcwy.cn/zhengchiliu/zt-closet-backend/internal/dto" "git.lzcwy.cn/zhengchiliu/zt-closet-backend/internal/middleware" "git.lzcwy.cn/zhengchiliu/zt-closet-backend/internal/service" "git.lzcwy.cn/zhengchiliu/zt-closet-backend/pkg/app" "git.lzcwy.cn/zhengchiliu/zt-closet-backend/pkg/errcode" "github.com/gin-gonic/gin" ) // AdRewardHandler 广告激励额度接口。 type AdRewardHandler struct { svc *service.AdRewardService } // NewAdRewardHandler 创建广告激励 handler。 func NewAdRewardHandler() *AdRewardHandler { return &AdRewardHandler{svc: service.NewAdRewardService()} } // Grant 发放广告激励额度(当天有效,幂等防重复领取)。 func (h *AdRewardHandler) Grant(c *gin.Context) { response := app.NewResponse(c) userID, ok := middleware.GetUserID(c.Request.Context()) if !ok { response.ToErrorResponse(errcode.Unauthorized) return } var request dto.AdRewardGrantRequest if err := c.ShouldBindJSON(&request); err != nil { response.ToErrorResponse(errcode.InvalidParams.WithDetails(err.Error())) return } out, e := h.svc.Grant(c.Request.Context(), userID, &request) if e != nil { response.ToErrorResponse(e) return } response.ToResponse(out) }