p2 project
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1294 lines
62 KiB

<?php
namespace app\admin\controller;
use app\admin\service\AdminBaseService;
use app\admin\service\setting\IPOService;
use app\model\AdminModel;
use app\model\AuthRoleModel;
use app\model\BrokerageSettingModel;
use app\model\ContractListMode;
use app\model\ContractTradeModel;
use app\model\DigitalListModel;
use app\model\DigitalTradeModel;
use app\model\DrawalSettingModel;
use app\model\FeeSettingModel;
use app\model\ForexListModel;
use app\model\RechargeApplyModel;
use app\model\StockBrlListModel;
use app\model\StockEurListModel;
use app\model\StockFurListModel;
use app\model\StockGBXListModel;
use app\model\StockHkdListModel;
use app\model\StockIdnListModel;
use app\model\StockIdnTradeModel;
use app\model\StockIndexInrListModel;
use app\model\StockInListModel;
use app\model\StockInTradeModel;
use app\model\StockJpListModel;
use app\model\StockListModel;
use app\model\StockMarketModel;
use app\model\StockMysListModel;
use app\model\StockMysTradeModel;
use app\model\StockOptionInrListModel;
use app\model\StockSgdListModel;
use app\model\StockThaListModel;
use app\model\StockThaTradeModel;
use app\model\StockTradeModel;
use app\model\UserModel;
use app\model\UserVerifyLogModel;
use app\model\UserWithdrawalModel;
use app\utility\ClientGo;
use think\facade\Db;
use think\facade\Queue;
use PhpOffice\PhpSpreadsheet\IOFactory;
class Index extends AdminBaseController
{
public function index()
{
try {
$prefix = env('DATABASE.prefix');
$ContractTradeTableName = $prefix . (new ContractTradeModel())->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();
// 获取当登录账号信息
$adminId = $this->request->user_id;
$account = AdminModel::where('id', $adminId)->find();
if (empty($account)) {
return json(['code' => '500', 'message' => '当前账号数据为空', 'data' => []]);
}
// 查询当前账号的角色信息
$role = AuthRoleModel::where(['id'=>$account->role_id])->find();
if (empty($role)) {
return json(['code' => '500', 'message' => '当前账号分配的角色数据为空', 'data' => []]);
}
$today = date('Y-m-d'); // 今天凌晨
$tomorrow = date('Y-m-d', strtotime('tomorrow')); // 明天凌晨
$whereInUser = [];
// 根据角色获取数据统计范围
switch ($role->name) {
case AuthRoleModel::NAME_ADMIN: // 超级管理员可以查看所有数据
// 今日注册用户
$todayRegisterNum = UserModel::whereTime('create_time', 'between', [$today, $tomorrow])->count();
// 总注册人数(用户的总数)
$totalRegisterNum = UserModel::count();
// // 今日充值用户 完成状态
// $todayRechargeNum = RechargeApplyModel::where('status', 1)->whereTime('create_time', 'between', [$today, $tomorrow])->group('user_id')->count();
// 总充值用户(充值用户的个数 以用户id分组)
// $totalRechargeNum = RechargeApplyModel::where('status', 1)->group('user_id')->count();
break;
case AuthRoleModel::NAME_AGENT: // 代理 - 查看代理下可以查看的用户
// 今日注册用户
$todayRegisterNum = UserModel::whereTime('create_time', 'between', [$today, $tomorrow])->where('agent_id', $adminId)->count();
// 总注册人数(用户的总数)
$userIds = UserModel::where('agent_id', $adminId)->column('user_id');
$totalRegisterNum = count($userIds);
$whereInUser[] = ['user_id', 'in', $userIds];
break;
case AuthRoleModel::NAME_DIRECTOR: // 总监 - 查询总监下可以查看的用户
$customerIds = [];
$teamHeaderIds = AdminModel::where('parent_id', $adminId)->column('id'); // 总监下面的组长ID
if (!empty($teamHeaderIds)) {
$customerIds = AdminModel::whereIn('parent_id', $teamHeaderIds)->column('id'); // 组长下面的ID
}
// 今日注册用户
$todayRegisterNum = UserModel::whereTime('create_time', 'between', [$today, $tomorrow])->whereIn('customer_id', $customerIds)->count();
// 总注册人数(用户的总数)
$userIds = UserModel::whereIn('customer_id', $customerIds)->column('user_id');
$totalRegisterNum = count($userIds);
$whereInUser[] = ['user_id', 'in', $userIds];
break;
case AuthRoleModel::NAME_TEAM_HEADER: // 组长 - 查看组长下可以查看的用户
$customerIds = AdminModel::where('parent_id', $adminId)->column('id'); // 组长下面的客服ID
// 今日注册用户
$todayRegisterNum = UserModel::whereTime('create_time', 'between', [$today, $tomorrow])->whereIn('customer_id', $customerIds)->count();
// 总注册人数(用户的总数)
$userIds = UserModel::whereIn('customer_id', $customerIds)->column('user_id');
$totalRegisterNum = count($userIds);
$whereInUser[] = ['user_id', 'in', $userIds];
break;
case AuthRoleModel::NAME_CUSTOMER: // 客服 - 查看客服下的用户
// 今日注册用户
$todayRegisterNum = UserModel::whereTime('create_time', 'between', [$today, $tomorrow])->where('customer_id', $adminId)->count();
// 总注册人数(用户的总数)
$userIds = UserModel::where('customer_id', $adminId)->column('user_id');
$totalRegisterNum = count($userIds);
$whereInUser[] = ['user_id', 'in', $userIds];
break;
default:
return json(['code' => '500', 'message' => '当前角色未知,不能提供数据统计', 'data' => []]);
}
// 今日充值用户 完成状态
$todayRechargeNum = RechargeApplyModel::where('status', 1)->whereTime('create_time', 'between', [$today, $tomorrow])->where($whereInUser)->group('user_id')->count();
// 总充值用户(充值用户的个数 以用户id分组)
$totalRechargeNum = RechargeApplyModel::where('status', 1)->where($whereInUser)->group('user_id')->count();
// 总交易用户(合约 股票 现货 交易的用户去重 订单状态为持仓 和 完成 订单)
$contractTradeUserId = Db::table($ContractTradeTableName)->where('status', 'in', [1, 3])->where($whereInUser)->distinct(true)->column('user_id');
$stockTradeUserId = Db::table($stockTradeTableName)->where('status', 'in', [1, 3])->where($whereInUser)->distinct(true)->column('user_id');
$stockMysTradeUserId = Db::table($stockMysTradeTableName)->where('status', 'in', [1, 3])->where($whereInUser)->distinct(true)->column('user_id');
$stockThaTradeUserId = Db::table($stockThaTradeTableName)->where('status', 'in', [1, 3])->where($whereInUser)->distinct(true)->column('user_id');
$stockIdnTradeUserId = Db::table($stockIdnTradeTableName)->where('status', 'in', [1, 3])->where($whereInUser)->distinct(true)->column('user_id');
$stockInTradeUserId = Db::table($stockInTradeTableName)->where('status', 'in', [1, 3])->where($whereInUser)->distinct(true)->column('user_id');
$digitalTradeUserId = Db::table($digitalTradeTableName)->where('status', 'in', [1, 3])->where($whereInUser)->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)->where($whereInUser)->group('user_id')->count();
// 总充值金额 充值完成
$totalRechargeAmount = Db::table($rechargeApplyTableName)->where($whereInUser)->where('status', 1)->sum('recharge_num');
// 总提款金额 提款完成
$totalWithdrawAmount = Db::table($userWithdrawTableName)->where($whereInUser)->where('status', 2)->sum('apply_num');
// 今日交易用户
// 合约
$todayContractTradeUserId = Db::table($ContractTradeTableName)->where('status', 'in', [1, 3])
->whereTime('create_time', 'between', [$today, $tomorrow])->where($whereInUser)
->distinct(true)->column('user_id');
//股票
$todayStockTradeUserId = Db::table($stockTradeTableName)->where('status', 'in', [1, 3])
->whereTime('create_time', 'between', [$today, $tomorrow])->where($whereInUser)
->distinct(true)->column('user_id');
$todayStockMysTradeUserId = Db::table($stockMysTradeTableName)->where('status', 'in', [1, 3])
->whereTime('create_time', 'between', [$today, $tomorrow])->where($whereInUser)
->distinct(true)->column('user_id');
$todayStockThaTradeUserId = Db::table($stockThaTradeTableName)->where('status', 'in', [1, 3])
->whereTime('create_time', 'between', [$today, $tomorrow])->where($whereInUser)
->distinct(true)->column('user_id');
$todayStockIndTradeUserId = Db::table($stockIdnTradeTableName)->where('status', 'in', [1, 3])
->whereTime('create_time', 'between', [$today, $tomorrow])->where($whereInUser)
->distinct(true)->column('user_id');
$todayStockInTradeUserId = Db::table($stockInTradeTableName)->where('status', 'in', [1, 3])
->whereTime('create_time', 'between', [$today, $tomorrow])->where($whereInUser)
->distinct(true)->column('user_id');
// 现货
$todayDigitalTradeUserId = Db::table($digitalTradeTableName)->where('status', 'in', [1, 3])
->whereTime('create_time', 'between', [$today, $tomorrow])->where($whereInUser)
->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])->where($whereInUser)
->group('user_id')->count();
// 今日充值金额 完成状态
$todayRechargeAmount = Db::table($rechargeApplyTableName)
->whereTime('create_time', 'between', [$today, $tomorrow])->where($whereInUser)
->where('status', 1)->sum('recharge_num');
// 今日提款金额 完成状态
$todayWithdrawAmount = Db::table($userWithdrawTableName)
->whereTime('create_time', 'between', [$today, $tomorrow])->where($whereInUser)
->where('status', 2)->sum('apply_num');
// 等待处理充值订单数量
$pendingRecharge = RechargeApplyModel::where('status', 0)->where($whereInUser)->count();
// 等待处理提款订单数量
$pendingWithdraw = UserWithdrawalModel::where('status', 4)->where($whereInUser)->count();
// 等待实名审核数量
$pendingUserVerify = UserVerifyLogModel::where('status', 1)->where($whereInUser)->count();
$data = [
'todayRegisterNum' => $todayRegisterNum, // 今日注册用户
'totalRegisterNum' => $totalRegisterNum, // 总注册人数
'todayRechargeNum' => $todayRechargeNum, // 今日充值用户
'totalRechargeNum' => $totalRechargeNum,// 总充值用户
'todayTradeNum' => $todayTradeNum, // 今日交易用户
'totalTradeNum' => $totalTradeNum,// 总交易用户
'todayWithdrawNum' => $todayWithdrawNum, // 今日提款用户
'totalWithdrawalNum' => $totalWithdrawalNum,// 总提现用户
'todayRechargeAmount' => $todayRechargeAmount, // 今日充值金额
'totalRechargeAmount' => $totalRechargeAmount,// 总充值金额
'todayWithdrawAmount' => $todayWithdrawAmount, // 今日提款金额
'totalWithdrawAmount' => $totalWithdrawAmount, // 总提款金额
'no_deal_recharge' => $pendingRecharge, // 等待处理充值订单数量
'no_deal_withdraw' => $pendingWithdraw, // 等待处理提款订单数量
'no_deal_real' => $pendingUserVerify, // 等待实名审核数量
];
return json(['code' => '0', 'message' => 'SUCCESS', 'data' => $data]);
} catch (\Exception $exception) {
return json(['code' => '1', 'message' => '系统繁忙', [$exception->getMessage(), $exception->getTrace()]]);
}
}
// 分页统计每日注册用户
public function dailyUserRegistration()
{
try {
$param = $this->request->post();
if (empty($param['page']) || empty($param['limit'])) {
return json(['code' => '500', 'message' => '缺少参数', 'data' => []]);
}
// 获取当登录账号信息
$adminId = $this->request->user_id;
$account = AdminModel::where('id', $adminId)->find();
if (empty($account)) {
return json(['code' => '500', 'message' => '当前账号数据为空', 'data' => []]);
}
// 查询当前账号的角色信息
$role = AuthRoleModel::where(['id'=>$account->role_id])->find();
if (empty($role)) {
return json(['code' => '500', 'message' => '当前账号分配的角色数据为空', 'data' => []]);
}
switch ($role->name) {
case AuthRoleModel::NAME_ADMIN: // 超级管理员可以查看所有数据
$list = UserModel::order('create_time', 'desc')->paginate([
'list_rows' => $param['limit'],
'page' => $param['page'],
]);
break;
case AuthRoleModel::NAME_AGENT: // 代理 - 查看代理下可以查看的用户
$list = UserModel::where('agent_id', $adminId)->order('create_time', 'desc')->paginate([
'list_rows' => $param['limit'],
'page' => $param['page'],
]);
break;
case AuthRoleModel::NAME_DIRECTOR: // 总监 - 查询总监下可以查看的用户
$customerIds = [];
$teamHeaderIds = AdminModel::where('parent_id', $adminId)->column('id'); // 总监下面的组长ID
if (!empty($teamHeaderIds)) {
$customerIds = AdminModel::whereIn('parent_id', $teamHeaderIds)->column('id'); // 组长下面的ID
}
$list = UserModel::whereIn('customer_id', $customerIds)->order('create_time', 'desc')->paginate([
'list_rows' => $param['limit'],
'page' => $param['page'],
]);
break;
case AuthRoleModel::NAME_TEAM_HEADER: // 组长 - 查看组长下可以查看的用户
$customerIds = AdminModel::where('parent_id', $adminId)->column('id'); // 组长下面的客服ID
$list = UserModel::whereIn('customer_id', $customerIds)->order('create_time', 'desc')->paginate([
'list_rows' => $param['limit'],
'page' => $param['page'],
]);
break;
case AuthRoleModel::NAME_CUSTOMER: // 客服 - 查看客服下的用户
$list = UserModel::where('customer_id', $adminId)->order('create_time', 'desc')->paginate([
'list_rows' => $param['limit'],
'page' => $param['page'],
]);
break;
default:
return json(['code' => '500', 'message' => '当前角色未知,不能提供数据统计', 'data' => []]);
}
return json(['code' => '0', 'message' => 'ok', 'data' => [
'list' => $list->items(),
'page' => $list->currentPage(),
'total' => $list->total(),
'last_page' => $list->lastPage(),
]]);
} catch (\Exception $exception) {
return json(['code' => '500', 'message' => '系统繁忙', [$exception->getMessage(), $exception->getTrace()]]);
}
}
// 分页统计每日交易数据
public function dailyTradeList()
{
try {
$param = $this->request->post();
if (empty($param['page']) || empty($param['limit']) || empty($param['market_type'])) {
return json(['code' => '400', 'message' => '缺少参数', 'data' => []]);
}
// 判断要查询的市场类型是否在有效范围内
$tradeTables = StockMarketModel::TRADE_TABLE;
if (!isset($tradeTables[$param['market_type']])) {
return json(['code' => '400', 'message' => 'market_type不在有效范围内', 'data' => []]);
}
// 获取当登录账号信息
$adminId = $this->request->user_id;
$account = AdminModel::where('id', $adminId)->find();
if (empty($account)) {
return json(['code' => '500', 'message' => '当前账号数据为空', 'data' => []]);
}
// 查询当前账号的角色信息
$role = AuthRoleModel::where(['id'=>$account->role_id])->find();
if (empty($role)) {
return json(['code' => '500', 'message' => '当前账号分配的角色数据为空', 'data' => []]);
}
switch ($role->name) {
case AuthRoleModel::NAME_ADMIN: // 超级管理员可以查看所有数据
// $query1 = 'select "合约" as subject, trade_id,order_id,user_id,null as stock_id,contract_id,null as digital_id,trade_type,deal_type,status,order_money,create_time from bot_contract_trade';
// $query2 = 'select "数字币" as subject, trade_id,order_id,user_id,null as stock_id,null as contract_id,digital_id,trade_type,deal_type,status,order_money,create_time from bot_digital_trade';
// $query3 = 'select "美股" as subject, trade_id,order_id,user_id,stock_id,null as contract_id,null as digital_id,trade_type,deal_type,status,order_money,create_time from bot_stock_trade';
// $query4 = 'select "马股" as subject, trade_id,order_id,user_id,stock_id,null as contract_id,null as digital_id,trade_type,deal_type,status,order_money,create_time from bot_stock_mys_trade';
// $query5 = 'select "泰股" as subject, trade_id,order_id,user_id,stock_id,null as contract_id,null as digital_id,trade_type,deal_type,status,order_money,create_time from bot_stock_tha_trade';
// $query6 = 'select "印尼股" as subject, trade_id,order_id,user_id,stock_id,null as contract_id,null as digital_id,trade_type,deal_type,status,order_money,create_time from bot_stock_idn_trade';
// $query7 = 'select "印度股" as subject, trade_id,order_id,user_id,stock_id,null as contract_id,null as digital_id,trade_type,deal_type,status,order_money,create_time from bot_stock_in_trade';
// $unionAllQuery = $query1.' union all '. $query2. ' union all '. $query3. ' union all '. $query4. ' union all '. $query5. ' union all '. $query6. ' union all '. $query7;
// $totalQuery = 'select count(*) as total from ( '. $unionAllQuery. ' ) as tmp;';
// $total = Db::query($totalQuery);
// $list = Db::query($unionAllQuery. ' order by create_time desc limit ?, ?;', [$offset, $param['limit']]);
$list = Db::table($tradeTables[$param['market_type']])->order('create_time', 'desc')->paginate([
'list_rows' => $param['limit'],
'page' => $param['page'],
]);
break;
case AuthRoleModel::NAME_AGENT: // 代理 - 查看代理下可以查看的用户
$userIds = UserModel::where('agent_id', $adminId)->column('user_id');
$list = Db::table($tradeTables[$param['market_type']])->whereIn('user_id', $userIds)->order('create_time', 'desc')->paginate([
'list_rows' => $param['limit'],
'page' => $param['page'],
]);
break;
case AuthRoleModel::NAME_DIRECTOR: // 总监 - 查询总监下可以查看的用户
$customerIds = [];
$teamHeaderIds = AdminModel::where('parent_id', $adminId)->column('id'); // 总监下面的组长ID
if (!empty($teamHeaderIds)) {
$customerIds = AdminModel::whereIn('parent_id', $teamHeaderIds)->column('id'); // 组长下面的ID
}
$userIds = UserModel::whereIn('customer_id', $customerIds)->column('user_id');
$list = Db::table($tradeTables[$param['market_type']])->whereIn('user_id', $userIds)->order('create_time', 'desc')->paginate([
'list_rows' => $param['limit'],
'page' => $param['page'],
]);
break;
case AuthRoleModel::NAME_TEAM_HEADER: // 组长 - 查看组长下可以查看的用户
$customerIds = AdminModel::where('parent_id', $adminId)->column('id'); // 组长下面的客服ID
$userIds = UserModel::whereIn('customer_id', $customerIds)->column('user_id');
$list = Db::table($tradeTables[$param['market_type']])->whereIn('user_id', $userIds)->order('create_time', 'desc')->paginate([
'list_rows' => $param['limit'],
'page' => $param['page'],
]);
break;
case AuthRoleModel::NAME_CUSTOMER: // 客服 - 查看客服下的用户
$userIds = UserModel::where('customer_id', $adminId)->column('user_id');
$list = Db::table($tradeTables[$param['market_type']])->whereIn('user_id', $userIds)->order('create_time', 'desc')->paginate([
'list_rows' => $param['limit'],
'page' => $param['page'],
]);
break;
default:
return json(['code' => '500', 'message' => '当前角色未知,不能提供数据统计', 'data' => []]);
}
return json(['code' => '0', 'message' => 'ok', 'data' => [
'list' => $list->items(),
'total' => $list->total(),
'page' => $list->currentPage(),
'last_page' => $list->lastPage(),
]]);
} catch (\Exception $exception) {
return json(['code' => '500', 'message' => '系统繁忙', [$exception->getMessage(), $exception->getTrace()]]);
}
}
// 缓存美股数据
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())->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']);
}
// 印度股指
public function cacheIndexInrStock()
{
try {
$redis = (new AdminBaseService())->getRedis();
// 缓存印度股指
$indexInrList = StockIndexInrListModel::where('status', '=', '1')->select();
if (!$indexInrList->isEmpty()) {
foreach ($indexInrList as $indexInr) {
$fee_key = "IndexInr:STOCK:LIST:" . strtoupper($indexInr->trade_name);
$redis->del($fee_key);
$redis->hMSet($fee_key, [
'name' => strtoupper($indexInr->name),
'code' => strtoupper($indexInr->trade_name),
'sort' => $indexInr->sort,
'face_value' => $indexInr->face_value,
'min_pry' => $indexInr->min_pry,
'max_pry' => $indexInr->max_pry,
'compel_num' => $indexInr->compel_num,
'keep_decimal' => $indexInr->keep_decimal,
'status' => $indexInr->status,
'is_owner' => $indexInr->is_owner,
]);
var_dump($redis->hGetAll($fee_key));
}
}
return json(['msg' => '印度股指 缓存完成 SUCCESS']);
} catch (\Exception $exception) {
return json(['msg' => $exception->getMessage()]);
}
}
/*
* 执行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()]);
}
}
}