syntax = "v1"

info (
	title: "订单模块"
	desc: "订单相关"
	author: ""
	email: ""
)

import "basic.api"

service order {

	@handler CreateOrderHandler
	post /api/order/create(CreateOrderReq) returns (response);

	@handler CreatePrePaymentByDepositHandler
	post /api/order/create-prepayment-deposit(CreatePrePaymentByDepositReq) returns (response);

	@handler CreatePrePaymentByBalanceHandler
	post /api/order/create-prepayment-balance(CreatePrePaymentByBalanceReq) returns (response);

	@handler OrderListHandler
	get /api/order/list(OrderListReq) returns (response);

	@handler OrderDetailHandler
	get /api/order/detail(OrderDetailReq) returns (response);

}

type OrderDetailReq {
	OrderSn string `form:"order_sn"`
}

type CreateOrderReq {
	CartIds []int64 `json:"cart_ids"`
	// DeliveryMethod int64   `json:"delivery_method,optional,options=[1,2],default=2"`
}

type CreatePrePaymentByDepositReq {
	OrderSn         string           `json:"order_sn"`
	DeliveryMethod  int64            `json:"delivery_method,options=[1,2]"`
	DeliveryAddress *DeliveryAddress `json:"delivery_address,optional"`
}

type DeliveryAddress {
	Address string `json:"address,optional"`
	Name    string `json:"name,optional"`
	Mobile  string `json:"mobile,optional"`
}

type CreatePrePaymentByBalanceReq {
	OrderSn string `json:"order_sn"`
}

type OrderListReq {
	DeliveryMethod int64  `form:"delivery_method,options=[0,1,2],optional"`
	OrderCycle     string `form:"order_cycle,optional,options=[within_one_month,within_three_month,within_six_month,within_one_year]"`
	CurrentPage    int64  `form:"current_page,optional,default=1"`
	PerPage        int64  `form:"per_page,optional,default=10"`
}