131 lines
5.1 KiB
Go
131 lines
5.1 KiB
Go
package activitytemplate
|
|
|
|
import (
|
|
"strings"
|
|
|
|
activityv1 "hyapp.local/api/proto/activity/v1"
|
|
)
|
|
|
|
type localeRequest struct {
|
|
Locale string `json:"locale"`
|
|
Title string `json:"title"`
|
|
Rules string `json:"rules"`
|
|
}
|
|
|
|
type giftRequest struct {
|
|
GiftID string `json:"gift_id"`
|
|
SortOrder int32 `json:"sort_order"`
|
|
Name string `json:"name"`
|
|
IconURL string `json:"icon_url"`
|
|
CoinPrice int64 `json:"coin_price"`
|
|
PriceVersion string `json:"price_version"`
|
|
}
|
|
|
|
type taskRequest struct {
|
|
TaskKey string `json:"task_key"`
|
|
TaskType string `json:"task_type"`
|
|
TargetValue int64 `json:"target_value"`
|
|
RewardResourceGroupID int64 `json:"reward_resource_group_id"`
|
|
SortOrder int32 `json:"sort_order"`
|
|
}
|
|
|
|
type rankRewardRequest struct {
|
|
BoardType string `json:"board_type"`
|
|
RankFrom int32 `json:"rank_from"`
|
|
RankTo int32 `json:"rank_to"`
|
|
ResourceGroupID int64 `json:"resource_group_id"`
|
|
SortOrder int32 `json:"sort_order"`
|
|
}
|
|
|
|
type assetRequest struct {
|
|
AssetKey string `json:"asset_key"`
|
|
Locale string `json:"locale"`
|
|
URL string `json:"url"`
|
|
MediaType string `json:"media_type"`
|
|
SortOrder int32 `json:"sort_order"`
|
|
}
|
|
|
|
// templateRequest 与 HTTP JSON 一一对应;不在 admin 层重复业务校验,确保保存和发布都复用 activity-service 的同一规则。
|
|
type templateRequest struct {
|
|
TemplateCode string `json:"template_code"`
|
|
Name string `json:"name"`
|
|
ActivityType string `json:"activity_type"`
|
|
StartMS int64 `json:"start_ms"`
|
|
EndMS int64 `json:"end_ms"`
|
|
AllRegions bool `json:"all_regions"`
|
|
RegionIDs []int64 `json:"region_ids"`
|
|
Locales []localeRequest `json:"locales"`
|
|
Gifts []giftRequest `json:"gifts"`
|
|
Tasks []taskRequest `json:"tasks"`
|
|
DailyLeaderboardSize int32 `json:"daily_leaderboard_size"`
|
|
TotalLeaderboardSize int32 `json:"total_leaderboard_size"`
|
|
RankRewards []rankRewardRequest `json:"rank_rewards"`
|
|
Assets []assetRequest `json:"assets"`
|
|
DisplayConfigJSON string `json:"display_config_json"`
|
|
ExpectedRevision int64 `json:"expected_revision,omitempty"`
|
|
}
|
|
|
|
type statusRequest struct {
|
|
Status string `json:"status"`
|
|
ExpectedRevision int64 `json:"expected_revision"`
|
|
}
|
|
|
|
type cloneRequest struct {
|
|
SourceVersion int64 `json:"source_version"`
|
|
TemplateCode string `json:"template_code"`
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
type validateRequest struct {
|
|
Template templateRequest `json:"template"`
|
|
ForPublish bool `json:"for_publish"`
|
|
}
|
|
|
|
func (r templateRequest) toProto(templateID string) *activityv1.ActivityTemplate {
|
|
item := &activityv1.ActivityTemplate{
|
|
TemplateId: strings.TrimSpace(templateID),
|
|
TemplateCode: strings.TrimSpace(r.TemplateCode),
|
|
Name: strings.TrimSpace(r.Name),
|
|
ActivityType: strings.TrimSpace(r.ActivityType),
|
|
StartMs: r.StartMS,
|
|
EndMs: r.EndMS,
|
|
AllRegions: r.AllRegions,
|
|
RegionIds: append([]int64(nil), r.RegionIDs...),
|
|
Locales: make([]*activityv1.ActivityTemplateLocale, 0, len(r.Locales)),
|
|
Gifts: make([]*activityv1.ActivityTemplateGift, 0, len(r.Gifts)),
|
|
Tasks: make([]*activityv1.ActivityTemplateTask, 0, len(r.Tasks)),
|
|
DailyLeaderboardSize: r.DailyLeaderboardSize,
|
|
TotalLeaderboardSize: r.TotalLeaderboardSize,
|
|
RankRewards: make([]*activityv1.ActivityTemplateRankReward, 0, len(r.RankRewards)),
|
|
Assets: make([]*activityv1.ActivityTemplateAsset, 0, len(r.Assets)),
|
|
DisplayConfigJson: strings.TrimSpace(r.DisplayConfigJSON),
|
|
}
|
|
for _, locale := range r.Locales {
|
|
item.Locales = append(item.Locales, &activityv1.ActivityTemplateLocale{Locale: locale.Locale, Title: locale.Title, Rules: locale.Rules})
|
|
}
|
|
for _, gift := range r.Gifts {
|
|
item.Gifts = append(item.Gifts, &activityv1.ActivityTemplateGift{
|
|
GiftId: gift.GiftID, SortOrder: gift.SortOrder, Name: gift.Name, IconUrl: gift.IconURL,
|
|
CoinPrice: gift.CoinPrice, PriceVersion: gift.PriceVersion,
|
|
})
|
|
}
|
|
for _, task := range r.Tasks {
|
|
item.Tasks = append(item.Tasks, &activityv1.ActivityTemplateTask{
|
|
TaskKey: task.TaskKey, TaskType: task.TaskType, TargetValue: task.TargetValue,
|
|
RewardResourceGroupId: task.RewardResourceGroupID, SortOrder: task.SortOrder,
|
|
})
|
|
}
|
|
for _, reward := range r.RankRewards {
|
|
item.RankRewards = append(item.RankRewards, &activityv1.ActivityTemplateRankReward{
|
|
BoardType: reward.BoardType, RankFrom: reward.RankFrom, RankTo: reward.RankTo,
|
|
ResourceGroupId: reward.ResourceGroupID, SortOrder: reward.SortOrder,
|
|
})
|
|
}
|
|
for _, asset := range r.Assets {
|
|
item.Assets = append(item.Assets, &activityv1.ActivityTemplateAsset{
|
|
AssetKey: asset.AssetKey, Locale: asset.Locale, Url: asset.URL, MediaType: asset.MediaType, SortOrder: asset.SortOrder,
|
|
})
|
|
}
|
|
return item
|
|
}
|