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

174 lines
6.4 KiB
Go

package grpc
import (
walletv1 "hyapp.local/api/proto/wallet/v1"
resourcedomain "hyapp/services/wallet-service/internal/domain/resource"
)
func resourceCommandFromCreate(req *walletv1.CreateResourceRequest) resourcedomain.ResourceCommand {
return resourcedomain.ResourceCommand{
AppCode: req.GetAppCode(),
ResourceCode: req.GetResourceCode(),
ResourceType: req.GetResourceType(),
Name: req.GetName(),
Status: req.GetStatus(),
Grantable: req.GetGrantable(),
GrantStrategy: req.GetGrantStrategy(),
WalletAssetType: req.GetWalletAssetType(),
WalletAssetAmount: req.GetWalletAssetAmount(),
PriceType: req.GetPriceType(),
CoinPrice: req.GetCoinPrice(),
GiftPointAmount: 0,
UsageScopes: req.GetUsageScopes(),
AssetURL: req.GetAssetUrl(),
PreviewURL: req.GetPreviewUrl(),
AnimationURL: req.GetAnimationUrl(),
MetadataJSON: req.GetMetadataJson(),
SortOrder: req.GetSortOrder(),
OperatorUserID: req.GetOperatorUserId(),
ManagerGrantEnabled: managerGrantEnabledOrDefault(req.ManagerGrantEnabled),
}
}
func resourceCommandFromUpdate(req *walletv1.UpdateResourceRequest) resourcedomain.ResourceCommand {
command := resourceCommandFromCreate(&walletv1.CreateResourceRequest{
AppCode: req.GetAppCode(),
ResourceCode: req.GetResourceCode(),
ResourceType: req.GetResourceType(),
Name: req.GetName(),
Status: req.GetStatus(),
Grantable: req.GetGrantable(),
GrantStrategy: req.GetGrantStrategy(),
WalletAssetType: req.GetWalletAssetType(),
WalletAssetAmount: req.GetWalletAssetAmount(),
PriceType: req.GetPriceType(),
CoinPrice: req.GetCoinPrice(),
GiftPointAmount: 0,
UsageScopes: req.GetUsageScopes(),
AssetUrl: req.GetAssetUrl(),
PreviewUrl: req.GetPreviewUrl(),
AnimationUrl: req.GetAnimationUrl(),
MetadataJson: req.GetMetadataJson(),
SortOrder: req.GetSortOrder(),
OperatorUserId: req.GetOperatorUserId(),
ManagerGrantEnabled: req.ManagerGrantEnabled,
})
command.ResourceID = req.GetResourceId()
return command
}
func resourceGroupCommandFromCreate(req *walletv1.CreateResourceGroupRequest) resourcedomain.ResourceGroupCommand {
return resourcedomain.ResourceGroupCommand{
AppCode: req.GetAppCode(),
GroupCode: req.GetGroupCode(),
Name: req.GetName(),
Status: req.GetStatus(),
Description: req.GetDescription(),
SortOrder: req.GetSortOrder(),
Items: groupItemInputs(req.GetItems()),
OperatorUserID: req.GetOperatorUserId(),
}
}
func resourceGroupCommandFromUpdate(req *walletv1.UpdateResourceGroupRequest) resourcedomain.ResourceGroupCommand {
return resourcedomain.ResourceGroupCommand{
AppCode: req.GetAppCode(),
GroupID: req.GetGroupId(),
GroupCode: req.GetGroupCode(),
Name: req.GetName(),
Status: req.GetStatus(),
Description: req.GetDescription(),
SortOrder: req.GetSortOrder(),
Items: groupItemInputs(req.GetItems()),
OperatorUserID: req.GetOperatorUserId(),
}
}
func giftConfigCommandFromCreate(req *walletv1.CreateGiftConfigRequest) resourcedomain.GiftConfigCommand {
return resourcedomain.GiftConfigCommand{
AppCode: req.GetAppCode(),
GiftID: req.GetGiftId(),
ResourceID: req.GetResourceId(),
Status: req.GetStatus(),
Name: req.GetName(),
SortOrder: req.GetSortOrder(),
PresentationJSON: req.GetPresentationJson(),
PriceVersion: req.GetPriceVersion(),
CoinPrice: req.GetCoinPrice(),
GiftPointAmount: 0,
HeatValue: req.GetHeatValue(),
EffectiveAtMS: req.GetEffectiveAtMs(),
GiftTypeCode: req.GetGiftTypeCode(),
CPRelationType: req.GetCpRelationType(),
ChargeAssetType: req.GetChargeAssetType(),
EffectiveFromMS: req.GetEffectiveFromMs(),
EffectiveToMS: req.GetEffectiveToMs(),
EffectTypes: req.GetEffectTypes(),
OperatorUserID: req.GetOperatorUserId(),
RegionIDs: req.GetRegionIds(),
}
}
func giftConfigCommandFromUpdate(req *walletv1.UpdateGiftConfigRequest) resourcedomain.GiftConfigCommand {
return resourcedomain.GiftConfigCommand{
AppCode: req.GetAppCode(),
GiftID: req.GetGiftId(),
ResourceID: req.GetResourceId(),
Status: req.GetStatus(),
Name: req.GetName(),
SortOrder: req.GetSortOrder(),
PresentationJSON: req.GetPresentationJson(),
PriceVersion: req.GetPriceVersion(),
CoinPrice: req.GetCoinPrice(),
GiftPointAmount: 0,
HeatValue: req.GetHeatValue(),
EffectiveAtMS: req.GetEffectiveAtMs(),
GiftTypeCode: req.GetGiftTypeCode(),
CPRelationType: req.GetCpRelationType(),
ChargeAssetType: req.GetChargeAssetType(),
EffectiveFromMS: req.GetEffectiveFromMs(),
EffectiveToMS: req.GetEffectiveToMs(),
EffectTypes: req.GetEffectTypes(),
OperatorUserID: req.GetOperatorUserId(),
RegionIDs: req.GetRegionIds(),
}
}
func groupItemInputs(items []*walletv1.ResourceGroupItemInput) []resourcedomain.ResourceGroupItemInput {
out := make([]resourcedomain.ResourceGroupItemInput, 0, len(items))
for _, item := range items {
if item == nil {
continue
}
out = append(out, resourcedomain.ResourceGroupItemInput{
ItemType: item.GetItemType(),
ResourceID: item.GetResourceId(),
WalletAssetType: item.GetWalletAssetType(),
WalletAssetAmount: item.GetWalletAssetAmount(),
Quantity: item.GetQuantity(),
DurationMS: item.GetDurationMs(),
SortOrder: item.GetSortOrder(),
})
}
return out
}
func resourceShopItemInputs(items []*walletv1.ResourceShopItemInput) []resourcedomain.ResourceShopItemInput {
out := make([]resourcedomain.ResourceShopItemInput, 0, len(items))
for _, item := range items {
if item == nil {
continue
}
out = append(out, resourcedomain.ResourceShopItemInput{
ShopItemID: item.GetShopItemId(),
ResourceID: item.GetResourceId(),
Status: item.GetStatus(),
DurationDays: item.GetDurationDays(),
EffectiveFromMS: item.GetEffectiveFromMs(),
EffectiveToMS: item.GetEffectiveToMs(),
SortOrder: item.GetSortOrder(),
})
}
return out
}