Commit c16957ce authored by twj's avatar twj

Merge branch 'dev' of http://rungit.jxdsy.cn:10000/sugar/stock_new into dev

parents 9533edcf 93a0af97
......@@ -479,7 +479,7 @@ if (!function_exists('yan_time')) {
/*
* 验证交易时间
*/
function yan_time($last_time = 14.95)
function yan_time($last_time = 23.95)
{
$t = time() - strtotime(date("Y-m-d", time()));
$t2 = 3600 * 9.5 + 300; //早盘开盘时间
......
......@@ -1493,7 +1493,7 @@ if (!function_exists('yan_time')) {
/*
* 验证交易时间
*/
function yan_time($last_time = 14.95)
function yan_time($last_time = 23.95)
{
$t = time() - strtotime(date("Y-m-d", time()));
$t2 = 3600 * 9.5;//早盘开盘时间
......@@ -2047,6 +2047,9 @@ function curl($url){
*/
if (!function_exists('toMarket')){
function toMarket($code){
if(strlen($code) === 5){//如果不符合上述简单规则,可能需要更复杂的逻辑或数据查询
return "HK";
}else if (strlen($code) === 6){//A股暂时假设6位代码
if($code == '000001'){
return 'SZ';
}
......@@ -2060,8 +2063,18 @@ if (!function_exists('toMarket')){
return 'BJ';
}
}
}
}
//腾讯数据解析
if(!function_exists('jsonQuotation')) {
function jsonQuotation($item) {
$item[0] = isset($item[0])?substr(str_replace('v_','', $item[0]), 0, 2):'';//交易所代号
$item[80] = isset($item[30]) ? strtotime($item[30]) : time();
return $item;
}
}
/******************************************************************************************/
if(!function_exists('toPinyin')) {
function toPinyin($zh){
......
......@@ -242,17 +242,10 @@ if (!function_exists('getEndDay')) {
}
if (!function_exists('z_market')) {
function z_market($code,$market="HK")
function z_market($code,$market="")
{
$res = \think\Db::name('admin_config')->where(array('name' => 'market_data_in'))->value('value');
//判断股票前缀
/*if(toMarket($code)){
$market = toMarket($code);
};*/
$code=strtolower($market).$code;
//判断股票是否
switch ($res) {
case 1:
$res = qq_market($code);
......@@ -296,7 +289,6 @@ if (!function_exists('getEndDay')) {
switch ($res) {
case 1:
$res = explode(',', $code);
$count = count($res);
foreach ($res as $v) {
$d .= fenxi($v) . ',';
......@@ -308,16 +300,9 @@ if (!function_exists('getEndDay')) {
break;
}
for ($i = 0; $i < $count; $i++) {
$k = $i * 53;
for ($n = 1; $n <= 53; $n++) {
$num = $n + $k;
$data[$i][$n] = $tmd[$num];
}
$data[$i][0] = '';
$data[$i] = qq_to_api($data[$i]);
foreach ($tmd as $k=>$v){
$data[$k][0] = '';
$data[$k] = qq_to_api($v);
}
break;
......@@ -377,7 +362,6 @@ if (!function_exists('getEndDay')) {
default:
$res = explode(',', $code);
$count = count($res);
foreach ($res as $v) {
$d .= fenxi($v) . ',';
......@@ -385,16 +369,9 @@ if (!function_exists('getEndDay')) {
$tmd = qq_market_b($d);
for ($i = 0; $i < $count; $i++) {
$k = $i * 53;
for ($n = 1; $n <= 53; $n++) {
$num = $n + $k;
$data[$i][$n] = $tmd[$num];
}
$data[$i][0] = '';
$data[$i] = qq_to_api($data[$i]);
foreach ($tmd as $k=>$v){
$data[$k][0] = '';
$data[$k] = qq_to_api($v);
}
break;
......@@ -976,6 +953,12 @@ if (!function_exists('getEndDay')) {
if (!function_exists('')) {
function fenxi($code)
{
if(strlen($code) === 5){//港股
$d = 'hk' . $code;
}else if(strlen($code) === 6){//A股
switch (substr($code, 0, 1)) {
case '0':
$d = 'sz' . $code;
......@@ -1009,6 +992,8 @@ if (!function_exists('getEndDay')) {
$d = $code;
break;
}
}
return $d;
}
......@@ -1208,9 +1193,19 @@ if (!function_exists('getEndDay')) {
curl_setopt($ch, CURLOPT_HEADER, 0);
$output = curl_exec($ch);
curl_close($ch);
$t2 = explode('~', mb_convert_encoding($output, 'utf-8', 'gbk'));
unset($t2[0]);
return $t2;
$str = mb_convert_encoding($output, 'utf-8', 'gbk');
$str = str_replace(array("\r\n", "\r", "\n"), "", $str);
$t2 = explode('";', $str);
$json = [];
foreach ($t2 as $key => $val) {
$array = explode("~", $val);
if(isset($array[2])&&isset($array[3])&&isset($array[4])){
$json[] = jsonQuotation(explode("~", $val));
}else{
continue;
}
}
return $json;
}
}
......
......@@ -301,7 +301,7 @@ class Index extends Common
$uid = MID;
$req = request();
$code = intval($req::instance()->param('code'));
$market = intval($req::instance()->param('market'));
$market = $req::instance()->param('market');
if ($code === null) {
return json(['status' => 0, 'message' => '缺少参数code,操作失败']);
} else {
......
<?php namespace app\market\home;use app\market\model\Deal_stock;use app\market\model\Position;use app\market\model\StockSubAccount;use app\market\model\SubAccountMoney;use app\market\model\Delivery;use app\market\model\StockSubAccountRisk;use app\market\model\Trust;use app\stock\model\Account as AccountModel;use think\Log;use think\Db; class Trade extends Common{ protected function _initialize(){ parent::_initialize(); $token = $this->request->param("token"); $mid = isLogin($token); } public function account_info() { $token = $this->request->param("token"); $mid = isLogin($token); if(!$mid) return json(['status' => 0, 'message' => '登陆后才能进行查看']); $subId = $this->request->param("id"); if(!$subId) return json(['status' => 0, 'message' => '缺少参数或参数获取错误']); $subModel = new SubAccountMoney(); $res = $subModel->get_account_money_inf($subId); if(!$res) return json(['status' => 0, 'message' => '操作失败']); $res['available_amount'] >= 0 ? $res['available_amount'] : 0; $res = $subModel->ftoy($res); $pos = Position::where(['sub_id'=>$subId, 'buying'=>0])->order('id desc')->select(); $res['return_money'] = 0; $res['market_value'] = 0; foreach ($pos as $k => $v ) { $data = z_market($v['gupiao_code']); if($data['Price'] == '') continue; $res['return_money'] += ($data['Price'] - $v['buy_average_price']) * $v['stock_count']; $res['market_value'] += $data['Price'] * $v['stock_count']; } // 提盈额度计算 $all = $res['market_value'] + $res['avail']; $profit = bcsub(strval($all),bcadd(strval($res['borrow_money']),strval($res['deposit_money'])),2); if($profit > 0){ $res['available_amount'] = $profit < $res['available_amount'] ? $profit : $res['available_amount']; }else{ $res['available_amount'] = 0; } //$res['available_amount'] = $res['available_amount'] > $res['avail'] ? $res['avail'] : $res['available_amount']; $res['available_amount'] = bcadd(strval($res['available_amount']),'0',2); // 去掉卖出委托的市值 $weituo = 0; $weituo = Db::name('stock_trust')->where(['sub_id'=>$res['stock_subaccount_id'],'flag2'=>'卖出委托','status'=>'已委托'])->sum('amount'); $res['return_money'] = bcadd(strval($res['return_money']),'0', 2); //加法,在原值上加0为了保留小数点后两位 $res['market_value'] = bcsub(strval($res['market_value']),strval($weituo), 2);//减法 $res['total_money'] = bcadd(strval($res['market_value']),bcadd(strval($res['avail']),strval($res['freeze_amount']),2), 2);//加法 return json(['data'=>$res,'status' => 1, 'message' => '操作成功']); } /* * 持仓查询 */ public function position() { $token = $this->request->param("token"); $mid = isLogin($token); if(!$mid) return json(['status' => 0, 'message' => '未登录']); $subid = $this->request->param("id"); if(!$subid) return json(['status' => 0, 'message' => '参数不正确']); $submodel = new StockSubAccount(); $res = $submodel->get_account_by_id($subid); if (!$res) return json(['status' => 0, 'message' => '不存在的子账号']); if (empty($res['account_id'])) return json(['status' => 0, 'message' => '证券公司不存在']); $data = Position::where(['sub_id' => $subid,'buying' => 0])->where('stock_count','>',0)->order('id desc')->paginate(20, false, ['query' => request()->param()]); if (!$data || count($data) === 0) return ajaxmsg('没有数据',0,$data); foreach ($data as $k => $item){ //查询当天交易的数量 T+1 交易 $todayCount = Delivery::get_delivery_order($subid,$item["gupiao_code"]); $data[$k]['canbuy_count'] = $item['canbuy_count']; //查询股票最新行情 $Qdata = z_market($item["gupiao_code"],$item['market']); //查询子账户 $data[$k]['sub_account'] = $res['sub_account']; //提取当前价格 $data[$k]['now_price'] = $Qdata['Price']; //市值 = 当前价格*数量 $data[$k]['market_value'] = round((int)$Qdata['Price']*(int)$item['stock_count'],2); //参考成本价 $data[$k]['ck_price'] = Position::calculate($subid,$item["gupiao_code"],'price'); //买入均价 $data[$k]['buy_average_price'] = Position::calculate($subid,$item["gupiao_code"],'average'); //参考盈亏 //$data[$k]['ck_profit'] = $item['stock_count'] > 0 ? round(($Qdata['Price']-$data[$k]['buy_average_price'])*$item['stock_count'], 2) : 0; $data[$k]['ck_profit'] = $item['stock_count'] > 0 ? bcmul(strval((int)$Qdata["Price"]-(int)$data[$k]['buy_average_price']),strval($item['stock_count']),2) : 0;//参考浮动盈亏 //盈亏比例 //$data[$k]['profit_rate'] = $item['stock_count'] > 0 ? round(($data[$k]['ck_profit'] / ($data[$k]['buy_average_price'] * $item['stock_count'])) * 100, 2) : 0; //$data[$k]['profit_rate'] = $item['stock_count'] > 0 ? bcdiv(strval($data[$k]['ck_profit']),strval($data[$k]['buy_average_price']*$item['stock_count']*100),2) : 0;//盈亏比例 //当天可卖数量计算 //$data[$k]['canbuy_count'] = StockPosition::getCanbuyCount($subid,$item["gupiao_code"]); } return ajaxmsg('操作成功',1,$data); } /* * 证券买入 */ public function buy() { $token = $this->request->param("token"); $mid = isLogin($token); if(!$mid) return json(['status' => 0, 'message' => '登陆后才能进行查看']); if (!yan_time()) return json(['status' => 0, 'message' => '非交易时间']); if (!config('site_trade_buy')) return ajaxmsg('系统设置为禁买状态',0); $data = [ "sub_id" => input('id','', ['trim', FILTER_SANITIZE_NUMBER_INT]),//子账户ID, "code" => input('code' ,'', ['trim', FILTER_SANITIZE_NUMBER_INT]),//股票代码 "name" => input('name' ,''),//股票名称 "market" => input('market',''),//交易所代码 "count" => input('count', 0, ['trim', FILTER_SANITIZE_NUMBER_INT]),//购买数量 "price" => input('price', 0, ['trim']), 'model' => input('model', 1, ['trim', FILTER_SANITIZE_NUMBER_INT]),//1:是委托状态 ]; //验证数据 $result = $this->validate($data, 'Trade.trade'); if(!$result) return ajaxmsg($result,0); //检查其他买入条件是否符合 $Trust = new Trust; $trade_res = $Trust->executeData($data,'buy'); if(isset($trade_res['status'])&&!$trade_res['status']) return ajaxmsg($trade_res['message'],0); $trade_money = $trade_res['trade_money']; $moneyinfo = $trade_res['moneyinfo']; $price = $trade_res['price']; //计算佣金 commission_scale:佣金比例(单位:万分之几) 如:5 代表万分之五; min_commission:最低佣金(单位:元) $commission = commission($trade_money,$moneyinfo['commission_scale'],$moneyinfo['min_commission']); //计算过户费 $transfer = transfer($trade_money); //写入子账户资金变化表 Db::startTrans(); $effectMoney = $trade_money + $commission + $transfer; /*(子账户ID, 金额*100, 买卖方向[1:买入 2:卖出], 盈亏金额, 实盘相关, 股票代码)*/ $subaccount=new SubAccountMoney(); $ret = $subaccount->up_moneylog($data['sub_id'], $effectMoney, 3, 0, 0, $data['code']); if (!$ret){ Db::rollback(); return ajaxmsg('委托失败!',0); } $StockSubAccount = new StockSubAccount(); $subres = $StockSubAccount->get_account_by_id($data['sub_id']); $broker = $StockSubAccount->get_broker($subres['account_id']); if (!$subres) return ajaxmsg('子账号或证券公司不存在!',0); $Trust_no = mt_rand(101010, 999999) . substr(strval(time()), 1); //添加到委托表 $Trust_res = $Trust->add_m_trust($data, $data['count'],$data['price'],$data['sub_id'],$broker['lid'],$broker['user'],$broker['stockjobber'],$Trust_no,$broker, $data['model']); if(!$Trust_res){ Db::rollback(); return ajaxmsg('委托失败!',0); } //持仓数量查询 $position = Db::name('stock_position')->where(['sub_id' => $data['sub_id'],'gupiao_code' => $data['code'],'buying' => 0])->find(); $amount = empty($position) ? $data['count'] : $position['canbuy_count'] + $data['count']; //提交交易费用信息 $Delivery = new Delivery; $avail = ($moneyinfo['avail']) - $effectMoney; //print_r("佣金: ".$commission." 过户费: ".$transfer." 总计:".$effectMoney);Db::rollback();exit; $del_res = $Delivery->add_m_delivery_order($data, $data['count'],$data['price'],$data['sub_id'],$broker['lid'],$broker['user'],$broker['stockjobber'],$commission,$transfer,$Trust_no,$avail,$amount, $data['model']); //print_r($del_res);Db::rollback();exit; if(!$del_res){ Db::rollback(); return ajaxmsg('委托失败',0); }else{ Db::commit(); return ajaxmsg('买入委托已提交',1); } } public function sell() { $token = $this->request->param("token"); $mid = isLogin($token); if(!$mid) return json(['status' => 0, 'message' => '登陆后才能进行查看']); if (!yan_time()) return json(['status' => 0, 'message' => '非交易时间']); if (config('site_trade_sell') == 0) return ajaxmsg('系统设置为不允许卖出股票',0); if (time() <= strtotime(date("Y-m-d 09:30:15"))) { return ajaxmsg('平台设置9点30分15秒后可卖出',0); } $data = [ "sub_id" => input('id','', ['trim', FILTER_SANITIZE_NUMBER_INT]),//子账户ID, "code" => input('code' ,'', ['trim', FILTER_SANITIZE_NUMBER_INT]),//股票代码 "name" => input('name' ,''),//股票名称 "market" => input('market', ''),//交易所代码 "count" => input('count', 0, ['trim', FILTER_SANITIZE_NUMBER_INT]),//购买数量 "price" => input('price', 0, ['trim']), 'model' => input('model', 1, ['trim', FILTER_SANITIZE_NUMBER_INT]),//1:是委托状态 ]; //验证数据 $result = $this->validate($data, 'Trade.trade'); if(!$result) return ajaxmsg($result,0); $Trust = new Trust; $trade_res = $Trust->executeData($data,'sell'); //print_r($trade_res['message']);exit; if(isset($trade_res['status'])&&!$trade_res['status']) return ajaxmsg($trade_res['message'],0); $trade_money = $trade_res['trade_money']; $moneyinfo = $trade_res['moneyinfo']; $price = $trade_res['price']; //计算佣金 $commission = commission($trade_money,$moneyinfo['commission_scale'],$moneyinfo['min_commission']); //印花税 $stamps = stamps($trade_money); //计算过户费 $transfer = transfer($trade_money); //写入子账户资金变化表 Db::startTrans(); $effectMoney = $trade_money - $transfer - $stamps - $commission; $subaccount=new SubAccountMoney(); $ret = $subaccount->up_moneylog($data['sub_id'], $effectMoney, 4); if(!$ret){ Db::rollback(); return ajaxmsg('委托失败!',0); } $Trust_no = mt_rand(101010, 999999).substr(strval(time()),1); $StockSubAccount = new StockSubAccount(); $subres = $StockSubAccount->get_account_by_id($data['sub_id']); $broker = $StockSubAccount->get_broker($subres['account_id']); if (!$subres) return ajaxmsg('子账号或证券公司不存在!',0); $Trust_no = mt_rand(101010, 999999) . substr(strval(time()), 1); //添加到委托表 $Trust_res = $Trust->sell_m_trust($data, $data['count'],$data['price'],$data['sub_id'],$broker['lid'],$broker['user'],$broker['stockjobber'],$Trust_no,$broker, $data['model']); if(!$Trust_res){ Db::rollback(); return ajaxmsg('委托失败!',0); } //持仓数量查询 $position = Db::name('stock_position')->where(['sub_id' => $data['sub_id'],'gupiao_code' => $data['code'],'buying' => 0])->find(); $amount = $position['canbuy_count'] - $data['count']; //持仓减少 $pos_res = Db::name('stock_position')->where(['sub_id' => $data['sub_id'],'gupiao_code' => $data['code'],'buying' => 0])->dec('canbuy_count',intval($data['count']))->update(); $Delivery = new Delivery; $avail = $moneyinfo["avail"] + $effectMoney; $del_res = $Delivery->sell_m_delivery_order($data, $data['count'],$data['price'],$data['sub_id'],$broker['lid'],$broker['user'],$broker['stockjobber'],$commission,$transfer,$Trust_no,$avail,$amount, $data['model']); if(!$del_res || !$pos_res){ Db::rollback(); return ajaxmsg('委托失败',0); } Db::commit(); return ajaxmsg('卖出委托已提交',1); } /*委托记录*/ public function trust() { $token = $this->request->param("token"); $mid = isLogin($token); if(!$mid) return json(['status' => 0, 'message' => '登陆后才能进行查看']); $sub_id = input('id', '', ['trim', FILTER_SANITIZE_NUMBER_INT]); $startDate = input('start_date', ''); $endDate = input('end_date', ''); $page = input('page', 1, ['trim', FILTER_SANITIZE_NUMBER_INT]); $submodel = new StockSubAccount; $res = $submodel->get_account_by_id($sub_id); if (!$res['account_id']) return ajaxmsg('不存在的子账号',0); $trust = new Trust; //print_r($startDate);print_r($endDate);exit; $data = $trust->get_trust($sub_id,$startDate,$endDate); if(!$data) return ajaxmsg('没有数据',0); return ajaxmsg('操作成功',1,$data); } /* * 获取可撤单委托列表 */ public function cancel_trust() { $token = $this->request->param("token"); $mid = isLogin($token); if(!$mid) return json(['status' => 0, 'message' => '登陆后才能进行查看']); $sub_id = input('id', '', ['trim', FILTER_SANITIZE_NUMBER_INT]); $submodel = new StockSubAccount; $res = $submodel->get_account_by_id($sub_id); if (!$res['account_id']) return ajaxmsg('不存在的子账号',0); $trust = new Trust; $res = $trust->get_cancel_trust($sub_id); if(!$res) return ajaxmsg('没有数据',0); return ajaxmsg('操作成功',1,$res); } /* * 当天撤销委托 */ public function cancel() { $token = $this->request->param("token"); $mid = isLogin($token); if(!$mid) return json(['status' => 0, 'message' => '登陆后才能进行查看']); $sub_id = input('id', '', ['trim', FILTER_SANITIZE_NUMBER_INT]); $trust_no = input('trust_no', '', ['trim', FILTER_SANITIZE_NUMBER_INT]); $submodel = new StockSubAccount; $res = $submodel->get_account_by_id($sub_id); if (!$res['account_id']) return ajaxmsg('不存在的子账号',0); Db::startTrans(); $yes = false; $tempinfo = Db::name('stock_trust')->where(['trust_no' => $trust_no])->lock(true)->find(); if (!$tempinfo){ Db::rollback(); return ajaxmsg('没找到对应委托,撤单失败',0); } $trust['status'] = '已撤'; $trust['cancel_order_flag'] = '1'; $trust['cancel_order_count'] = $tempinfo['trust_count']; $trust_res = Db::name('stock_trust')->where(['trust_no' => $trust_no])->update($trust); $affect_money = Db::name('stock_delivery_order')->where(array('trust_no' => $trust_no))->value('liquidation_amount'); $subaccount=new SubAccountMoney(); if ($tempinfo['flag2'] == '买入委托'){ $subm_res = $subaccount->up_moneylog($sub_id, $affect_money, 8); $position = true; } if ($tempinfo['flag2'] == '卖出委托'){ $position = Db::name('stock_position')->where(['sub_id' => $sub_id,'gupiao_code' => $tempinfo['gupiao_code'],'buying' => 0])->find(); $position['canbuy_count'] = $position['canbuy_count'] + $tempinfo['trust_count']; $position = Db::name('stock_position')->where(['sub_id' => $sub_id,'gupiao_code' => $tempinfo['gupiao_code']])->update($position); $subm_res = $subaccount->up_moneylog($sub_id, $affect_money, 9); } $delivery = Db::name('stock_delivery_order')->where(array('trust_no' => $trust_no))->delete(); if($trust_res && $subm_res && $position && $delivery){ Db::commit(); return ajaxmsg('撤单成功',1); } Db::rollback(); return ajaxmsg('撤单失败',0); } /* * 成交记录 */ public function deal() { $token = $this->request->param("token"); $mid = isLogin($token); if(!$mid) return json(['status' => 0, 'message' => '登陆后才能进行查看']); $sub_id = input('id', '', ['trim', FILTER_SANITIZE_NUMBER_INT]); $startDate = input('start_date', ''); $endDate = input('end_date', ''); $page = input('page', 1, ['trim', FILTER_SANITIZE_NUMBER_INT]); $submodel = new StockSubAccount; $res = $submodel->get_account_by_id($sub_id); if (!$res['account_id']) return ajaxmsg('不存在的子账号',0); $deal_stack = new Deal_stock(); $data = $deal_stack->get_deal_stock($sub_id,$startDate,$endDate); if(!$data) return ajaxmsg('没有数据',0); return ajaxmsg('操作成功',1,$data); } /* * 交割记录 */ public function comp() { $token = $this->request->param("token"); $mid = isLogin($token); if(!$mid) return json(['status' => 0, 'message' => '登陆后才能进行查看']); $sub_id = input('id', '', ['trim', FILTER_SANITIZE_NUMBER_INT]); $startDate = input('start_date', ''); $endDate = input('end_date', ''); $page = input('page', 1, ['trim', FILTER_SANITIZE_NUMBER_INT]); $submodel = new StockSubAccount; $res = $submodel->get_account_by_id($sub_id); if (!$res['account_id']) return ajaxmsg('不存在的子账号',0); $deal_stack = new Delivery; $data = $deal_stack->get_delivery_order($sub_id,$startDate,$endDate); if(!$data) return ajaxmsg('没有数据',0); return ajaxmsg('操作成功',1,$data); } }
\ No newline at end of file
<?php
namespace app\market\home;
use app\market\model\Deal_stock;
use app\market\model\Delivery;
use app\market\model\Position;
use app\market\model\StockSubAccount;
use app\market\model\SubAccountMoney;
use app\market\model\Trust;
use think\Db;
class Trade extends Common
{
protected function _initialize(){
parent::_initialize();
$token = $this->request->param("token");
$mid = isLogin($token);
}
public function account_info()
{
$token = $this->request->param("token");
$mid = isLogin($token);
if(!$mid) return json(['status' => 0, 'message' => '登陆后才能进行查看']);
$subId = $this->request->param("id");
if(!$subId) return json(['status' => 0, 'message' => '缺少参数或参数获取错误']);
$subModel = new SubAccountMoney();
$res = $subModel->get_account_money_inf($subId);
if(!$res) return json(['status' => 0, 'message' => '操作失败']);
$res['available_amount'] >= 0 ? $res['available_amount'] : 0;
$res = $subModel->ftoy($res);
$pos = Position::where(['sub_id'=>$subId, 'buying'=>0])->order('id desc')->select();
$res['return_money'] = 0;
$res['market_value'] = 0;
foreach ($pos as $k => $v ) {
$data = z_market($v['gupiao_code']);
if($data['Price'] == '') continue;
$res['return_money'] += ($data['Price'] - $v['buy_average_price']) * $v['stock_count'];
$res['market_value'] += $data['Price'] * $v['stock_count'];
}
// 提盈额度计算
$all = $res['market_value'] + $res['avail'];
$profit = bcsub(strval($all),bcadd(strval($res['borrow_money']),strval($res['deposit_money'])),2);
if($profit > 0){
$res['available_amount'] = $profit < $res['available_amount'] ? $profit : $res['available_amount'];
}else{
$res['available_amount'] = 0;
}
//$res['available_amount'] = $res['available_amount'] > $res['avail'] ? $res['avail'] : $res['available_amount'];
$res['available_amount'] = bcadd(strval($res['available_amount']),'0',2);
// 去掉卖出委托的市值
$weituo = 0;
$weituo = Db::name('stock_trust')->where(['sub_id'=>$res['stock_subaccount_id'],'flag2'=>'卖出委托','status'=>'已委托'])->sum('amount');
$res['return_money'] = bcadd(strval($res['return_money']),'0', 2); //加法,在原值上加0为了保留小数点后两位
$res['market_value'] = bcsub(strval($res['market_value']),strval($weituo), 2);//减法
$res['total_money'] = bcadd(strval($res['market_value']),bcadd(strval($res['avail']),strval($res['freeze_amount']),2), 2);//加法
return json(['data'=>$res,'status' => 1, 'message' => '操作成功']);
}
/*
* 持仓查询
*/
public function position()
{
$token = $this->request->param("token");
$mid = isLogin($token);
if(!$mid) return json(['status' => 0, 'message' => '未登录']);
$subid = $this->request->param("id");
if(!$subid) return json(['status' => 0, 'message' => '参数不正确']);
$submodel = new StockSubAccount();
$res = $submodel->get_account_by_id($subid);
if (!$res) return json(['status' => 0, 'message' => '不存在的子账号']);
if (empty($res['account_id'])) return json(['status' => 0, 'message' => '证券公司不存在']);
$data = Position::where(['sub_id' => $subid,'buying' => 0])->where('stock_count','>',0)->order('id desc')->paginate(20, false, ['query' => request()->param()]);
if (!$data || count($data) === 0) return ajaxmsg('没有数据',0,$data);
foreach ($data as $k => $item){
//查询当天交易的数量 T+1 交易
$todayCount = Delivery::get_delivery_order($subid,$item["gupiao_code"]);
$data[$k]['canbuy_count'] = $item['canbuy_count'];
//查询股票最新行情
$Qdata = z_market($item["gupiao_code"],$item['market']);
//查询子账户
$data[$k]['sub_account'] = $res['sub_account'];
//提取当前价格
$data[$k]['now_price'] = $Qdata['Price'];
//市值 = 当前价格*数量
$data[$k]['market_value'] = round((int)$Qdata['Price']*(int)$item['stock_count'],2);
//参考成本价
$data[$k]['ck_price'] = Position::calculate($subid,$item["gupiao_code"],'price');
//买入均价
$data[$k]['buy_average_price'] = Position::calculate($subid,$item["gupiao_code"],'average');
//参考盈亏
//$data[$k]['ck_profit'] = $item['stock_count'] > 0 ? round(($Qdata['Price']-$data[$k]['buy_average_price'])*$item['stock_count'], 2) : 0;
$data[$k]['ck_profit'] = $item['stock_count'] > 0 ? bcmul(strval((int)$Qdata["Price"]-(int)$data[$k]['buy_average_price']),strval($item['stock_count']),2) : 0;//参考浮动盈亏
//盈亏比例
//$data[$k]['profit_rate'] = $item['stock_count'] > 0 ? round(($data[$k]['ck_profit'] / ($data[$k]['buy_average_price'] * $item['stock_count'])) * 100, 2) : 0;
//$data[$k]['profit_rate'] = $item['stock_count'] > 0 ? bcdiv(strval($data[$k]['ck_profit']),strval($data[$k]['buy_average_price']*$item['stock_count']*100),2) : 0;//盈亏比例
//当天可卖数量计算
//$data[$k]['canbuy_count'] = StockPosition::getCanbuyCount($subid,$item["gupiao_code"]);
}
return ajaxmsg('操作成功',1,$data);
}
/*
* 证券买入
*/
public function buy()
{
$token = $this->request->param("token");
$mid = isLogin($token);
if(!$mid) return json(['status' => 0, 'message' => '登陆后才能进行查看']);
if (!yan_time()) return json(['status' => 0, 'message' => '非交易时间']);
if (!config('site_trade_buy')) return ajaxmsg('系统设置为禁买状态',0);
$data = [
"sub_id" => input('id','', ['trim', FILTER_SANITIZE_NUMBER_INT]),//子账户ID,
"code" => input('code' ,'', ['trim', FILTER_SANITIZE_NUMBER_INT]),//股票代码
"name" => input('name' ,''),//股票名称
"market" => input('market',''),//交易所代码
"count" => input('count', 0, ['trim', FILTER_SANITIZE_NUMBER_INT]),//购买数量
"price" => input('price', 0, ['trim']),
'model' => input('model', 1, ['trim', FILTER_SANITIZE_NUMBER_INT]),//1:是委托状态
];
//验证数据
$result = $this->validate($data, 'Trade.trade');
if(!$result) return ajaxmsg($result,0);
//检查其他买入条件是否符合
$Trust = new Trust();
$trade_res = $Trust->executeData($data,'buy');
if(isset($trade_res['status'])&&!$trade_res['status']) return ajaxmsg($trade_res['message'],0);
$trade_money = $trade_res['trade_money'];
$moneyinfo = $trade_res['moneyinfo'];
$price = $trade_res['price'];
//计算佣金 commission_scale:佣金比例(单位:万分之几) 如:5 代表万分之五; min_commission:最低佣金(单位:元)
$commission = commission($trade_money,$moneyinfo['commission_scale'],$moneyinfo['min_commission']);
//计算过户费
$transfer = transfer($trade_money);
//写入子账户资金变化表
Db::startTrans();
$effectMoney = $trade_money + $commission + $transfer;
/*(子账户ID, 金额*100, 买卖方向[1:买入 2:卖出], 盈亏金额, 实盘相关, 股票代码)*/
$subaccount=new SubAccountMoney();
$ret = $subaccount->up_moneylog($data['sub_id'], $effectMoney, 3, 0, 0, $data['code']);
if (!$ret){
Db::rollback();
return ajaxmsg('委托失败!',0);
}
$StockSubAccount = new StockSubAccount();
$subres = $StockSubAccount->get_account_by_id($data['sub_id']);
$broker = $StockSubAccount->get_broker($subres['account_id']);
if (!$subres) return ajaxmsg('子账号或证券公司不存在!',0);
$Trust_no = mt_rand(101010, 999999) . substr(strval(time()), 1);
//添加到委托表
$Trust_res = $Trust->add_m_trust($data, $data['count'],$data['price'],$data['sub_id'],$broker['lid'],$broker['user'],$broker['stockjobber'],$Trust_no,$broker, $data['model']);
if(!$Trust_res){
Db::rollback();
return ajaxmsg('委托失败!',0);
}
//持仓数量查询
$position = Db::name('stock_position')->where(['sub_id' => $data['sub_id'],'gupiao_code' => $data['code'],'buying' => 0])->find();
$amount = empty($position) ? $data['count'] : $position['canbuy_count'] + $data['count'];
//提交交易费用信息
$Delivery = new Delivery;
$avail = ($moneyinfo['avail']) - $effectMoney;
$Qdata = z_market($data["gupiao_code"],$data['market']);
//参考成本价
$ck_price = Position::calculate($data['sub_id'],$data["gupiao_code"],'price');
//买入均价
$buy_average_price = Position::calculate($data['sub_id'],$data["gupiao_code"],'average');
//参考盈亏
//$data[$k]['ck_profit'] = $item['stock_count'] > 0 ? round(($Qdata['Price']-$data[$k]['buy_average_price'])*$item['stock_count'], 2) : 0;
Position::addPosition($data['code'], $data['market'],$data['count'],$data['sub_id'],$broker['lid'],$broker['user'],$broker['stockjobber'],$ck_price, 0);
//print_r("佣金: ".$commission." 过户费: ".$transfer." 总计:".$effectMoney);Db::rollback();exit;
$del_res = $Delivery->add_m_delivery_order($data, $data['count'],$data['price'],$data['sub_id'],$broker['lid'],$broker['user'],$broker['stockjobber'],$commission,$transfer,$Trust_no,$avail,$amount, $data['model']);
//print_r($del_res);Db::rollback();exit;
if(!$del_res){
Db::rollback();
return ajaxmsg('委托失败',0);
}else{
Db::commit();
return ajaxmsg('买入委托已提交',1);
}
}
public function sell()
{
$token = $this->request->param("token");
$mid = isLogin($token);
if(!$mid) return json(['status' => 0, 'message' => '登陆后才能进行查看']);
if (!yan_time()) return json(['status' => 0, 'message' => '非交易时间']);
if (config('site_trade_sell') == 0)
return ajaxmsg('系统设置为不允许卖出股票',0);
if (time() <= strtotime(date("Y-m-d 09:30:15"))) {
return ajaxmsg('平台设置9点30分15秒后可卖出',0);
}
$data = [
"sub_id" => input('id','', ['trim', FILTER_SANITIZE_NUMBER_INT]),//子账户ID,
"code" => input('code' ,'', ['trim', FILTER_SANITIZE_NUMBER_INT]),//股票代码
"name" => input('name' ,''),//股票名称
"market" => input('market', ''),//交易所代码
"count" => input('count', 0, ['trim', FILTER_SANITIZE_NUMBER_INT]),//购买数量
"price" => input('price', 0, ['trim']),
'model' => input('model', 1, ['trim', FILTER_SANITIZE_NUMBER_INT]),//1:是委托状态
];
//验证数据
$result = $this->validate($data, 'Trade.trade');
if(!$result) return ajaxmsg($result,0);
$Trust = new Trust;
$trade_res = $Trust->executeData($data,'sell');
//print_r($trade_res['message']);exit;
if(isset($trade_res['status'])&&!$trade_res['status']) return ajaxmsg($trade_res['message'],0);
$trade_money = $trade_res['trade_money'];
$moneyinfo = $trade_res['moneyinfo'];
$price = $trade_res['price'];
//计算佣金
$commission = commission($trade_money,$moneyinfo['commission_scale'],$moneyinfo['min_commission']);
//印花税
$stamps = stamps($trade_money);
//计算过户费
$transfer = transfer($trade_money);
//写入子账户资金变化表
Db::startTrans();
$effectMoney = $trade_money - $transfer - $stamps - $commission;
$subaccount=new SubAccountMoney();
$ret = $subaccount->up_moneylog($data['sub_id'], $effectMoney, 4);
if(!$ret){
Db::rollback();
return ajaxmsg('委托失败!',0);
}
$Trust_no = mt_rand(101010, 999999) . substr(strval(time()), 1);
$StockSubAccount = new StockSubAccount();
$subres = $StockSubAccount->get_account_by_id($data['sub_id']);
$broker = $StockSubAccount->get_broker($subres['account_id']);
if (!$subres) return ajaxmsg('子账号或证券公司不存在!',0);
//添加到委托表
$Trust_res = $Trust->sell_m_trust($data, $data['count'],$data['price'],$data['sub_id'],$broker['lid'],$broker['user'],$broker['stockjobber'],$Trust_no,$broker, $data['model']);
if(!$Trust_res){
Db::rollback();
return ajaxmsg('委托失败!',0);
}
//持仓数量查询
$position = Db::name('stock_position')->where(['sub_id' => $data['sub_id'],'gupiao_code' => $data['code'],'buying' => 0])->find();
$amount = $position['canbuy_count'] - $data['count'];
//持仓减少
$pos_res = Db::name('stock_position')->where(['sub_id' => $data['sub_id'],'gupiao_code' => $data['code'],'buying' => 0])->dec('canbuy_count',intval($data['count']))->update();
$Delivery = new Delivery;
$avail = $moneyinfo["avail"] + $effectMoney;
$del_res = $Delivery->sell_m_delivery_order($data, $data['count'],$data['price'],$data['sub_id'],$broker['lid'],$broker['user'],$broker['stockjobber'],$commission,$transfer,$Trust_no,$avail,$amount, $data['model']);
if(!$del_res || !$pos_res){
Db::rollback();
return ajaxmsg('委托失败',0);
}
Db::commit();
return ajaxmsg('卖出委托已提交',1);
}
/*委托记录*/
public function trust()
{
$token = $this->request->param("token");
$mid = isLogin($token);
if(!$mid) return json(['status' => 0, 'message' => '登陆后才能进行查看']);
$sub_id = input('id', '', ['trim', FILTER_SANITIZE_NUMBER_INT]);
$startDate = input('start_date', '');
$endDate = input('end_date', '');
$page = input('page', 1, ['trim', FILTER_SANITIZE_NUMBER_INT]);
$submodel = new StockSubAccount;
$res = $submodel->get_account_by_id($sub_id);
if (!$res['account_id']) return ajaxmsg('不存在的子账号',0);
$trust = new Trust;
//print_r($startDate);print_r($endDate);exit;
$data = $trust->get_trust($sub_id,$startDate,$endDate);
if(!$data) return ajaxmsg('没有数据',0);
return ajaxmsg('操作成功',1,$data);
}
/*
* 获取可撤单委托列表
*/
public function cancel_trust()
{
$token = $this->request->param("token");
$mid = isLogin($token);
if(!$mid) return json(['status' => 0, 'message' => '登陆后才能进行查看']);
$sub_id = input('id', '', ['trim', FILTER_SANITIZE_NUMBER_INT]);
$submodel = new StockSubAccount;
$res = $submodel->get_account_by_id($sub_id);
if (!$res['account_id']) return ajaxmsg('不存在的子账号',0);
$trust = new Trust;
$res = $trust->get_cancel_trust($sub_id);
if(!$res) return ajaxmsg('没有数据',0);
return ajaxmsg('操作成功',1,$res);
}
/*
* 当天撤销委托
*/
public function cancel()
{
$token = $this->request->param("token");
$mid = isLogin($token);
if(!$mid) return json(['status' => 0, 'message' => '登陆后才能进行查看']);
$sub_id = input('id', '', ['trim', FILTER_SANITIZE_NUMBER_INT]);
$trust_no = input('trust_no', '', ['trim', FILTER_SANITIZE_NUMBER_INT]);
$submodel = new StockSubAccount;
$res = $submodel->get_account_by_id($sub_id);
if (!$res['account_id']) return ajaxmsg('不存在的子账号',0);
Db::startTrans();
$yes = false;
$tempinfo = Db::name('stock_trust')->where(['trust_no' => $trust_no])->lock(true)->find();
if (!$tempinfo){
Db::rollback();
return ajaxmsg('没找到对应委托,撤单失败',0);
}
$trust['status'] = '已撤';
$trust['cancel_order_flag'] = '1';
$trust['cancel_order_count'] = $tempinfo['trust_count'];
$trust_res = Db::name('stock_trust')->where(['trust_no' => $trust_no])->update($trust);
$affect_money = Db::name('stock_delivery_order')->where(array('trust_no' => $trust_no))->value('liquidation_amount');
$subaccount=new SubAccountMoney();
if ($tempinfo['flag2'] == '买入委托'){
$subm_res = $subaccount->up_moneylog($sub_id, $affect_money, 8);
$position = true;
}
if ($tempinfo['flag2'] == '卖出委托'){
$position = Db::name('stock_position')->where(['sub_id' => $sub_id,'gupiao_code' => $tempinfo['gupiao_code'],'buying' => 0])->find();
$position['canbuy_count'] = $position['canbuy_count'] + $tempinfo['trust_count'];
$position = Db::name('stock_position')->where(['sub_id' => $sub_id,'gupiao_code' => $tempinfo['gupiao_code']])->update($position);
$subm_res = $subaccount->up_moneylog($sub_id, $affect_money, 9);
}
$delivery = Db::name('stock_delivery_order')->where(array('trust_no' => $trust_no))->delete();
if($trust_res && $subm_res && $position && $delivery){
Db::commit();
return ajaxmsg('撤单成功',1);
}
Db::rollback();
return ajaxmsg('撤单失败',0);
}
/*
* 成交记录
*/
public function deal_stock()
{
$token = $this->request->param("token");
$mid = isLogin($token);
if(!$mid) return json(['status' => 0, 'message' => '登陆后才能进行查看']);
$sub_id = input('id', '', ['trim', FILTER_SANITIZE_NUMBER_INT]);
$startDate = input('start_date', '');
$endDate = input('end_date', '');
$page = input('page', 1, ['trim', FILTER_SANITIZE_NUMBER_INT]);
$submodel = new StockSubAccount;
$res = $submodel->get_account_by_id($sub_id);
if (!$res['account_id']) return ajaxmsg('不存在的子账号',0);
$deal_stack = new Deal_stock();
$data = $deal_stack->get_deal_stock($sub_id,$startDate,$endDate);
if(!$data) return ajaxmsg('没有数据',0);
return ajaxmsg('操作成功',1,$data);
}
/*
* 交割记录
*/
public function delivery()
{
$token = $this->request->param("token");
$mid = isLogin($token);
if(!$mid) return json(['status' => 0, 'message' => '登陆后才能进行查看']);
$sub_id = input('id', '', ['trim', FILTER_SANITIZE_NUMBER_INT]);
$startDate = input('start_date', '');
$endDate = input('end_date', '');
$page = input('page', 1, ['trim', FILTER_SANITIZE_NUMBER_INT]);
$submodel = new StockSubAccount;
$res = $submodel->get_account_by_id($sub_id);
if (!$res['account_id']) return ajaxmsg('不存在的子账号',0);
$deal_stack = new Delivery;
$data = $deal_stack->get_delivery_order($sub_id,$startDate,$endDate);
if(!$data) return ajaxmsg('没有数据',0);
return ajaxmsg('操作成功',1,$data);
}
}
\ No newline at end of file
......@@ -200,6 +200,24 @@ class Position extends Model{
$res['profit_rate'] = round($res['ck_profit']/($res['buy_average_price']*$res['canbuy_count'])*100,2);//盈亏比例
return $res;
}
/*
* 返回子账号和股票代码对应的持仓
* $sub_id 子账号
* $code 股票代码
*/
public static function getCodePosition($sub_id,$code){
$res=Db::name('stock_position')
->where(['sub_id'=>$sub_id,'gupiao_code'=>$code])
->where(['buying'=>0])
->find();
if(empty($res)){return false;}
$info=z_market($code);
$res['now_price']=$info["current_price"];
$res['market_value'] = $info["current_price"]*$res['canbuy_count'];//最新市值
$res['ck_profit'] = round(($info["current_price"]-$res['buy_average_price'])*$res['canbuy_count'],2);//参考浮动盈亏
$res['profit_rate'] = round($res['ck_profit']/($res['buy_average_price']*$res['canbuy_count'])*100,2);//盈亏比例
return $res;
}
/*
* 返回子账号和股票代码对应持仓的可卖数量
* $sub_id 子账号
......@@ -316,9 +334,9 @@ class Position extends Model{
* $user 证券账户
* $soure 证券来源
*/
public function add_m_position($stockinfo,$count,$sub_id,$lid,$user,$soure,$ck_price,$model,$Trust_no){
public function add_m_position($stockinfo,$count,$sub_id,$lid,$user,$soure,$ck_price,$model,$Trust_no = 0){
$position_res = $this->get_code_position($sub_id, $stockinfo["code"]);
$position_res = self::getCodePosition($sub_id, $stockinfo["code"]);
if(empty($position_res)){
if($model==2){
$data=array();
......@@ -326,6 +344,7 @@ class Position extends Model{
$data[0]['lid'] = $lid;
$data[0]['soruce'] = $soure;
$data[0]['login_name'] = $user;
$data[0]['market'] = toMarket($stockinfo["code"]);
$data[0]['gupiao_code'] = $stockinfo["code"];
$data[0]['gupiao_name'] = $stockinfo["name"];
$data[0]['count'] = $count;
......@@ -338,7 +357,7 @@ class Position extends Model{
$data[0]['market_value'] = $stockinfo["current_price"]*$count;//最新市值
$data[0]['ck_profit'] = round(($stockinfo["current_price"]-$ck_price)*$count,3);//参考浮动盈亏
$data[0]['profit_rate'] = round($data[0]['ck_profit']/($ck_price*$count)*100,2);//盈亏比例
$data[0]['trust_no'] = $Trust_no;//盈亏比例
// $data[0]['trust_no'] = $Trust_no;//盈亏比例
$data[0]['buying'] = 0;//买入成功
$data[0]['selling'] = 0;//1、在途卖出
$data[0]['gudong_code'] = "";//股东代码 无法模拟暂时空
......@@ -391,6 +410,60 @@ class Position extends Model{
return $result;
}
/*
* 存储模拟持仓记录
* $data 持仓数据
* $sub_id 子账号
* $lid 安全模式id号
* $user 证券账户
* $soure 证券来源
*/
public static function addPosition($code,$market,$count,$sub_id,$lid,$user,$soure,$ck_price,$Trust_no)
{
//if(!$count) return false;
//$canbuy = self::getCanbuyCount($sub_id,$code);
$position = self::getCodePosition($sub_id, $code);
$canbuy_count=$position['canbuy_count']+$count;
$stockinfo = z_market($code,$market);
$data = array();
$data[0]['sub_id'] = $sub_id;
$data[0]['lid'] = $lid;
$data[0]['soruce'] = $soure;
$data[0]['login_name'] = $user;
$data[0]['gupiao_code'] = $stockinfo["code"];
$data[0]['gupiao_name'] = $stockinfo["name"];
$data[0]['count'] = $count;
$data[0]['stock_count'] = $position['stock_count']+$count;
$data[0]['canbuy_count'] = $position['canbuy_count']+$count;
$data[0]['ck_price'] = self::calculate($sub_id,$code,'price');//参考成本价
dump($data[0]['ck_price']);die;
$data[0]['buy_average_price'] = self::calculate($sub_id,$code,'average');//买入均价
$data[0]['ck_profit_price'] = '';//参考盈亏成本价
$data[0]['now_price'] = $stockinfo["current_price"];//'当前价'
$data[0]['market_value'] = $stockinfo["current_price"] * $count;//最新市值
$data[0]['ck_profit'] = $count > 0 ? bcmul(strval($stockinfo["current_price"] - $ck_price),strval($count),2) : 0; //参考浮动盈亏
$data[0]['profit_rate'] = $count > 0 && $ck_price > 0 ? bcdiv(strval($data[0]['ck_profit']),strval($ck_price * $count * 100),2) : 0; //盈亏比例
$data[0]['buying'] = 0;//买入成功
$data[0]['selling'] = 0;//1、在途卖出
$data[0]['gudong_code'] = "";//股东代码 无法模拟暂时空
$data[0]['type'] = $stockinfo["exchange_code"];//帐号类别
$data[0]['market'] = toMarket($code);//股票类别
$data[0]['jigou_type'] = 1;
$data[0]['jiyisuo'] = toMarket($code) == "HK" ? "港交所":toMarket($code)=='SZ'? "深交所":"上交所";//交易所
$data[0]['info'] = "";
/***********************************************************************************/
if(TRUST_MODEL_TIME === 1){ // 交易模式为T+1时,不能立即更新可卖数量
unset($data[0]['canbuy_count']);
}
/***********************************************************************************/
if(!empty($position)){
$result = self::where(['id'=>$position['id']])->update($data[0]);
}else{
$result = self::strict(false)->insert($data[0],true);
}
return $result;
}
public static function calculate($sub_id,$code,$variable)
{
if(!$sub_id || !$code || !$variable) return 0;
......
......@@ -203,7 +203,7 @@ class Operate extends Admin{
$model=new SubMoneyRecord();
$xlsData=$model->get_record($map,$order,$listRows);
foreach($xlsData as $key=>$value){
$xlsData->items->items[$key]['create_time']=date('Y-m-d h:i',$value['create_time']);
$xlsData->items[$key]['create_time']=date('Y-m-d h:i',$value['create_time']);
};
$title="资金流水";
$arrHeader = array('子账户ID','子账户','影响金额','账户余额','资金类型','详情','变动日期');
......@@ -334,7 +334,7 @@ class Operate extends Admin{
->where($map)
->order($order)->paginate($listRows);
foreach($xlsData as $key=>$value){
$xlsData->items->items[$key]['deal_date']=date('Y-m-d',$value['deal_date']);
$xlsData->items[$key]['deal_date']=date('Y-m-d',$value['deal_date']);
};
$title="历史成交";
$arrHeader = array('子账户ID','手机号','子账户','交易账户名','证券代码','证券名称','成交日期','成交时间','委托编号','委托价格','委托数量','成交编号','成交价格','成交数量','成交金额','买卖标志','状态说明');
......@@ -433,7 +433,7 @@ class Operate extends Admin{
->order($order)
->paginate($listRows);
foreach($xlsData as $key=>$value){
$xlsData->items->items[$key]['trust_date']=date('Y-m-d',$value['trust_date']);
$xlsData->items[$key]['trust_date']=date('Y-m-d',$value['trust_date']);
};
$title="历史委托";
$arrHeader = array('子账户ID','手机号','子账户','交易账户名','证券代码','证券名称','委托日期','委托时间','委托编号','委托价格','委托数量
......@@ -529,7 +529,7 @@ ume','amount','cancel_order_count','status');
->where($map)
->order($order)->paginate($listRows);
foreach($xlsData as $key=>$value){
$xlsData->items->items[$key]['trust_date']=date('Y-m-d',$value['trust_date']);
$xlsData->items[$key]['trust_date']=date('Y-m-d',$value['trust_date']);
};
//$type_arr=['5'=>'免息配资','1'=>'按天配资','2'=>'按周配资','3'=>'按月配资','4'=>'免费体验','6'=>'模拟操盘'];
......@@ -637,7 +637,7 @@ ume','amount','cancel_order_count','status');
->order($order)
->paginate($listRows);
foreach($xlsData as $key=>$value){
$xlsData->items->items[$key]['trust_date']=date('Y-m-d',$value['trust_date']);
$xlsData->items[$key]['trust_date']=date('Y-m-d',$value['trust_date']);
};
$title="当日暂时未成交委托";
$arrHeader = array('子账户ID','手机号','子账户','交易账户名','证券代码','证券名称','委托日期','委托时间','委托编号','委托价格','委托数量','成交数量','成交金额','撤单数量','状态说明');
......@@ -810,7 +810,7 @@ ume','amount','cancel_order_count','status');
->where($map)
->order($order)->paginate($listRows);
foreach($xlsData as $key=>$value){
$xlsData->items->items[$key]['deal_date']=date('Y-m-d',$value['deal_date']);
$xlsData->items[$key]['deal_date']=date('Y-m-d',$value['deal_date']);
};
$title="当日成交";
$arrHeader = array('子账户ID','手机号','子账户','交易账户名','证券代码','证券名称','成交日期','成交时间','委托编号','委托价格','委托数量','成交编号','成交价格','成交数量','成交金额','买卖标志','状态说明');
......@@ -1032,7 +1032,7 @@ ume','amount','cancel_order_count','status');
->where('t.status','=','已撤')
->order($order)->paginate($listRows);
foreach($xlsData as $key=>$value){
$xlsData->items->items[$key]['trust_date']=date('Y-m-d',$value['trust_date']);
$xlsData->items[$key]['trust_date']=date('Y-m-d',$value['trust_date']);
};
$title="撤单查询";
$arrHeader = array('子账户ID','手机号','子账户','交易账户名','证券代码','证券名称','委托日期','委托时间','委托编号','委托价格','委托数量','成交数量','成交金额','撤单数量','状态说明');
......@@ -1135,7 +1135,7 @@ ume','amount','cancel_order_count','status');
->order($order)
->paginate($listRows);
foreach($xlsData as $key=>$value){
$xlsData->items->items[$key]['deal_date']=date('Y-m-d',$value['deal_date']);
$xlsData->items[$key]['deal_date']=date('Y-m-d',$value['deal_date']);
};
$title="交割单";
$arrHeader = array('子账户ID','手机号','子账户','交易账户名','证券代码','证券名称','成交日期','业务名称','成交价格','成交数量','剩余数量','成交金额','清算金额','剩余金额','印花税','过户费','净佣金','委托编号','成交编号');
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment