app-cloudep-trade-service/generate/protobuf/trade.proto

556 lines
23 KiB
Protocol Buffer
Raw Permalink 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.

syntax = "proto3";
package trade;
option go_package = "./trade";
// ========== 基本回應 ===========
message OKResp {}
// 空的請求
message NoneReq {}
// 分頁信息
message Pager {
int64 total = 1; // 總數量
int64 size = 2; // 每頁數量
int64 index = 3; // 當前頁碼
}
// ========== 訂單服務 ===========
message CreateOrderReq {
string business_id = 1; // 訂單業務流水號
int32 order_type = 2; // 訂單類型
int32 order_status = 3; // 訂單狀態
string brand = 4; // 下單平台
string order_uid = 5; // 下單用戶 UID
string reference_id = 6; // 訂單來源
string count = 7; // 訂單數量 (decimal to string)
string order_fee = 8; // 訂單手續費 (decimal to string)
string amount = 9; // 單價 (decimal to string)
// 以下是可選字段(擴充用)
optional string reference_brand = 10; // 訂單來源平台
optional string reference_uid = 11; // 訂單來源用戶 UID
optional int64 wallet_status = 12; // 交易金額狀態
optional int64 three_party_status = 13; // 三方請求狀態
optional int64 direction_type = 14; // 交易方向
optional string crypto_type = 15; // 交易幣種
optional string third_party_fee = 16; // 第三方手續費 (decimal to string)
optional string crypto_to_usdt_rate = 17; // 交易幣種對 USDT 匯率 (decimal to string)
optional string fiat_to_usd_rate = 18; // 法幣對 USD 匯率 (decimal to string)
optional string fee_crypto_to_usdt_rate = 19; // 手續費幣種對 USDT 匯率 (decimal to string)
optional string usdt_to_crypto_type_rate = 20; // USDT 對交易幣種匯率 (decimal to string)
optional string payment_fiat = 21; // 支付法幣
optional string payment_unit_price = 22; // crypto 單價 (decimal to string)
optional string payment_template_id = 23; // 支付方式配置 ID
optional int64 order_arrival_time = 24; // 訂單到帳時間
optional int64 order_payment_time = 25; // 訂單付款時間
optional int64 unpaid_timeout_second = 26; // 支付期限秒數
optional string chain_type = 27; // 主網類型
optional string tx_hash = 28; // 交易哈希
optional string from_address = 29; // 來源地址
optional string to_address = 30; // 目標地址
optional string chain_fee = 31; // 鏈上交易手續費 (decimal to string)
optional string chain_fee_crypto = 32; // 鏈上手續費使用幣別
optional string memo = 33; // 鏈上備註
optional string order_note = 34; // 訂單交易備註
}
message CancelOrderReq {
string business_id = 1;
int64 status = 2;
}
message ModifyOrderStatusReq {
string business_id = 1;
int64 status = 2;
}
message DeleteOrderReq {
string business_id = 1;
}
message OrderStatusTimeoutReq {}
message GetOrderReq {
string business_id = 1; // 訂單業務流水號
}
message GetOrderResp {
string business_id = 1; // 訂單業務流水號
int32 order_type = 2; // 訂單類型
int32 order_status = 3; // 訂單狀態
string brand = 4; // 下單平台
string order_uid = 5; // 下單用戶 UID
string reference_id = 6; // 訂單來源
string count = 7; // 訂單數量 (decimal to string)
string order_fee = 8; // 訂單手續費 (decimal to string)
string amount = 9; // 單價 (decimal to string)
// 以下是可選字段(擴充用)
optional string reference_brand = 10; // 訂單來源平台
optional string reference_uid = 11; // 訂單來源用戶 UID
optional int64 wallet_status = 12; // 交易金額狀態
optional int64 three_party_status = 13; // 三方請求狀態
optional int64 direction_type = 14; // 交易方向
optional string crypto_type = 15; // 交易幣種
optional string third_party_fee = 16; // 第三方手續費 (decimal to string)
optional string crypto_to_usdt_rate = 17; // 交易幣種對 USDT 匯率 (decimal to string)
optional string fiat_to_usd_rate = 18; // 法幣對 USD 匯率 (decimal to string)
optional string fee_crypto_to_usdt_rate = 19; // 手續費幣種對 USDT 匯率 (decimal to string)
optional string usdt_to_crypto_type_rate = 20; // USDT 對交易幣種匯率 (decimal to string)
optional string payment_fiat = 21; // 支付法幣
optional string payment_unit_price = 22; // crypto 單價 (decimal to string)
optional string payment_template_id = 23; // 支付方式配置 ID
optional int64 order_arrival_time = 24; // 訂單到帳時間
optional int64 order_payment_time = 25; // 訂單付款時間
optional int64 unpaid_timeout_second = 26; // 支付期限秒數
optional string chain_type = 27; // 主網類型
optional string tx_hash = 28; // 交易哈希
optional string from_address = 29; // 來源地址
optional string to_address = 30; // 目標地址
optional string chain_fee = 31; // 鏈上交易手續費 (decimal to string)
optional string chain_fee_crypto = 32; // 鏈上手續費使用幣別
optional string memo = 33; // 鏈上備註
optional string order_note = 34; // 訂單交易備註
int64 create_time = 35; // 建立時間
int64 update_time = 36; // 更新時間
}
message ListOrderReq {
int64 page_index = 1; // required
int64 page_size = 2; // required
string reference_id = 3;
string reference_uid = 4;
string business_id = 5;
string uid = 6;
int32 order_type = 7;
repeated int32 direction_type = 8;
repeated int32 order_status = 9;
int64 start_create_time = 10;
int64 end_create_time = 11;
int64 start_update_time = 12;
int64 end_update_time = 13;
int64 start_order_arrival_time = 14;
int64 end_order_arrival_time = 15;
int64 start_order_payment_time = 16;
int64 end_order_payment_time = 17;
string crypto_type = 18;
string tx_hash = 19;
}
message ListOrderResp {
repeated GetOrderResp data = 1; // 訂單列表
Pager page = 2;
}
// OrderService 訂單服務(業務邏輯在外面組合)
service OrderService {
// CreateOrder 建立訂單
rpc CreateOrder(CreateOrderReq) returns (OKResp);
// CancelOrder 取消訂單
rpc CancelOrder(CancelOrderReq) returns (OKResp);
// ModifyOrderStatus 修改訂單狀態
rpc ModifyOrderStatus(ModifyOrderStatusReq) returns (OKResp);
// DeleteOrder 刪除訂單(軟刪除)
rpc DeleteOrder(DeleteOrderReq) returns (OKResp);
// GetOrder 取得訂單詳情
rpc GetOrder(GetOrderReq) returns (GetOrderResp);
// ListOrder 取得訂單列表
rpc ListOrder(ListOrderReq) returns (ListOrderResp);
// OrderStatusTimeout 訂單超時任務/cron/order-status/timeout
rpc OrderStatusTimeout(OrderStatusTimeoutReq) returns (OKResp);
}
// ========== 錢包服務 ===========
message CreateWalletReq {
repeated WalletItem item = 1;
}
message WalletItem {
string source = 1; // 錢包來源
string uid = 2; // 錢包擁有者的 UID
string currency_type = 3; // 幣別
string current_balance = 4; // 當前餘額
int64 wallet_type = 5; // 錢包金額種類 1. 可用餘額 2. 凍結餘額 3. 限制餘額
}
message WalletTransactionReq {
string uid = 1; // 錢包擁有者的 UID
optional string order_id = 2; // 訂單編號
optional string business_type = 3; // 業務種類
optional string currency_type = 4; // 幣別
optional string amount = 5; // 轉帳金額
optional int64 wallet_type = 6; // 操作金額種類
}
message QueryBalanceByDateReq {
string uid = 1; // 錢包擁有者的 UID
string currency_type = 2; // 幣別
}
message QueryBalanceByDateResp {
string currency_type = 1; // 幣別
string available = 2; // 可用餘額
UnavailableBalance unavailable = 3; // 不可用餘額
int64 update_time = 4;
}
message UnavailableBalance {
string freeze = 1; // 凍結餘額
string unconfirmed = 2; // 限制餘額
}
// TODO 未來會新增查詢以及同步的功能
service WalletService {
// CreateWallet 建立錢包
rpc CreateWallet(CreateWalletReq) returns (OKResp);
// DepositFunds 充值 - 增加 [可用餘額] 或 [限制餘額]
rpc DepositFunds(WalletTransactionReq) returns (OKResp);
// WithdrawFunds 提現 - 減少 [可用餘額]
rpc WithdrawFunds(WalletTransactionReq) returns (OKResp);
// FreezeFunds 凍結 - 將 [可用餘額] 減少,加到 [凍結餘額]
rpc FreezeFunds(WalletTransactionReq) returns (OKResp);
// UnfreezeFunds 解凍 - 減少 [凍結餘額]
rpc UnfreezeFunds(WalletTransactionReq) returns (OKResp);
// AppendToFreeze 追加凍結 - 減少可用餘額,追加到現有的 [凍結餘額] (基於原order_id)
rpc AppendToFreeze(WalletTransactionReq) returns (OKResp);
// RollbackFreeze 凍結回滾 - 減少 [凍結餘額],加回 [可用餘額],不可指定金額,整筆訂單的凍結金額加回 [可用餘額]
rpc RollbackFreeze(WalletTransactionReq) returns (OKResp);
// CancelFreeze 取消凍結 - 減少 [凍結餘額],加回 [可用餘額],可指定金額
rpc CancelFreeze(WalletTransactionReq) returns (OKResp);
// TransferToRestrictedFunds 限制 - 減少 [凍結餘額],轉移到另一個使用者的 [限制餘額]
rpc TransferToRestrictedFunds(WalletTransactionReq) returns (OKResp);
// SettleRestrictedFunds 結算限制餘額 - 限制餘額在 T+N 天後自動失效,每日只能執行一次
rpc SettleRestrictedFunds(NoneReq) returns (OKResp);
// QueryBalance 餘額查詢 -> 依照日期查詢
rpc QueryBalance(QueryBalanceByDateReq) returns (QueryBalanceByDateResp);
}
// ========== 庫存服務 ===========
message StockAdjustmentReq {
string product_id = 1; // 商品ID
int64 quantity = 2; // 調整的數量 (正數表示增加,負數表示減少)
}
message StockQueryReq {
string product_id = 1; // 商品ID
}
message StockResp {
string product_id = 1; // 商品ID
int64 available_quantity = 2; // 可用庫存
int64 reserved_quantity = 3; // 預留庫存
}
message StockListReq {
int64 page_index = 1; // required
int64 page_size = 2; // required
repeated string product_id = 3; // 一次查多筆
}
message StockListResp {
repeated StockResp stock_items = 1; // 所有商品的庫存清單
Pager page = 2;
}
message StockReservationReq {
string product_id = 1; // 商品ID
int64 quantity = 2; // 預留的數量
}
message BatchStockAdjustmentReq {
repeated StockAdjustmentReq adjustments = 1; // 批次調整庫存
}
service InventoryService {
// CreateStock 建立庫存品項
rpc CreateStock(StockAdjustmentReq) returns (OKResp);
// AddStock 增加庫存
rpc AddStock(StockAdjustmentReq) returns (OKResp);
// ReduceStock 減少庫存
rpc ReduceStock(StockAdjustmentReq) returns (OKResp);
// QueryStock 查詢單一商品的庫存
rpc QueryStock(StockQueryReq) returns (StockResp);
// ListAllStock 查詢所有商品的庫存狀況
rpc ListAllStock(StockListReq) returns (StockListResp);
// ReserveStock 預留庫存 (用於未完成的訂單)
rpc ReserveStock(StockReservationReq) returns (OKResp);
// ReleaseReservedStock 釋放預留庫存 (取消或失效的訂單)
rpc ReleaseReservedStock(StockReservationReq) returns (OKResp);
// AdjustStock 調整庫存 (批量修改庫存,用於大批商品更新)
rpc AdjustStock(BatchStockAdjustmentReq) returns (OKResp);
}
// ========== 商品服務 ===========
// 商品請求和回應訊息
message ProductCreateReq {
string name = 1; // 商品名稱
string description = 2; // 商品簡述
string content = 3; // 詳細商品內容
double price = 4; // 商品價格
int64 amount_type = 5; // 1 有限數量 2 無限數量
string currency = 6; // 貨幣類型 (如 USD, TWD)
repeated string brand = 7; // 產品品牌可以看成channel_id or uid 就是誰得商品,用品牌比較通用
repeated string category = 8; // 商品分類
repeated string tags = 9; // 產品標籤(方便篩選)
string sku = 10; // 庫存單位Stock Keeping Unit
repeated string images = 11; // 商品照片網址
repeated string coupon_id = 12; // 本商品專屬折扣碼 id
}
message ProductUpdateReq {
string product_id = 1; // 商品ID
optional string name = 2; // 商品名稱
optional string description = 3; // 商品簡述
optional string content = 4; // 詳細商品內容
optional double price = 5; // 商品價格
optional int64 amount_type = 6; // 1 有限數量 2 無限數量
optional string currency = 7; // 貨幣類型 (如 USD, TWD)
repeated string brand = 8; // 產品品牌可以看成channel_id or uid 就是誰得商品,用品牌比較通用
repeated string category = 9; // 商品分類
repeated string tags = 10; // 產品標籤(方便篩選)
optional string sku = 11; // 庫存單位Stock Keeping Unit
repeated string images = 12; // 商品照片網址
repeated string coupon_id = 13; // 本商品專屬折扣碼 id
optional bool is_available = 14; // 是否上架
}
message ProductDeleteReq {
string product_id = 1; // 商品ID
}
message ProductQueryReq {
string product_id = 1; // 商品ID
}
message ProductResp {
string product_id = 1; // 商品ID
string name = 2; // 商品名稱
string description = 3; // 商品簡述
string content = 4; // 詳細商品內容
double price = 5; // 商品價格
int64 amount_type = 6; // 1 有限數量 2 無限數量
string currency = 7; // 貨幣類型 (如 USD, TWD)
repeated string brand = 8; // 產品品牌可以看成channel_id or uid 就是誰得商品,用品牌比較通用
repeated string category = 9; // 商品分類
repeated string tags = 10; // 產品標籤(方便篩選)
string sku = 11; // 庫存單位Stock Keeping Unit
repeated string images = 12; // 商品照片網址
repeated string coupon_id = 13; // 本商品專屬折扣碼 id
bool is_available = 14; // 是否上架
}
message ProductListReq {
int64 page_index = 1;
int64 page_size = 2;
repeated string product_id = 3; // 商品ID
optional bool is_available = 4; // 是否上架
repeated string tags = 5; // 產品標籤(方便篩選)
optional int64 amount_type = 6; // 1 有限數量 2 無限數量
repeated string currency = 7; // 貨幣類型 (如 USD, TWD)
repeated string brand = 8; // 產品品牌可以看成channel_id or uid 就是誰得商品,用品牌比較通用
repeated string category = 9; // 商品分類
}
message ProductListResp {
repeated ProductResp products = 1; // 所有商品清單
Pager page = 2;
}
service ProductService {
// CreateProduct 新增商品
rpc CreateProduct(ProductCreateReq) returns (ProductResp);
// UpdateProduct 更新商品資訊
rpc UpdateProduct(ProductUpdateReq) returns (ProductResp);
// DeleteProduct 刪除商品
rpc DeleteProduct(ProductDeleteReq) returns (OKResp);
// QueryProduct 查詢單一商品資訊
rpc QueryProduct(ProductQueryReq) returns (ProductResp);
// ListAllProducts 查詢所有商品資訊
rpc ListAllProducts(ProductListReq) returns (ProductListResp);
}
// ========== 訂閱服務 ===========
// 訂閱請求和回應訊息 (訂閱的話,在結束時間結束前,不能再次訂閱,但取消之後可以再次訂閱)
message SubscriptionCreateReq {
string uid = 1; // 使用者ID
string plan_id = 2; // 訂閱方案ID
bool auto_renew = 3; // 是否自動續訂
optional int64 auto_renew_day = 4; // 自動續訂多久
int64 start_date = 5; // 訂閱開始日期
int64 end_date = 6; // 訂閱結束時間
}
message SubscriptionUpdateReq {
string subscription_id = 1; // 訂閱ID
optional int64 end_date = 2; // 訂閱結束時間(延長要訂閱的時間)
optional bool cancel = 3; // 是否取消訂閱
optional bool auto_renew = 4; // 是否自動續訂
optional int64 auto_renew_day = 5; // 自動續訂多久
}
message SubscriptionCancelReq {
string subscription_id = 1; // 訂閱ID
}
message SubscriptionQueryReq {
string subscription_id = 1; // 訂閱ID
}
message SubscriptionResp {
string subscription_id = 1; // 訂閱ID
string uid = 2; // 使用者ID
string plan_id = 3; // 訂閱方案ID
int64 start_date = 4; // 訂閱開始日期
int64 end_date = 5; // 訂閱結束日期
int64 status = 6; // 訂閱狀態 (例如: 1"active", 2"expired", 3"canceled")
bool auto_renew = 7; // 是否自動續訂
int64 auto_renew_day = 8; // 自動續訂多久
}
message ListSubscriptionsReq {
int64 page_index = 1;
int64 page_size = 2;
optional string uid = 3;
repeated string subscription_id = 4;
repeated string plan_id = 5;
int64 status = 6; // 訂閱狀態 (例如: 1"active", 2"expired", 3"canceled")
}
message SubscriptionListResp {
repeated SubscriptionResp subscriptions = 1; // 訂閱清單
Pager page = 2;
}
message SubscriptionRenewReq {
string subscription_id = 1; // 訂閱ID
int64 renewal_date = 2; // 續訂日期
}
message SubscriptionStatusQueryReq {
string subscription_id = 1; // 訂閱ID
}
message SubscriptionStatusResp {
string subscription_id = 1; // 訂閱ID
int64 status = 2; // 訂閱狀態 (例如: 1"active", 2"expired", 3"canceled")
}
service SubscriptionService {
// CreateSubscription 建立訂閱
rpc CreateSubscription(SubscriptionCreateReq) returns (SubscriptionResp);
// UpdateSubscription 更新訂閱設定
rpc UpdateSubscription(SubscriptionUpdateReq) returns (SubscriptionResp);
// CancelSubscription 取消訂閱
rpc CancelSubscription(SubscriptionCancelReq) returns (OKResp);
// QuerySubscription 查詢單一訂閱資訊
rpc QuerySubscription(SubscriptionQueryReq) returns (SubscriptionResp);
// ListSubscriptions 查詢所有訂閱 (用於管理和監控)
rpc ListSubscriptions(ListSubscriptionsReq) returns (SubscriptionListResp);
// RenewSubscription 續訂訂閱
rpc RenewSubscription(SubscriptionRenewReq) returns (SubscriptionResp);
// CheckSubscriptionStatus 查詢訂閱狀態 (啟用/過期/取消)
rpc CheckSubscriptionStatus(SubscriptionStatusQueryReq) returns (SubscriptionStatusResp);
// RefreshSubscriptionStatus cron 改變訂閱的狀態(時間到了要過期,需要續約自動續約),每 5 分鐘執行一次
rpc RefreshSubscriptionStatus(NoneReq) returns (OKResp);
}
// ========== 優惠券服務 ===========
message Coupon {
string coupon_id = 1; // 優惠券唯一識別碼
string code = 2; // 優惠碼
double discount = 3; // 折扣 (可以是百分比或固定金額)
string discount_type = 4; // 折扣類型 ("percent" 或 "fixed")
string start_date = 5; // 優惠券生效日期 (格式: YYYY-MM-DD)
string end_date = 6; // 優惠券結束日期 (格式: YYYY-MM-DD)
int32 usage_limit = 7; // 使用次數限制
int32 used_count = 8; // 已使用次數
string status = 9; // 優惠券狀態 ("active", "expired", "inactive")
repeated string applicable_product_ids = 10; // 可以使用此優惠券的產品ID列表
bool is_common = 11; // 是否通用
}
message CreateCouponReq {
string code = 1; // 優惠碼
double discount = 2; // 折扣金額或百分比
string discount_type = 3; // 折扣類型 ("percent" 或 "fixed")
int64 start_date = 4; // 生效日期 (格式: YYYY-MM-DD)
int64 end_date = 5; // 結束日期 (格式: YYYY-MM-DD)
int64 usage_limit = 6; // 使用次數限制
bool is_common = 7; // 是否通用
repeated string applicable_product_ids = 8; // 適用的產品ID列表
}
message UpdateCouponReq {
string coupon_id = 1; // 優惠券ID
string code = 2; // 優惠碼
double discount = 3; // 折扣金額或百分比
string discount_type = 4; // 折扣類型 ("percent" 或 "fixed")
int64 start_date = 5; // 生效日期
int64 end_date = 6; // 結束日期
int64 usage_limit = 7; // 使用次數限制
repeated string applicable_product_ids = 8; // 適用的產品ID列表
optional bool is_common = 9; // 是否通用
}
message CouponQueryReq {
string coupon_id = 1; // 優惠券ID
}
message CouponResp {
Coupon coupon = 1; // 優惠券詳情
}
message CouponListReq {
int64 page_index = 1;
int64 page_size = 2;
repeated string coupon_id = 3;
repeated string code = 4;
int64 start_date = 5; // 生效日期
int64 end_date = 6; // 結束日期
repeated string applicable_product_ids = 7; // 適用的產品ID列表
bool is_use_able = 8; // 是否是還可用的
}
message CouponListResp {
repeated Coupon coupons = 1; // 優惠券列表
Pager page = 2;
}
message ValidateCouponReq {
string product_id = 1; // 使用優惠券的產品ID
double order_amount = 2; // 訂單金額
optional string code = 3; // 優惠碼
optional string coupon_id = 4;
}
message CouponValidationResp {
bool is_valid = 1; // 是否有效
string message = 2; // 驗證結果訊息 (如無效的原因或有效的提示)
double discount_applied = 3; // 允許的折扣金額
string coupon_id = 4; // 驗證成功的優惠券ID
}
service CouponService {
// CreateCoupon 創建優惠券
rpc CreateCoupon(CreateCouponReq) returns (CouponResp);
// UpdateCoupon更新優惠券
rpc UpdateCoupon(UpdateCouponReq) returns (CouponResp);
// QueryCoupon查詢優惠券
rpc QueryCoupon(CouponQueryReq) returns (CouponResp);
// DeleteCoupon 刪除優惠券
rpc DeleteCoupon(CouponQueryReq) returns (OKResp);
// ListCoupons列出所有優惠券
rpc ListCoupons(CouponListReq) returns (CouponListResp);
// ValidateCoupon 驗證優惠券 (在下單或支付時使用)
rpc ValidateCoupon(ValidateCouponReq) returns (CouponValidationResp);
}