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

37 lines
1.2 KiB
Go

package grpc
import (
"context"
walletv1 "hyapp.local/api/proto/wallet/v1"
"hyapp/pkg/appcode"
"hyapp/pkg/xerr"
"hyapp/services/wallet-service/internal/domain/ledger"
)
// ApplyGameCoinChange 处理 game-service 发起的游戏专用金币改账。
func (s *Server) ApplyGameCoinChange(ctx context.Context, req *walletv1.ApplyGameCoinChangeRequest) (*walletv1.ApplyGameCoinChangeResponse, error) {
ctx = appcode.WithContext(ctx, req.GetAppCode())
receipt, err := s.svc.ApplyGameCoinChange(ctx, ledger.GameCoinChangeCommand{
AppCode: req.GetAppCode(),
CommandID: req.GetCommandId(),
UserID: req.GetUserId(),
PlatformCode: req.GetPlatformCode(),
GameID: req.GetGameId(),
ProviderOrderID: req.GetProviderOrderId(),
ProviderRoundID: req.GetProviderRoundId(),
OpType: req.GetOpType(),
CoinAmount: req.GetCoinAmount(),
RoomID: req.GetRoomId(),
RequestHash: req.GetRequestHash(),
})
if err != nil {
return nil, xerr.ToGRPCError(err)
}
return &walletv1.ApplyGameCoinChangeResponse{
WalletTransactionId: receipt.TransactionID,
BalanceAfter: receipt.BalanceAfter,
IdempotentReplay: receipt.IdempotentReplay,
}, nil
}