getName(); $digitalTradeTableName = $prefix . (new DigitalTradeModel())->getName(); $rechargeApplyTableName = $prefix . (new RechargeApplyModel())->getName(); $stockTradeTableName = $prefix . (new StockTradeModel())->getName(); $stockMysTradeTableName = $prefix . (new StockMysTradeModel())->getName(); $stockThaTradeTableName = $prefix . (new StockThaTradeModel())->getName(); $stockIdnTradeTableName = $prefix . (new StockIdnTradeModel())->getName(); $stockInTradeTableName = $prefix . (new StockInTradeModel())->getName(); $userTableName = $prefix . (new UserModel())->getName(); $userWithdrawTableName = $prefix . (new UserWithdrawalModel())->getName(); // 总注册人数(用户的总数) $totalRegisterNum = Db::table($userTableName)->count(); // 总充值用户(充值用户的个数 以用户id分组) $totalRechargeNum = Db::table($rechargeApplyTableName)->where('status', 1)->group('user_id')->count(); // 总交易用户(合约 股票 现货 交易的用户去重 订单状态为持仓 和 完成 订单) $contractTradeUserId = Db::table($ContractTradeTableName)->where('status', 'in', [1, 3])->distinct(true)->column('user_id'); $stockTradeUserId = Db::table($stockTradeTableName)->where('status', 'in', [1, 3])->distinct(true)->column('user_id'); $stockMysTradeUserId = Db::table($stockMysTradeTableName)->where('status', 'in', [1, 3])->distinct(true)->column('user_id'); $stockThaTradeUserId = Db::table($stockThaTradeTableName)->where('status', 'in', [1, 3])->distinct(true)->column('user_id'); $stockIdnTradeUserId = Db::table($stockIdnTradeTableName)->where('status', 'in', [1, 3])->distinct(true)->column('user_id'); $stockInTradeUserId = Db::table($stockInTradeTableName)->where('status', 'in', [1, 3])->distinct(true)->column('user_id'); $digitalTradeUserId = Db::table($digitalTradeTableName)->where('status', 'in', [1, 3])->distinct(true)->column('user_id'); $totalArrayMerge = array_unique(array_merge($contractTradeUserId, $stockTradeUserId, $digitalTradeUserId, $stockMysTradeUserId, $stockIdnTradeUserId, $stockThaTradeUserId, $stockInTradeUserId)); $totalTradeNum = count($totalArrayMerge); // 总提现用户(以用户id 分组查询数量) $totalWithdrawalNum = Db::table($userWithdrawTableName)->group('user_id')->count(); // 总充值金额 充值完成 $totalRechargeAmount = Db::table($rechargeApplyTableName)->where('status', 1)->sum('recharge_num'); // 总提款金额 提款完成 $totalWithdrawAmount = Db::table($userWithdrawTableName)->where('status', 2)->sum('apply_num'); // 今日注册用户 $today = date('Y-m-d'); // 今天凌晨 $tomorrow = date('Y-m-d', strtotime('tomorrow')); // 明天凌晨 $todayRegisterNum = Db::table($userTableName)->whereTime('create_time', 'between', [$today, $tomorrow])->count(); // 今日充值用户 完成状态 $todayRechargeNum = Db::table($userTableName)->where('status', 1) ->whereTime('create_time', 'between', [$today, $tomorrow]) ->group('user_id')->count(); // 今日交易用户 // 合约 $todayContractTradeUserId = Db::table($ContractTradeTableName)->where('status', 'in', [1, 3]) ->whereTime('create_time', 'between', [$today, $tomorrow]) ->distinct(true)->column('user_id'); //股票 $todayStockTradeUserId = Db::table($stockTradeTableName)->where('status', 'in', [1, 3]) ->whereTime('create_time', 'between', [$today, $tomorrow]) ->distinct(true)->column('user_id'); $todayStockMysTradeUserId = Db::table($stockMysTradeTableName)->where('status', 'in', [1, 3]) ->whereTime('create_time', 'between', [$today, $tomorrow]) ->distinct(true)->column('user_id'); $todayStockThaTradeUserId = Db::table($stockThaTradeTableName)->where('status', 'in', [1, 3]) ->whereTime('create_time', 'between', [$today, $tomorrow]) ->distinct(true)->column('user_id'); $todayStockIndTradeUserId = Db::table($stockIdnTradeTableName)->where('status', 'in', [1, 3]) ->whereTime('create_time', 'between', [$today, $tomorrow]) ->distinct(true)->column('user_id'); $todayStockInTradeUserId = Db::table($stockInTradeTableName)->where('status', 'in', [1, 3]) ->whereTime('create_time', 'between', [$today, $tomorrow]) ->distinct(true)->column('user_id'); // 现货 $todayDigitalTradeUserId = Db::table($digitalTradeTableName)->where('status', 'in', [1, 3]) ->whereTime('create_time', 'between', [$today, $tomorrow]) ->distinct(true)->column('user_id'); // 计算总数 $todayArrayMerge = array_unique(array_merge($todayStockInTradeUserId, $todayContractTradeUserId, $todayStockTradeUserId, $todayDigitalTradeUserId, $todayStockMysTradeUserId, $todayStockThaTradeUserId, $todayStockIndTradeUserId)); $todayTradeNum = count($todayArrayMerge); // 今日提款用户 $todayWithdrawNum = Db::table($userWithdrawTableName) ->whereTime('create_time', 'between', [$today, $tomorrow]) ->group('user_id')->count(); // 今日充值金额 完成状态 $todayRechargeAmount = Db::table($rechargeApplyTableName) ->whereTime('create_time', 'between', [$today, $tomorrow]) ->where('status', 1)->sum('recharge_num'); // 今日提款金额 完成状态 $todayWithdrawAmount = Db::table($userWithdrawTableName) ->whereTime('create_time', 'between', [$today, $tomorrow]) ->where('status', 2)->sum('apply_num'); //等待处理订单 $no_deal_recharge=Db::table($rechargeApplyTableName)->where('status', 0)->count(); $no_deal_withdraw=Db::table($userWithdrawTableName)->where('status', 0)->count(); $no_deal_real=Db::table($userTableName)->where('real_status', 2)->count(); $no_deal_level=Db::table($userTableName)->where('lever_status', 2)->count(); $data = [ 'totalRegisterNum' => $totalRegisterNum, // 总注册人数 'totalRechargeNum' => $totalRechargeNum,// 总充值用户 'totalTradeNum' => $totalTradeNum,// 总交易用户 'totalWithdrawalNum' => $totalWithdrawalNum,// 总提现用户 'totalRechargeAmount' => $totalRechargeAmount,// 总充值金额 'totalWithdrawAmount' => $totalWithdrawAmount, // 总提款金额 'todayRegisterNum' => $todayRegisterNum, // 今日注册用户 'todayRechargeNum' => $todayRechargeNum, // 今日充值用户 'todayTradeNum' => $todayTradeNum, // 今日交易用户 'todayWithdrawNum' => $todayWithdrawNum, // 今日提款用户 'todayRechargeAmount' => $todayRechargeAmount, // 今日充值金额 'todayWithdrawAmount' => $todayWithdrawAmount, // 今日提款金额 'no_deal_recharge' => $no_deal_recharge, // 等待处理充值订单数量 'no_deal_withdraw' => $no_deal_withdraw, // 等待处理提现订单数量 'no_deal_real' => $no_deal_real, // 等待审核实名数量 'no_deal_level' => $no_deal_level, // 等待审核开通杠杆数量 ]; return json(['code' => '0', 'message' => 'SUCCESS', 'data' => $data]); } catch (\Exception $exception) { return json(['code' => '1', 'message' => '系统繁忙']); } } public function getReamNum() { $adminId= $this->getAdminId(); $Withdraw_Read_Time= Cache::store('redis')->get('Withdraw_Read_Time'.$adminId); $Recharge_Read_Time= Cache::store('redis')->get('Recharge_Read_Time'.$adminId); $User_Read_Time= Cache::store('redis')->get('User_Read_Time'.$adminId); $withdraw_count=UserWithdrawalModel::where('create_time','>=',date('Y-m-d H:i:s',$Withdraw_Read_Time))->count(); $recharge_count=RechargeApplyModel::where('create_time','>=',date('Y-m-d H:i:s',$Recharge_Read_Time))->count(); $real_count=UserVerifyLogModel::where('create_time','>=',date('Y-m-d H:i:s',$User_Read_Time))->count(); return json(['code' => '0', 'message' => 'SUCCESS', 'data' => [ 'withdraw_count'=>$withdraw_count, 'recharge_count'=>$recharge_count, 'real_count'=>$real_count, ]]); } // 缓存美股数据 public function cacheUsStock() { try { $list = StockListModel::where('id', '>', '0')->select(); if (!$list->isEmpty()) { $redis = (new AdminBaseService())->getRedis(); foreach ($list as $stock) { $list_key = "US:STOCK:LIST:" . $stock->stock_code; $redis->del($list_key); $redis->hMset($list_key, [ 'id' => $stock->id, 'stock_name' => $stock->stock_name, 'stock_code' => $stock->stock_code, 'status' => $stock->status, 'keep_decimal' => $stock->keep_decimal, 'forced_closure' => $stock->forced_closure, 'up_limit' => $stock->up_limit, 'down_limit' => $stock->down_limit, 'info' => $stock->info, 'tape' => $stock->tape, ]); } } return json(['msg' => 'SUCCESS']); } catch (\Exception $exception) { return json(['msg' => $exception->getMessage()]); } } // 缓存印尼 public function cacheIdnStock() { try { $list = StockIdnListModel::where('id', '>', '0')->select(); if (!$list->isEmpty()) { $redis = (new AdminBaseService())->getRedis(); foreach ($list as $stock) { $old_code = $stock->stock_code; if (strpos($stock->stock_code, ':') !== false) { $code_arr = explode(":", $stock->stock_code); $old_code = $code_arr[1] ?? $code_arr[0]; } $old_key = "IDN:STOCK:LIST:" . $old_code; $redis->del($old_key); $list_key = "IDN:STOCK:LIST:" . $stock->stock_code; $redis->hMset($list_key, [ 'id' => $stock->id, 'stock_name' => $stock->stock_name, 'stock_code' => $stock->stock_code, 'status' => $stock->status, 'keep_decimal' => $stock->keep_decimal, 'forced_closure' => $stock->forced_closure, 'up_limit' => $stock->up_limit, 'down_limit' => $stock->down_limit, 'info' => $stock->info, 'tape' => $stock->tape, ]); } } return json(['msg' => 'SUCCESS']); } catch (\Exception $exception) { return json(['msg' => $exception->getMessage()]); } } // 缓存马来西亚股票 public function cacheMysStock() { try { $list = StockMysListModel::where('id', '>', '0')->select(); if (!$list->isEmpty()) { $redis = (new AdminBaseService())->getRedis(); foreach ($list as $stock) { $old_code = $stock->stock_code; if (strpos($stock->stock_code, ':') !== false) { $code_arr = explode(":", $stock->stock_code); $old_code = $code_arr[1] ?? $code_arr[0]; } $old_key = "MYS:STOCK:LIST:" . $old_code; $redis->del($old_key); $list_key = "MYS:STOCK:LIST:" . $stock->stock_code; $redis->del($old_key); $redis->hMset($list_key, [ 'id' => $stock->id, 'stock_name' => $stock->stock_name, 'stock_code' => $stock->stock_code, 'numeric_code' => $stock->numeric_code, 'status' => $stock->status, 'keep_decimal' => $stock->keep_decimal, 'forced_closure' => $stock->forced_closure, 'up_limit' => $stock->up_limit, 'down_limit' => $stock->down_limit, 'info' => $stock->info, 'tape' => $stock->tape, ]); } } return json(['msg' => 'SUCCESS']); } catch (\Exception $exception) { return json(['msg' => $exception->getMessage()]); } } // 缓存泰股 public function cacheThaStock() { try { $list = StockThaListModel::where('id', '>', '0')->select(); if (!$list->isEmpty()) { $redis = (new AdminBaseService())->getRedis(); foreach ($list as $stock) { $old_code = $stock->stock_code; if (strpos($stock->stock_code, ':') !== false) { $code_arr = explode(":", $stock->stock_code); $old_code = $code_arr[1] ?? $code_arr[0]; } $old_key = "THA:STOCK:LIST:" . $old_code; $redis->del($old_key); $list_key = "THA:STOCK:LIST:" . $stock->stock_code; $redis->del($list_key); $redis->hMset($list_key, [ 'id' => $stock->id, 'stock_name' => $stock->stock_name, 'stock_code' => $stock->stock_code, 'status' => $stock->status, 'keep_decimal' => $stock->keep_decimal, 'forced_closure' => $stock->forced_closure, 'up_limit' => $stock->up_limit, 'down_limit' => $stock->down_limit, 'info' => $stock->info, 'tape' => $stock->tape, ]); } } return json(['msg' => 'SUCCESS']); } catch (\Exception $exception) { return json(['msg' => $exception->getMessage()]); } } // 印度股票 public function cacheInStock() { try { $list = StockInListModel::where('id', '>', '0')->select(); if (!$list->isEmpty()) { $redis = (new AdminBaseService())->getRedis(); foreach ($list as $stock) { $old_code = $stock->stock_code; if (strpos($stock->stock_code, ':') !== false) { $code_arr = explode(":", $stock->stock_code); $old_code = $code_arr[1] ?? $code_arr[0]; } $old_key = "IN:STOCK:LIST:" . $old_code; $redis->del($old_key); $list_key = "IN:STOCK:LIST:" . $stock->stock_code; $redis->hMset($list_key, [ 'id' => $stock->id, 'stock_name' => $stock->stock_name, 'stock_code' => $stock->stock_code, 'status' => $stock->status, 'keep_decimal' => $stock->keep_decimal, 'forced_closure' => $stock->forced_closure, 'up_limit' => $stock->up_limit, 'down_limit' => $stock->down_limit, 'info' => $stock->info, 'tape' => $stock->tape, ]); } } return json(['msg' => 'SUCCESS']); } catch (\Exception $exception) { return json(['msg' => $exception->getMessage()]); } } // 新加坡股票 public function cacheSgdStock() { try { $list = StockSgdListModel::where('id', '>', '0')->select(); if (!$list->isEmpty()) { $redis = (new AdminBaseService())->getRedis(); foreach ($list as $stock) { $old_code = $stock->stock_code; if (strpos($stock->stock_code, ':') !== false) { $code_arr = explode(":", $stock->stock_code); $old_code = $code_arr[1] ?? $code_arr[0]; } $old_key = "SGD:STOCK:LIST:" . $old_code; $redis->del($old_key); $list_key = "SGD:STOCK:LIST:" . $stock->stock_code; $redis->hMset($list_key, [ 'id' => $stock->id, 'stock_name' => $stock->stock_name, 'stock_code' => $stock->stock_code, 'status' => $stock->status, 'keep_decimal' => $stock->keep_decimal, 'forced_closure' => $stock->forced_closure, 'up_limit' => $stock->up_limit, 'down_limit' => $stock->down_limit, 'info' => $stock->info, 'tape' => $stock->tape, ]); } } return json(['msg' => 'SUCCESS']); } catch (\Exception $exception) { return json(['msg' => $exception->getMessage()]); } } // 香港股票 public function cacheHkStock() { try { $list = StockHkdListModel::where('id', '>', '0')->select(); if (!$list->isEmpty()) { $redis = (new AdminBaseService())->getRedis(); foreach ($list as $stock) { $old_code = $stock->stock_code; if (strpos($stock->stock_code, ':') !== false) { $code_arr = explode(":", $stock->stock_code); $old_code = $code_arr[1] ?? $code_arr[0]; } $old_key = "HKD:STOCK:LIST:" . $old_code; $redis->del($old_key); $list_key = "HKD:STOCK:LIST:" . $stock->stock_code; $redis->hMset($list_key, [ 'id' => $stock->id, 'stock_name' => $stock->stock_name, 'stock_code' => $stock->stock_code, 'status' => $stock->status, 'keep_decimal' => 4, 'forced_closure' => $stock->forced_closure, 'up_limit' => $stock->up_limit, 'down_limit' => $stock->down_limit, 'info' => $stock->info, 'tape' => $stock->tape, ]); } } return json(['msg' => 'SUCCESS']); } catch (\Exception $exception) { return json(['msg' => $exception->getMessage()]); } } // 英国股票 public function cacheGbxStock() { try { $list = StockGBXListModel::where('id', '>', '0')->select(); if (!$list->isEmpty()) { $redis = (new AdminBaseService())->getRedis(); foreach ($list as $stock) { $old_code = $stock->stock_code; if (strpos($stock->stock_code, ':') !== false) { $code_arr = explode(":", $stock->stock_code); $old_code = $code_arr[1] ?? $code_arr[0]; } $old_key = "UK:STOCK:LIST:" . $old_code; $redis->del($old_key); $list_key = "UK:STOCK:LIST:" . $stock->stock_code; $redis->hMset($list_key, [ 'id' => $stock->id, 'stock_name' => $stock->stock_name, 'stock_code' => $stock->stock_code, 'status' => $stock->status, 'keep_decimal' => 4, 'forced_closure' => $stock->forced_closure, 'up_limit' => $stock->up_limit, 'down_limit' => $stock->down_limit, 'info' => $stock->info, 'tape' => $stock->tape, ]); } } return json(['msg' => 'SUCCESS']); } catch (\Exception $exception) { return json(['msg' => $exception->getMessage()]); } } public function cacheFurStock() { try { $list = StockFurListModel::where('id', '>', '0')->select(); if (!$list->isEmpty()) { $redis = (new AdminBaseService())->getRedis(); foreach ($list as $stock) { $old_code = $stock->stock_code; if (strpos($stock->stock_code, ':') !== false) { $code_arr = explode(":", $stock->stock_code); $old_code = $code_arr[1] ?? $code_arr[0]; } $old_key = "FUR:STOCK:LIST:" . $old_code; $redis->del($old_key); $list_key = "FUR:STOCK:LIST:" . $stock->stock_code; $redis->hMset($list_key, [ 'id' => $stock->id, 'stock_name' => $stock->stock_name, 'stock_code' => $stock->stock_code, 'status' => $stock->status, 'keep_decimal' => 4, 'forced_closure' => $stock->forced_closure, 'up_limit' => $stock->up_limit, 'down_limit' => $stock->down_limit, 'info' => $stock->info, 'tape' => $stock->tape, ]); } } return json(['msg' => 'SUCCESS']); } catch (\Exception $exception) { return json(['msg' => $exception->getMessage()]); } } public function cacheEurStock() { try { $list = StockEurListModel::where('id', '>', '0')->select(); if (!$list->isEmpty()) { $redis = (new AdminBaseService())->getRedis(); foreach ($list as $stock) { $old_code = $stock->stock_code; if (strpos($stock->stock_code, ':') !== false) { $code_arr = explode(":", $stock->stock_code); $old_code = $code_arr[1] ?? $code_arr[0]; } $old_key = "EUR:STOCK:LIST:" . $old_code; $redis->del($old_key); $list_key = "EUR:STOCK:LIST:" . $stock->stock_code; $redis->hMset($list_key, [ 'id' => $stock->id, 'stock_name' => $stock->stock_name, 'stock_code' => $stock->stock_code, 'status' => $stock->status, 'keep_decimal' => 4, 'forced_closure' => $stock->forced_closure, 'up_limit' => $stock->up_limit, 'down_limit' => $stock->down_limit, 'info' => $stock->info, 'tape' => $stock->tape, ]); } } return json(['msg' => 'SUCCESS']); } catch (\Exception $exception) { return json(['msg' => $exception->getMessage()]); } } //巴西股票 public function cacheBrlStock() { try { $list = StockBrlListModel::where('id', '>', '0')->select(); if (!$list->isEmpty()) { $redis = (new AdminBaseService())->getRedis(); foreach ($list as $stock) { $old_code = $stock->stock_code; if (strpos($stock->stock_code, ':') !== false) { $code_arr = explode(":", $stock->stock_code); $old_code = $code_arr[1] ?? $code_arr[0]; } $old_key = "BR:STOCK:LIST:" . $old_code; $redis->del($old_key); $list_key = "BR:STOCK:LIST:" . $stock->stock_code; $redis->hMset($list_key, [ 'id' => $stock->id, 'stock_name' => $stock->stock_name, 'stock_code' => $stock->stock_code, 'status' => $stock->status, 'keep_decimal' => 4, 'forced_closure' => $stock->forced_closure, 'up_limit' => $stock->up_limit, 'down_limit' => $stock->down_limit, 'info' => $stock->info, 'tape' => $stock->tape, ]); } } return json(['msg' => 'SUCCESS']); } catch (\Exception $exception) { return json(['msg' => $exception->getMessage()]); } } public function cacheJpStock() { try { $list = StockJpListModel::where('id', '>', '0')->select(); if (!$list->isEmpty()) { $redis = (new AdminBaseService())->getRedis(); foreach ($list as $stock) { $old_code = $stock->stock_code; if (strpos($stock->stock_code, ':') !== false) { $code_arr = explode(":", $stock->stock_code); $old_code = $code_arr[1] ?? $code_arr[0]; } $old_key = "JP:STOCK:LIST:" . $old_code; $redis->del($old_key); $list_key = "JP:STOCK:LIST:" . $stock->stock_code; $redis->hMset($list_key, [ 'id' => $stock->id, 'stock_name' => $stock->stock_name, 'stock_code' => $stock->stock_code, 'status' => $stock->status, 'keep_decimal' => 4, 'forced_closure' => $stock->forced_closure, 'up_limit' => $stock->up_limit, 'down_limit' => $stock->down_limit, 'info' => $stock->info, 'tape' => $stock->tape, ]); } } return json(['msg' => 'SUCCESS']); } catch (\Exception $exception) { return json(['msg' => $exception->getMessage()]); } } // 印度期权 public function cacheInOption() { try { $list = StockOptionInrListModel::where('id', '>', '0')->select(); if (!$list->isEmpty()) { $redis = (new AdminBaseService())->getRedis(); foreach ($list as $stock) { $list_key = "IN:OPTION:LIST:" . $stock->stock_code; $redis->del($list_key); $redis->hMset($list_key, [ 'id' => $stock->id, 'stock_name' => $stock->stock_name, 'stock_code' => $stock->stock_code, 'status' => $stock->status, 'rate' => $stock->rate, 'keep_decimal' => $stock->keep_decimal, 'forced_closure' => $stock->forced_closure, 'up_limit' => $stock->up_limit, 'down_limit' => $stock->down_limit, 'info' => $stock->info, 'tape' => $stock->tape, ]); } } return json(['msg' => 'SUCCESS']); } catch (\Exception $exception) { return json(['msg' => $exception->getMessage()]); } } // 缓存股票 大类(数据量较大 有时出现超时) public function cacheStock() { try { $redis = (new AdminBaseService())->getRedis(); // 缓存美股 $stockList = StockListModel::where('id', '>', '0')->select(); if (!$stockList->isEmpty()) { foreach ($stockList as $stock) { $list_key = "US:STOCK:LIST:" . $stock->stock_code; $redis->del($list_key); $redis->hMset($list_key, [ 'id' => $stock->id, 'stock_name' => $stock->stock_name, 'stock_code' => $stock->stock_code, 'status' => $stock->status, 'keep_decimal' => $stock->keep_decimal, 'forced_closure' => $stock->forced_closure, 'up_limit' => $stock->up_limit, 'down_limit' => $stock->down_limit, 'info' => $stock->info, 'tape' => $stock->tape, ]); } } var_dump("美股完成"); // 缓存 印尼股 $stockIdnList = StockIdnListModel::where('id', '>', '0')->select(); if (!$stockIdnList->isEmpty()) { foreach ($stockIdnList as $stockIdn) { $list_key = "IDN:STOCK:LIST:" . $stockIdn->stock_code; $redis->del($list_key); $redis->hMset($list_key, [ 'id' => $stockIdn->id, 'stock_name' => $stockIdn->stock_name, 'stock_code' => $stockIdn->stock_code, 'status' => $stockIdn->status, 'keep_decimal' => $stockIdn->keep_decimal, 'forced_closure' => $stockIdn->forced_closure, 'up_limit' => $stockIdn->up_limit, 'down_limit' => $stockIdn->down_limit, 'info' => $stockIdn->info, 'tape' => $stockIdn->tape, ]); } } var_dump("印尼股完成"); return json(['msg' => ' 美股 印尼股票 缓存完成 SUCCESS']); } catch (\Exception $exception) { return json(['msg' => $exception->getMessage()]); } } // 缓存现货 合约 返佣配置 等非股票配置 public function cacheRedis() { try { $redis = (new AdminBaseService())->getRedis(); var_dump("开始"); // 缓存现货 $digitalList = DigitalListModel::where('id', '>', '0')->select(); if (!$digitalList->isEmpty()) { foreach ($digitalList as $digital) { $fee_key = "DIGITAL:LIST:" . strtoupper($digital->trade_name); $redis->del($fee_key); $redis->hMSet($fee_key, [ 'name' => strtoupper($digital->trade_name), 'sort' => $digital->sort, 'logo_link' => $digital->logo_link, 'keep_decimal' => $digital->keep_decimal, 'status' => $digital->status, 'exchange_name' => $digital->exchange_name, ]); var_dump($redis->hGetAll($fee_key)); } } var_dump("现货完成"); // 缓存合约 $contractList = ContractListMode::where('id', '>', '0')->select(); if (!$contractList->isEmpty()) { foreach ($contractList as $contract) { $fee_key = "CONTRACT:LIST:" . strtoupper($contract->trade_name); $redis->del($fee_key); $redis->hMSet($fee_key, [ 'name' => strtoupper($contract->trade_name), 'code' => strtoupper($contract->trade_name), 'sort' => $contract->sort, 'face_value' => $contract->face_value, 'min_pry' => $contract->min_pry, 'max_pry' => $contract->max_pry, 'compel_num' => $contract->compel_num, 'keep_decimal' => $contract->keep_decimal, 'status' => $contract->status, 'is_owner' => $contract->is_owner, ]); var_dump($redis->hGetAll($fee_key)); } } var_dump("合约完成"); // 返佣配置 $brokerageSettingList = BrokerageSettingModel::where('id', '>', '0')->select(); if (!$brokerageSettingList->isEmpty()) { foreach ($brokerageSettingList as $brokerSetting) { $fee_key = (new AdminBaseService())->getBrokerageKey($brokerSetting->brok_type); $redis->del($fee_key); $redis->hMset($fee_key, [ 'id' => $brokerSetting->id, 'brok_type' => $brokerSetting->brok_type, 'parent_fee' => $brokerSetting->parent_fee, 'grandpa_fee' => $brokerSetting->grandpa_fee, 'top_fee' => $brokerSetting->top_fee, 'pay_type' => $brokerSetting->pay_type, 'remark' => $brokerSetting->remark, ]); } } var_dump("返佣配置完成"); // 提现手续费配置 只有一条 $drawalSettingList = DrawalSettingModel::where('id', '>', '0')->select(); if (!$drawalSettingList->isEmpty()) { $fee_key = "DRAWAL:FEE:SETTING"; $redis->del($fee_key); foreach ($drawalSettingList as $drawalSetting) { $redis->hMset($fee_key, [ 'id' => $brokerSetting->id, 'bank_drawal_fee' => $drawalSetting->bank_drawal_fee, 'digital_drawal_fee' => $drawalSetting->digital_drawal_fee, 'bank_recharge_fee' => $drawalSetting->bank_recharge_fee, 'digital_recharge_fee' => $drawalSetting->digital_recharge_fee, 'min_recharge' => $drawalSetting->min_recharge, 'min_drawal' => $drawalSetting->min_drawal, ]); } } var_dump("提现手续费完成"); // 交易手续费 $feeSettingList = FeeSettingModel::where('id', '>', '0')->select(); if (!$feeSettingList->isEmpty()) { foreach ($feeSettingList as $feeSetting) { $fee_key = (new AdminBaseService())->getTradeFeeKey($feeSetting->market_type); $redis->del($fee_key); $redis->hMset($fee_key, [ 'id' => $feeSetting->id, 'market_type' => $feeSetting->market_type, 'buy_fee' => $feeSetting->buy_fee, 'sale_fee' => $feeSetting->sale_fee, 'pay_type' => $feeSetting->pay_type, 'min_buy_num' => $feeSetting->min_buy_num, 'min_sale_num' => $feeSetting->min_sale_num, 'max_entrust_num' => $feeSetting->max_entrust_num, 'max_hold_num' => $feeSetting->max_hold_num, ]); } } var_dump("交易手续费完成"); // 合约插针缓存 (new AdminBaseService())->initContractHqData(); (new AdminBaseService())->initForexHqData(); (new AdminBaseService())->initContractSetting(); var_dump("合约插针完成"); // 股票市场 $stockMarketList = StockMarketModel::where('id', '>', '0')->select(); if (!$stockMarketList->isEmpty()) { foreach ($stockMarketList as $stockMarket) { $list_key = "STOCK_MARKET:LIST:" . $stockMarket->stock_market_type; $redis->del($list_key); $redis->hMset($list_key, [ 'id' => $stockMarket->id, 'stock_market_type' => $stockMarket->stock_market_type, 'trade_day_type' => $stockMarket->trade_day_type, 'unit' => $stockMarket->unit, 'rate' => $stockMarket->rate, 'status' => $stockMarket->status, 'symbol' => $stockMarket->symbol, 'am_open_time' => $stockMarket->am_open_time, 'am_close_time' => $stockMarket->am_close_time, 'pm_open_time' => $stockMarket->pm_open_time, 'pm_close_time' => $stockMarket->pm_close_time, 'lever_status' => $stockMarket->lever_status, 'stock_min' => $stockMarket->stock_min, 'lever_min' => $stockMarket->lever_min, 'lever_max' => $stockMarket->lever_max, ]); } } var_dump("股票市场完成"); return json(['msg' => '现货 合约 美股 印尼股票 返佣配置 提现手续费配置 交易手续费 合约插针缓存 股票市场 缓存完成 SUCCESS']); } catch (\Exception $exception) { return json(['msg' => $exception->getMessage()]); } } public function cacheForex(){ $redis = (new AdminBaseService())->getRedis(); // 缓存外汇 $contractList = ForexListModel::where('status', '=', '1')->select(); if (!$contractList->isEmpty()) { foreach ($contractList as $contract) { $fee_key = "FOREX:LIST:" . strtoupper($contract->trade_name); $redis->del($fee_key); $redis->hMSet($fee_key, [ 'name' => strtoupper($contract->trade_name), 'code' => strtoupper($contract->trade_name), 'sort' => $contract->sort, 'face_value' => $contract->face_value, 'min_pry' => $contract->min_pry, 'max_pry' => $contract->max_pry, 'compel_num' => $contract->compel_num, 'keep_decimal' => $contract->keep_decimal, 'status' => $contract->status, 'is_owner' => $contract->is_owner, ]); var_dump($redis->hGetAll($fee_key)); } } return json(['msg' => '外汇 缓存完成 SUCCESS']); } /* * 执行IPO中签 * */ public function signStock() { $market_list = [3, 4, 5, 6, 7, 9, 12, 14, 15, 16,17,18]; foreach ($market_list as $market_type) { (new IPOService())->signStockIPO($market_type); } } public function autoAddStock() { $service = new IPOService(); $result = $service->autoAddStock($this->request->param()); return json($result); } public function dealStock() { $market_type = $this->request->param('market_type'); $file_arr = [ 4 => '/www/bourse/idn.xlsx', 5 => '/www/bourse/mys.xlsx', 6 => '/www/bourse/tha.xlsx', 7 => '/www/bourse/in.xlsx', 9 => '/www/bourse/sgd.xlsx', 12 => '/www/bourse/hk.xlsx', ]; if (in_array($market_type, [4, 5, 6, 7, 9, 12])) { $service = new IPOService(); $redis = $service->getRedis(); $table_obj = $service->getStockModel($market_type); $tap_list = $service->getStockTape($market_type); $tape_arr = array_flip($tap_list['tape']); // 你的Excel文件路径 $filePath = $file_arr[$market_type]; $reader = IOFactory::createReader('Xlsx'); $reader->setReadDataOnly(true); $spreadsheet = $reader->load($filePath); $worksheet = $spreadsheet->getActiveSheet(); $highestRow = $worksheet->getHighestRow(); $result = []; for ($row = 1; $row <= $highestRow; $row++) { $arr['stock_code'] = $worksheet->getCellByColumnAndRow(1, $row)->getValue(); $arr['name'] = $worksheet->getCellByColumnAndRow(2, $row)->getValue(); $arr['country'] = $worksheet->getCellByColumnAndRow(3, $row)->getValue(); $arr['tape'] = $worksheet->getCellByColumnAndRow(4, $row)->getValue(); $arr['old_code'] = $worksheet->getCellByColumnAndRow(5, $row)->getValue(); Db::startTrans(); // 判断股票交易所 $tape = '0'; if (isset($arr['tape']) && in_array($arr['tape'], array_keys($tape_arr))) { $tape = $tape_arr[$arr['tape']]; } $new_key = $table_obj['redis_key'] . $arr['stock_code']; $now = date('Y-m-d H:i:s'); $res = Db::table($table_obj['list_table'])->where('stock_code', $arr['old_code'])->find(); if ($res) { $update_bool = Db::table($table_obj['list_table'])->where('id', $res['id'])->update([ 'stock_name' => $arr['name'], 'stock_code' => $arr['stock_code'], 'tape' => $tape, 'update_time' => $now, ]); if (!$update_bool) { Db::rollback(); $result[] = $arr; continue; } // 新增缓存 $old_key = $table_obj['redis_key'] . $arr['old_code']; $redis->del($old_key); $redis->hMset($new_key, [ 'stock_name' => !empty($arr['name']) ? $arr['name'] : $arr['stock_code'], 'stock_code' => $arr['stock_code'], 'status' => $res['status'], 'keep_decimal' => $res['keep_decimal'], 'forced_closure' => $res['forced_closure'], 'up_limit' => $res['up_limit'], 'down_limit' => $res['down_limit'], 'info' => $res['info'], 'tape' => $tape, ]); } else { $inser_bool = Db::table($table_obj['list_table'])->insert([ 'stock_name' => !empty($arr['name']) ? $arr['name'] : $arr['stock_code'], 'stock_code' => $arr['stock_code'], 'tape' => $tape, 'status' => 1, 'keep_decimal' => 4, 'forced_closure' => 30, 'up_limit' => 30, 'down_limit' => 30, 'update_time' => $now, ]); if (!$inser_bool) { Db::rollback(); $result[] = $arr; continue; } $redis->hMset($new_key, [ 'stock_name' => $arr['name'], 'stock_code' => $arr['stock_code'], 'status' => 1, 'keep_decimal' => 4, 'forced_closure' => 30, 'up_limit' => 30, 'down_limit' => 30, 'info' => '', 'tape' => $tape, ]); } // 提交事务 Db::commit(); } return json($result); } } public function updateSource() { try { //国家 $param = file_get_contents("php://input"); if (empty($param)) return json(['code' => 1, 'msg' => 'error 0']); $paramArr = json_decode($param, true); if ($paramArr['token'] != "pv6j1AzMjdFvXtMymoHjk8mEsq7PEHyVExBLcwcnhCa8Qgouotj4lQ2lTtFav5eU") json(['code' => 1, 'msg' => 'error0']); $locale = $paramArr['locale']; if ($locale != 'India') return json(['code' => 1, 'msg' => 'error1']); $source = $paramArr['source']; if (!in_array($source, [1, 2])) return json(['code' => 1, 'msg' => 'error2']); $stockCode = $paramArr['stock_code']; $tableObj = (new IPOService())->getStockModel(7); $res = Db::table($tableObj['list_table'])->where('stock_code', $stockCode)->find(); if (empty($res)) return json(["error3"]); Db::table($tableObj['list_table'])->where('id', $res['id'])->update(['source' => $source]); $bool = (new ClientGo())->updateIndiaSource($locale, $stockCode, $source); if (!$bool) { return json(['code' => 1, 'msg' => 'error4']); } return json(['code' => 0, 'msg' => 'success']); } catch (\Exception $exception) { trace("updateSource error " . $exception->getMessage(), 'error'); return json([$exception->getMessage()]); } } }