get('phone', ''); $email = $request->get('email', ''); $password = $request->get('password', ''); $parent = $request->get('parent', ''); $area_code_id = $request->get('area_code_id', ''); if (empty($password) || (empty($email) && (empty($phone) && empty($area_code_id)))) { return $this->error('参数错误'); } if(empty($area_code_id)){ $area_code_id = 0; } if(empty($email)){ $email = 0; } $parent_id = 0; if(!empty($parent)){ $p = Users::where("extension_code", $parent)->first(); $parent_id = $p->id; } $type = "mobile"; $users = new Users(); $users->password = Users::MakePassword($password); $users->parent_id = $parent_id; if(empty($phone)){ $users->account_number = $email; }else{ $users->account_number = $phone; } $users->area_code_id = $area_code_id; if ($type == "mobile") { $users->phone = $phone; $users->email = $email; } else { $users->email = $email; $users->phone = $phone; } $user_default_avatar = DB::table('settings')->where('key','user_default_avatar')->first(); $users->head_portrait = $user_default_avatar->value; $users->time = time(); $users->extension_code = Users::getExtensionCode(); DB::beginTransaction(); try { $users->parents_path = UserDAO::getRealParentsPath($users); // 生成parents_path tian add // 代理商节点id。标注该用户的上级代理商节点。这里存的代理商id是agent代理商表中的主键,并不是users表中的id。 $users->agent_note_id = Agent::reg_get_agent_id_by_parentid($parent_id); // 代理商节点关系 $users->agent_path = Agent::agentPath($parent_id); $users->save(); // 保存到user表中 $test = UsersWallet::makeWallet($users->id); // DB::rollBack(); // return $this->error('File:'); UserProfile::unguarded(function () use ($users) { $users->userProfile()->create([]); }); DB::commit(); return $this->success("注册成功"); } catch (\Exception $ex) { DB::rollBack(); return $this->error('File:' . $ex->getFile() . ',Line:' . $ex->getLine() . ',Message:' . $ex->getMessage()); } } //开通盲盒作者 public function setBindBox(Request $request){ $id = $request->get('id', ''); if (empty($id)) return $this->error("参数错误"); $user = Users::where('id',$id)->first(); if($user->is_realname != 2){ return $this->error("用户还未实名!"); } if($user->is_bind_box_author==1){ $user->is_bind_box_author = 0; }else{ $user->is_bind_box_author = 1; } $user->save(); return $this->success("操作成功"); } //导出用户列表至excel public function csv(Request $request) { // $limit = $request->get('limit', 10); $account = $request->get('account', ''); $list = new Users(); $list = $list->leftjoin("user_real", "users.id", "=", "user_real.user_id"); //var_dump($n);die; if (!empty($account)) { $list = $list->where("phone", 'like', '%' . $account . '%') ->orwhere('email', 'like', '%' . $account . '%') ->orWhere('account_number', 'like', '%' . $account . '%'); } $list = $list->select("users.*", "user_real.card_id")->orderBy('users.id', 'desc')->get(); $data = $list; 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('注册时间'); }); 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['top_upnumber']); $sheet->cell('D' . $i, $value['zhitui_real_number']); $sheet->cell('E' . $i, $value['real_teamnumber']); $sheet->cell('F' . $i, $value['extension_code']); $sheet->cell('G' . $i, $value['status']); $sheet->cell('H' . $i, $value['head_portrait']); $sheet->cell('I' . $i, $value['time']); } } }); })->download('xlsx'); } //用户列表 public function lists(Request $request) { $limit = $request->get('limit', 10); $account = $request->get('account', ''); $name = $request->get('name', ''); $risk = $request->get('risk', -2); $list = new Users(); $list = $list->leftjoin("user_real", "users.id", "=", "user_real.user_id"); if (!empty($account)) { $list = $list->where("phone", 'like', '%' . $account . '%') ->orwhere('users.email', 'like', '%' . $account . '%') ->orwhere('users.id', 'like', '%' . $account . '%') ->orwhere('user_real.name', 'like', '%' . $account . '%') ->orWhere('users.account_number', 'like', '%' . $account . '%'); } $list = $list->when($name != '', function ($query) use ($name) { $query->whereHas('userReal', function ($query) use ($name) { $query->where('name', $name); }); }); if ($risk != -2) { $list = $list->where('risk', $risk); } $list = $list->select("users.*", "user_real.card_id") ->orderBy('users.time', 'desc') ->paginate($limit); $items = $list->getCollection(); $items->transform(function ($item, $key) { $level = UserLevelModel::pluck('name', 'id'); $level = $level ? $level->toArray() : []; if ($item->user_level == 0){ $item->level_text = '无'; }else{ $item->level_text = $level[$item->user_level]; } $item->append('risk_name'); $cashInfo = UserCashInfo::where('user_id', $item->id)->first(); $hasCashInfo = false; if (!empty($cashInfo)) { $hasCashInfo = true; } $item->cash_info = $hasCashInfo; $item->balance = UsersWallet::where('user_id', $item->id)->value('micro_balance'); $cashInfoInternational = UserCashInfoInternational::where('user_id', $item->id)->first(); $hasCashInfoInternational = false; if (!empty($cashInfoInternational)) { $hasCashInfoInternational = true; } $item->cash_info_international = $hasCashInfoInternational; return $item; }); $list->setCollection($items); $USDT_id = Currency::where('name', 'USDC')->first()->id; return response()->json(['code' => 0, 'data' => $list->items(), 'count' => $list->total()]); } public function edit(Request $request) { $id = $request->get('id', 0); if (empty($id)) { return $this->error("参数错误"); } $result = new Users(); $result = $result->leftjoin("user_real", "users.id", "=", "user_real.user_id")->select("users.*", "user_real.card_id")->find($id); //var_dump($result->toArray());die; $res = UserCashInfo::where('user_id', $id)->first(); $level = UserLevelModel::pluck('name', 'id'); $level = $level ? $level->toArray() : []; $user_list = Users::all(); return view('admin.user.edit', ['result' => $result, 'res' => $res,'level'=>$level,'user_list' => $user_list]); } //编辑用户信息 public function doedit() { // $phone = Input::get("phone"); $parent_id = Input::get("parent_id"); $common = Input::get("common"); $card_id = Input::get("card_id"); $password = Input::get("password"); $account_number = Input::get("account_number"); $pay_password = Input::get("pay_password"); $bank_account = Input::get("bank_account"); $bank_name = Input::get("bank_name"); $alipay_account = Input::get("alipay_account"); $wechat_nickname = Input::get("wechat_nickname"); $wechat_account = Input::get("wechat_account"); $is_service = Input::get("is_service",0)??0; $risk = Input::get('risk', 0); $yqr = Input::get('yqr'); $user_level = Input::get('user_level', 0); $virtual_follow_num = Input::get('virtual_follow_num', 0); $id = Input::get("id"); if (empty($id)) return $this->error("参数错误"); $user = Users::find($id); if (empty($user)) { return $this->error("数据未找到"); } if($id == $parent_id){ return $this->error("上级用户不能是自己"); } //$user->account_number = $account_number; if (!empty($password)) { $user->password = Users::MakePassword($password); } if (!empty($pay_password)) { $user->pay_password = Users::MakePassword($pay_password); } if (!empty($is_service)) { $has_service = Users::where('is_service',1)->first(); if($has_service){ return $this->error("只允许设置一个客服,当前客服账号:{$has_service->account_number}"); } $user->is_service = $is_service; } $flag = 0; if ($user->user_level != $user_level){ $flag = 1; } $user->risk = $risk; $user->user_level = $user_level; $user->parent_id = $parent_id; $user->common = $common; $user->yqr = $yqr; if(!empty($virtual_follow_num)){ $user->virtual_follow_num = $virtual_follow_num; } DB::beginTransaction(); try { $user->save(); $cashinfo = UserCashInfo::where('user_id', $id)->first(); if (empty($cashinfo)) { $cashinfo = new UserCashInfo(); $cashinfo->user_id = $id; } $cashinfo->bank_name = $bank_name ?? ''; $cashinfo->bank_account = $bank_account ?? ''; $cashinfo->alipay_account = $alipay_account ?? ''; $cashinfo->wechat_account = $wechat_account ?? ''; $cashinfo->wechat_nickname = $wechat_nickname ?? ''; $cashinfo->save(); //更改身份证号 if (!empty($card_id)) { $real = UserReal::where("user_id", "=", $id)->first(); $real->card_id = $card_id; $real->save(); } if ($flag == 1){ DB::table('user_level_log')->insertGetId([ 'user_id' => $id, 'level_id' => $user_level, 'type' => 1, 'create_time' => time() ]); } DB::commit(); return $this->success('编辑成功'); } catch (\Exception $ex) { DB::rollBack(); return $this->error($ex->getMessage()); } } public function lockUser(Request $request) { $id = $request->get('id', 0); if (empty($id)) { return $this->error("参数错误"); } $result = Users::find($id); // // $res=UserCashInfo::where('user_id',$id)->first(); return view('admin.user.lock', ['result' => $result]); } public function doLock(Request $request) { $id = $request->get('id', 0); $date = $request->get('date', 0); $status = $request->get('status', 0); $frozen_funds = $request->get('frozen_funds', 0); if (empty($id)) { return $this->error('参数错误'); } $user = Users::find($id); if (empty($user)) { return $this->error('参数错误'); } if (empty($date)) { return $this->error('缺少时间!'); } $users = new Users(); $result = $users->lockUser($user, $status, $date, $frozen_funds); if (!$result) { return $this->error('锁定失败'); } return $this->success('操作成功'); } public function del(Request $request) { $this->error("用户未找到"); $id = $request->get('id'); $user = Users::getById($id); if (empty($user)) { $this->error("用户未找到"); } if($id==1) $this->error("系统用户不能删除"); try { $user->delete(); return $this->success('删除成功'); } catch (\Exception $ex) { return $this->error($ex->getMessage()); } } public function lock(Request $request) { $id = $request->get('id', 0); $user = Users::find($id); if (empty($user)) { return $this->error('参数错误'); } if ($user->status == 1) { $user->status = 0; } else { $user->status = 1; } try { $user->save(); return $this->success('操作成功'); } catch (\Exception $exception) { return $this->error($exception->getMessage()); } } public function wallet(Request $request) { $id = $request->get('id', null); if (empty($id)) { return $this->error('参数错误'); } return view("admin.user.user_wallet", ['user_id' => $id]); } public function walletList(Request $request) { $limit = $request->get('limit', 10); $user_id = $request->get('user_id', null); if (empty($user_id)) { return $this->error('参数错误'); } $list = new UsersWallet(); $list = $list->where('user_id', $user_id)->orderBy('id', 'desc')->paginate($limit); return response()->json(['code' => 0, 'data' => $list->items(), 'count' => $list->total()]); } //钱包锁定状态 public function walletLock(Request $request) { $id = $request->get('id', 0); $wallet = UsersWallet::find($id); if (empty($wallet)) { return $this->error('参数错误'); } if ($wallet->status == 1) { $wallet->status = 0; } else { $wallet->status = 1; } try { $wallet->save(); return $this->success('操作成功'); } catch (\Exception $exception) { return $this->error($exception->getMessage()); } } /* * 调节账户 * */ public function conf(Request $request) { $id = $request->get('id', 0); if (empty($id)) { return $this->error('参数错误'); } $result = UsersWallet::find($id); if (empty($result)) { return $this->error('无此结果'); } $account = Users::where('id', $result->user_id)->value('phone'); if (empty($account)) { $account = Users::where('id', $result->user_id)->value('email'); } $result['account'] = $account; return view('admin.user.conf', ['results' => $result]); } //调节账号 type 1法币交易余额 2法币交易锁定余额 3币币交易余额 4币币交易锁定余额 5杠杆交易余额 6杠杆交易锁定余额 public function postConf(Request $request) { $message = [ 'required' => ':attribute 不能为空', ]; $validator = Validator::make($request->all(), [ 'way' => 'required', //增加 increment;减少 decrement 'type' => 'required', //原生余额1;消费余额2;增值余额3;可增加其他账户调节字段 'conf_value' => 'required', //值 ], $message); //以上验证通过后 继续验证 $validator->after(function ($validator) use ($request) { $wallet = UsersWallet::find($request->get('id')); if (empty($wallet)) { return $validator->errors()->add('isUser', '没有此钱包'); } $user = Users::getById($wallet->user_id); if (empty($user)) { return $validator->errors()->add('isUser', '没有此用户'); } $way = $request->get('way', 'increment'); $type = $request->get('type', 1); $conf_value = $request->get('conf_value', 0); if ($type == 1 && $way == 'decrement') { if ($wallet->legal_balance < $conf_value) { return $validator->errors()->add('isBalance', '此钱包法币交易余额不足' . $conf_value . '元'); } } elseif ($type == 2 && $way == 'decrement') { if ($wallet->lock_legal_balance < $conf_value) { return $validator->errors()->add('isBalance', '此钱包法币交易锁定余额不足' . $conf_value . '元'); } } elseif ($type == 3 && $way == 'decrement') { if ($wallet->change_balance < $conf_value) { return $validator->errors()->add('isBalance', '此钱包币币交易余额不足' . $conf_value . '元'); } } elseif ($type == 4 && $way == 'decrement') { if ($wallet->lock_change_balance < $conf_value) { return $validator->errors()->add('isBalance', '此钱包币币交易锁定余额不足' . $conf_value . '元'); } } elseif ($type == 5 && $way == 'decrement') { if ($wallet->lever_balance < $conf_value) { return $validator->errors()->add('isBalance', '此钱包闪兑交易余额不足' . $conf_value . '元'); } } elseif ($type == 6 && $way == 'decrement') { if ($wallet->lock_lever_balance < $conf_value) { return $validator->errors()->add('isBalance', '此钱包闪兑交易锁定余额不足' . $conf_value . '元'); } }elseif ($type == 7 && $way == 'decrement') { if ($wallet->micro_balance < $conf_value) { return $validator->errors()->add('isBalance', '此钱包期权余额不足' . $conf_value . '元'); } } elseif ($type == 8 && $way == 'decrement') { if ($wallet->lock_micro_balance < $conf_value) { return $validator->errors()->add('isBalance', '此钱包期权锁定余额不足' . $conf_value . '元'); } } }); //如果验证不通过 if ($validator->fails()) { return $this->error($validator->errors()->first()); } $id = $request->get('id', null); $way = $request->get('way', 'increment'); $type = $request->get('type', 1); $conf_value = $request->get('conf_value', 0); $info = $request->get('info', ':'); $wallet = UsersWallet::find($id); $user = Users::getById($wallet->user_id); $data_wallet['wallet_id'] = $id; $data_wallet['create_time'] = time(); DB::beginTransaction(); try { if ($type == 1) { $data_wallet['balance_type'] = 1; $data_wallet['lock_type'] = 0; $data_wallet['before'] = $wallet->legal_balance; if ($way == 'increment') { $data_wallet['change'] = $conf_value; $data_wallet['after'] = bc_add($wallet->legal_balance, $conf_value, 5); $wallet->increment('legal_balance', $conf_value); AccountLog::insertLog(['user_id' => $user->id, 'value' => $conf_value, 'info' => AccountLog::getTypeInfo(AccountLog::ADMIN_LEGAL_BALANCE) . ":" . $info, 'type' => AccountLog::ADMIN_LEGAL_BALANCE, 'currency' => $wallet->currency], $data_wallet); } else { $data_wallet['change'] = $conf_value * -1; $data_wallet['after'] = bc_sub($wallet->legal_balance, $conf_value, 5); $wallet->decrement('legal_balance', $conf_value); AccountLog::insertLog(['user_id' => $user->id, 'value' => $conf_value * -1, 'info' => AccountLog::getTypeInfo(AccountLog::ADMIN_LEGAL_BALANCE) . ":" . $info, 'type' => AccountLog::ADMIN_LEGAL_BALANCE, 'currency' => $wallet->currency], $data_wallet); } } elseif ($type == 2) { $data_wallet['balance_type'] = 1; $data_wallet['lock_type'] = 1; $data_wallet['before'] = $wallet->lock_legal_balance; if ($way == 'increment') { $data_wallet['change'] = $conf_value; $data_wallet['after'] = bc_add($wallet->lock_legal_balance, $conf_value, 5); $wallet->increment('lock_legal_balance', $conf_value); AccountLog::insertLog(['user_id' => $user->id, 'value' => $conf_value, 'info' => AccountLog::getTypeInfo(AccountLog::ADMIN_LOCK_LEGAL_BALANCE) . ":" . $info, 'type' => AccountLog::ADMIN_LOCK_LEGAL_BALANCE, 'currency' => $wallet->currency], $data_wallet); } else { $data_wallet['change'] = $conf_value * -1; $data_wallet['after'] = bc_sub($wallet->lock_legal_balance, $conf_value, 5); $wallet->decrement('lock_legal_balance', $conf_value); AccountLog::insertLog(['user_id' => $user->id, 'value' => $conf_value * -1, 'info' => AccountLog::getTypeInfo(AccountLog::ADMIN_LOCK_LEGAL_BALANCE) . ":" . $info, 'type' => AccountLog::ADMIN_LOCK_LEGAL_BALANCE, 'currency' => $wallet->currency], $data_wallet); } } elseif ($type == 3) { $data_wallet['balance_type'] = 2; $data_wallet['lock_type'] = 0; $data_wallet['before'] = $wallet->change_balance; if ($way == 'increment') { $data_wallet['change'] = $conf_value; $data_wallet['after'] = bc_add($wallet->change_balance, $conf_value, 5); $wallet->increment('change_balance', $conf_value); AccountLog::insertLog(['user_id' => $user->id, 'value' => $conf_value, 'info' => AccountLog::getTypeInfo(AccountLog::ADMIN_CHANGE_BALANCE) . ":" . $info, 'type' => AccountLog::ADMIN_CHANGE_BALANCE, 'currency' => $wallet->currency], $data_wallet); } else { $data_wallet['change'] = $conf_value * -1; $data_wallet['after'] = bc_sub($wallet->change_balance, $conf_value, 5); $wallet->decrement('change_balance', $conf_value); AccountLog::insertLog(['user_id' => $user->id, 'value' => $conf_value * -1, 'info' => AccountLog::getTypeInfo(AccountLog::ADMIN_CHANGE_BALANCE) . ":" . $info, 'type' => AccountLog::ADMIN_CHANGE_BALANCE, 'currency' => $wallet->currency], $data_wallet); } } elseif ($type == 4) { $data_wallet['balance_type'] = 2; $data_wallet['lock_type'] = 1; $data_wallet['before'] = $wallet->lock_change_balance; if ($way == 'increment') { $data_wallet['change'] = $conf_value; $data_wallet['after'] = bc_add($wallet->lock_change_balance, $conf_value, 5); $wallet->increment('lock_change_balance', $conf_value); AccountLog::insertLog(['user_id' => $user->id, 'value' => $conf_value, 'info' => AccountLog::getTypeInfo(AccountLog::ADMIN_LOCK_CHANGE_BALANCE) . ":" . $info, 'type' => AccountLog::ADMIN_LOCK_CHANGE_BALANCE, 'currency' => $wallet->currency], $data_wallet); } else { $data_wallet['change'] = $conf_value * -1; $data_wallet['after'] = bc_sub($wallet->lock_change_balance, $conf_value, 5); $wallet->decrement('lock_change_balance', $conf_value); AccountLog::insertLog(['user_id' => $user->id, 'value' => $conf_value * -1, 'info' => AccountLog::getTypeInfo(AccountLog::ADMIN_LOCK_CHANGE_BALANCE) . ":" . $info, 'type' => AccountLog::ADMIN_LOCK_CHANGE_BALANCE, 'currency' => $wallet->currency], $data_wallet); } } elseif ($type == 5) { $data_wallet['balance_type'] = 3; $data_wallet['lock_type'] = 0; $data_wallet['before'] = $wallet->lever_balance; if ($way == 'increment') { $data_wallet['change'] = $conf_value; $data_wallet['after'] = bc_add($wallet->lever_balance, $conf_value, 5); $wallet->increment('lever_balance', $conf_value); AccountLog::insertLog(['user_id' => $user->id, 'value' => $conf_value, 'info' => AccountLog::getTypeInfo(AccountLog::ADMIN_LEVER_BALANCE) . ":" . $info, 'type' => AccountLog::ADMIN_LEVER_BALANCE, 'currency' => $wallet->currency], $data_wallet); } else { $data_wallet['change'] = $conf_value * -1; $data_wallet['after'] = bc_sub($wallet->lever_balance, $conf_value, 5); $wallet->decrement('lever_balance', $conf_value); AccountLog::insertLog(['user_id' => $user->id, 'value' => $conf_value * -1, 'info' => AccountLog::getTypeInfo(AccountLog::ADMIN_LEVER_BALANCE) . ":" . $info, 'type' => AccountLog::ADMIN_LEVER_BALANCE, 'currency' => $wallet->currency], $data_wallet); } } elseif ($type == 6) { $data_wallet['balance_type'] = 3; $data_wallet['lock_type'] = 1; $data_wallet['before'] = $wallet->lock_lever_balance; if ($way == 'increment') { $data_wallet['change'] = $conf_value; $data_wallet['after'] = bc_add($wallet->lock_lever_balance, $conf_value, 5); $wallet->increment('lock_lever_balance', $conf_value); AccountLog::insertLog(['user_id' => $user->id, 'value' => $conf_value, 'info' => AccountLog::getTypeInfo(AccountLog::ADMIN_LOCK_LEVER_BALANCE) . ":" . $info, 'type' => AccountLog::ADMIN_LOCK_LEVER_BALANCE, 'currency' => $wallet->currency], $data_wallet); } else { $data_wallet['change'] = $conf_value * -1; $data_wallet['after'] = bc_sub($wallet->lock_lever_balance, $conf_value, 5); $wallet->decrement('lock_lever_balance', $conf_value); AccountLog::insertLog(['user_id' => $user->id, 'value' => $conf_value * -1, 'info' => AccountLog::getTypeInfo(AccountLog::ADMIN_LOCK_LEVER_BALANCE) . ":" . $info, 'type' => AccountLog::ADMIN_LOCK_LEVER_BALANCE, 'currency' => $wallet->currency], $data_wallet); } }elseif ($type == 7) { $data_wallet['balance_type'] = 4; $data_wallet['lock_type'] = 0; $data_wallet['before'] = $wallet->micro_balance; if ($way == 'increment') { $data_wallet['change'] = $conf_value; $data_wallet['after'] = bc_add($wallet->micro_balance, $conf_value, 5); $wallet->increment('micro_balance', $conf_value); AccountLog::insertLog(['user_id' => $user->id, 'value' => $conf_value, 'info' => AccountLog::getTypeInfo(AccountLog::ADMIN_MICRO_BALANCE) . ":" . $info, 'type' => AccountLog::ADMIN_MICRO_BALANCE, 'currency' => $wallet->currency], $data_wallet); } else { $data_wallet['change'] = $conf_value * -1; $data_wallet['after'] = bc_sub($wallet->micro_balance, $conf_value, 5); $wallet->decrement('micro_balance', $conf_value); AccountLog::insertLog(['user_id' => $user->id, 'value' => $conf_value * -1, 'info' => AccountLog::getTypeInfo(AccountLog::ADMIN_MICRO_BALANCE) . ":" . $info, 'type' => AccountLog::ADMIN_MICRO_BALANCE, 'currency' => $wallet->currency], $data_wallet); } } elseif ($type == 8) { $data_wallet['balance_type'] = 4; $data_wallet['lock_type'] = 1; $data_wallet['before'] = $wallet->lock_micro_balance; if ($way == 'increment') { $data_wallet['change'] = $conf_value; $data_wallet['after'] = bc_add($wallet->lock_micro_balance, $conf_value, 5); $wallet->increment('lock_micro_balance', $conf_value); AccountLog::insertLog(['user_id' => $user->id, 'value' => $conf_value, 'info' => AccountLog::getTypeInfo(AccountLog::ADMIN_LOCK_MICRO_BALANCE) . ":" . $info, 'type' => AccountLog::ADMIN_LOCK_MICRO_BALANCE, 'currency' => $wallet->currency], $data_wallet); } else { $data_wallet['change'] = $conf_value * -1; $data_wallet['after'] = bc_sub($wallet->lock_micro_balance, $conf_value, 5); $wallet->decrement('lock_micro_balance', $conf_value); AccountLog::insertLog(['user_id' => $user->id, 'value' => $conf_value * -1, 'info' => AccountLog::getTypeInfo(AccountLog::ADMIN_LOCK_MICRO_BALANCE) . ":" . $info, 'type' => AccountLog::ADMIN_LOCK_MICRO_BALANCE, 'currency' => $wallet->currency], $data_wallet); } } //$wallet->save(); //$user->save(); DB::commit(); return $this->success('操作成功'); } catch (\Exception $e) { DB::rollback(); return $this->error($e->getMessage()); } } //删除钱包 public function delw(Request $request) { $id = $request->get('id'); $wallet = UsersWallet::find($id); if (empty($wallet)) { $this->error("钱包未找到"); } if($id==1)$this->error("系统用户,不能删除"); try { $wallet->delete(); return $this->success('删除成功'); } catch (\Exception $ex) { return $this->error($ex->getMessage()); } } /* * 提币地址信息 * */ public function address(Request $request) { $id = $request->get('id', 0); if (empty($id)) { return $this->error('参数错误'); } $result = UsersWallet::find($id); if (empty($result)) { return $this->error('无此结果'); } $list = Address::where('user_id', $result->user_id)->where('currency', $result->currency)->get()->toArray(); return view('admin.user.address', ['results' => $result, 'list' => $list]); } /* * 修改提币地址信息 * */ public function addressEdit(Request $request) { $user_id = $request->get('user_id', 0); $currency = $request->get('currency', 0); $total_arr = $request->get('total_arr', ''); if (empty($user_id) || empty($currency)) { return $this->error('参数错误'); } DB::beginTransaction(); try { Address::where('user_id', $user_id)->where('currency', $currency)->delete(); if (!empty($total_arr)) { foreach ($total_arr as $key => $val) { $ads = new Address(); $ads->user_id = $user_id; $ads->currency = $currency; $ads->address = $val['address']; $ads->notes = $val['notes']; $ads->save(); } } DB::commit(); return $this->success('修改提币地址成功'); } catch (\Exception $e) { DB::rollback(); return $this->error($e->getMessage()); } } //加入黑名单 public function blacklist(Request $request) { $id = $request->get('id', 0); $user = Users::find($id); if (empty($user)) { return $this->error('参数错误'); } if ($user->is_blacklist == 1) { $user->is_blacklist = 0; } else { $user->is_blacklist = 1; } try { $user->save(); return $this->success('操作成功'); } catch (\Exception $exception) { return $this->error($exception->getMessage()); } } public function candyConf(Request $request, $id) { $user = Users::find($id); return view('admin.user.candy_conf')->with('user', $user); } public function postCandyConf(Request $request, $id) { $user = Users::find($id); $way = $request->input('way', 0); $change = $request->input('change', 0); $memo = $request->input('memo', ''); if (!in_array($way, [1, 2])) { return $this->error('调整方式传参错误'); } if ($change <= 0) { return $this->error('调整金额必须大于0'); } if ($way == 2) { $change = bc_mul($change, -1); } $result = change_user_candy($user, $change, AccountLog::ADMIN_CANDY_BALANCE, '后台调整' . ($way == 2 ? '减少' : '增加') . '通证 ' . $memo); return $result === true ? $this->success('调整成功') : $this->error('调整失败:' . $result); } public function score(Request $request) { $id = $request->get('id', 0); if (empty($id)) { return $this->error("参数错误"); } $user = Users::find($id); if ($request->getMethod() == 'POST'){ DB::beginTransaction(); try { $way = $request->input('way', 0); $change = $request->input('change', 0); $memo = $request->input('memo', ''); if (!in_array($way, [1, 2])) { throw new \Exception('调整方式传参错误'); } if ($change <= 0) { throw new \Exception('调整金额必须大于0'); } if ($way == 2) { $change = bc_mul($change, -1,2); } // 修改用户积分 $user->score += $change; if (!$user->save()){ throw new \Exception('资产保存失败'); } // 保存积分日志 $log = [ 'user_id' => $id, 'type' => $way, 'change' => $change, 'remarks' => $memo, 'create_time' => date('Y-m-d H:i:s',time()), ]; $res = DB::table('score_log')->insert($log); if (empty($res)){ throw new \Exception('资产记录保存失败'); } DB::commit(); } catch (\Exception $e) { DB::rollBack(); return $this->error($e->getMessage()); } return $this->success('调整成功'); } return view('admin.user.score')->with('user', $user); } public function userWalletList(Request $request) { $id = $request->get('id', 0); if (empty($id)) { return $this->error("参数错误"); } $user = Users::find($id); if ($request->getMethod() == 'POST'){ DB::beginTransaction(); try { $address = $request->input("address",""); $ids = $request->input("ids",""); foreach ($ids as $key => $value) { $wallet = UsersWalletWithdraw::where('id',$value)->first(); $wallet->address = $address[$key]; $wallet->save(); } DB::commit(); } catch (\Exception $e) { DB::rollBack(); return $this->error($e->getMessage()); } return $this->success('操作成功'); } $page = $request->get('page',1); $limit = $request->get('limit',999); $lists = DB::table('users_wallet_withdraw') ->join('currency', 'currency.id', '=', 'users_wallet_withdraw.currency') ->where('users_wallet_withdraw.user_id',$id) ->select('users_wallet_withdraw.*', 'currency.name') ->orderBy('users_wallet_withdraw.id', 'desc') ->paginate($limit); // $result = array('data' => $lists->items(), 'page' => $page, 'pages' => $lists->lastPage(), 'total' => $lists->total()); // return $this->success($result); return view('admin.user.user_walletList', ['data' => $lists->items(), 'user' => $user]); } public function cashInfo(Request $request) { $id = $request->get('id', 0); if (empty($id)) { return $this->error("参数错误"); } $user = Users::find($id); $cashInfo = UserCashInfo::where('user_id', $id)->first(); if ($request->getMethod() == 'POST'){ DB::beginTransaction(); try { if (empty($cashInfo)) { $cashInfo = new UserCashInfo(); $cashInfo->user_id = $id; $cashInfo->create_time = time(); } $real_name = $request->input('real_name', ''); $bank_name = $request->input('bank_name', ''); $bank_dizhi = $request->input('bank_dizhi', ''); $bank_account = $request->input('bank_account', ''); $iban = $request->input('iban', ''); $bank_code = $request->input('bank_code', ''); $bank_address = $request->input('bank_address', ''); $cashInfo->real_name = $real_name; $cashInfo->bank_name = $bank_name; $cashInfo->bank_dizhi = $bank_dizhi; $cashInfo->bank_account = $bank_account; $cashInfo->iban = $iban; $cashInfo->bank_code = $bank_code; $cashInfo->bank_address = $bank_address; $cashInfo->save(); DB::commit(); } catch (\Exception $e) { DB::rollBack(); return $this->error($e->getMessage()); } return $this->success('操作成功'); } return view('admin.user.cash_info', ['cashInfo' => $cashInfo, 'user' => $user]); } public function deleteCashInfo(Request $request) { $id = $request->get('id', 0); if (empty($id)) { return $this->error("参数错误"); } $user = Users::find($id); $cashInfo = UserCashInfo::where('user_id', $id)->first(); if (empty($cashInfo)) { return $this->error('信息不存在'); } if ($request->getMethod() == 'DELETE'){ try { $cashInfo->delete(); return $this->success('删除成功'); } catch (\Exception $ex) { return $this->error($ex->getMessage()); } } } public function cashInfoInternational(Request $request) { $id = $request->get('id', 0); if (empty($id)) { return $this->error("参数错误"); } $user = Users::find($id); $cashInfo = UserCashInfoInternational::where('user_id', $id)->first(); if ($request->getMethod() == 'POST'){ DB::beginTransaction(); try { if (empty($cashInfo)) { $cashInfo = new UserCashInfoInternational(); $cashInfo->user_id = $id; $cashInfo->create_time = time(); } $real_name = $request->input('real_name', ''); $bank_name = $request->input('bank_name', ''); $bank_dizhi = $request->input('bank_dizhi', ''); $bank_account = $request->input('bank_account', ''); $bank_network = $request->input('bank_network', ''); $idcard = $request->input('idcard', ''); $swift_code = $request->input('swift_code', ''); $phone = $request->input('phone', ''); $cashInfo->real_name = $real_name; $cashInfo->bank_name = $bank_name; $cashInfo->bank_dizhi = $bank_dizhi; $cashInfo->bank_account = $bank_account; $cashInfo->bank_network = $bank_network; $cashInfo->idcard = $idcard; $cashInfo->swift_code = $swift_code; $cashInfo->phone = $phone; $cashInfo->save(); DB::commit(); } catch (\Exception $e) { DB::rollBack(); return $this->error($e->getMessage()); } return $this->success('操作成功'); } return view('admin.user.cash_info_international')->with('cashInfo', $cashInfo)->with('user', $user); } public function deleteCashInfoInternational(Request $request) { $id = $request->get('id', 0); if (empty($id)) { return $this->error("参数错误"); } $user = Users::find($id); $cashInfo = UserCashInfoInternational::where('user_id', $id)->first(); if (empty($cashInfo)) { return $this->error('信息不存在'); } if ($request->getMethod() == 'DELETE'){ try { $cashInfo->delete(); return $this->success('删除成功'); } catch (\Exception $ex) { return $this->error($ex->getMessage()); } } } //链上余额归集到总账号 public function balance(Request $request) { exit('功能被禁用'); set_time_limit(0); $id = $request->get('id', 0);//钱包id $wallet = UsersWallet::find($id); if (empty($wallet)) { return $this->error('钱包不存在'); } $btc_chain_balance = 0; $currency = Currency::find($wallet->currency); $total_account = $currency->total_account; $user_address = $wallet->address; $number = $wallet->old_balance; $lessen = bc_pow(10, 8); //$origin_number = $number = $wallet->old_balance; $btc_key = decrypt($wallet->private); $btc_id = Currency::where('name', 'BTC')->first()->id; $fee = bc_mul($currency->chain_fee, bc_pow(10, $currency->decimal_scale ?? 8)); if ($id != $btc_id) { $btc_wallet = UsersWallet::where('address', $user_address) ->where('currency', $btc_id) ->first(); $usdt_balance_url = 'http://43.129.16.120:82/wallet/usdt/balance?address=' . $user_address; $content = RPC::apihttp($usdt_balance_url); $content = json_decode($content, true); if (isset($content['code']) && $content['code'] == 0 && isset($content['data'])) { $origin_number = $content['data']['balance']; } else { return $this->error('获取USDT链上余额失败:' . var_export($content, true)); } } else { $btc_wallet = $wallet; } $btc_balance_url = 'http://43.129.16.120:80/wallet/btc/balance?address=' . $user_address; $btc_content = RPC::apihttp($btc_balance_url); $btc_content = json_decode($btc_content, true); if (isset($btc_content["code"]) && $btc_content["code"] == 0) { $btc_chain_balance = $btc_content['data']['balance']; if ($id == $btc_id) { $origin_number = bc_sub($btc_chain_balance, $fee); } $btc_chain_balance = bc_div($btc_chain_balance, $lessen, 8); } else { return $this->error('获BTC取链上余额失败'); } if (bc_comp($btc_chain_balance, $currency->chain_fee) < 0) { return $this->error('当前账户BTC余额不足,请充值之后再归拢'); } $origin_number = bc_div($origin_number, $lessen); $old_balance = 0; if (empty($total_account)) { return $this->error('usdt币种设置错误'); } if ($currency->type == 'usdt') { // var_dump($currency->type);var_dump($total_account);var_dump($origin_number);var_dump($user_address);var_dump($btc_key);var_dump($fee);die; $content = BlockChain::transfer($currency->type, $currency->type, $total_account, $origin_number, $user_address, $btc_key, 1, $fee); } elseif ($currency->type == 'btc') { $content = BlockChain::transfer($currency->type, $currency->type, $total_account, $origin_number, $user_address, $btc_key, 1, $fee); } else { return $this->error('只支持usdt、btc归拢'); } //记录错误日志 Log::useDailyFiles(base_path('storage/logs/blockchain/collect'), 7); Log::critical('用户id:' . $wallet->user_id . ',币种:' . $currency->type . ',归拢:' . $origin_number, $content); if (isset($content["errcode"]) && $content["errcode"] == "0" && isset($content['txid'])) { try { DB::beginTransaction(); $wallet = UsersWallet::lockForUpdate()->find($id); //如果转的是usdt,需要扣btc $btc_wallet->refresh(); if ($currency->type == 'usdt') { //扣手续费不用更新old_balance,这样直接扣除可避免原打入的手续费被当作充值到账 $btc_wallet->old_balance = $btc_wallet->old_balance - $currency->chain_fee - 0.00000546; $btc_wallet->save(); } AccountLog::insertLog([ 'user_id' => 0, 'value' => 0, 'info' => '对用户id' . $wallet->user_id . ',币种:' . $currency->type . ',归拢:' . $origin_number . ',交易哈希值:' . $content['txid'], 'type' => 881 ]); $wallet->refresh(); $wallet->old_balance = $old_balance;; $wallet->gl_time = time(); $wallet->txid = $content['txid']; $wallet->save(); DB::commit(); return $this->success('归拢成功,请在30分钟后刷新余额'); } catch (\Exception $ex) { DB::rollback(); return $this->error($ex->getMessage()); } } else { return $this->error(var_export($content, true)); } } //向账户充btc手续费0.00006 public function sendBtc(Request $request) { exit('功能被禁用'); set_time_limit(0); $id = $request->get('id', 0);//钱包id $wallet = UsersWallet::find($id); if (empty($wallet)) { return $this->error('钱包不存在'); } $user_address = $wallet->address; $currency = Currency::find($wallet->currency); $btc_id = Currency::where('name', 'BTC')->first()->id; // return $currency->id.'+'.$btc_id; if ($currency->id != $btc_id) { return $this->error('只支持btc账户'); } $total_account = $currency->total_account; $key = $currency->key; $account = bc_mul($currency->chain_fee, 100000000, 0); $url = "http://43.129.16.120:82/wallet/btc/sendto?fromaddress=" . $total_account . "&toaddress=" . $user_address . "&privkey=" . $key . "&amount=" . $account; $content = file_get_contents($url); $content = @json_decode($content, true); if ($content['code'] == 0) { AccountLog::insertLog([ 'user_id' => 0, 'value' => $currency->chain_fee, 'info' => '向' . $wallet->user_id . '打手续费', 'type' => 8888888 ]); $wallet->old_balance = $wallet->old_balance + $currency->chain_fee; $wallet->gl_time = time(); $wallet->save(); return $this->success('转入手续费成功'); } else { return $this->error('转入错误' . $content['msg']); } } public function batchRisk(Request $request) { try { $ids = $request->input('ids', []); $risk = $request->input('risk', 0); if (empty($ids)) { throw new \Exception('请先选择用户'); } if (!in_array($risk, [-1, 0, 1])) { throw new \Exception('输赢类型不正确'); } $affect_rows = Users::whereIn('id', $ids) ->update([ 'risk' => $risk, ]); return $this->success('本次提交:' . count($ids) . '条,设置成功:' . $affect_rows . '条'); } catch (\Throwable $th) { return $this->error($th->getMessage()); } } public function chargeShow(Request $request){ $id = $request->get('id', ''); if (!$id) { return $this->error('参数小错误'); } $chargeDetail = DB::table('charge_req') -> where('id','=',$id)->first(); return view('admin.user.edit_charge', ['charge_info'=>$chargeDetail]); } public function chargeList(Request $request){ $limit = $request->get('limit', 20); $rate=Setting::getValueByKey('USDTRate', 7.28); $account_number = $request->input('account_name', ''); $userid = $request->input('userid', 0); if(empty($account_number) && empty($userid)){ $list = DB::table('charge_req') ->join('users', 'users.id', '=', 'charge_req.uid') ->join('currency', 'currency.id', '=', 'charge_req.currency_id') ->leftjoin('user_cash_info', 'user_cash_info.user_id', '=', 'charge_req.uid') ->select('charge_req.*','user_cash_info.bank_account','currency.price','currency.rmb_relation', 'users.account_number', 'currency.name') ->orderBy('charge_req.id', 'desc')->paginate($limit); // $list = DB::table('charge_req') // ->join('users', 'users.id', '=', 'charge_req.uid') // ->orderBy('charge_req.id', 'desc')->paginate($limit); } if(!empty($account_number)){ $list = DB::table('charge_req') ->join('users', 'users.id', '=', 'charge_req.uid') ->join('currency', 'currency.id', '=', 'charge_req.currency_id') ->leftjoin('user_cash_info', 'user_cash_info.user_id', '=', 'charge_req.uid') ->select('charge_req.*','user_cash_info.bank_account','currency.price','currency.rmb_relation', 'users.account_number', 'currency.name') ->where('charge_req.account_name', 'like' ,"%$account_number%") // ->orWhere('charge_req.uid', 'like' ,"%$userid%") ->orderBy('charge_req.id', 'desc')->paginate($limit); } if(!empty($userid)){ $list = DB::table('charge_req') ->join('users', 'users.id', '=', 'charge_req.uid') ->join('currency', 'currency.id', '=', 'charge_req.currency_id') ->leftjoin('user_cash_info', 'user_cash_info.user_id', '=', 'charge_req.uid') ->select('charge_req.*','user_cash_info.bank_account','currency.price','currency.rmb_relation', 'users.account_number', 'currency.name') // ->where('charge_req.account_name', 'like' ,"%$account_number%") ->Where('charge_req.uid', 'like' ,"%$userid%") ->orderBy('charge_req.id', 'desc')->paginate($limit); // $list = DB::table('charge_req') // ->join('users', 'users.id', '=', 'charge_req.uid') // ->where('charge_req.account_name', 'like' ,"%$account_number%") // // ->where('charge_req.account_name','=',$account_number) // ->orderBy('charge_req.id', 'desc')->paginate($limit); } if(!empty($account_number) && !empty($userid)){ $list = DB::table('charge_req') ->join('users', 'users.id', '=', 'charge_req.uid') ->join('currency', 'currency.id', '=', 'charge_req.currency_id') ->leftjoin('user_cash_info', 'user_cash_info.user_id', '=', 'charge_req.uid') ->select('charge_req.*','user_cash_info.bank_account','currency.price','currency.rmb_relation', 'users.account_number', 'currency.name') ->where('charge_req.account_name', 'like' ,"%$account_number%") ->Where('charge_req.uid', 'like' ,"%$userid%") ->orderBy('charge_req.id', 'desc')->paginate($limit); } // if($account_number != null){ // $list = DB::table('charge_req') // ->join('users', 'users.id', '=', 'charge_req.uid') // ->join('currency', 'currency.id', '=', 'charge_req.currency_id') // ->leftjoin('user_cash_info', 'user_cash_info.user_id', '=', 'charge_req.uid') // ->select('charge_req.*','user_cash_info.bank_account','currency.price','currency.rmb_relation', 'users.account_number', 'currency.name') // ->where('charge_req.account_name','=',$account_number) // ->orderBy('charge_req.id', 'desc')->paginate($limit); // }else{ // $list = DB::table('charge_req') // ->join('users', 'users.id', '=', 'charge_req.uid') // ->where('charge_req.account_name','=',$account_number) // ->join('currency', 'currency.id', '=', 'charge_req.currency_id') // ->where('charge_req.typr') // ->leftjoin('user_cash_info', 'user_cash_info.user_id', '=', 'charge_req.uid') // ->select('charge_req.*','user_cash_info.bank_account','currency.price','currency.rmb_relation', 'users.account_number', 'currency.name') // ->orderBy('charge_req.id', 'desc')->paginate($limit); // } //$userWalletOut = new ChargeReq(); // $userWalletOutList = $userWalletOut->whereHas('user', function ($query) use ($account_number) { // if ($account_number != '') { // $query->where('phone', $account_number) // ->orWhere('account_number', $account_number) // ->orWhere('email', $account_number) // ->orWhere('id', $account_number); // } // })->orderBy('id', 'desc')->paginate($limit); // $userWalletOut = new UsersWalletOut(); // $userWalletOutList = $userWalletOut->orderBy('id', 'desc')->paginate($limit); // var_dump($list);exit; return $this->layuiData($list); } public function passReq(Request $request){ $id = $request->get('id',0); if(empty($id)){ return $this->error('参数错误'); } $req = Db::table('charge_req')->where(['id' => $id,'status'=> 1])->first(); if(!$req){ return $this->error('充值记录错误'); } // return $this->success('充值成功'); $req->currency_id // file_put_contents('/www/wwwroot/crypto/public/tt.txt',json_encode($req).PHP_EOL,FILE_APPEND); //通过并加钱 $legal = UsersWallet::where("user_id", $req->uid) ->where("currency", 3) ->lockForUpdate() ->first(); if(!$legal){ return $this->error('找不到用户钱包'); } $redis = Redis::connection(); $lock = new RedisLock($redis,'manual_charge'.$req->id,10); DB::beginTransaction(); try{ DB::table('charge_req')->where('id',$id)->update(['status'=>2,'updated_at'=>date('Y-m-d H:i:s')]); change_wallet_balance( $legal, 4, $req->price, AccountLog::WALLET_CURRENCY_IN, '充值', false, 0, 0, serialize([ ]), false, true ); if ($req->give > 0){ change_wallet_balance( $legal, 4, $req->give, AccountLog::WALLET_CURRENCY_IN, '会员充值赠送', false, 0, 0, serialize([ ]), false, true ); } // 计算用户升级 UserLevelModel::checkUpgrade($req); $lock->release(); DB::commit(); }catch (\Exception $e){ DB::rollBack(); return $this->error($e->getMessage()); } // DB::table('users_wallet')->where(['currency'=>$req->currency_id,'user_id'=>$req->uid])->increment('lever_balance',$req->amount); return $this->success('充值成功'); } public function passReq111(Request $request){ $id = $request->get('id',0); if(empty($id)){ return $this->error('参数错误'); } $req = Db::table('charge_req')->where(['id' => $id,'status'=> 1])->first(); if(!$req){ return $this->error('充值记录错误'); } return $this->success($req->currency_id); // return $this->success('充值成功'); //通过并加钱 $legal = UsersWallet::where("user_id", $req->uid) ->where("currency", $req->currency_id) ->lockForUpdate() ->first(); if(!$legal){ return $this->error('找不到用户钱包'); } $redis = Redis::connection(); $lock = new RedisLock($redis,'manual_charge'.$req->id,10); DB::beginTransaction(); try{ DB::table('charge_req')->where('id',$id)->update(['status'=>2,'updated_at'=>date('Y-m-d H:i:s')]); change_wallet_balance( $legal, 4, $req->amount, AccountLog::WALLET_CURRENCY_IN, '充值', false, 0, 0, serialize([ ]), false, true ); if ($req->give > 0){ change_wallet_balance( $legal, 4, $req->give, AccountLog::WALLET_CURRENCY_IN, '会员充值赠送', false, 0, 0, serialize([ ]), false, true ); } // 计算用户升级 UserLevelModel::checkUpgrade($req); $lock->release(); DB::commit(); }catch (\Exception $e){ DB::rollBack(); return $this->error($e->getMessage()); } // DB::table('users_wallet')->where(['currency'=>$req->currency_id,'user_id'=>$req->uid])->increment('lever_balance',$req->amount); return $this->success('充值成功'); } public function refuseReq(Request $request){ $id = $request->get('id',0); if(empty($id)){ return $this->error('参数错误'); } $req = Db::table('charge_req')->where(['id' => $id,'status'=> 1])->first(); if(!$req){ return $this->error('充值记录错误'); } DB::table('charge_req')->where('id',$id)->update(['status'=>3]); return $this->success('拒绝成功'); } public function chargeReq(Request $request){ $imageServerUrl = Setting::getValueByKey('image_server_url', ''); return view('admin.user.charge',['imageServerUrl' => $imageServerUrl]); } public function levelList(Request $request){ if ($request->method() == 'POST'){ $limit = $request->post('limit', 10); $list = UserLevelModel::orderBy('id', 'asc') ->paginate($limit); return $this->layuiData($list); } return view('admin.user.level'); } public function levelEdit(Request $request) { if ($request->getMethod() == 'POST'){ $params = $request->post(); if (empty(intval($params['id']))){ return $this->error('参数错误'); } if (empty($params['name'])){ return $this->error('级别名称不能为空'); } if (floatval(empty($params['amount']))){ return $this->error('升级金额不能为空'); } if (floatval(empty($params['give']))){ return $this->error('赠送比例不能为空'); } if (floatval(empty($params['pic']))){ return $this->error('级别徽章不能为空'); } $id = $params['id']; unset($params['id']); $res = UserLevelModel::where('id',$id)->update($params); if (empty($res)){ return $this->error('保存失败'); } return $this->success('编辑成功'); } $level = UserLevelModel::find($request->get('id')); return view('admin.user.level_edit')->with('level', $level); } /** * 设置用户是否为交易员 */ public function trader(Request $request){ $user = Users::query()->find($request->user_id); if(empty($user)){ return $this->error('用户不存在'); } $user->is_trader = $user->is_trader == 2 ? 1 : 2; $user->save(); return $this->success('操作成功'); } public function quotation(Request $request) { //基本币 $bases=DB::table("currency_matches")->where("market_from",2)->select("currency_id")->get(); $bases=json_decode(json_encode($bases),true); foreach ($bases as $k=>$v){ $one=DB::table("currency")->where("id",$v["currency_id"])->select("id","name")->first(); $bases[$k]["name"]=$one->name; } $base=$request->get("base",$bases[0]["name"]); $last = MyQuotation::where("base",$base)->orderBy('id', 'desc')->first(); /*$where=[ "market_from"=>1 ]; // $currencys = CurrencyMatch::where($where)->get(); */ $currencys=$bases; //echo json_encode($currencys); $res=[ 'data' => $last, 'currencys' => $currencys, "bases"=>$bases, "base"=>$base ]; return view('admin.quotation.index',$res); } public function saveQuotation(Request $request) { $url = config('app.kline_url'); $con = $request->post('kline'); $date = $request->post('date'); $currency = strtoupper($request->post('currency')); $info = DB::table('currency')->where('name',$currency)->first(); $matches = DB::table('currency_matches')->where('currency_id',$info->id)->first(); $obj = json_decode($con, true); $timestamp = strtotime($date); $esclient = MarketHour::getEsearchClient(); for ($i = 0; $i < count($obj); $i++) { //$timeed = strtotime('+ ' . ($i * 60) . ' seconds', $timestamp); $timeed = strtotime('+ ' . ($i * 60) . ' seconds', $timestamp); $timefor = date('Y-m-d H:i:s', $timeed); $needle = MyQuotation::where('itime', $timeed)->where('symbol', $currency.'/USDT')->first(); if($needle){ continue; } $needle = new MyQuotation(); $needle->open = $obj[$i][1]; $needle->high = $obj[$i][2]; $needle->low = $obj[$i][3]; $needle->close = $obj[$i][4]; $needle->vol = $obj[$i][5]; $needle->diffchange = $obj[$i][6]; $needle->base = $currency; $needle->target = 'USDC'; $needle->symbol = "{$needle->base}/{$needle->target}"; $needle->itime = date("Y-m-d H:i:s",$timeed); $needle->rtime = date("Y-m-d H:i:s",$timeed); $timefor = date('i', $timeed); $period = '1min'; if($timefor%5==0){ $period .= ',5min'; $needle->period5=1; } if($timefor%15==0){ $period .= ',15min'; $needle->period15=1; } if($timefor%30==0){ $period .= ',30min'; $needle->period30=1; } if($timefor%60==0){ $period .= ',60min'; $needle->period60=1; } $needle->period = $period; $zd =''; if($obj[$i][6]>0) $zd='+'; $kline_imin = file_get_contents($url.'config/kline_imin.txt'); $kline_imin = str_replace('CLOSE',$obj[$i][4],$kline_imin); $kline_imin = str_replace('HIGH',$obj[$i][2],$kline_imin); $kline_imin = str_replace('NOW_PRICE',$obj[$i][4],$kline_imin); $kline_imin = str_replace('LOW',$obj[$i][3],$kline_imin); $kline_imin = str_replace('OPEN',$obj[$i][1],$kline_imin); $kline_imin = str_replace('TIME','"'.$timeed.'"',$kline_imin); $kline_imin = str_replace('CURRENCY_ID',$info->id,$kline_imin); $kline_imin = str_replace('MATCH_ID',$matches->id,$kline_imin); $kline_imin = str_replace('PYPLC',$currency,$kline_imin); $kline_imin = str_replace('VOLUME',$obj[$i][5],$kline_imin); $kline_imin = str_replace('CHANGE',$zd.$obj[$i][6],$kline_imin); file_put_contents($url.'config/kline/'.$timeed.'_kline_1min_'.$currency.'.php',$kline_imin); $dymic = file_get_contents($url.'config/dymic.txt'); $dymic = str_replace('CLOSE',$obj[$i][4],$dymic); $dymic = str_replace('HIGH',$obj[$i][2],$dymic); $dymic = str_replace('NOW_PRICE',$obj[$i][4],$dymic); $dymic = str_replace('LOW',$obj[$i][3],$dymic); $dymic = str_replace('OPEN',$obj[$i][1],$dymic); $dymic = str_replace('TIME','"'.$timeed.'"',$dymic); $dymic = str_replace('CURRENCY_ID',$info->id,$dymic); $dymic = str_replace('MATCH_ID',$matches->id,$dymic); $dymic = str_replace('PYPLC',$currency,$dymic); $dymic = str_replace('VOLUME',$obj[$i][5],$dymic); $dymic = str_replace('CHANGE',$zd.$obj[$i][6],$dymic); file_put_contents($url.'config/kline/'.$timeed.'_daymarket_'.$currency.'.php',$dymic); $needle->save(); /* $id = strtolower($needle->base . $needle->target) . '.1min.' . ($timeed * 1000); $ob = json_decode(json_encode($needle),true); $ob['id'] = $id; $ob['itime'] = $timeed; $params = [ 'index' => 'market.quotation', 'type' => 'doc', 'id' => $id, 'body' => json_decode(json_encode($ob)), ]; $delete_param = [ 'index' => 'market.quotation', 'type' => 'doc', 'id' => $id, ]; try { $esclient->get($delete_param) && $esclient->delete($delete_param); } catch (\Exception $exception) { } $response = $esclient->index($params);*/ } //return $response; } }