PerpetualContractService = $PerpetualContractService; } #下单 public function order_placement(Request $request) { if ($data = $this->verifyField($request->all(), [ 'type' => 'required|integer|in:1,2', //委托类型 1限价交易 2市价交易 'contract_code' => 'required|String', //合约代码取值范围BTC-USD 'entrust_price' => 'required_if:type,1|numeric', //委托价格 'direction' => 'required|string|in:buy,sell', //买卖方向 buy":买,"sell":卖 'offset' => 'required|String|in:open,close', //开仓平仓 open",开,"close"平 'volume' => 'required|numeric', //委托数量(张) 'lever_rate' => 'required|numeric', //委托数量 杠杆倍数 'client_order_id' => 'required|String', //委托数量 客户端订单必须保持唯一 ])) return $data; $array = $request->only(['type', 'contract_code', 'entrust_price', 'direction', 'offset', 'volume', 'lever_rate', 'client_order_id', 'exchange_coin_id']); $user = $this->current_user(); $orderLockKey = 'inside_entrust_lock:' . $user['user_id']; if (!$this->setKeyLock($orderLockKey, 3)) { //订单锁 return $this->error(); } if ($request->direction == 'buy') { $res = $this->PerpetualContractService->buyLong($user, $array); } else { $res = $this->PerpetualContractService->sellShort($user, $array); } if (!$res) { return $this->error(0, '下单失败,请稍后重试'); } return $res; } #撤单 public function cancelOrder(Request $request) { } #批量撤单 public function bulkCancellation(Request $request) { } #当前委托 public function current_commission(Request $request) { if ($vr = $this->verifyField($request->all(), [ 'direction' => 'string|in:buy,sell', //买卖方向 'type' => 'integer|in:1,2', //委托类型 1限价交易 2市价交易 'contract_code' => 'required|String', //交易对 参数格式:BTC-USDT ])) return $vr; $user = $this->current_user(); $params = $request->only(['direction', 'type', 'contract_code']); $data = $this->PerpetualContractService->currentCommission($user, $params); return $this->successWithData($data); } #持仓信息 public function contract_position(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; // $client_order_id= $request->input("client_order_id"); // $contract_code = $request->input("contract_code"); // $contract_code = $request->input("contract_code"); if ($vr = $this->verifyField($request->all(), [ 'client_order_id' => 'required|String', //客户端订单ID 'contract_code' => 'required|String', //合约代码取值范围BTC-USD 'margin_mode' => 'required|string|in:crossed,fixed', //仓位 模式 全仓 crossed fixed 逐仓 ])) return $vr; $params = $request->only(['client_order_id', 'margin_mode', 'contract_code']); return $this->PerpetualContractService->contractPosition($user_id, $params); } #历史委托 public function historical_commission(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; $contract_code = $request->input('contract_code'); return $this->PerpetualContractService->historicalCommission($user_id, $contract_code); } }