get(); return view("agent.order.leverlist",[ 'legal_currencies' => $legal_currencies, ]); } //撮合单 public function transactionIndex() { $legal_currencies = Currency::where('is_legal', 1)->get(); $currencies = Currency::get(); return view("agent.order.transaction", [ 'legal_currencies' => $legal_currencies, 'currencies' => $currencies, ]); } //撮合订单 public function transactionList(Request $request) { $limit = $request->get('limit', 10); //当前代理商信息 $agent_id = Agent::getAgentId(); $node_users = Users::whereRaw("FIND_IN_SET($agent_id,`agent_path`)")->pluck('id')->all(); $account_number = $request->get('account_number', ''); $result = TransactionComplete::when($account_number != '', function ($query) use ($account_number) { $query->whereHas('user', function ($query) use ($account_number) { $query->where('account_number', 'like', '%' . $account_number . '%'); })->orWhereHas('fromUser', function ($query) use ($account_number) { $query->where('account_number', 'like', '%' . $account_number . '%'); }); })->where(function ($query) use ($request) { $legal = $request->input('legal', -1); $currency = $request->input('currency', -1); $legal != -1 && $query->where('legal', $legal); $currency != -1 && $query->where('currency', $currency); $start_time = $request->input('start_time', ''); $end_time = $request->input('end_time', ''); if (!empty($start_time)) { $start_time = strtotime($start_time); $query->where('create_time', '>=', $start_time); } if (!empty($end_time)) { $end_time = strtotime($end_time); $query->where('create_time', '<=', $end_time); } })->where(function ($query) use ($node_users) { $query->where(function ($query) use ($node_users) { $query->whereIn('user_id', $node_users); })->orwhere(function ($query) use ($node_users) { $query->whereIn('from_user_id', $node_users); }); //})->orderBy('id', 'desc')->toSql(); //dd($result); })->orderBy('id', 'desc')->paginate($limit); $sum = $result->sum('number'); return $this->layuiData($result, $sum); } //杠杆 public function order_list(Request $request) { $limit = $request->input("limit", 10); $id = $request->input("id", 0); $username = $request->input("username", ''); $agentusername = $request->input("agentusername", ''); $status = $request->input("status", 10); $type = $request->input("type", 0); $start = $request->input("start", ''); $end = $request->input("end", ''); $legal_id = $request->input("legal_id",-1); //当前代理商信息 $agent_id = Agent::getAgentId(); if ($agentusername != '') { $search_agent = Agent::where('username', $agentusername)->first(); if (!$search_agent) { return $this->error('代理商不存在'); } $parent_agent = explode(',', $search_agent->agent_path); if (!in_array($agent_id, $parent_agent)) { return $this->error('该代理商并不属于您的团队'); } $now_agent_id = $search_agent->id; } else { $now_agent_id = $agent_id; } $query = TransactionOrder::whereHas('user', function ($query) use ($username) { $username != '' && $query->where('account_number', $username)->orWhere('phone', $username); })->where(function ($query) use ($id, $status, $type) { $id != 0 && $query->where('id', $id); $status != 10 && in_array($status, [LeverTransaction::ENTRUST, LeverTransaction::TRANSACTION, LeverTransaction::CLOSED, LeverTransaction::CANCEL, LeverTransaction::CLOSING]) && $query->where('status', $status); $type > 0 && in_array($type, [1, 2]) && $query->where('type', $type); })->where(function ($query) use ($start, $end) { !empty($start) && $query->where('create_time', '>=', strtotime($start . ' 0:0:0')); !empty($end) && $query->where('create_time', '<=', strtotime($end . ' 23:59:59')); })->where(function ($query) use ($now_agent_id) { $now_agent_id > 0 && $query->whereRaw("FIND_IN_SET($now_agent_id,`agent_path`)"); })->when($legal_id > 0, function ($query) use ($legal_id) { $query->where('legal',$legal_id); }); $order_list = $query->orderBy('id', 'desc')->paginate($limit); return $this->layuiData($order_list); } /** *获取杠杆统计数据 */ public function get_order_account(Request $request) { $id = $request->input("id", 0); $username = $request->input("username", ''); $agentusername = $request->input("agentusername", ''); $status = $request->input("status", 10); $type = $request->input("type", 0); $start = $request->input("start", ''); $end = $request->input("end", ''); $legal_id = $request->input("legal_id",-1); //当前代理商信息 $agent_id = Agent::getAgentId(); if ($agentusername != '') { $search_agent = Agent::where('username', $agentusername)->first(); if (!$search_agent) { return $this->error('代理商不存在'); } $parent_agent = explode(',', $search_agent->agent_path); if (!in_array($agent_id, $parent_agent)) { return $this->error('该代理商并不属于您的团队'); } $now_agent_id = $search_agent->id; } else { $now_agent_id = $agent_id; } $query1 = TransactionOrder::whereHas('user', function ($query) use ($username) { $username != '' && $query->where('account_number', $username)->orWhere('phone', $username); })->where(function ($query) use ($id, $status, $type) { $id != 0 && $query->where('id', $id); $status != 10 && in_array($status, [LeverTransaction::ENTRUST, LeverTransaction::TRANSACTION, LeverTransaction::CLOSED, LeverTransaction::CANCEL, LeverTransaction::CLOSING]) && $query->where('status', $status); $type > 0 && in_array($type, [1, 2]) && $query->where('type', $type); })->where(function ($query) use ($start, $end) { !empty($start) && $query->where('create_time', '>=', strtotime($start . ' 0:0:0')); !empty($end) && $query->where('create_time', '<=', strtotime($end . ' 23:59:59')); })->where(function ($query) use ($now_agent_id) { $now_agent_id > 0 && $query->whereRaw("FIND_IN_SET($now_agent_id,`agent_path`)"); })->when($legal_id > 0, function ($query) use ($legal_id) { $query->where('legal',$legal_id); }); //可用保证金 未平仓 $_lock = $query1->selectRaw('sum(if(status <= 2,caution_money,0)) as caution_money')->value('caution_money') ?? 0; //总订单数 $_count = $query1->count(); //头寸收益(平仓最终盈亏) $_toucun =$query1->whereIn('status', [LeverTransaction::CLOSED])->sum('fact_profits'); //手续费收益(已平仓手续费) $_shouxu = $query1->whereIn('status', [LeverTransaction::CLOSED])->sum('trade_fee'); //查询当前代理商的头寸 手续费百分比 $now_agent=Agent::getAgentById($now_agent_id); $data = []; $data['_num'] = $_count; $data['_toucun'] = bc_mul(bc_mul($_toucun,$now_agent->pro_loss/100),-1);// 乘以代理商头寸百分比 取负数 $data['_shouxu'] =bc_mul($_shouxu,$now_agent->pro_ser/100);// 乘以代理商手续费百分比 $_all = bc_add($data['_toucun'], $data['_shouxu']); $data['_all'] = $_all; //可用保证金 $data['_lock'] = $_lock; return $this->ajaxReturn($data); } /** * @param Request $request * @return \Illuminate\Http\JsonResponse */ //导出订单记录Excel public function order_excel(Request $request) { $limit = $request->input("limit", 10); $id = $request->input("id", 0); $username = $request->input("username", ''); $agentusername = $request->input("agentusername", ''); $status = $request->input("status", 10); $type = $request->input("type", 0); $start = $request->input("start", ''); $end = $request->input("end", ''); $legal_id = $request->input("legal_id",-1); //echo $id.'-'.$username.'-'.$agentusername.'-'.$status.'-'. $type.'-'.$start.'-'.$end;exit; /* $where = []; if ($id > 0){ $where[] = ['id' , '=' , $id]; } if (!empty($username)){ $s = DB::table('users')->where('account_number' , $username)->first(); if ($s !== null){ $where[] = ['user_id' , '=' , $s->id]; } } if ($status != 10 && in_array($status , [LeverTransaction::ENTRUST,LeverTransaction::TRANSACTION,LeverTransaction::CLOSED,LeverTransaction::CANCEL,LeverTransaction::CLOSING])){ $where[] = ['status' , '=' , $status]; } if ($type > 0 && in_array($type , [1,2])){ $where[] = ['type' , '=' , $type]; } if (!empty($start) && !empty($end)) { $where[] = ['create_time' , '>' , strtotime($start . ' 0:0:0')]; $where[] = ['create_time' , '<' , strtotime($end . ' 23:59:59')]; } $_self = Agent::getAgent(); if ($_self === null){ return $this->outmsg('发生错误!请重新登录'); } $sons = $this->get_my_sons(); if (!empty($agentusername)){ $s = DB::table('agent')->where('username' , $agentusername)->first(); if (!in_array($s->id , $sons['all'])){ return $this->error('该代理商并不属于您的团队'); }else{ $p_s_s = $this->get_my_sons($s->id); if (!empty($p_s_s)){ $order_list = TransactionOrder::whereIn('status' , [LeverTransaction::ENTRUST,LeverTransaction::TRANSACTION,LeverTransaction::CLOSED,LeverTransaction::CANCEL,LeverTransaction::CLOSING])->whereIn('user_id' , $p_s_s['all'])->where($where)->get()->toArray(); }else{ $order_list = TransactionOrder::whereIn('status' , [LeverTransaction::ENTRUST,LeverTransaction::TRANSACTION,LeverTransaction::CLOSED,LeverTransaction::CANCEL,LeverTransaction::CLOSING])->whereIn('user_id' , $sons['all'])->where($where)->get()->toArray(); } } }else{ $order_list = TransactionOrder::whereIn('status' , [LeverTransaction::ENTRUST,LeverTransaction::TRANSACTION,LeverTransaction::CLOSED,LeverTransaction::CANCEL,LeverTransaction::CLOSING])->whereIn('user_id' , $sons['all'])->where($where)->get()->toArray(); } */ //当前代理商信息 $agent_id = Agent::getAgentId(); if ($agentusername != '') { $search_agent = Agent::where('username', $agentusername)->first(); if (!$search_agent) { return $this->error('代理商不存在'); } $parent_agent = explode(',', $search_agent->agent_path); if (!in_array($agent_id, $parent_agent)) { return $this->error('该代理商并不属于您的团队'); } $now_agent_id = $search_agent->id; } else { $now_agent_id = $agent_id; } $query = TransactionOrder::whereHas('user', function ($query) use ($username) { $username != '' && $query->where('account_number', $username)->orWhere('phone', $username); })->where(function ($query) use ($id, $status, $type) { $id != 0 && $query->where('id', $id); $status != 10 && in_array($status, [LeverTransaction::ENTRUST, LeverTransaction::TRANSACTION, LeverTransaction::CLOSED, LeverTransaction::CANCEL, LeverTransaction::CLOSING]) && $query->where('status', $status); $type > 0 && in_array($type, [1, 2]) && $query->where('type', $type); })->where(function ($query) use ($start, $end) { !empty($start) && $query->where('create_time', '>=', strtotime($start . ' 0:0:0')); !empty($end) && $query->where('create_time', '<=', strtotime($end . ' 23:59:59')); })->where(function ($query) use ($now_agent_id) { $now_agent_id > 0 && $query->whereRaw("FIND_IN_SET($now_agent_id,`agent_path`)"); })->when($legal_id > 0, function ($query) use ($legal_id) { $query->where('legal',$legal_id); }); $order_list = $query->orderBy('id', 'desc')->get()->toArray(); $data = $order_list; //dd($data); return Excel::create('订单数据', function ($excel) use ($data) { $excel->sheet('订单数据', function ($sheet) use ($data) { $sheet->cell('A1', function ($cell) { $cell->setValue('ID'); }); $sheet->cell('B1', function ($cell) { $cell->setValue('用户名'); }); $sheet->cell('C1', function ($cell) { $cell->setValue('所属代理商'); }); $sheet->cell('D1', function ($cell) { $cell->setValue('用户等级'); }); $sheet->cell('E1', function ($cell) { $cell->setValue('交易类型'); }); $sheet->cell('F1', function ($cell) { $cell->setValue('交易对'); }); $sheet->cell('G1', function ($cell) { $cell->setValue('当前状态'); }); $sheet->cell('H1', function ($cell) { $cell->setValue('原始价格'); }); $sheet->cell('I1', function ($cell) { $cell->setValue('开仓价格'); }); $sheet->cell('J1', function ($cell) { $cell->setValue('当前价格'); }); $sheet->cell('K1', function ($cell) { $cell->setValue('最终盈亏'); }); $sheet->cell('L1', function ($cell) { $cell->setValue('手数'); }); $sheet->cell('M1', function ($cell) { $cell->setValue('倍数'); }); $sheet->cell('N1', function ($cell) { $cell->setValue('初始保证金'); }); $sheet->cell('O1', function ($cell) { $cell->setValue('当前可用保证金'); }); $sheet->cell('P1', function ($cell) { $cell->setValue('创建时间'); }); $sheet->cell('Q1', function ($cell) { $cell->setValue('完成时间'); }); if (!empty($data)) { foreach ($data as $key => $value) { if ($value['type'] == 1) { $value['type'] = "买入"; } else { $value['type'] = "卖出"; } if ($value['status'] == 0) { $value['status'] = "挂单中"; } elseif ($value['status'] == 1) { $value['status'] = "交易中"; } elseif ($value['status'] == 2) { $value['status'] = "平仓中"; } elseif ($value['status'] == 3) { $value['status'] = "已平仓"; } elseif ($value['status'] == 4) { $value['status'] = "已撤单"; } $i = $key + 2; $sheet->cell('A' . $i, $value['id']); $sheet->cell('B' . $i, $value['user_name']); $sheet->cell('C' . $i, $value['parent_agent_name']); $sheet->cell('D' . $i, $value['agent_level']); $sheet->cell('E' . $i, $value['type']); $sheet->cell('F' . $i, $value['symbol']); $sheet->cell('G' . $i, $value['status']); $sheet->cell('H' . $i, $value['origin_price']); $sheet->cell('I' . $i, $value['price']); $sheet->cell('J' . $i, $value['update_price']); //当前价格 $sheet->cell('K' . $i, $value['fact_profits']); $sheet->cell('L' . $i, $value['share']); //手数 $sheet->cell('M' . $i, $value['multiple']); $sheet->cell('N' . $i, $value['origin_caution_money']); //初始保证金 $sheet->cell('O' . $i, $value['caution_money']); $sheet->cell('P' . $i, $value['create_time']); //创建时间 $sheet->cell('Q' . $i, $value['complete_time']); } } ob_end_clean(); }); })->download('xlsx'); } //导出用户记录Excel public function user_excel(Request $request) { $id = request()->input('id', 0); $parent_id = request()->input('parent_id', 0); $account_number = request()->input('account_number', ''); $start = request()->input('start', ''); $end = request()->input('end', ''); $users = new Users(); if ($id) { $users = $users->where('id', $id); } if ($parent_id > 0) { $users = $users->where('agent_note_id', $parent_id); } if ($account_number) { $users = $users->where('account_number', $account_number); } if (!empty($start) && !empty($end)) { $users->whereBetween('time', [strtotime($start . ' 0:0:0'), strtotime($end . ' 23:59:59')]); } // $my_agent_list = Agent::getLevel4AgentId(Agent::getAgentId(), [Agent::getAgentId()]); // $users = $users->whereIn('agent_note_id', $my_agent_list); $agent_id = Agent::getAgentId(); $users = $users->whereRaw("FIND_IN_SET($agent_id,`agent_path`)"); $data = $users->get()->toArray(); //dd($data); return Excel::create('用户列表', function ($excel) use ($data) { $excel->sheet('用户列表', function ($sheet) use ($data) { $sheet->cell('A1', function ($cell) { $cell->setValue('ID'); }); $sheet->cell('B1', function ($cell) { $cell->setValue('用户名'); }); $sheet->cell('C1', function ($cell) { $cell->setValue('用户身份'); }); $sheet->cell('D1', function ($cell) { $cell->setValue('上级代理商'); }); $sheet->cell('E1', function ($cell) { $cell->setValue('USDT余额'); }); $sheet->cell('F1', function ($cell) { $cell->setValue('邮箱'); }); $sheet->cell('G1', function ($cell) { $cell->setValue('邀请码'); }); $sheet->cell('H1', function ($cell) { $cell->setValue('加入时间'); }); if (!empty($data)) { foreach ($data as $key => $value) { $i = $key + 2; $sheet->cell('A' . $i, $value['id']); $sheet->cell('B' . $i, $value['account_number']); $sheet->cell('C' . $i, $value['my_agent_level']); $sheet->cell('D' . $i, $value['parent_name']); $sheet->cell('E' . $i, $value['usdt']); $sheet->cell('F' . $i, $value['email']); $sheet->cell('G' . $i, $value['extension_code']); $sheet->cell('H' . $i, $value['create_date']); } } ob_end_clean(); }); })->download('xlsx'); } /** * 结算列表首页 */ public function jieIndex(Request $request){ //法币 $legal_currencies = Currency::where('is_legal', 1)->get(); //下级代理 $son_agents = Agent::getAllChildAgent(Agent::getAgentId()); $self=Agent::getAgent(); $is_admin=$self?$self->is_admin:0; return view('agent.order.jie_index',[ 'legal_currencies' => $legal_currencies, 'son_agents' => $son_agents, 'is_admin'=>$is_admin ]); } public function jie_list(Request $request) { $limit = $request->input("limit", 10); $start = $request->input("start", ''); $end = $request->input("end", ''); $agent_id = Agent::getAgentId(); //$node_users = Users::whereRaw("FIND_IN_SET($agent_id,`agent_path`)")->pluck('id')->all(); $child_agents = Agent::getAllChildAgent($agent_id); $son_agents = $child_agents->pluck('id')->all(); $lists = AgentMoneylog::whereIn('agent_id', $son_agents) ->where(function ($query) use ($request) { $id = $request->input("id", 0); $username = $request->input("username", ''); $belong_agent = $request->input('belong_agent', ''); $legal_id = $request->input('legal_id', -1); $type = $request->input("type", -1);//1 头寸 2手续费 $query->when($id > 0,function($query) use ($id){ $query->where('id',$id); })->when($username != '', function ($query) use ($username) { $query->whereHas('user', function ($query) use ($username) { $query->where('account_number', $username); }); })->when($belong_agent != '', function ($query) use ($belong_agent) { $query->whereHas('agent', function ($query) use ($belong_agent) { $query->where('username', $belong_agent); }); })->when($legal_id > 0, function ($query) use ($legal_id) { $query->where('legal_id', $legal_id); })->when($type > 0, function ($query) use ($type) { $query->where('type', $type); }); })->where(function ($query) use ($start, $end) { !empty($start) && $query->where('created_time', '>=', strtotime($start . ' 0:0:0')); !empty($end) && $query->where('created_time', '<=', strtotime($end . ' 23:59:59')); }) ->orderBy('id', 'desc') ->paginate($limit); return $this->layuiData($lists); } /** * 订单详情 */ public function order_info(Request $request) { $order_id = $request->input("order_id", 0); if ($order_id > 0) { // $sons = $this->get_my_sons(); //$orderinfo = TransactionOrder::where('id', $order_id)->whereIn('user_id', $sons['all'])->first(); $orderinfo = LeverTransaction::where('id', $order_id)->first(); if (empty($orderinfo)) { return $this->error('订单编号错误或者您无权查看订单详情'); } else { //dd($orderinfo); return view("agent.order.info", ['info' => $orderinfo]); // $data['info'] = $orderinfo; // return $this->ajaxReturn($data); } } else { return $this->error('非法参数'); } } /** * @param $san_user * */ public function sel_arr($arr = array()) { if (!empty($arr)) { $new_arr = []; foreach ($arr as $k => $val) { $new_arr[] = $val->user_id; } return $new_arr; } else { return []; } } /** * @param $san_user * */ public function sel_agent_arr($arr = array()) { if (!empty($arr)) { $new_arr = []; foreach ($arr as $k => $val) { $new_arr[] = $val->id; } return $new_arr; } else { return []; } } //我的杠杆订单 public function userLeverIndex(Request $request) { $id = $request->get('id', null); if (empty($id)) { return $this->error('参数错误'); } return view("agent.user.leverlist", ['user_id' => $id]); } public function userLeverList(Request $request) { $limit = $request->input("limit", 10); $status = $request->input("status", 10); $type = $request->input("type", 0); $start = $request->input("start", ''); $end = $request->input("end", ''); $user_id = $request->input("user_id", ''); $query = TransactionOrder::where('user_id', $user_id)->where(function ($query) use ($status, $type) { $status != 10 && in_array($status, [LeverTransaction::ENTRUST, LeverTransaction::TRANSACTION, LeverTransaction::CLOSED, LeverTransaction::CANCEL, LeverTransaction::CLOSING]) && $query->where('status', $status); $type > 0 && in_array($type, [1, 2]) && $query->where('type', $type); })->where(function ($query) use ($start, $end) { !empty($start) && $query->where('create_time', '>=', strtotime($start . ' 0:0:0')); !empty($end) && $query->where('create_time', '<=', strtotime($end . ' 23:59:59')); }); $order_list = $query->orderBy('id', 'desc')->paginate($limit); return $this->layuiData($order_list); } public function microIndex(){ $currencies = Currency::where('is_micro', 1)->get(); $currency_matches = CurrencyMatch::where('open_microtrade', 1)->get(); return view("agent.order.microlist",[ 'currencies' => $currencies, 'currency_matches'=>$currency_matches ]); } //获取交易对和支付币种 public function microCurrency() { $currencies = Currency::where('is_micro', 1)->get(); $currency_matches = CurrencyMatch::where('open_microtrade', 1)->get(); $data = []; $data['currencies'] = $currencies; $data['currency_matches'] = $currency_matches; return $this->ajaxReturn($data); } //期权订单 public function microList(Request $request) { $currency_id = $request->input('currency_id', -1); $match_id = $request->input('match_id', -1); $type = $request->input('type', -1); $account = $request->input('account', ''); $name = $request->input('name', ''); $limit = $request->input('limit', 10); $status = $request->input('status', -1); $start = $request->input("start_time", ''); $end = $request->input("end_time", ''); $pre_profit_result = $request->input('pre_profit_result', -2); $profit_result = $request->input('profit_result', -2); $id = $request->input('id', ''); $agentusername = $request->input('agentusername', ''); $_self = Agent::getAgent(); //获取当前登录代理商平台用户 $agent_id = Agent::getAgentId(); if ($agentusername != '') { $search_agent = Agent::where('username', $agentusername)->first(); if (!$search_agent) { return $this->error('代理商不存在'); } $parent_agent = explode(',', $search_agent->agent_path); if (!in_array($agent_id, $parent_agent)) { return $this->error('该代理商并不属于您的团队'); } $now_agent_id = $search_agent->id; } else { $now_agent_id = $agent_id; } $querys = MicroOrder::with(['currency', 'currencyMatch', 'user']) ->when($currency_id != -1, function ($query) use ($currency_id) { $query->where('currency_id', $currency_id); })->when($match_id != -1, function ($query) use ($match_id) { $query->where('match_id', $match_id); })->when($type != -1, function ($query) use ($type) { $query->where('type', $type); })->when($status != -1, function ($query) use ($status) { $query->where('status', $status); })->when($pre_profit_result != -2, function ($query) use ($pre_profit_result) { $query->where('pre_profit_result', $pre_profit_result); })->when($profit_result != -2, function ($query) use ($profit_result) { $query->where('profit_result', $profit_result); })->when($account != '' || $name != '', function ($query) use ($account, $name) { $query->whereHas('user', function ($query) use ($account, $name) { $account != '' && $query->where("phone", 'like', '%' . $account . '%')->orwhere('email', 'like', '%' . $account . '%'); $query->when($name != '', function ($query) use ($name) { $query->whereHas('userProfile', function ($query) use ($name) { $query->where("name", 'like', '%' . $name . '%'); }); }); }); })->when($start != '', function ($query) use ($start) { $query->where('created_at', '>=', $start); })->when($end != '', function ($query) use ($end) { $query->where('created_at', '<=', $end); })->when($id != '', function ($query) use ($id) { $query->where('id', $id); })->where(function ($query) use ($now_agent_id) { $now_agent_id > 0 && $query->whereRaw("FIND_IN_SET($now_agent_id,`agent_path`)"); }); $query_total = clone $querys; $total = $query_total->select([ DB::raw('*'), DB::raw('sum(fee) as total_fee'), DB::raw('sum(fact_profits) as total_fact_profits'), ])->first()->setVisible(['total_fee', 'total_fact_profits']); //$total=''; $results = $querys->orderBy('id', 'desc')->paginate($limit); $items = $results->getCollection(); $items->transform(function ($item, $key) { return $item->append('pre_profit_result_name')->makeVisible('pre_profit_result'); }); $results->setCollection($items); return $this->layuiData($results, ['total' => $total]); } }