diff --git a/app/admin/controller/Order.php b/app/admin/controller/Order.php index ab76510..971b43c 100644 --- a/app/admin/controller/Order.php +++ b/app/admin/controller/Order.php @@ -35,7 +35,7 @@ class Order extends AdminBaseController ######################################## 外汇交易 ####################################### - // 合约持仓 + // 外汇持仓 public function forexHold() { $service = new OrderService(); @@ -43,7 +43,7 @@ class Order extends AdminBaseController return json($result); } - // 合约挂单 + // 外汇挂单 public function forexPlace() { $service = new OrderService(); @@ -51,7 +51,7 @@ class Order extends AdminBaseController return json($result); } - // 合约撤单 + // 外汇撤单 public function forexBack() { $service = new OrderService(); @@ -59,7 +59,7 @@ class Order extends AdminBaseController return json($result); } - // 合约平仓 + // 外汇平仓 public function forexClear() { $service = new OrderService(); diff --git a/app/admin/route/app.php b/app/admin/route/app.php index bb6490b..60ae176 100644 --- a/app/admin/route/app.php +++ b/app/admin/route/app.php @@ -38,16 +38,16 @@ Route::group('/', function () { Route::post('/read_num', 'Index/getReamNum'); // 现货订单 - Route::post('/order/digital_place', 'Order/digitalPlace'); - Route::post('/order/digital_back', 'Order/digitalBack'); - Route::post('/order/digital_deal', 'Order/digitalDeal'); + Route::post('/order/digital_place', 'Order/digitalPlace'); // 现货挂单 + Route::post('/order/digital_back', 'Order/digitalBack'); // 现货撤单 + Route::post('/order/digital_deal', 'Order/digitalDeal'); // 现货已完成订单 // 合约订单 - Route::post('/order/contract_hold', 'Order/contractHold'); - Route::post('/order/contract_place', 'Order/contractPlace'); - Route::post('/order/contract_back', 'Order/contractBack'); - Route::post('/order/contract_clear', 'Order/contractClear'); + Route::post('/order/contract_hold', 'Order/contractHold'); // 合约持仓 + Route::post('/order/contract_place', 'Order/contractPlace'); // 合约挂单 + Route::post('/order/contract_back', 'Order/contractBack'); // 合约撤单 + Route::post('/order/contract_clear', 'Order/contractClear'); // 合约平仓 // 秒合约订单 Route::post('/order/contract_sec_hold', 'Order/contractSecHold'); Route::post('/order/contract_sec_place', 'Order/contractSecPlace'); @@ -55,11 +55,11 @@ Route::group('/', function () { Route::post('/order/contract_sec_clear', 'Order/contractSecClear'); - // 外汇订单 - Route::post('/order/forex_hold', 'Order/forexHold'); - Route::post('/order/forex_place', 'Order/forexPlace'); - Route::post('/order/forex_back', 'Order/forexBack'); - Route::post('/order/forex_clear', 'Order/forexClear'); + // 外汇(大宗)订单 + Route::post('/order/forex_hold', 'Order/forexHold'); // 外汇(大宗)持仓 + Route::post('/order/forex_place', 'Order/forexPlace'); // 外汇(大宗)挂单 + Route::post('/order/forex_back', 'Order/forexBack'); // 外汇(大宗)撤单 + Route::post('/order/forex_clear', 'Order/forexClear'); // 外汇(大宗)平仓 // 股票-废弃 diff --git a/app/admin/service/OrderService.php b/app/admin/service/OrderService.php index 1b739b1..d36652a 100644 --- a/app/admin/service/OrderService.php +++ b/app/admin/service/OrderService.php @@ -102,15 +102,11 @@ class OrderService extends AdminBaseService } // 列表 - $list = DigitalTradeModel::where('status', DigitalTradeModel::STATUS_PLACE)->where($where)->order('trade_id', 'desc')->page($param['page'], $param['limit'])->select(); + $list = MoneyTradeModel::where(['market_type'=> MoneyTradeModel::MARKET_TYPE_DIGITAL, 'status' => MoneyTradeModel::STATUS_PLACE])->where($where)->order('trade_id', 'desc')->page($param['page'], $param['limit'])->select(); // 总数 - $total = DigitalTradeModel::where('status', DigitalTradeModel::STATUS_PLACE) - ->where($where) - ->count(); + $total = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_DIGITAL, 'status'=> MoneyTradeModel::STATUS_PLACE])->where($where)->count(); // 持仓总金额 - $totalModel = DigitalTradeModel::where('status', DigitalTradeModel::STATUS_PLACE) - ->field('SUM(order_money) as total') - ->where($where)->find(); + $totalModel = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_DIGITAL, 'status'=> MoneyTradeModel::STATUS_PLACE])->field('SUM(order_money) as total')->where($where)->find(); $rows = []; if (!$list->isEmpty()) { @@ -127,7 +123,7 @@ class OrderService extends AdminBaseService 'order_id' => $item['order_id'], // 用户号 'trade_id' => $item['trade_id'], // 'trade_type' => $item['trade_type'], // - 'trade_type_name' => $item['trade_type'] == DigitalTradeModel::TRADE_TYPE_BUY ? '买入' : '卖出', //交易类型 + 'trade_type_name' => $item['trade_type'] == MoneyTradeModel::TRADE_TYPE_BUY ? '买入' : '卖出', //交易类型 'create_time' => $item['create_time'], // 挂单时间 'order_money' => $item['order_money'], // 订单金额 'digital_id' => $item['digital_id'], // 股票代码 @@ -138,9 +134,13 @@ class OrderService extends AdminBaseService } } - return $this->toData('0', 'SUCCESS', ['total' => $total, 'list' => $rows, - 'extent' => ['totalMoney' => round($totalModel['total'], 4), - ]]); + return $this->toData('0', 'SUCCESS', [ + 'total' => $total, + 'list' => $rows, + 'extent' => [ + 'totalMoney' => empty($totalModel['total']) ? 0 : round($totalModel['total'], 4), + ] + ]); } catch (ValidateException $validateException) { // 参数校验失败 @@ -191,18 +191,14 @@ class OrderService extends AdminBaseService } // 列表 - $list = DigitalTradeModel::where('status', DigitalTradeModel::STATUS_BACk) + $list = MoneyTradeModel::where(['market_type'=> MoneyTradeModel::MARKET_TYPE_DIGITAL, 'status'=>MoneyTradeModel::STATUS_BACK]) ->where($where)->where($whereU) ->order('trade_id', 'desc') ->page($param['page'], $param['limit'])->select(); // 总数 - $total = DigitalTradeModel::where('status', DigitalTradeModel::STATUS_BACk) - ->where($where)->where($whereU) - ->count(); + $total = MoneyTradeModel::where(['market_type'=> MoneyTradeModel::MARKET_TYPE_DIGITAL, 'status'=>MoneyTradeModel::STATUS_BACK])->where($where)->where($whereU)->count(); // 持仓总金额 - $totalModel = DigitalTradeModel::where('status', DigitalTradeModel::STATUS_BACk) - ->field('SUM(order_money) as total') - ->where($where)->where($whereU)->find(); + $totalModel = MoneyTradeModel::where(['market_type'=> MoneyTradeModel::MARKET_TYPE_DIGITAL, 'status'=>MoneyTradeModel::STATUS_BACK])->field('SUM(order_money) as total')->where($where)->where($whereU)->find(); $rows = []; if (!$list->isEmpty()) { @@ -219,7 +215,7 @@ class OrderService extends AdminBaseService 'order_id' => $item['order_id'], // 用户号 'user_no' => $userNoArr[$item['user_id']] ?? '-', // 用户号 'trade_type' => $item['trade_type'], // - 'trade_type_name' => $item['trade_type'] == DigitalTradeModel::TRADE_TYPE_BUY ? '买入' : '卖出', //交易类型 + 'trade_type_name' => $item['trade_type'] == MoneyTradeModel::TRADE_TYPE_BUY ? '买入' : '卖出', //交易类型 'create_time' => $item['create_time'], // 挂单时间 'update_time' => $item['update_time'], // 撤单时间 'order_money' => $item['order_money'], // 订单金额 @@ -231,9 +227,13 @@ class OrderService extends AdminBaseService } } - return $this->toData('0', 'SUCCESS', ['total' => $total, 'list' => $rows, - 'extent' => ['totalMoney' => round($totalModel['total'], 4), - ]]); + return $this->toData('0', 'SUCCESS', [ + 'total' => $total, + 'list' => $rows, + 'extent' => [ + 'totalMoney' => empty($totalModel['total']) ? 0 : round($totalModel['total'], 4), + ] + ]); } catch (ValidateException $validateException) { // 参数校验失败 @@ -284,16 +284,16 @@ class OrderService extends AdminBaseService } // 列表 - $list = DigitalTradeModel::where('status', DigitalTradeModel::STATUS_SUCCESS) + $list = MoneyTradeModel::where('market_type', MoneyTradeModel::MARKET_TYPE_DIGITAL)->where('status', MoneyTradeModel::STATUS_CLEAR) ->where($where)->where($whereU) ->order('trade_id', 'desc') ->page($param['page'], $param['limit'])->select(); // 总数 - $total = DigitalTradeModel::where('status', DigitalTradeModel::STATUS_SUCCESS) + $total = MoneyTradeModel::where('market_type', MoneyTradeModel::MARKET_TYPE_DIGITAL)->where('status', MoneyTradeModel::STATUS_CLEAR) ->where($where)->where($whereU) ->count(); // 持仓总金额 - $totalModel = DigitalTradeModel::where('status', DigitalTradeModel::STATUS_SUCCESS) + $totalModel = MoneyTradeModel::where('market_type', MoneyTradeModel::MARKET_TYPE_DIGITAL)->where('status', MoneyTradeModel::STATUS_CLEAR) ->field('SUM(order_money) as total') ->where($where)->where($whereU)->find(); @@ -324,9 +324,13 @@ class OrderService extends AdminBaseService } } - return $this->toData('0', 'SUCCESS', ['total' => $total, 'list' => $rows, - 'extent' => ['totalMoney' => round($totalModel['total'], 4), - ]]); + return $this->toData('0', 'SUCCESS', [ + 'total' => $total, + 'list' => $rows, + 'extent' => [ + 'totalMoney' => empty($totalModel['total']) ? 0 : round($totalModel['total'], 4), + ] + ]); } catch (ValidateException $validateException) { // 参数校验失败 @@ -380,20 +384,13 @@ class OrderService extends AdminBaseService } // 列表 - $list = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_HOLD)->where($where)->where($whereU)->order('trade_id', 'desc')->page($param['page'], $param['limit'])->select(); + $list = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_FOREX, 'status'=>MoneyTradeModel::STATUS_HOLD])->where($where)->where($whereU)->order('trade_id', 'desc')->page($param['page'], $param['limit'])->select(); // 总数 - $total = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_HOLD) - ->where($where)->where($whereU) - ->count(); + $total = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_FOREX, 'status'=>MoneyTradeModel::STATUS_HOLD])->where($where)->where($whereU)->count(); // 持仓总金额 - $totalModel = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_HOLD) - ->field('SUM(order_money) as total') - ->where($where)->where($whereU)->find(); - + $totalModel = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_FOREX, 'status'=>MoneyTradeModel::STATUS_HOLD])->field('SUM(order_money) as total')->where($where)->where($whereU)->find(); // 持仓总手续费 - $totalServiceCost = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_HOLD) - ->where($where)->where($whereU) - ->sum('service_cost'); + $totalServiceCost = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_FOREX, 'status'=>MoneyTradeModel::STATUS_HOLD])->where($where)->where($whereU)->sum('service_cost'); $rows = []; if (!$list->isEmpty()) { @@ -412,7 +409,7 @@ class OrderService extends AdminBaseService 'open_time' => $item['open_time'], // 挂单时间 'trade_type' => $item['trade_type'] == 1 ? '买涨' : '买跌', 'order_money' => $item['order_money'], // 订单金额 - 'contract_id' => $item['contract_id'], // 合约代码 + 'contract_id' => $item['stock_id'], // 合约代码 'order_number' => $item['order_number'], // 数量 'service_cost' => $item['service_cost'], // 服务费 'float' => '-', // 浮动盈亏 @@ -426,9 +423,14 @@ class OrderService extends AdminBaseService } } - return $this->toData('0', 'SUCCESS', ['total' => $total, 'list' => $rows, - 'extent' => ['totalMoney' => round($totalModel['total'], 4), 'totalServiceCost' => $totalServiceCost, - ]]); + return $this->toData('0', 'SUCCESS', [ + 'total' => $total, + 'list' => $rows, + 'extent' => [ + 'totalMoney' => empty($totalModel['total']) ? 0 : round($totalModel['total'], 4), + 'totalServiceCost' => $totalServiceCost, + ] + ]); } catch (ValidateException $validateException) { // 参数校验失败 @@ -439,7 +441,7 @@ class OrderService extends AdminBaseService } } - // 合约持仓 + // 外汇挂单 public function forexPlace($param, $adminId) { try { @@ -478,15 +480,11 @@ class OrderService extends AdminBaseService } // 列表 - $list = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_PLACE)->where($where)->where($whereU)->order('trade_id', 'desc')->page($param['page'], $param['limit'])->select(); + $list = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_FOREX, 'status'=>MoneyTradeModel::STATUS_PLACE])->where($where)->where($whereU)->order('trade_id', 'desc')->page($param['page'], $param['limit'])->select(); // 总数 - $total = MoneyTradeModel::where('status', ForexTradeModel::STATUS_PLACE) - ->where($where)->where($whereU) - ->count(); + $total = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_FOREX, 'status'=>MoneyTradeModel::STATUS_PLACE])->where($where)->where($whereU)->count(); // 持仓总金额 - $totalModel = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_PLACE) - ->field('SUM(order_money) as total')->where($whereU) - ->where($where)->find(); + $totalModel = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_FOREX, 'status'=>MoneyTradeModel::STATUS_PLACE])->field('SUM(order_money) as total')->where($whereU)->where($where)->find(); $rows = []; if (!$list->isEmpty()) { @@ -505,7 +503,7 @@ class OrderService extends AdminBaseService 'create_time' => $item['create_time'], // 挂单时间 'order_money' => $item['order_money'], // 订单金额 'trade_type' => $item['trade_type'] == 1 ? '买涨' : '买跌', - 'contract_id' => $item['contract_id'], // 合约代码 + 'contract_id' => $item['stock_id'], // 合约代码 'order_number' => $item['order_number'], // 数量 'service_cost' => $item['service_cost'], // 服务费 'deal_price' => $item['deal_price'], // 开仓价 @@ -535,7 +533,7 @@ class OrderService extends AdminBaseService } } - // 合约撤单 + // 外汇撤单 public function forexBack($param, $adminId) { try { @@ -574,15 +572,11 @@ class OrderService extends AdminBaseService } // 列表 - $list = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_BACK)->where($whereU)->where($where)->order('trade_id', 'desc')->page($param['page'], $param['limit'])->select(); + $list = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_FOREX, 'status'=>MoneyTradeModel::STATUS_BACK])->where($whereU)->where($where)->order('trade_id', 'desc')->page($param['page'], $param['limit'])->select(); // 总数 - $total = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_BACK) - ->where($where)->where($whereU) - ->count(); + $total = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_FOREX, 'status'=>MoneyTradeModel::STATUS_BACK])->where($where)->where($whereU)->count(); // 持仓总金额 - $totalModel = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_BACK) - ->field('SUM(order_money) as total')->where($whereU) - ->where($where)->find(); + $totalModel = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_FOREX, 'status'=>MoneyTradeModel::STATUS_BACK])->field('SUM(order_money) as total')->where($whereU)->where($where)->find(); $rows = []; @@ -603,7 +597,7 @@ class OrderService extends AdminBaseService 'update_time' => $item['update_time'], // 挂单时间 'trade_type' => $item['trade_type'] == 1 ? '买涨' : '买跌', 'order_money' => $item['order_money'], // 订单金额 - 'contract_id' => $item['contract_id'], // 合约代码 + 'contract_id' => $item['stock_id'], // 合约代码 'order_number' => $item['order_number'], // 数量 'service_cost' => $item['service_cost'], // 服务费 'face_value' => $item['face_value'], // 浮动盈亏 @@ -620,7 +614,7 @@ class OrderService extends AdminBaseService 'list' => $rows, 'extent' => [ 'totalMoney' => empty($totalModel['total']) ? 0 : round($totalModel['total'], 4), - ] + ] ]); } catch (ValidateException $validateException) { @@ -632,7 +626,7 @@ class OrderService extends AdminBaseService } } - // 合约持仓 + // 外汇持仓 public function forexClear($param, $adminId) { try { @@ -671,21 +665,14 @@ class OrderService extends AdminBaseService } // 列表 - $list = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_CLEAR)->where($whereU)->where($where)->order('trade_id', 'desc')->page($param['page'], $param['limit'])->select(); + $list = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_FOREX, 'status'=>MoneyTradeModel::STATUS_CLEAR])->where($whereU)->where($where)->order('trade_id', 'desc')->page($param['page'], $param['limit'])->select(); // 总数 - $total = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_CLEAR)->where($whereU) - ->where($where) - ->count(); + $total = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_FOREX, 'status'=>MoneyTradeModel::STATUS_CLEAR])->where($where)->count(); // 持仓总手续费 - $totalClosingCost = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_CLEAR) - ->where($whereU) - ->where($where) - ->sum('closing_cost'); + $totalClosingCost = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_FOREX, 'status'=>MoneyTradeModel::STATUS_CLEAR])->where($whereU)->where($where)->sum('closing_cost'); - $totalFloat = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_CLEAR) - ->where($whereU) - ->where($where) + $totalFloat = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_FOREX, 'status'=>MoneyTradeModel::STATUS_CLEAR])->where($whereU)->where($where) ->field("SUM( CASE WHEN trade_type = 1 THEN ( closing_price - deal_price )* order_number ELSE ( deal_price - closing_price )* order_number END ) AS total")->find(); $rows = []; @@ -700,9 +687,9 @@ class OrderService extends AdminBaseService foreach ($list as $item) { // 计算浮动盈亏 if ($item['trade_type'] == 1) { - $float = $item['closing_price'] - $item['deal_price']; + $float = bcsub($item['closing_price'], $item['deal_price'], 18); } else { - $float = $item['deal_price'] - $item['closing_price']; + $float = bcsub($item['deal_price'], $item['closing_price'], 18); } // * 仓位 $float = @bcmul($float, $item['order_number'], 10); @@ -716,7 +703,7 @@ class OrderService extends AdminBaseService 'closing_time' => $item['closing_time'], // 平仓时间 'trade_type' => $item['trade_type'] == 1 ? '买涨' : '买跌', 'order_money' => $item['order_money'], // 订单金额 - 'contract_id' => $item['contract_id'], // 合约代码 + 'contract_id' => $item['stock_id'], // 合约代码 'order_number' => $item['order_number'], // 数量 'service_cost' => $item['service_cost'], // 服务费 'closing_cost' => $item['closing_cost'], // 平仓服务费 @@ -731,11 +718,13 @@ class OrderService extends AdminBaseService } } - return $this->toData('0', 'SUCCESS', ['total' => $total, 'list' => $rows, + return $this->toData('0', 'SUCCESS', [ + 'total' => $total, 'list' => $rows, 'extent' => [ 'totalClosingCost' => $totalClosingCost, 'totalFloat' => $totalFloat['total'], - ]]); + ] + ]); } catch (ValidateException $validateException) { // 参数校验失败 @@ -788,20 +777,13 @@ class OrderService extends AdminBaseService } // 列表 - $list = ContractTradeModel::where('status', ContractTradeModel::STATUS_HOLD)->where($where)->where($whereU)->order('trade_id', 'desc')->page($param['page'], $param['limit'])->select(); + $list = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_CONTRACT, 'status'=>MoneyTradeModel::STATUS_HOLD])->where($where)->where($whereU)->order('trade_id', 'desc')->page($param['page'], $param['limit'])->select(); // 总数 - $total = ContractTradeModel::where('status', ContractTradeModel::STATUS_HOLD) - ->where($where)->where($whereU) - ->count(); + $total = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_CONTRACT, 'status'=>MoneyTradeModel::STATUS_HOLD])->where($where)->where($whereU)->count(); // 持仓总金额 - $totalModel = ContractTradeModel::where('status', ContractTradeModel::STATUS_HOLD) - ->field('SUM(order_money) as total') - ->where($where)->where($whereU)->find(); - + $totalModel = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_CONTRACT, 'status'=>MoneyTradeModel::STATUS_HOLD])->field('SUM(order_money) as total')->where($where)->where($whereU)->find(); // 持仓总手续费 - $totalServiceCost = ContractTradeModel::where('status', ContractTradeModel::STATUS_HOLD) - ->where($where)->where($whereU) - ->sum('service_cost'); + $totalServiceCost = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_CONTRACT, 'status'=>MoneyTradeModel::STATUS_HOLD])->where($where)->where($whereU)->sum('service_cost'); $rows = []; if (!$list->isEmpty()) { @@ -820,7 +802,7 @@ class OrderService extends AdminBaseService 'open_time' => $item['open_time'], // 挂单时间 'trade_type' => $item['trade_type'] == 1 ? '买涨' : '买跌', 'order_money' => $item['order_money'], // 订单金额 - 'contract_id' => $item['contract_id'], // 合约代码 + 'contract_id' => $item['stock_id'], // 合约代码 'order_number' => $item['order_number'], // 数量 'service_cost' => $item['service_cost'], // 服务费 'float' => '-', // 浮动盈亏 @@ -834,9 +816,14 @@ class OrderService extends AdminBaseService } } - return $this->toData('0', 'SUCCESS', ['total' => $total, 'list' => $rows, - 'extent' => ['totalMoney' => round($totalModel['total'], 4), 'totalServiceCost' => $totalServiceCost, - ]]); + return $this->toData('0', 'SUCCESS', [ + 'total' => $total, + 'list' => $rows, + 'extent' => [ + 'totalMoney' => empty($totalModel['total']) ? 0 : round($totalModel['total'], 4), + 'totalServiceCost' => $totalServiceCost, + ] + ]); } catch (ValidateException $validateException) { // 参数校验失败 @@ -847,7 +834,7 @@ class OrderService extends AdminBaseService } } - // 合约持仓 + // 合约挂单 public function contractPlace($param, $adminId) { try { @@ -886,15 +873,11 @@ class OrderService extends AdminBaseService } // 列表 - $list = ContractTradeModel::where('status', ContractTradeModel::STATUS_PLACE)->where($where)->where($whereU)->order('trade_id', 'desc')->page($param['page'], $param['limit'])->select(); + $list = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_CONTRACT, 'status'=>MoneyTradeModel::STATUS_PLACE])->where($where)->where($whereU)->order('trade_id', 'desc')->page($param['page'], $param['limit'])->select(); // 总数 - $total = ContractTradeModel::where('status', ContractTradeModel::STATUS_PLACE) - ->where($where)->where($whereU) - ->count(); + $total = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_CONTRACT, 'status'=>MoneyTradeModel::STATUS_PLACE])->where($where)->where($whereU)->count(); // 持仓总金额 - $totalModel = ContractTradeModel::where('status', ContractTradeModel::STATUS_PLACE) - ->field('SUM(order_money) as total')->where($whereU) - ->where($where)->find(); + $totalModel = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_CONTRACT, 'status'=>MoneyTradeModel::STATUS_PLACE])->field('SUM(order_money) as total')->where($whereU)->where($where)->find(); $rows = []; if (!$list->isEmpty()) { @@ -913,7 +896,7 @@ class OrderService extends AdminBaseService 'create_time' => $item['create_time'], // 挂单时间 'order_money' => $item['order_money'], // 订单金额 'trade_type' => $item['trade_type'] == 1 ? '买涨' : '买跌', - 'contract_id' => $item['contract_id'], // 合约代码 + 'contract_id' => $item['stock_id'], // 合约代码 'order_number' => $item['order_number'], // 数量 'service_cost' => $item['service_cost'], // 服务费 'deal_price' => $item['deal_price'], // 开仓价 @@ -926,9 +909,13 @@ class OrderService extends AdminBaseService } } - return $this->toData('0', 'SUCCESS', ['total' => $total, 'list' => $rows, - 'extent' => ['totalMoney' => round($totalModel['total'], 4), - ]]); + return $this->toData('0', 'SUCCESS', [ + 'total' => $total, + 'list' => $rows, + 'extent' => [ + 'totalMoney' => empty($totalModel['total']) ? 0 : round($totalModel['total'], 4), + ] + ]); } catch (ValidateException $validateException) { // 参数校验失败 @@ -978,15 +965,11 @@ class OrderService extends AdminBaseService } // 列表 - $list = ContractTradeModel::where('status', ContractTradeModel::STATUS_BACK)->where($whereU)->where($where)->order('trade_id', 'desc')->page($param['page'], $param['limit'])->select(); + $list = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_CONTRACT,'status'=>MoneyTradeModel::STATUS_BACK])->where($whereU)->where($where)->order('trade_id', 'desc')->page($param['page'], $param['limit'])->select(); // 总数 - $total = ContractTradeModel::where('status', ContractTradeModel::STATUS_BACK) - ->where($where)->where($whereU) - ->count(); + $total = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_CONTRACT,'status'=>MoneyTradeModel::STATUS_BACK])->where($where)->where($whereU)->count(); // 持仓总金额 - $totalModel = ContractTradeModel::where('status', ContractTradeModel::STATUS_BACK) - ->field('SUM(order_money) as total')->where($whereU) - ->where($where)->find(); + $totalModel = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_CONTRACT,'status'=>MoneyTradeModel::STATUS_BACK])->field('SUM(order_money) as total')->where($whereU)->where($where)->find(); $rows = []; @@ -1007,7 +990,7 @@ class OrderService extends AdminBaseService 'update_time' => $item['update_time'], // 挂单时间 'trade_type' => $item['trade_type'] == 1 ? '买涨' : '买跌', 'order_money' => $item['order_money'], // 订单金额 - 'contract_id' => $item['contract_id'], // 合约代码 + 'contract_id' => $item['stock_id'], // 合约代码 'order_number' => $item['order_number'], // 数量 'service_cost' => $item['service_cost'], // 服务费 'face_value' => $item['face_value'], // 浮动盈亏 @@ -1019,9 +1002,13 @@ class OrderService extends AdminBaseService } } - return $this->toData('0', 'SUCCESS', ['total' => $total, 'list' => $rows, - 'extent' => ['totalMoney' => round($totalModel['total'], 4), - ]]); + return $this->toData('0', 'SUCCESS', [ + 'total' => $total, + 'list' => $rows, + 'extent' => [ + 'totalMoney' => empty($totalModel['total']) ? 0 : round($totalModel['total'], 4), + ] + ]); } catch (ValidateException $validateException) { // 参数校验失败 @@ -1032,7 +1019,7 @@ class OrderService extends AdminBaseService } } - // 合约持仓 + // 合约平仓 public function contractClear($param, $adminId) { try { @@ -1071,21 +1058,14 @@ class OrderService extends AdminBaseService } // 列表 - $list = ContractTradeModel::where('status', ContractTradeModel::STATUS_CLEAR)->where($whereU)->where($where)->order('trade_id', 'desc')->page($param['page'], $param['limit'])->select(); + $list = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_CONTRACT, 'status'=>MoneyTradeModel::STATUS_CLEAR])->where($whereU)->where($where)->order('trade_id', 'desc')->page($param['page'], $param['limit'])->select(); // 总数 - $total = ContractTradeModel::where('status', ContractTradeModel::STATUS_CLEAR)->where($whereU) - ->where($where) - ->count(); + $total = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_CONTRACT, 'status'=>MoneyTradeModel::STATUS_CLEAR])->where($where)->count(); // 持仓总手续费 - $totalClosingCost = ContractTradeModel::where('status', ContractTradeModel::STATUS_CLEAR) - ->where($whereU) - ->where($where) - ->sum('closing_cost'); + $totalClosingCost = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_CONTRACT, 'status'=>MoneyTradeModel::STATUS_CLEAR])->where($whereU)->where($where)->sum('closing_cost'); - $totalFloat = ContractTradeModel::where('status', ContractTradeModel::STATUS_CLEAR) - ->where($whereU) - ->where($where) + $totalFloat = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_CONTRACT, 'status'=>MoneyTradeModel::STATUS_CLEAR])->where($whereU)->where($where) ->field("SUM( CASE WHEN trade_type = 1 THEN ( closing_price - deal_price )* order_number ELSE ( deal_price - closing_price )* order_number END ) AS total")->find(); $rows = []; @@ -1100,9 +1080,9 @@ class OrderService extends AdminBaseService foreach ($list as $item) { // 计算浮动盈亏 if ($item['trade_type'] == 1) { - $float = $item['closing_price'] - $item['deal_price']; + $float = bcsub($item['closing_price'], $item['deal_price'], 18); } else { - $float = $item['deal_price'] - $item['closing_price']; + $float = bcsub($item['deal_price'], $item['closing_price'], 18); } // * 仓位 @@ -1117,7 +1097,7 @@ class OrderService extends AdminBaseService 'closing_time' => $item['closing_time'], // 平仓时间 'trade_type' => $item['trade_type'] == 1 ? '买涨' : '买跌', 'order_money' => $item['order_money'], // 订单金额 - 'contract_id' => $item['contract_id'], // 合约代码 + 'contract_id' => $item['stock_id'], // 合约代码 'order_number' => $item['order_number'], // 数量 'service_cost' => $item['service_cost'], // 服务费 'closing_cost' => $item['closing_cost'], // 平仓服务费 @@ -1501,9 +1481,9 @@ class OrderService extends AdminBaseService foreach ($list as $item) { // 计算浮动盈亏 if ($item['trade_type'] == 1) { - $float = $item['closing_price'] - $item['deal_price']; + $float = bcsub($item['closing_price'], $item['deal_price'], 18); } else { - $float = $item['deal_price'] - $item['closing_price']; + $float = bcsub($item['deal_price'], $item['closing_price'], 18); } // * 仓位 diff --git a/app/model/MoneyTradeModel.php b/app/model/MoneyTradeModel.php index 6a395cd..823bd45 100644 --- a/app/model/MoneyTradeModel.php +++ b/app/model/MoneyTradeModel.php @@ -7,10 +7,18 @@ class MoneyTradeModel extends BaseModel protected $name = 'money_trade'; protected $pk = 'trade_id'; - const STATUS_HOLD = 1;// 持仓 - const STATUS_PLACE = 0;// 挂单 - const STATUS_BACK = 2;// 撤单 - const STATUS_CLEAR = 3;// 平仓 + const STATUS_HOLD = 1; // 持仓 + const STATUS_PLACE = 0; // 挂单 + const STATUS_BACK = 2; // 撤单 + const STATUS_CLEAR = 3; // 平仓 + + const TRADE_TYPE_BUY = 1; + const TRADE_TYPE_SELL = 2; + + const MARKET_TYPE_DIGITAL = 1; //现货 + const MARKET_TYPE_CONTRACT = 2; //合约 + const MARKET_TYPE_FOREX = 19; //大宗(外汇) + /** *获取持仓成本