syntax = "proto3";

package matchmaking.v1;

import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto";

option go_package = "matchmaking-system/api/matchmaking/v1;v1";

service Contract {
  // GetBotContractTrade 合约列表查询
  rpc GetBotContractTrade(GetBotContractTradeRequest)returns(GetBotContractTradeReply){
    option (google.api.http) = {
      post:"/order_contract/contract_list",
      body:"*",
    };
  }
  // ContractPlaceOrder 合约下单
  rpc ContractPlaceOrder(ContractRequest)returns(ContractReply){
    option (google.api.http) = {
      post: "/order_contract/contract_place_order",
      body: "*",
    };
  }
  // ContractUpdatePlaceOrder 合约设置止盈止损
  rpc ContractUpdatePlaceOrder(UpdateContractRequest)returns(ContractReply){
    option (google.api.http) = {
      post: "/order_contract/contract_update_order",
      body: "*",
    };
  }
  // ContractPosition 合约平仓
  rpc ContractPosition(CancelContractRequest)returns(ContractReply){
    option (google.api.http) = {
      post:"/order_contract/contract_position",
      body:"*",
    };
  }
  // ContractAllPosition 合约一键平仓
  rpc ContractAllPosition(AllContractRequest)returns(AllContractReply){
    option (google.api.http) = {
      post:"/order_contract/contract_all_position",
      body:"*",
    };
  }
  // ContractCancel 合约撤单
  rpc ContractCancel(CancelContractRequest)returns(ContractReply){
    option (google.api.http) = {
      post:"/order_contract/contract_cancel",
      body:"*",
    };
  }
}

message GetBotContractTradeRequest{
  int64 status =1;// 状态码
  int64 pageSize =2; // 每页显示条数
  int64 pageCount =3;// 开始的位置
  int64 state = 4;// 订单类型
}

message GetBotContractTradeReply{
  int64 code =1;// 状态码
  BotContractTradeData data =2;// 返回结果
  string message =3;// 返回消息提示
}

message BotContractTradeData{
  int64 pageSize =1; // 每页显示条数
  int64 pageCount =2;// 开始的位置
  repeated BotContractTrade data =3;// 返回结果
  int64 totalCount =4;// 总数据
}

message BotContractTrade{
  string orderId =1;// 订单ID
  string contractId =2;// 合约ID
  int64 tradeType =3;// 交易类型
  int64 dealType =4;// 交易方式
  string limitPrice =5;// 限价
  string marketPrice =6;// 市价
  string dealPrice =7;// 开仓价
  string closingPrice =8;// 平仓价
  string orderNumber =9;// 订单数量
  int64  stopType =10;// 止盈止损状态
  string stopLossPrice =11;// 止损
  string stopWinPrice =12;// 止盈
  string serviceCost =13;// 开仓手续费
  string earnestMoney =14;// 保证金
  string orderMoney =15;// 订单总额
  int64 status =16;// 订单状态
  google.protobuf.Timestamp createTime =17;// 订单创建时间
  google.protobuf.Timestamp updateTime =18;// 订单更新时间
  google.protobuf.Timestamp openTime =19;// 订单开仓时间
  google.protobuf.Timestamp closingTime =20;// 订单平仓时间
  string closingCost =21;// 平仓手续费
  string faceValue =22;// 面值
  string overnightCost =23;// 过夜手续费
  string pryNum =24;// 杠杆值
  string keepDecimal =25;// 保留小数位
  string secondTime = 26;// 秒合约时间
  int64 state = 27;// 订单类型
}

message ContractRequest{
  string contractId =1;// 交易对
  int64 tradeType =2;// 交易类型:1买入,2卖出
  int64 dealType =3;// 委托方式:1限价,2市价
  string limitPrice =4;// 限价
  string marketPrice =5;// 市价
  string orderAmount =6;// 订单金额
  string orderNumber =7;// 订单数量
  string earnestMoney =8;// 保证金
  string serviceCost =9;// 手续费
  int64 stopType =10;// 止损止盈设置:0无设置,1止损止盈
  string stopLossPrice =11;// 止损
  string stopWinPrice =12;// 止盈
  string pryNum =13;//杠杆
  int64  time = 14;// 秒合约时间
}

message ContractReply{
  int64 code =1;// 状态码
  ContractResult data =2;// 返回结果
  string message =3;// 返回消息提示
}

message ContractResult {
  string orderId =1;// 订单Id
}

message UpdateContractRequest{
  string orderId =1;// 订单Id
  int64 stopType =2;// 止盈止损
  string stopLossPrice =3;// 止损
  string stopWinPrice =4;// 止盈
}

message CancelContractRequest{
  string orderId =1;// 订单ID
}

message AllContractRequest{

}

message AllContractReply{
  int64 code =1;// 状态码
  string data =2;// 返回结果
  string message =3;// 返回消息提示
}