syntax = "v1"

info (
	title: "云仓服务"// TODO: add title
	desc: // TODO: add description
	author: "daming"
	email: ""
)
import "basic.api"

service inventory {
	//提取云仓货物
	@handler TakeHandler
	post /api/inventory/take(TakeReq) returns (response);
	//获取云仓库存列表
	@handler GetCloudListHandler
	post /api/inventory/list(GetCloudListReq) returns (response);
	//云仓补货
	@handler SupplementHandler
	post /api/inventory/supplement(SupplementReq) returns (response);
	//提货列表
	@handler GetPickupListHandler
	get /api/inventory/pick-up-list(GetPickupListReq) returns (response);
}

//提取云仓货物
type TakeReq {
	Form      []TakeForm `json:"form"`
	AddressId int64      `json:"address_id"`
}
type TakeForm {
	Id  int64 `json:"id"`
	Num int64 `json:"num"`
}
//获取云仓库存列表
type GetCloudListReq {
	Page     int   `json:"page"`
	PageSize int   `json:"page_size"`
	Size     int64 `json:"size"`
}
type GetCloudListRsp {
	WarehouseBoxes int64          `json:"warehouse_boxes"`
	TransitBoxes   int64          `json:"transit_boxes"`
	MinTakeNum     int64          `json:"minTakeNum"`
	ListData       []ListDataItem `json:"listData"`
	Meta           Meta           `json:"_meta"`
}
type ListDataItem {
	Id            int64       `json:"id"`
	Sn            string      `json:"sn"`
	Cover         string      `json:"cover"`
	Name          string      `json:"name"`
	DesignSn      string      `json:"design_sn"`
	Fitting       string      `json:"fitting"`
	Production    int64       `json:"production"`
	ProductionBox int64       `json:"production_box"`
	EachBoxNum    int64       `json:"each_box_num"`
	Stick         int64       `json:"stick"`
	StickBox      int64       `json:"stick_box"`
	Type          int64       `json:"type"`
	TakeNum       int64       `json:"takeNum"`
	Size          string      `json:"size"`
	IsStop        int64       `json:"is_stop"`
	PriceList     []PriceItem `json:"price"`
}
type PriceItem {
	Num      int64 `json:"num"`
	TotalNum int64 `json:"total_num"`
	Price    int64 `json:"price"`
}

//云仓补货
type SupplementReq {
	Id  int64 `json:"id"`
	Num int64 `json:"num"`
}
type SupplementRsp {
	Sn string `json:"sn"`
}

//提货列表
type GetPickupListReq {
	Status   int64 `form:"status,options=-1|1|2|3|4"`
	Page     int   `form:"page"`
	PageSize int   `form:"page_size"`
	Size     int   `form:"size"`
}
type GetPickupListRsp {
	PickupList []PickupItem `json:"items"`
	Meta       Meta         `json:"_meta"`
}
type PickupItem {
	Id              int64             `json:"id"`
	UserId          int64             `json:"user_id"`
	TrackNum        string            `json:"track_num"`
	Ctime           string            `json:"ctime"`
	Status          int64             `json:"status"`
	UpsSn           string            `json:"ups_sn"`
	Address         string            `json:"address"`
	ProductList     []Product         `json:"productList"`
	Pcs             int64             `json:"pcs"`
	PcsBox          int64             `json:"pcs_box"`
	LogisticsStatus int64             `json:"logistics_status"`
	StatusTimes     []StatusTimesItem `json:"status_times"`
}
type Product {
	Id          int64  `json:"id"`
	PickId      int64  `json:"pick_id"`
	StockId     int64  `json:"stock_id"`
	Num         int64  `json:"num"`
	Boxes       int64  `json:"boxes"`
	Ctime       int64  `json:"ctime"`
	ProductName string `json:"product_name"`
	Pcs         int64  `json:"pcs"`
	PcsBox      int64  `json:"pcs_box"`
	Cover       string `json:"cover"`
	Size        string `json:"size"`
	Fitting     string `json:"fitting"`
}
type StatusTimesItem {
	Key  int64  `json:"key"`
	Time string `json:"time"`
}