chuan 2 months ago
parent
commit
d8578ddb59
  1. 8
      app/admin/controller/Order.php
  2. 24
      app/admin/route/app.php
  3. 246
      app/admin/service/OrderService.php
  4. 16
      app/model/MoneyTradeModel.php

8
app/admin/controller/Order.php

@ -35,7 +35,7 @@ class Order extends AdminBaseController
######################################## 外汇交易 ####################################### ######################################## 外汇交易 #######################################
// 合约持仓 // 外汇持仓
public function forexHold() public function forexHold()
{ {
$service = new OrderService(); $service = new OrderService();
@ -43,7 +43,7 @@ class Order extends AdminBaseController
return json($result); return json($result);
} }
// 合约挂单 // 外汇挂单
public function forexPlace() public function forexPlace()
{ {
$service = new OrderService(); $service = new OrderService();
@ -51,7 +51,7 @@ class Order extends AdminBaseController
return json($result); return json($result);
} }
// 合约撤单 // 外汇撤单
public function forexBack() public function forexBack()
{ {
$service = new OrderService(); $service = new OrderService();
@ -59,7 +59,7 @@ class Order extends AdminBaseController
return json($result); return json($result);
} }
// 合约平仓 // 外汇平仓
public function forexClear() public function forexClear()
{ {
$service = new OrderService(); $service = new OrderService();

24
app/admin/route/app.php

@ -38,16 +38,16 @@ Route::group('/', function () {
Route::post('/read_num', 'Index/getReamNum'); Route::post('/read_num', 'Index/getReamNum');
// 现货订单 // 现货订单
Route::post('/order/digital_place', 'Order/digitalPlace'); Route::post('/order/digital_place', 'Order/digitalPlace'); // 现货挂单
Route::post('/order/digital_back', 'Order/digitalBack'); Route::post('/order/digital_back', 'Order/digitalBack'); // 现货撤单
Route::post('/order/digital_deal', 'Order/digitalDeal'); Route::post('/order/digital_deal', 'Order/digitalDeal'); // 现货已完成订单
// 合约订单 // 合约订单
Route::post('/order/contract_hold', 'Order/contractHold'); Route::post('/order/contract_hold', 'Order/contractHold'); // 合约持仓
Route::post('/order/contract_place', 'Order/contractPlace'); Route::post('/order/contract_place', 'Order/contractPlace'); // 合约挂单
Route::post('/order/contract_back', 'Order/contractBack'); Route::post('/order/contract_back', 'Order/contractBack'); // 合约撤单
Route::post('/order/contract_clear', 'Order/contractClear'); Route::post('/order/contract_clear', 'Order/contractClear'); // 合约平仓
// 秒合约订单 // 秒合约订单
Route::post('/order/contract_sec_hold', 'Order/contractSecHold'); Route::post('/order/contract_sec_hold', 'Order/contractSecHold');
Route::post('/order/contract_sec_place', 'Order/contractSecPlace'); 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/contract_sec_clear', 'Order/contractSecClear');
// 外汇订单 // 外汇(大宗)订单
Route::post('/order/forex_hold', 'Order/forexHold'); Route::post('/order/forex_hold', 'Order/forexHold'); // 外汇(大宗)持仓
Route::post('/order/forex_place', 'Order/forexPlace'); Route::post('/order/forex_place', 'Order/forexPlace'); // 外汇(大宗)挂单
Route::post('/order/forex_back', 'Order/forexBack'); Route::post('/order/forex_back', 'Order/forexBack'); // 外汇(大宗)撤单
Route::post('/order/forex_clear', 'Order/forexClear'); Route::post('/order/forex_clear', 'Order/forexClear'); // 外汇(大宗)平仓
// 股票-废弃 // 股票-废弃

246
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) $total = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_DIGITAL, 'status'=> MoneyTradeModel::STATUS_PLACE])->where($where)->count();
->where($where)
->count();
// 持仓总金额 // 持仓总金额
$totalModel = DigitalTradeModel::where('status', DigitalTradeModel::STATUS_PLACE) $totalModel = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_DIGITAL, 'status'=> MoneyTradeModel::STATUS_PLACE])->field('SUM(order_money) as total')->where($where)->find();
->field('SUM(order_money) as total')
->where($where)->find();
$rows = []; $rows = [];
if (!$list->isEmpty()) { if (!$list->isEmpty()) {
@ -127,7 +123,7 @@ class OrderService extends AdminBaseService
'order_id' => $item['order_id'], // 用户号 'order_id' => $item['order_id'], // 用户号
'trade_id' => $item['trade_id'], // 'trade_id' => $item['trade_id'], //
'trade_type' => $item['trade_type'], // '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'], // 挂单时间 'create_time' => $item['create_time'], // 挂单时间
'order_money' => $item['order_money'], // 订单金额 'order_money' => $item['order_money'], // 订单金额
'digital_id' => $item['digital_id'], // 股票代码 'digital_id' => $item['digital_id'], // 股票代码
@ -138,9 +134,13 @@ class OrderService extends AdminBaseService
} }
} }
return $this->toData('0', 'SUCCESS', ['total' => $total, 'list' => $rows, return $this->toData('0', 'SUCCESS', [
'extent' => ['totalMoney' => round($totalModel['total'], 4), 'total' => $total,
]]); 'list' => $rows,
'extent' => [
'totalMoney' => empty($totalModel['total']) ? 0 : round($totalModel['total'], 4),
]
]);
} catch (ValidateException $validateException) { } 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) ->where($where)->where($whereU)
->order('trade_id', 'desc') ->order('trade_id', 'desc')
->page($param['page'], $param['limit'])->select(); ->page($param['page'], $param['limit'])->select();
// 总数 // 总数
$total = DigitalTradeModel::where('status', DigitalTradeModel::STATUS_BACk) $total = MoneyTradeModel::where(['market_type'=> MoneyTradeModel::MARKET_TYPE_DIGITAL, 'status'=>MoneyTradeModel::STATUS_BACK])->where($where)->where($whereU)->count();
->where($where)->where($whereU)
->count();
// 持仓总金额 // 持仓总金额
$totalModel = DigitalTradeModel::where('status', DigitalTradeModel::STATUS_BACk) $totalModel = MoneyTradeModel::where(['market_type'=> MoneyTradeModel::MARKET_TYPE_DIGITAL, 'status'=>MoneyTradeModel::STATUS_BACK])->field('SUM(order_money) as total')->where($where)->where($whereU)->find();
->field('SUM(order_money) as total')
->where($where)->where($whereU)->find();
$rows = []; $rows = [];
if (!$list->isEmpty()) { if (!$list->isEmpty()) {
@ -219,7 +215,7 @@ class OrderService extends AdminBaseService
'order_id' => $item['order_id'], // 用户号 'order_id' => $item['order_id'], // 用户号
'user_no' => $userNoArr[$item['user_id']] ?? '-', // 用户号 'user_no' => $userNoArr[$item['user_id']] ?? '-', // 用户号
'trade_type' => $item['trade_type'], // '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'], // 挂单时间 'create_time' => $item['create_time'], // 挂单时间
'update_time' => $item['update_time'], // 撤单时间 'update_time' => $item['update_time'], // 撤单时间
'order_money' => $item['order_money'], // 订单金额 'order_money' => $item['order_money'], // 订单金额
@ -231,9 +227,13 @@ class OrderService extends AdminBaseService
} }
} }
return $this->toData('0', 'SUCCESS', ['total' => $total, 'list' => $rows, return $this->toData('0', 'SUCCESS', [
'extent' => ['totalMoney' => round($totalModel['total'], 4), 'total' => $total,
]]); 'list' => $rows,
'extent' => [
'totalMoney' => empty($totalModel['total']) ? 0 : round($totalModel['total'], 4),
]
]);
} catch (ValidateException $validateException) { } 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) ->where($where)->where($whereU)
->order('trade_id', 'desc') ->order('trade_id', 'desc')
->page($param['page'], $param['limit'])->select(); ->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) ->where($where)->where($whereU)
->count(); ->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') ->field('SUM(order_money) as total')
->where($where)->where($whereU)->find(); ->where($where)->where($whereU)->find();
@ -324,9 +324,13 @@ class OrderService extends AdminBaseService
} }
} }
return $this->toData('0', 'SUCCESS', ['total' => $total, 'list' => $rows, return $this->toData('0', 'SUCCESS', [
'extent' => ['totalMoney' => round($totalModel['total'], 4), 'total' => $total,
]]); 'list' => $rows,
'extent' => [
'totalMoney' => empty($totalModel['total']) ? 0 : round($totalModel['total'], 4),
]
]);
} catch (ValidateException $validateException) { } 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) $total = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_FOREX, 'status'=>MoneyTradeModel::STATUS_HOLD])->where($where)->where($whereU)->count();
->where($where)->where($whereU)
->count();
// 持仓总金额 // 持仓总金额
$totalModel = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_HOLD) $totalModel = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_FOREX, 'status'=>MoneyTradeModel::STATUS_HOLD])->field('SUM(order_money) as total')->where($where)->where($whereU)->find();
->field('SUM(order_money) as total')
->where($where)->where($whereU)->find();
// 持仓总手续费 // 持仓总手续费
$totalServiceCost = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_HOLD) $totalServiceCost = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_FOREX, 'status'=>MoneyTradeModel::STATUS_HOLD])->where($where)->where($whereU)->sum('service_cost');
->where($where)->where($whereU)
->sum('service_cost');
$rows = []; $rows = [];
if (!$list->isEmpty()) { if (!$list->isEmpty()) {
@ -412,7 +409,7 @@ class OrderService extends AdminBaseService
'open_time' => $item['open_time'], // 挂单时间 'open_time' => $item['open_time'], // 挂单时间
'trade_type' => $item['trade_type'] == 1 ? '买涨' : '买跌', 'trade_type' => $item['trade_type'] == 1 ? '买涨' : '买跌',
'order_money' => $item['order_money'], // 订单金额 'order_money' => $item['order_money'], // 订单金额
'contract_id' => $item['contract_id'], // 合约代码 'contract_id' => $item['stock_id'], // 合约代码
'order_number' => $item['order_number'], // 数量 'order_number' => $item['order_number'], // 数量
'service_cost' => $item['service_cost'], // 服务费 'service_cost' => $item['service_cost'], // 服务费
'float' => '-', // 浮动盈亏 'float' => '-', // 浮动盈亏
@ -426,9 +423,14 @@ class OrderService extends AdminBaseService
} }
} }
return $this->toData('0', 'SUCCESS', ['total' => $total, 'list' => $rows, return $this->toData('0', 'SUCCESS', [
'extent' => ['totalMoney' => round($totalModel['total'], 4), 'totalServiceCost' => $totalServiceCost, 'total' => $total,
]]); 'list' => $rows,
'extent' => [
'totalMoney' => empty($totalModel['total']) ? 0 : round($totalModel['total'], 4),
'totalServiceCost' => $totalServiceCost,
]
]);
} catch (ValidateException $validateException) { } catch (ValidateException $validateException) {
// 参数校验失败 // 参数校验失败
@ -439,7 +441,7 @@ class OrderService extends AdminBaseService
} }
} }
// 合约持仓 // 外汇挂单
public function forexPlace($param, $adminId) public function forexPlace($param, $adminId)
{ {
try { 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) $total = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_FOREX, 'status'=>MoneyTradeModel::STATUS_PLACE])->where($where)->where($whereU)->count();
->where($where)->where($whereU)
->count();
// 持仓总金额 // 持仓总金额
$totalModel = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_PLACE) $totalModel = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_FOREX, 'status'=>MoneyTradeModel::STATUS_PLACE])->field('SUM(order_money) as total')->where($whereU)->where($where)->find();
->field('SUM(order_money) as total')->where($whereU)
->where($where)->find();
$rows = []; $rows = [];
if (!$list->isEmpty()) { if (!$list->isEmpty()) {
@ -505,7 +503,7 @@ class OrderService extends AdminBaseService
'create_time' => $item['create_time'], // 挂单时间 'create_time' => $item['create_time'], // 挂单时间
'order_money' => $item['order_money'], // 订单金额 'order_money' => $item['order_money'], // 订单金额
'trade_type' => $item['trade_type'] == 1 ? '买涨' : '买跌', 'trade_type' => $item['trade_type'] == 1 ? '买涨' : '买跌',
'contract_id' => $item['contract_id'], // 合约代码 'contract_id' => $item['stock_id'], // 合约代码
'order_number' => $item['order_number'], // 数量 'order_number' => $item['order_number'], // 数量
'service_cost' => $item['service_cost'], // 服务费 'service_cost' => $item['service_cost'], // 服务费
'deal_price' => $item['deal_price'], // 开仓价 'deal_price' => $item['deal_price'], // 开仓价
@ -535,7 +533,7 @@ class OrderService extends AdminBaseService
} }
} }
// 合约撤单 // 外汇撤单
public function forexBack($param, $adminId) public function forexBack($param, $adminId)
{ {
try { 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) $total = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_FOREX, 'status'=>MoneyTradeModel::STATUS_BACK])->where($where)->where($whereU)->count();
->where($where)->where($whereU)
->count();
// 持仓总金额 // 持仓总金额
$totalModel = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_BACK) $totalModel = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_FOREX, 'status'=>MoneyTradeModel::STATUS_BACK])->field('SUM(order_money) as total')->where($whereU)->where($where)->find();
->field('SUM(order_money) as total')->where($whereU)
->where($where)->find();
$rows = []; $rows = [];
@ -603,7 +597,7 @@ class OrderService extends AdminBaseService
'update_time' => $item['update_time'], // 挂单时间 'update_time' => $item['update_time'], // 挂单时间
'trade_type' => $item['trade_type'] == 1 ? '买涨' : '买跌', 'trade_type' => $item['trade_type'] == 1 ? '买涨' : '买跌',
'order_money' => $item['order_money'], // 订单金额 'order_money' => $item['order_money'], // 订单金额
'contract_id' => $item['contract_id'], // 合约代码 'contract_id' => $item['stock_id'], // 合约代码
'order_number' => $item['order_number'], // 数量 'order_number' => $item['order_number'], // 数量
'service_cost' => $item['service_cost'], // 服务费 'service_cost' => $item['service_cost'], // 服务费
'face_value' => $item['face_value'], // 浮动盈亏 'face_value' => $item['face_value'], // 浮动盈亏
@ -632,7 +626,7 @@ class OrderService extends AdminBaseService
} }
} }
// 合约持仓 // 外汇持仓
public function forexClear($param, $adminId) public function forexClear($param, $adminId)
{ {
try { 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) $total = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_FOREX, 'status'=>MoneyTradeModel::STATUS_CLEAR])->where($where)->count();
->where($where)
->count();
// 持仓总手续费 // 持仓总手续费
$totalClosingCost = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_CLEAR) $totalClosingCost = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_FOREX, 'status'=>MoneyTradeModel::STATUS_CLEAR])->where($whereU)->where($where)->sum('closing_cost');
->where($whereU)
->where($where)
->sum('closing_cost');
$totalFloat = MoneyTradeModel::where('status', MoneyTradeModel::STATUS_CLEAR) $totalFloat = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_FOREX, 'status'=>MoneyTradeModel::STATUS_CLEAR])->where($whereU)->where($where)
->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(); ->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 = []; $rows = [];
@ -700,9 +687,9 @@ class OrderService extends AdminBaseService
foreach ($list as $item) { foreach ($list as $item) {
// 计算浮动盈亏 // 计算浮动盈亏
if ($item['trade_type'] == 1) { if ($item['trade_type'] == 1) {
$float = $item['closing_price'] - $item['deal_price']; $float = bcsub($item['closing_price'], $item['deal_price'], 18);
} else { } else {
$float = $item['deal_price'] - $item['closing_price']; $float = bcsub($item['deal_price'], $item['closing_price'], 18);
} }
// * 仓位 // * 仓位
$float = @bcmul($float, $item['order_number'], 10); $float = @bcmul($float, $item['order_number'], 10);
@ -716,7 +703,7 @@ class OrderService extends AdminBaseService
'closing_time' => $item['closing_time'], // 平仓时间 'closing_time' => $item['closing_time'], // 平仓时间
'trade_type' => $item['trade_type'] == 1 ? '买涨' : '买跌', 'trade_type' => $item['trade_type'] == 1 ? '买涨' : '买跌',
'order_money' => $item['order_money'], // 订单金额 'order_money' => $item['order_money'], // 订单金额
'contract_id' => $item['contract_id'], // 合约代码 'contract_id' => $item['stock_id'], // 合约代码
'order_number' => $item['order_number'], // 数量 'order_number' => $item['order_number'], // 数量
'service_cost' => $item['service_cost'], // 服务费 'service_cost' => $item['service_cost'], // 服务费
'closing_cost' => $item['closing_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' => [ 'extent' => [
'totalClosingCost' => $totalClosingCost, 'totalClosingCost' => $totalClosingCost,
'totalFloat' => $totalFloat['total'], 'totalFloat' => $totalFloat['total'],
]]); ]
]);
} catch (ValidateException $validateException) { } 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) $total = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_CONTRACT, 'status'=>MoneyTradeModel::STATUS_HOLD])->where($where)->where($whereU)->count();
->where($where)->where($whereU)
->count();
// 持仓总金额 // 持仓总金额
$totalModel = ContractTradeModel::where('status', ContractTradeModel::STATUS_HOLD) $totalModel = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_CONTRACT, 'status'=>MoneyTradeModel::STATUS_HOLD])->field('SUM(order_money) as total')->where($where)->where($whereU)->find();
->field('SUM(order_money) as total')
->where($where)->where($whereU)->find();
// 持仓总手续费 // 持仓总手续费
$totalServiceCost = ContractTradeModel::where('status', ContractTradeModel::STATUS_HOLD) $totalServiceCost = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_CONTRACT, 'status'=>MoneyTradeModel::STATUS_HOLD])->where($where)->where($whereU)->sum('service_cost');
->where($where)->where($whereU)
->sum('service_cost');
$rows = []; $rows = [];
if (!$list->isEmpty()) { if (!$list->isEmpty()) {
@ -820,7 +802,7 @@ class OrderService extends AdminBaseService
'open_time' => $item['open_time'], // 挂单时间 'open_time' => $item['open_time'], // 挂单时间
'trade_type' => $item['trade_type'] == 1 ? '买涨' : '买跌', 'trade_type' => $item['trade_type'] == 1 ? '买涨' : '买跌',
'order_money' => $item['order_money'], // 订单金额 'order_money' => $item['order_money'], // 订单金额
'contract_id' => $item['contract_id'], // 合约代码 'contract_id' => $item['stock_id'], // 合约代码
'order_number' => $item['order_number'], // 数量 'order_number' => $item['order_number'], // 数量
'service_cost' => $item['service_cost'], // 服务费 'service_cost' => $item['service_cost'], // 服务费
'float' => '-', // 浮动盈亏 'float' => '-', // 浮动盈亏
@ -834,9 +816,14 @@ class OrderService extends AdminBaseService
} }
} }
return $this->toData('0', 'SUCCESS', ['total' => $total, 'list' => $rows, return $this->toData('0', 'SUCCESS', [
'extent' => ['totalMoney' => round($totalModel['total'], 4), 'totalServiceCost' => $totalServiceCost, 'total' => $total,
]]); 'list' => $rows,
'extent' => [
'totalMoney' => empty($totalModel['total']) ? 0 : round($totalModel['total'], 4),
'totalServiceCost' => $totalServiceCost,
]
]);
} catch (ValidateException $validateException) { } catch (ValidateException $validateException) {
// 参数校验失败 // 参数校验失败
@ -847,7 +834,7 @@ class OrderService extends AdminBaseService
} }
} }
// 合约持仓 // 合约挂单
public function contractPlace($param, $adminId) public function contractPlace($param, $adminId)
{ {
try { 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) $total = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_CONTRACT, 'status'=>MoneyTradeModel::STATUS_PLACE])->where($where)->where($whereU)->count();
->where($where)->where($whereU)
->count();
// 持仓总金额 // 持仓总金额
$totalModel = ContractTradeModel::where('status', ContractTradeModel::STATUS_PLACE) $totalModel = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_CONTRACT, 'status'=>MoneyTradeModel::STATUS_PLACE])->field('SUM(order_money) as total')->where($whereU)->where($where)->find();
->field('SUM(order_money) as total')->where($whereU)
->where($where)->find();
$rows = []; $rows = [];
if (!$list->isEmpty()) { if (!$list->isEmpty()) {
@ -913,7 +896,7 @@ class OrderService extends AdminBaseService
'create_time' => $item['create_time'], // 挂单时间 'create_time' => $item['create_time'], // 挂单时间
'order_money' => $item['order_money'], // 订单金额 'order_money' => $item['order_money'], // 订单金额
'trade_type' => $item['trade_type'] == 1 ? '买涨' : '买跌', 'trade_type' => $item['trade_type'] == 1 ? '买涨' : '买跌',
'contract_id' => $item['contract_id'], // 合约代码 'contract_id' => $item['stock_id'], // 合约代码
'order_number' => $item['order_number'], // 数量 'order_number' => $item['order_number'], // 数量
'service_cost' => $item['service_cost'], // 服务费 'service_cost' => $item['service_cost'], // 服务费
'deal_price' => $item['deal_price'], // 开仓价 'deal_price' => $item['deal_price'], // 开仓价
@ -926,9 +909,13 @@ class OrderService extends AdminBaseService
} }
} }
return $this->toData('0', 'SUCCESS', ['total' => $total, 'list' => $rows, return $this->toData('0', 'SUCCESS', [
'extent' => ['totalMoney' => round($totalModel['total'], 4), 'total' => $total,
]]); 'list' => $rows,
'extent' => [
'totalMoney' => empty($totalModel['total']) ? 0 : round($totalModel['total'], 4),
]
]);
} catch (ValidateException $validateException) { } 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) $total = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_CONTRACT,'status'=>MoneyTradeModel::STATUS_BACK])->where($where)->where($whereU)->count();
->where($where)->where($whereU)
->count();
// 持仓总金额 // 持仓总金额
$totalModel = ContractTradeModel::where('status', ContractTradeModel::STATUS_BACK) $totalModel = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_CONTRACT,'status'=>MoneyTradeModel::STATUS_BACK])->field('SUM(order_money) as total')->where($whereU)->where($where)->find();
->field('SUM(order_money) as total')->where($whereU)
->where($where)->find();
$rows = []; $rows = [];
@ -1007,7 +990,7 @@ class OrderService extends AdminBaseService
'update_time' => $item['update_time'], // 挂单时间 'update_time' => $item['update_time'], // 挂单时间
'trade_type' => $item['trade_type'] == 1 ? '买涨' : '买跌', 'trade_type' => $item['trade_type'] == 1 ? '买涨' : '买跌',
'order_money' => $item['order_money'], // 订单金额 'order_money' => $item['order_money'], // 订单金额
'contract_id' => $item['contract_id'], // 合约代码 'contract_id' => $item['stock_id'], // 合约代码
'order_number' => $item['order_number'], // 数量 'order_number' => $item['order_number'], // 数量
'service_cost' => $item['service_cost'], // 服务费 'service_cost' => $item['service_cost'], // 服务费
'face_value' => $item['face_value'], // 浮动盈亏 'face_value' => $item['face_value'], // 浮动盈亏
@ -1019,9 +1002,13 @@ class OrderService extends AdminBaseService
} }
} }
return $this->toData('0', 'SUCCESS', ['total' => $total, 'list' => $rows, return $this->toData('0', 'SUCCESS', [
'extent' => ['totalMoney' => round($totalModel['total'], 4), 'total' => $total,
]]); 'list' => $rows,
'extent' => [
'totalMoney' => empty($totalModel['total']) ? 0 : round($totalModel['total'], 4),
]
]);
} catch (ValidateException $validateException) { } catch (ValidateException $validateException) {
// 参数校验失败 // 参数校验失败
@ -1032,7 +1019,7 @@ class OrderService extends AdminBaseService
} }
} }
// 合约 // 合约
public function contractClear($param, $adminId) public function contractClear($param, $adminId)
{ {
try { 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) $total = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_CONTRACT, 'status'=>MoneyTradeModel::STATUS_CLEAR])->where($where)->count();
->where($where)
->count();
// 持仓总手续费 // 持仓总手续费
$totalClosingCost = ContractTradeModel::where('status', ContractTradeModel::STATUS_CLEAR) $totalClosingCost = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_CONTRACT, 'status'=>MoneyTradeModel::STATUS_CLEAR])->where($whereU)->where($where)->sum('closing_cost');
->where($whereU)
->where($where)
->sum('closing_cost');
$totalFloat = ContractTradeModel::where('status', ContractTradeModel::STATUS_CLEAR) $totalFloat = MoneyTradeModel::where(['market_type'=>MoneyTradeModel::MARKET_TYPE_CONTRACT, 'status'=>MoneyTradeModel::STATUS_CLEAR])->where($whereU)->where($where)
->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(); ->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 = []; $rows = [];
@ -1100,9 +1080,9 @@ class OrderService extends AdminBaseService
foreach ($list as $item) { foreach ($list as $item) {
// 计算浮动盈亏 // 计算浮动盈亏
if ($item['trade_type'] == 1) { if ($item['trade_type'] == 1) {
$float = $item['closing_price'] - $item['deal_price']; $float = bcsub($item['closing_price'], $item['deal_price'], 18);
} else { } 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'], // 平仓时间 'closing_time' => $item['closing_time'], // 平仓时间
'trade_type' => $item['trade_type'] == 1 ? '买涨' : '买跌', 'trade_type' => $item['trade_type'] == 1 ? '买涨' : '买跌',
'order_money' => $item['order_money'], // 订单金额 'order_money' => $item['order_money'], // 订单金额
'contract_id' => $item['contract_id'], // 合约代码 'contract_id' => $item['stock_id'], // 合约代码
'order_number' => $item['order_number'], // 数量 'order_number' => $item['order_number'], // 数量
'service_cost' => $item['service_cost'], // 服务费 'service_cost' => $item['service_cost'], // 服务费
'closing_cost' => $item['closing_cost'], // 平仓服务费 'closing_cost' => $item['closing_cost'], // 平仓服务费
@ -1501,9 +1481,9 @@ class OrderService extends AdminBaseService
foreach ($list as $item) { foreach ($list as $item) {
// 计算浮动盈亏 // 计算浮动盈亏
if ($item['trade_type'] == 1) { if ($item['trade_type'] == 1) {
$float = $item['closing_price'] - $item['deal_price']; $float = bcsub($item['closing_price'], $item['deal_price'], 18);
} else { } else {
$float = $item['deal_price'] - $item['closing_price']; $float = bcsub($item['deal_price'], $item['closing_price'], 18);
} }
// * 仓位 // * 仓位

16
app/model/MoneyTradeModel.php

@ -7,10 +7,18 @@ class MoneyTradeModel extends BaseModel
protected $name = 'money_trade'; protected $name = 'money_trade';
protected $pk = 'trade_id'; protected $pk = 'trade_id';
const STATUS_HOLD = 1;// 持仓 const STATUS_HOLD = 1; // 持仓
const STATUS_PLACE = 0;// 挂单 const STATUS_PLACE = 0; // 挂单
const STATUS_BACK = 2;// 撤单 const STATUS_BACK = 2; // 撤单
const STATUS_CLEAR = 3;// 平仓 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; //大宗(外汇)
/** /**
*获取持仓成本 *获取持仓成本

Loading…
Cancel
Save