hyapp-server/services/gateway-service/internal/transport/http/registration_reward_handler.go

60 lines
2.2 KiB
Go

package http
import (
"net/http"
activityv1 "hyapp.local/api/proto/activity/v1"
"hyapp/services/gateway-service/internal/auth"
"hyapp/services/gateway-service/internal/transport/http/httpkit"
)
type registrationRewardEligibilityData struct {
CanReceive bool `json:"can_receive"`
Reason string `json:"reason"`
Enabled bool `json:"enabled"`
RewardType string `json:"reward_type"`
CoinAmount int64 `json:"coin_amount"`
ResourceGroupID int64 `json:"resource_group_id"`
DailyLimit int64 `json:"daily_limit"`
DailyUsed int64 `json:"daily_used"`
DailyRemaining int64 `json:"daily_remaining"`
RewardDay string `json:"reward_day"`
ServerTimeMS int64 `json:"server_time_ms"`
}
// getRegistrationRewardEligibility 只查询资格,不执行发放;注册后的实际发放由 user-service 触发。
func (h *Handler) getRegistrationRewardEligibility(writer http.ResponseWriter, request *http.Request) {
if h.registrationReward == nil {
httpkit.WriteError(writer, request, http.StatusBadGateway, httpkit.CodeUpstreamError, "upstream service error")
return
}
resp, err := h.registrationReward.GetRegistrationRewardEligibility(request.Context(), &activityv1.GetRegistrationRewardEligibilityRequest{
Meta: activityMeta(request),
UserId: auth.UserIDFromContext(request.Context()),
})
if err != nil {
httpkit.WriteRPCError(writer, request, err)
return
}
httpkit.WriteOK(writer, request, registrationRewardEligibilityFromProto(resp.GetEligibility()))
}
func registrationRewardEligibilityFromProto(item *activityv1.RegistrationRewardEligibility) registrationRewardEligibilityData {
if item == nil {
return registrationRewardEligibilityData{}
}
return registrationRewardEligibilityData{
CanReceive: item.GetCanReceive(),
Reason: item.GetReason(),
Enabled: item.GetEnabled(),
RewardType: item.GetRewardType(),
CoinAmount: item.GetCoinAmount(),
ResourceGroupID: item.GetResourceGroupId(),
DailyLimit: item.GetDailyLimit(),
DailyUsed: item.GetDailyUsed(),
DailyRemaining: item.GetDailyRemaining(),
RewardDay: item.GetRewardDay(),
ServerTimeMS: item.GetServerTimeMs(),
}
}