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. 8
      app/model/MoneyTradeModel.php

8
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();

24
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'); // 外汇(大宗)平仓
// 股票-废弃

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)
->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'], // 浮动盈亏
@ -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);
}
// * 仓位

8
app/model/MoneyTradeModel.php

@ -12,6 +12,14 @@ class MoneyTradeModel extends BaseModel
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; //大宗(外汇)
/**
*获取持仓成本
*/

Loading…
Cancel
Save