isPost()){ $data = input(); $group = isset($data['group'])?$data['group']:''; //组 $user = isset($data['user'])?$data['user']:''; //用户 $order = isset($data['order'])?$data['order']:''; //用户 $groupArr = explode(",", $group); //使用字符串切割 $user = explode(",", $user); //使用字符串切割 $where1=[]; //通配查询 $where['Group'] = ['in',$groupArr]; //精准选择(组的成员) $whereuser['Login']=['in',$user]; //精准选择(用户成员) if(strpos($group,'*') !== false || strpos($group,'?')){//判断是否存在通配查询 $wildcardStr = $this->wildcard($group); $str = $this->slashEscap($wildcardStr); $where1['group'] = ["like",$str]; } $result = Db::name('mt5_users')->where($where)->whereOr($where1)->whereOr($whereuser)->distinct(true)->select(); $result1 = Db::name('order_progress')->where(['orig_order'=>$order])->select(); //筛选函数(当前跟踪的订单) //外层筛选出来之前做过的订单 foreach ($result as $key => $value) { //自己选择的用户 $result[$key]['LOGIN'] = $value["Login"]; $result[$key]['NAME'] = $value['Name']; $result[$key]['GROUP'] = $value['Group']; $result[$key]['BALANCE'] = $value['Balance']; foreach ($result1 as $k => $v) { if($value['Login']==$v['dest_login']){ unset($result[$key]); } } } $result = array_values($result); //重新组织数组的键值对 if($result){ return json(['code'=>'00','user'=>$result,'msg'=>'获得数据成功']); }else{ return json(['code'=>'01','msg'=>'没有对应的数据']); } }else{ return json(['code'=>'01','msg'=>'请使用post方式访问']); } } //点击订单后获取到的信息 public function getorder(Request $request){ if ($request->isPost()){ $data = input(); //获取订单的信息 //获取deals表中的信息 判断订单是否平仓 entry为0是正 entry为1时是负 $deals = Db::query("select count(*) as 'num' from mt5_deals WHERE PositionID = {$data['orderid']} group by entry "); $getDeal = Db::query("select Deal as 'deal' from mt5_deals WHERE PositionID = {$data['orderid']}"); $getDeals = array_column($getDeal,'deal'); $deal = array_column($deals,'num'); if(!$deals || $deal['0'] != $deal['1']){ return json(['code'=>'01','msg'=>'没有找到匹配的订单']); } //查询该positionID的所有order $result = Db::query("SELECT `Order` FROM mt5_orders_history WHERE PositionID = {$data['orderid']}"); //查询开仓信息 $openResult = Db::query("SELECT PriceCurrent,TimeSetup FROM mt5_orders_history WHERE PositionID={$data['orderid']} and TimeSetup = (SELECT MIN(TimeSetup) FROM mt5_orders_history WHERE PositionID={$data['orderid']})"); //通过deals表查询盈利 $earnings = Db::query("SELECT SUM(Commission) as commission,SUM(Profit) as profit FROM mt5_deals WHERE PositionID={$data['orderid']}")[0]; //查询关仓信息 $closeResult = Db::query("SELECT PriceCurrent,TimeDone,Login,PositionID,Symbol,VolumeInitial,PriceTP,PriceSL FROM mt5_orders_history WHERE PositionID={$data['orderid']} and TimeDone = (SELECT MAX(TimeDone) FROM mt5_orders_history WHERE PositionID={$data['orderid']})"); if($closeResult && $result && $openResult){ $closeResult['OPEN_PRICE'] = $openResult['0']["PriceCurrent"]; $closeResult['OPEN_TIME'] = $openResult['0']["TimeSetup"]; $closeResult['CLOSE_TIME'] = $closeResult['0']['TimeDone']; $closeResult['CLOSE_PRICE'] = $closeResult['0']['PriceCurrent']; $closeResult['LOGIN'] = $closeResult['0']['Login']; $closeResult['TICKET'] = $closeResult['0']['PositionID']; $closeResult['SYMBOL'] = $closeResult['0']['Symbol']; $closeResult['VOLUME'] = $closeResult['0']['VolumeInitial']; $closeResult['TP'] = $closeResult['0']['PriceTP']; $closeResult['SL'] = $closeResult['0']['PriceSL']; $closeResult['PROFIT'] = $earnings['profit']; $closeResult['COMMISSION'] = $earnings['commission']; $order = array_column($result,'Order'); $send = ['orders'=>$order,'from'=>strtotime($openResult[0]['TimeSetup'])-1,'to'=>strtotime($closeResult[0]['TimeDone'])+1,'login'=>$closeResult['0']['Login'],'deals'=>$getDeals]; $closeResult['send'] = $send; return json(['code'=>'00','data'=>$closeResult,'msg'=>'获得数据成功']); }else{ return json(['code'=>'01','msg'=>'没有找到匹配的订单']); } }else{ return json(['code'=>'01','msg'=>'请使用post方式访问']); } } // 点击订单后查询函数(rollback) public function rollback_order(Request $request){ if ($request->isPost()){ $data = input(); //获取订单的信息 $result = Db::name('order_progress')->where(['type'=>"insert","orig_order"=>$data['orderid'],'error_code'=>0])->select(); //insert成功后插入的订单 $result1 = Db::name('order_progress')->where(['type'=>"rollback","orig_order"=>$data['orderid']])->where('error_code','neq',0)->select(); //rollback失败后的订单 $result2 = Db::name('order_progress')->where(['type'=>"retry","orig_order"=>$data['orderid']])->where('error_code','eq',0)->select(); //retry成功的订单 $result = array_merge($result,$result1,$result2); //对数据进行合并 if($result){ return json(['code'=>'00','data'=>$result,'msg'=>'获得数据成功']); }else{ return json(['code'=>'01','msg'=>'暂无数据']); } }else{ return json(['code'=>'01','msg'=>'请使用post方式访问']); } } // 点击订单后查询函数(retry) public function retry_order(Request $request){ if ($request->isPost()){ $data = input(); //获取订单的信息 $result = Db::name('order_progress')->where(['type'=>"insert","orig_order"=>$data['orderid']])->where('error_code','neq',0)->select(); //insert失败的订单 $result1 = Db::name('order_progress')->where(['type'=>"retry","orig_order"=>$data['orderid']])->where('error_code','neq',0)->select(); //retry失败的订单 $result2 = Db::name('order_progress')->where(['type'=>"except_rollback","orig_order"=>$data['orderid']])->where('error_code','neq',0)->select(); //except_rollback失败的订单 $result = array_merge($result,$result1,$result2); //对数据进行合并 if($result){ return json(['code'=>'00','data'=>$result,'msg'=>'获得数据成功']); }else{ return json(['code'=>'01','msg'=>'暂无数据']); } }else{ return json(['code'=>'01','msg'=>'请使用post方式访问']); } } //确认密码函数(批量操作的时候需要) public function querypassword(Request $request){ if ($request->isPost()){ $data = input(); //获取传递的信息 $password = md5($data['password']); //获取加密后的密码 //根据用户来选择数据 if($data['nickname']=="普通管理员"){ $result = Db::name('admin')->where(['id'=>1])->find(); //找到用户(获取原始的密码) }else{ $result = Db::name('admin')->where(['id'=>2])->find(); //找到用户(获取原始的密码) } // 筛选出来的数据进行密码的匹配 if($password==$result['password']){ return json(['code'=>'00','msg'=>'请求数据成功']); }else{ return json(['code'=>'01','msg'=>'密码填写有误']); } }else{ return json(['code'=>'01','msg'=>'请使用post方式访问']); } } //更新梯度函数(retry的时候进行查询) public function update_percentage(Request $request){ if ($request->isPost()){ $data = input(); //获取传递的信息 $update_array =[]; foreach ($data as $key => $value) { $result = Db::name('mt4_users')->where(['LOGIN'=>$value])->find(); $update_array[$value]= $result['BALANCE']; } if($update_array){ return json(['code'=>'00','data'=>$update_array,'msg'=>'请求数据成功']); }else{ return json(['code'=>'01','data'=>$update_array,'msg'=>'请求数据有误']); } }else{ return json(['code'=>'01','msg'=>'请使用post方式访问']); } } }