60 lines
2.2 KiB
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(),
|
|
}
|
|
}
|