syntax = "v1"

info (
	title:   "钱包服务"
	desc:    "处理钱包充值相关。ID 字段（int64）以 string 传输"
	author:  "Asadz"
	version: "1.0"
)

import "common.api"

type (
	WalletBalance {
		Balance       string `json:"balance"`
		FrozenBalance string `json:"frozenBalance"`
	}
	Transaction {
		Id          int64  `json:"id,string"`
		Type        string `json:"type"`
		Amount      string `json:"amount"`
		Description string `json:"description"`
		OrderId     string `json:"orderId,optional"`
		CreatedAt   string `json:"createdAt"`
	}
	TransactionListResp {
		Items []Transaction `json:"items"`
		Meta  PageMeta      `json:"meta"`
	}
	TopupReq {
		Amount string `json:"amount"`
		Method string `json:"method"`
	}
)

@server (
	prefix: api/v1/wallet
	group:  wallet
)
service wallet-api {
	@doc "获取余额"
	@handler GetBalance
	get /balance (EmptyResp) returns (WalletBalance)

	@doc "获取流水"
	@handler ListTransactions
	get /transactions (PageReq) returns (TransactionListResp)

	@doc "充值"
	@handler Topup
	post /topup (TopupReq) returns (EmptyResp)

	@doc "提现"
	@handler Withdraw
	post /withdraw (TopupReq) returns (EmptyResp)
}

