2026-06-23 11:53:00 +08:00

169 lines
4.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package resource
import (
"strings"
"unicode/utf8"
)
type GiftConfig struct {
AppCode string
GiftID string
ResourceID int64
Resource Resource
Status string
Name string
SortOrder int32
PresentationJSON string
PriceVersion string
CoinPrice int64
// GiftPointAmount 是历史字段;送礼结算不再读取,新配置固定为 0。
GiftPointAmount int64
HeatValue int64
GiftTypeCode string
// CPRelationType 只在 gift_type_code=cp 的礼物上使用,值为 cp、brother 或 sister。
CPRelationType string
ChargeAssetType string
EffectiveFromMS int64
EffectiveToMS int64
EffectTypes []string
CreatedByUserID int64
UpdatedByUserID int64
CreatedAtMS int64
UpdatedAtMS int64
RegionIDs []int64
}
type GiftTypeConfig struct {
AppCode string
TypeCode string
Name string
TabKey string
Status string
SortOrder int32
CreatedByUserID int64
UpdatedByUserID int64
CreatedAtMS int64
UpdatedAtMS int64
}
type ListGiftConfigsQuery struct {
AppCode string
Status string
Keyword string
GiftTypeCode string
Page int32
PageSize int32
ActiveOnly bool
RegionID int64
FilterRegion bool
}
type ListGiftTypeConfigsQuery struct {
AppCode string
Status string
ActiveOnly bool
}
type GiftConfigCommand struct {
AppCode string
GiftID string
ResourceID int64
Status string
Name string
SortOrder int32
PresentationJSON string
PriceVersion string
CoinPrice int64
// GiftPointAmount 是历史字段;保存礼物价格时固定为 0业务计算只读 CoinPrice。
GiftPointAmount int64
HeatValue int64
EffectiveAtMS int64
GiftTypeCode string
// CPRelationType 会写入 presentation_json避免新增 gift_configs 表字段。
CPRelationType string
ChargeAssetType string
EffectiveFromMS int64
EffectiveToMS int64
EffectTypes []string
OperatorUserID int64
RegionIDs []int64
}
type GiftTypeConfigCommand struct {
AppCode string
TypeCode string
Name string
TabKey string
Status string
SortOrder int32
OperatorUserID int64
}
func NormalizeGiftTypeCode(value string) string {
value = strings.ToLower(strings.TrimSpace(value))
value = strings.ReplaceAll(value, "-", "_")
if value == "" {
return GiftTypeNormal
}
return value
}
func ValidGiftTypeCode(value string) bool {
value = NormalizeGiftTypeCode(value)
if value == "" || len(value) > 32 {
return false
}
for index, char := range value {
if index == 0 && (char < 'a' || char > 'z') {
return false
}
if (char >= 'a' && char <= 'z') || (char >= '0' && char <= '9') || char == '_' {
continue
}
return false
}
return true
}
func NormalizeGiftTypeTabKey(value string) string {
return strings.TrimSpace(value)
}
func ValidGiftTypeTabKey(value string) bool {
value = NormalizeGiftTypeTabKey(value)
return value != "" && utf8.RuneCountInString(value) <= 32
}
func DefaultGiftTypeConfigs(appCode string) []GiftTypeConfig {
appCode = strings.TrimSpace(appCode)
defaults := []GiftTypeConfig{
{TypeCode: GiftTypeNormal, Name: "普通礼物", TabKey: GiftTypeTabKeyNormal, Status: StatusActive, SortOrder: 10},
{TypeCode: GiftTypeCP, Name: "CP礼物", TabKey: GiftTypeTabKeyCP, Status: StatusActive, SortOrder: 20},
{TypeCode: GiftTypeLucky, Name: "幸运礼物", TabKey: GiftTypeTabKeyLucky, Status: StatusActive, SortOrder: 30},
{TypeCode: GiftTypeSuperLucky, Name: "超级幸运礼物", TabKey: GiftTypeTabKeySuperLucky, Status: StatusActive, SortOrder: 40},
{TypeCode: GiftTypeExclusive, Name: "专属礼物", TabKey: GiftTypeTabKeyExclusive, Status: StatusActive, SortOrder: 50},
{TypeCode: GiftTypeNoble, Name: "贵族礼物", TabKey: GiftTypeTabKeyNoble, Status: StatusActive, SortOrder: 60},
{TypeCode: GiftTypeFlag, Name: "国旗礼物", TabKey: GiftTypeTabKeyFlag, Status: StatusActive, SortOrder: 70},
{TypeCode: GiftTypeActivity, Name: "活动礼物", TabKey: GiftTypeTabKeyActivity, Status: StatusActive, SortOrder: 80},
{TypeCode: GiftTypeMagic, Name: "魔法礼物", TabKey: GiftTypeTabKeyMagic, Status: StatusActive, SortOrder: 90},
{TypeCode: GiftTypeCustom, Name: "定制礼物", TabKey: GiftTypeTabKeyCustom, Status: StatusActive, SortOrder: 100},
}
for index := range defaults {
defaults[index].AppCode = appCode
}
return defaults
}
func NormalizeGiftEffectType(value string) string {
return strings.ToLower(strings.TrimSpace(value))
}
func ValidGiftEffectType(value string) bool {
switch NormalizeGiftEffectType(value) {
case GiftEffectAnimation, GiftEffectMusic, GiftEffectGlobalBroadcast:
return true
default:
return false
}
}