229 lines
8.1 KiB
Go
229 lines
8.1 KiB
Go
package grpc
|
|
|
|
import (
|
|
walletv1 "hyapp.local/api/proto/wallet/v1"
|
|
"hyapp/pkg/appcode"
|
|
resourcedomain "hyapp/services/wallet-service/internal/domain/resource"
|
|
)
|
|
|
|
func resourceToProto(resource resourcedomain.Resource) *walletv1.Resource {
|
|
return &walletv1.Resource{
|
|
AppCode: appcode.Normalize(resource.AppCode),
|
|
ResourceId: resource.ResourceID,
|
|
ResourceCode: resource.ResourceCode,
|
|
ResourceType: resource.ResourceType,
|
|
Name: resource.Name,
|
|
Status: resource.Status,
|
|
Grantable: resource.Grantable,
|
|
GrantStrategy: resource.GrantStrategy,
|
|
WalletAssetType: resource.WalletAssetType,
|
|
WalletAssetAmount: resource.WalletAssetAmount,
|
|
PriceType: resource.PriceType,
|
|
CoinPrice: resource.CoinPrice,
|
|
GiftPointAmount: 0,
|
|
UsageScopes: resource.UsageScopes,
|
|
AssetUrl: resource.AssetURL,
|
|
PreviewUrl: resource.PreviewURL,
|
|
AnimationUrl: resource.AnimationURL,
|
|
MetadataJson: resource.MetadataJSON,
|
|
SortOrder: resource.SortOrder,
|
|
CreatedByUserId: resource.CreatedByUserID,
|
|
UpdatedByUserId: resource.UpdatedByUserID,
|
|
CreatedAtMs: resource.CreatedAtMS,
|
|
UpdatedAtMs: resource.UpdatedAtMS,
|
|
ManagerGrantEnabled: resource.ManagerGrantEnabled,
|
|
}
|
|
}
|
|
|
|
func resourceShopItemToProto(item resourcedomain.ResourceShopItem) *walletv1.ResourceShopItem {
|
|
return &walletv1.ResourceShopItem{
|
|
AppCode: appcode.Normalize(item.AppCode),
|
|
ShopItemId: item.ShopItemID,
|
|
ResourceId: item.ResourceID,
|
|
Resource: resourceToProto(item.Resource),
|
|
Status: item.Status,
|
|
DurationDays: item.DurationDays,
|
|
PriceType: item.PriceType,
|
|
CoinPrice: item.CoinPrice,
|
|
EffectiveFromMs: item.EffectiveFromMS,
|
|
EffectiveToMs: item.EffectiveToMS,
|
|
SortOrder: item.SortOrder,
|
|
CreatedByUserId: item.CreatedByUserID,
|
|
UpdatedByUserId: item.UpdatedByUserID,
|
|
CreatedAtMs: item.CreatedAtMS,
|
|
UpdatedAtMs: item.UpdatedAtMS,
|
|
}
|
|
}
|
|
|
|
func resourceShopPurchaseOrderToProto(item resourcedomain.ResourceShopPurchaseOrder) *walletv1.ResourceShopPurchaseOrder {
|
|
return &walletv1.ResourceShopPurchaseOrder{
|
|
AppCode: appcode.Normalize(item.AppCode),
|
|
OrderId: item.OrderID,
|
|
CommandId: item.CommandID,
|
|
UserId: item.UserID,
|
|
ShopItemId: item.ShopItemID,
|
|
ResourceId: item.ResourceID,
|
|
Resource: resourceToProto(item.Resource),
|
|
DurationDays: item.DurationDays,
|
|
PriceCoin: item.PriceCoin,
|
|
Status: item.Status,
|
|
WalletTransactionId: item.WalletTransactionID,
|
|
ResourceGrantId: item.ResourceGrantID,
|
|
EntitlementId: item.EntitlementID,
|
|
CreatedAtMs: item.CreatedAtMS,
|
|
UpdatedAtMs: item.UpdatedAtMS,
|
|
}
|
|
}
|
|
|
|
func resourceShopPurchaseReceiptToProto(receipt resourcedomain.ResourceShopPurchaseReceipt) *walletv1.PurchaseResourceShopItemResponse {
|
|
return &walletv1.PurchaseResourceShopItemResponse{
|
|
OrderId: receipt.OrderID,
|
|
TransactionId: receipt.TransactionID,
|
|
ResourceGrantId: receipt.GrantID,
|
|
ShopItem: resourceShopItemToProto(receipt.ShopItem),
|
|
Resource: userResourceToProto(receipt.Resource),
|
|
Balance: balanceToProto(receipt.Balance),
|
|
CoinSpent: receipt.CoinSpent,
|
|
}
|
|
}
|
|
|
|
func managerGrantEnabledOrDefault(value *bool) bool {
|
|
if value == nil {
|
|
|
|
return false
|
|
}
|
|
return *value
|
|
}
|
|
|
|
func resourceGroupToProto(group resourcedomain.ResourceGroup) *walletv1.ResourceGroup {
|
|
items := make([]*walletv1.ResourceGroupItem, 0, len(group.Items))
|
|
for _, item := range group.Items {
|
|
items = append(items, &walletv1.ResourceGroupItem{
|
|
GroupItemId: item.GroupItemID,
|
|
GroupId: item.GroupID,
|
|
ResourceId: item.ResourceID,
|
|
Resource: resourceToProto(item.Resource),
|
|
Quantity: item.Quantity,
|
|
DurationMs: item.DurationMS,
|
|
SortOrder: item.SortOrder,
|
|
CreatedAtMs: item.CreatedAtMS,
|
|
UpdatedAtMs: item.UpdatedAtMS,
|
|
ItemType: item.ItemType,
|
|
WalletAssetType: item.WalletAssetType,
|
|
WalletAssetAmount: item.WalletAssetAmount,
|
|
})
|
|
}
|
|
return &walletv1.ResourceGroup{
|
|
AppCode: appcode.Normalize(group.AppCode),
|
|
GroupId: group.GroupID,
|
|
GroupCode: group.GroupCode,
|
|
Name: group.Name,
|
|
Status: group.Status,
|
|
Description: group.Description,
|
|
SortOrder: group.SortOrder,
|
|
Items: items,
|
|
CreatedByUserId: group.CreatedByUserID,
|
|
UpdatedByUserId: group.UpdatedByUserID,
|
|
CreatedAtMs: group.CreatedAtMS,
|
|
UpdatedAtMs: group.UpdatedAtMS,
|
|
}
|
|
}
|
|
|
|
func giftConfigToProto(gift resourcedomain.GiftConfig) *walletv1.GiftConfig {
|
|
return &walletv1.GiftConfig{
|
|
AppCode: appcode.Normalize(gift.AppCode),
|
|
GiftId: gift.GiftID,
|
|
ResourceId: gift.ResourceID,
|
|
Resource: resourceToProto(gift.Resource),
|
|
Status: gift.Status,
|
|
Name: gift.Name,
|
|
SortOrder: gift.SortOrder,
|
|
PresentationJson: gift.PresentationJSON,
|
|
PriceVersion: gift.PriceVersion,
|
|
ChargeAssetType: gift.ChargeAssetType,
|
|
CoinPrice: gift.CoinPrice,
|
|
GiftPointAmount: 0,
|
|
HeatValue: gift.HeatValue,
|
|
GiftTypeCode: gift.GiftTypeCode,
|
|
CpRelationType: gift.CPRelationType,
|
|
EffectiveFromMs: gift.EffectiveFromMS,
|
|
EffectiveToMs: gift.EffectiveToMS,
|
|
EffectTypes: gift.EffectTypes,
|
|
CreatedByUserId: gift.CreatedByUserID,
|
|
UpdatedByUserId: gift.UpdatedByUserID,
|
|
CreatedAtMs: gift.CreatedAtMS,
|
|
UpdatedAtMs: gift.UpdatedAtMS,
|
|
RegionIds: gift.RegionIDs,
|
|
}
|
|
}
|
|
|
|
func giftTypeConfigToProto(item resourcedomain.GiftTypeConfig) *walletv1.GiftTypeConfig {
|
|
return &walletv1.GiftTypeConfig{
|
|
AppCode: appcode.Normalize(item.AppCode),
|
|
TypeCode: item.TypeCode,
|
|
Name: item.Name,
|
|
TabKey: item.TabKey,
|
|
Status: item.Status,
|
|
SortOrder: item.SortOrder,
|
|
CreatedByUserId: item.CreatedByUserID,
|
|
UpdatedByUserId: item.UpdatedByUserID,
|
|
CreatedAtMs: item.CreatedAtMS,
|
|
UpdatedAtMs: item.UpdatedAtMS,
|
|
}
|
|
}
|
|
|
|
func userResourceToProto(item resourcedomain.UserResourceEntitlement) *walletv1.UserResourceEntitlement {
|
|
return &walletv1.UserResourceEntitlement{
|
|
AppCode: appcode.Normalize(item.AppCode),
|
|
EntitlementId: item.EntitlementID,
|
|
UserId: item.UserID,
|
|
ResourceId: item.ResourceID,
|
|
Resource: resourceToProto(item.Resource),
|
|
Status: item.Status,
|
|
Quantity: item.Quantity,
|
|
RemainingQuantity: item.RemainingQuantity,
|
|
EffectiveAtMs: item.EffectiveAtMS,
|
|
ExpiresAtMs: item.ExpiresAtMS,
|
|
SourceGrantId: item.SourceGrantID,
|
|
CreatedAtMs: item.CreatedAtMS,
|
|
UpdatedAtMs: item.UpdatedAtMS,
|
|
Equipped: item.Equipped,
|
|
}
|
|
}
|
|
|
|
func resourceGrantToProto(grant resourcedomain.ResourceGrant) *walletv1.ResourceGrant {
|
|
items := make([]*walletv1.ResourceGrantItem, 0, len(grant.Items))
|
|
for _, item := range grant.Items {
|
|
items = append(items, &walletv1.ResourceGrantItem{
|
|
GrantItemId: item.GrantItemID,
|
|
GrantId: item.GrantID,
|
|
ResourceId: item.ResourceID,
|
|
ResourceSnapshotJson: item.ResourceSnapshotJSON,
|
|
Quantity: item.Quantity,
|
|
DurationMs: item.DurationMS,
|
|
ResultType: item.ResultType,
|
|
WalletTransactionId: item.WalletTransactionID,
|
|
EntitlementId: item.EntitlementID,
|
|
CreatedAtMs: item.CreatedAtMS,
|
|
})
|
|
}
|
|
return &walletv1.ResourceGrant{
|
|
AppCode: appcode.Normalize(grant.AppCode),
|
|
GrantId: grant.GrantID,
|
|
CommandId: grant.CommandID,
|
|
TargetUserId: grant.TargetUserID,
|
|
GrantSource: grant.GrantSource,
|
|
GrantSubjectType: grant.GrantSubjectType,
|
|
GrantSubjectId: grant.GrantSubjectID,
|
|
Status: grant.Status,
|
|
Reason: grant.Reason,
|
|
OperatorUserId: grant.OperatorUserID,
|
|
Items: items,
|
|
CreatedAtMs: grant.CreatedAtMS,
|
|
UpdatedAtMs: grant.UpdatedAtMS,
|
|
RevokedAtMs: grant.RevokedAtMS,
|
|
RevokedByUserId: grant.RevokedByUserID,
|
|
RevokeReason: grant.RevokeReason,
|
|
}
|
|
}
|