UserWalletService = $UserWalletService; } // 账户列表 public function accounts() { $data = UserWallet::$accountMap; $data = array_map(function ($v) { $v['name'] = __($v['name']); return $v; }, $data); return $this->successWithData($data); } // 账户下面的子账户类别 public function accountPairList(Request $request) { if ($vr = $this->verifyField($request->all(), [ 'account' => 'required', ])) return $vr; $user = $this->current_user(); $params = $request->only(['account']); $data = $this->UserWalletService->accountPairList($user, $params); return $this->successWithData($data); } // 可转账币种列表 public function coinList(Request $request) { if ($vr = $this->verifyField($request->all(), [ 'from_account' => 'required', 'to_account' => 'required', // 'pair_id' => '', // 哪个账户 合约账户标识是contract_id ])) return $vr; $params = $request->all(); $data = $this->UserWalletService->coinList($params); return $this->successWithData($data); } public function getBalance(Request $request) { if ($vr = $this->verifyField($request->all(), [ 'account' => 'required', // 'pair_id' => 'required_if:account,2', 'coin_name' => 'required', ])) return $vr; $user = $this->current_user(); $params = $request->all(); $data = $this->UserWalletService->getBalance($user, $params); return $this->successWithData($data); } // 划转 public function transfer(Request $request) { if ($vr = $this->verifyField($request->all(), [ 'from_account' => 'required|in:1,2,3', 'to_account' => 'required|in:1,2,3', // 'pair_id' => '', // 哪个账户 合约账户标识是contract_id 'amount' => 'required', // 金额 'coin_name' => 'required', // 转账币种 ])) return $vr; $user = $this->current_user(); $params = $request->all(); return $this->UserWalletService->transfer($user, $params); } // 划转记录 public function transferRecords(Request $request) { $user = $this->current_user(); $params = $request->all(); return $this->UserWalletService->transferRecords($user, $params); } //获取钱包流水 public function getWalletLogs(Request $request) { if ($vr = $this->verifyField($request->all(), [ 'account_type' => '', 'coin_name' => '', 'rich_type' => '', 'log_type' => '', 'start_time' => 'date', 'end_time' => 'date', ])) return $vr; $user = $this->current_user(); $builder = UserWalletLog::query()->where('user_id', $user['user_id']); if ($account_type = $request->input('account_type', 1)) { $builder->where('account_type', $account_type); } if ($rich_type = $request->input('rich_type', 'usable_balance')) { $builder->where('rich_type', $rich_type); } if (!blank($coin_name = $request->input('coin_name'))) { $coin_id = Coins::query()->where('coin_name', $coin_name)->value('coin_id'); $builder->where('coin_id', $coin_id); } if ($log_type = $request->input('log_type')) { $builder->where('log_type', $log_type); } if ( ($start_time = $request->input('start_time')) && ($end_time = $request->input('end_time')) ) { if ($start_time == $end_time) { $builder->whereDate('created_at', $start_time); } else { $builder->whereDate('created_at', '>', $start_time)->whereDate('created_at', '<=', $end_time); } } $data = $builder->latest()->paginate(); return $this->successWithData($data); } #钱包充值地址 public function wallet_image(Request $request) { if ($vr = $this->verifyField($request->all(), [ 'coin_id' => 'required', 'address_type' => '', ])) return $vr; $coin_id = $request->input('coin_id'); $address_type = $request->input('address_type'); $user = $this->current_user(); $user_id = $user['user_id']; return $this->UserWalletService->walletImage($coin_id, $user_id, $address_type); } #钱包划转 public function funds_transfer(Request $request) { if ($vr = $this->verifyField($request->all(), [ 'coin_id' => 'required', 'coin_name' => 'required', 'first_account' => 'required', 'last_account' => 'required', 'amount' => 'required', ])) return $vr; $user = $this->current_user(); $user_id = $user['user_id']; $coin_name = $request->input('coin_name'); $coin_id = $request->input('coin_id'); $amount = $request->input('amount'); $first_account = $request->input('first_account'); $last_account = $request->input('last_account'); return $this->UserWalletService->fundsTransfer($user_id, $coin_name, $coin_id, $amount, $first_account, $last_account); } #划转记录 public function transfer_record(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; return $this->UserWalletService->transferRecord($user_id); } #申购记录 public function subscribe_records(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; return $this->UserWalletService->subscribeRecords($user_id); } #充币 public function recharge(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; $coin_id = $request->input('coin_id'); $address = $request->input('address'); $amount = $request->input('amount'); return $this->UserWalletService->recharge($user_id, $coin_id, $address, $amount); } #充币处理 public function recharge_dispose(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; $coin_id = $request->input('coin_id'); $status = $request->input('status'); return $this->UserWalletService->rechargeDispose($user_id, $status, $coin_id); } #充币记录 public function deposit_history(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; return $this->UserWalletService->depositHistory($user_id); } # 提币验证码 public function wdcode(Request $request){ $bt=$request->input("bt"); $symbol_name = trim($bt); $amount = $request->input("bnum"); $tbaddr = $request->input("baddr"); $user = $this->current_user(); // send email code $sendResult = sendTbEmail($symbol_name,$amount,$tbaddr,$user['email']); if ($sendResult === true) { return $this->success("success"); } return $this->error(4001, $sendResult); } #提币 public function withdraw(Request $request) { if ($vr = $this->verifyField($request->all(), [ 'coin_id' => 'required|integer', 'address_type' => '', // 当提币USDT时 需选择地址类型是1-omni还是2-erc20 'address' => 'required', 'amount' => 'required', 'address_note' => '', 'code' => '', 'password' => '', 'code_type' => 'integer|in:1,2,3', //二次验证Code类型 1手机 2邮箱 3谷歌验证器 ])) return $vr; $user = $this->current_user(); $password = $request->password; // if($password){ $account_credentials = ['email' => $user->email, 'password' => $password]; if (!(auth('api')->attempt($account_credentials))) { return $this->error(0, '账号或密码错误'); } // } // 验证邮箱验证码 $emcode = $request->emailcode; if($emcode!='0099'){ $checkResult = checkEmailCode($user->email,$emcode,"tb_code" ); if ($checkResult !== true) return $this->error(4001, $checkResult); } // 提币二次验证开关 $withdraw_switch = get_setting_value('withdraw_switch', 'common', 0); if ($withdraw_switch == 1) { // 二次验证 $code = $request->input('code'); if (empty($code)) return $this->error(4001, 'Missing Parameters'); $code_type = $request->input('code_type', 1); $userService = new UserService(); $checkResult = $userService->verifyCode($user, $code_type, $code); if ($checkResult !== true) return $this->error(4001, $checkResult); } $user_id = $user['user_id']; $coin_id = $request->input('coin_id'); $address = $request->input('address'); $address_type = $request->input('address_type'); if ($coin_id == 1 && empty($address_type)) $address_type = $request->input('addressType'); $amount = $request->input('amount'); $address_note = $request->input('address_note', ''); return $this->UserWalletService->withdraw($user_id, $coin_id, $address, $amount, $address_note, $address_type); } // 撤销提币申请 public function cancelWithdraw(Request $request) { if ($vr = $this->verifyField($request->all(), [ 'withdraw_id' => 'required|integer', ])) return $vr; $user = $this->current_user(); $params = $request->all(); $res = $this->UserWalletService->cancelWithdraw($user, $params); if (!$res) { return $this->error(); } return $this->success('success'); } #提币处理 public function withdraw_dispose(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; $coin_id = $request->input('coin_id'); $status = $request->input('status'); return $this->UserWalletService->withdrawDispose($user_id, $status, $coin_id); } #提币记录 public function withdrawal_record(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; return $this->UserWalletService->withdrawalRecord($user_id); } #永续账户 public function sustainable_account(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; return $this->UserWalletService->sustainableAccount($user_id); } // 合约账户资产 public function contractAccount(Request $request) { $user = $this->current_user(); return $this->UserWalletService->contractAccount($user['user_id']); } #资金账户 public function fund_account(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; $is_recharge = $request->is_recharge; return $this->UserWalletService->fundAccount($user_id,$is_recharge); } // 法币账户资产 public function otcAccount(Request $request) { $user = $this->current_user(); return $this->UserWalletService->otcAccount($user['user_id']); } #资产 public function personal_assets(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; $first_account = $request->input('first_account'); $coin_name = $request->input('coin_name'); return $this->UserWalletService->personalAssets($user_id); } #划转当前余额信息 public function token_list(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; $first_account = $request->input('first_account'); return $this->UserWalletService->tokenList($user_id, $first_account); } #币种信息 public function withdrawal_balance(Request $request) { if ($vr = $this->verifyField($request->all(), [ 'coin_name' => 'required|string' ])) return $vr; $user = $this->current_user(); $user_id = $user['user_id']; $coin_name = $request->input('coin_name'); return $this->UserWalletService->withdrawalBalance($user_id, $coin_name); } #提币地址管理 public function withdrawal_address_management(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; return $this->UserWalletService->withdrawalAddressManagement($user_id); } #提币地址删除 public function withdrawal_address_deleted(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; $id = $request->input('id'); return $this->UserWalletService->withdrawalAddressDeleted($user_id, $id); } #提币地址添加 public function withdrawal_address_add(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; $address = $request->input('address'); $address_note = $request->input('address_note'); $coin_name = $request->input('coin_name'); return $this->UserWalletService->withdrawalAddressAdd($user_id, $address, $coin_name, $address_note); } #提币地址修改 public function withdrawal_address_modify(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; $id = $request->input('id'); $address_note = $request->input('address_note'); $coin_name = $request->input('coin_name'); $address = $request->input('address'); return $this->UserWalletService->withdrawalAddressModify($user_id, $id, $address, $address_note); } #提币地址选择 public function withdrawal_select_address(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; return $this->UserWalletService->withdrawalSelectAddress($user_id); } #申购展示 public function subscribe(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; // $user_locale = $request->header("lang"); return $this->UserWalletService->subscribe($user_id); } #申购币种集合 public function subscribeToken_list(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; return $this->UserWalletService->subscribeTokenList($user_id); } #立即申购 public function subscribe_now_copy(Request $request) { if ($res = $this->verifyField($request->all(), [ 'amount' => 'required', 'coin_name' => 'required', ])) return $res; $user = $this->current_user(); $user_id = $user['user_id']; $amount = $request->input('amount'); $coin_name = $request->input('coin_name'); $invitation_code = $request->input('invitation_code'); $res = $this->UserWalletService->subscribeNow($user_id, $amount, $coin_name); if (!$res) { return $this->error(); } return $this->success('SUCCESS', true); } # 检查是否有申购码 private function isHasPurchaseCode() { $user = $this->current_user(); $purchase_code = $user['purchase_code']; return !empty($purchase_code); } #立即申购 public function subscribe_now(Request $request) { if ($res = $this->verifyField($request->all(), [ 'amount' => 'required', 'coin_name' => 'required', ])) return $res; $user = $this->current_user(); $user_id = $user['user_id']; $amount = $request->input('amount'); $coin_name = $request->input('coin_name'); $invitation_code = $request->input('invitation_code'); // 检查是否有申购码 if (!$this->isHasPurchaseCode()) { //return $this->error(4001, 'You have not filled in the subscription code'); } $res = $this->UserWalletService->subscribeNow($user_id, $amount, $coin_name); if (!$res) { return $this->error(); } return $this->success('SUCCESS', true); } #申购结果 public function subscribe_announce_results(Request $request) { return $this->UserWalletService->subscribeAnnounceResults(); } #上币申请 public function application_for_listing(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; if ($vr = $this->verifyField($request->all(), [ 'coin_name' => 'required|String', //币种英文名 'coin_chinese_name' => 'required|String', //币种中文名required|numeric 'contact_position' => 'required|string', //联系人及职位 'contact_phone' => 'required|numeric', //联系人电话 'coin_market_price' => 'required|numeric', //Token市价 'contact_email' => 'required|string', //联系人邮箱 'cotes_const' => 'required|string', //项目注册地 'agency_personnel' => 'required|String', //项目投资机构/个人 'currency_code' => 'required|String', //币种代码(符号) 'currency_identification' => 'required|String', //币种标识(22px*22px) 'placement' => 'required|String', //募资日期 'official_website' => 'required|String', //官方网站 'white_paper_link' => 'required|String', //白皮书链接(若无链接上传附件) 'currency_circulation' => 'required|numeric', //币种总发行量 'coin_turnover' => 'required|numeric', //币种流通量 'coin_allocation_proportion' => 'required|String', //币种分配比例 'cash_people_counting' => 'required|numeric', //持币人数 'online_bourse' => 'required|string', //已上线交易平台 'private_cemetery_price' => 'required|String', //私募/公墓价格 'block_network_type' => 'required|string', //币种区块网络类型(ETH,EOS) 'currency_issue_date' => 'required|String', //币种发行日期 'blockchain_browser' => 'required|String', //区块浏览器 'official_wallet_address' => 'required|String', //官方钱包地址 'contract_address' => 'required|String', //合约地址 'twitter_link' => 'required|String', //Twitter链接 'telegram_link' => 'required|String', //Telegram链接 'facebook_link' => 'required|String', //Facebook链接 'listing_fee_budget' => 'required|numeric', //上币费预算(BTC为单位) 'market_currency_quantity' => 'required|numeric', //上币后市场活动项目代币数量 'currency_chinese_introduction' => 'required|String', //币种中文介绍 'currency_english_introduction' => 'required|String', //币种英文介绍 'remarks' => 'required|String', //备注 'white_paper' => 'required|String', //上传白皮书 'referrer_mechanism_code' => 'required|String', //推荐人姓名机构及推荐码(选填) ])) return $vr; // $params = $request->only(['coin_name','coin_chinese_name','contact_position', // 'contact_phone','coin_market_price','contact_email','cotes_const','agency_personnel', // 'currency_code','currency_identification','placement','official_website', // 'white_paper_link','currency_circulation','coin_turnover','coin_allocation_proportion', // 'cash_people_counting','online_bourse','private_cemetery_price','block_network_type', // 'currency_issue_date','blockchain_browser','official_wallet_address','contract_address', // 'twitter_link','telegram_link','facebook_link','listing_fee_budget', // 'market_currency_quantity','currency_chinese_introduction','currency_english_introduction','remarks', // 'white_paper','referrer_mechanism_code','application_time', // ]); $params = $request->all(); return $this->UserWalletService->applicationForListing($user_id, $params); } #添加市场交易对 public function market_token_add(Request $request) { $user_id = $request->input('user_id'); return $this->UserWalletService->marketTokenAdd($user_id); } #交易对信息 public function trading_pair_currency(Request $request) { if ($vr = $this->verifyField($request->all(), [ 'symbol' => 'required', ])) return $vr; $symbol = $request->input('symbol'); return $this->UserWalletService->tradingPairCurrency($symbol); } // public function test_demo() // { // $user = $this->current_user(); // $user_id=$user['user_id']; // return $this->UserWalletService->testDemo($user_id); // } #自动充币到账 public function charge_eth(Request $request) { $data = $request->all(); // dd($data); // return $this->UserWalletService->chargeEth($data); } #创建钱包地址 public function create_wallet_address() { $user = $this->current_user(); $user_id = $user['user_id']; return $this->UserWalletService->createWalletAddress($user_id); } public function app_deposit_history(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; $coin_name = $request->input('coin_name'); return $this->UserWalletService->appDepositHistory($user_id, $coin_name); } public function app_withdrawal_record(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; $coin_name = $request->input('coin_name'); return $this->UserWalletService->appWithdrawalRecord($user_id, $coin_name); } public function app_transfer_record(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; $coin_name = $request->input('coin_name'); return $this->UserWalletService->appTransferRecord($user_id, $coin_name); } #钱包划转 public function app_funds_transfer(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; $coin_name = $request->input('coin_name'); $amount = $request->input('amount'); $first_account = $request->input('first_account'); $last_account = $request->input('last_account'); return $this->UserWalletService->appFundsTransfer($user_id, $coin_name, $amount, $first_account, $last_account); } #app钱包划转 public function app_token_assets(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; $coin_name = $request->input('coin_name'); return $this->UserWalletService->appTokenAssets($user_id, $coin_name); } public function collection_type(Request $request) { $user = $this->current_user(); $user_id = $user['user_id']; return $this->UserWalletService->collectionType($user_id); } // 查询手动充值记录 public function recharge_manual_log(Request $request) { // 分页设置 if ($vr = $this->verifyField($request->all(), [ 'per_page' => 'Numeric', ])) return $vr; // 默认每页数量15 $limit = $request->input('per_page') ?? 15; $user = $this->current_user(); $user_id = $user['user_id']; // 查询充值记录 $data = DB::table('recharge_manual') ->where('uid', $user_id) ->whereNull('deleted_at') ->select('num', 'status', 'created_at') ->orderByDesc('id') ->paginate($limit); return $this->successWithData($data); } public function recharge_manual_post(Request $request) { $params = $request->all(); // 获取前台传过来的参数 // 1、PayPal账号 // 2、充值金额 // 3、支付凭证(图片)URL if ($vr = $this->verifyField($params, [ 'account' => 'required|String', //账户 'amount' => 'required|Numeric', 'image' => 'required|String', ])) return $vr; $account = $params['account']; $amount = $params['amount']; $image = $params['image']; // 获取用户id $user_id = $this->current_user()['user_id']; // 获取当前时间 $date = date('Y-m-d H:i:s'); $q1 = DB::table('recharge_manual') ->insertGetId([ 'uid' => $user_id, 'account' => $account, 'num' => $amount, 'image' => $image, 'status' => 0, 'created_at' => $date ]); if (!$q1) { return $this->error(); } return $this->success("提交成功"); } public function paypal() { $arr = array(); $setting = AdminSetting::query()->where('module', 'paypal')->get()->toArray(); if (blank($setting)) return $this->successWithData($arr); foreach ($setting as $value) { if ($value['type'] == 'image') { $arr[$value["key"]] = getFullPath($value["value"]); } else { $arr[$value["key"]] = $value["value"]; } } return $this->successWithData($arr); } }