Browse Source

编辑用户阶段信息

master
chuan 4 months ago
parent
commit
9249e0ff00
  1. 8
      app/admin/controller/User.php
  2. 7
      app/admin/route/app.php
  3. 452
      app/admin/service/UserService.php
  4. 2
      app/admin/validate/RechargeValidate.php
  5. 3
      app/admin/validate/UserValidate.php
  6. 18
      app/model/UserStageStateModel.php

8
app/admin/controller/User.php

@ -155,4 +155,12 @@ class User extends AdminBaseController
$result = $service->frozen($this->request->param(),$this->getAdminId());
return json($result);
}
// 设置用户阶段信息
public function editUserStage()
{
$service = new UserService();
$result = $service->editUserStage($this->request->param(),$this->getAdminId());
return json($result);
}
}

7
app/admin/route/app.php

@ -14,7 +14,7 @@ $header = [
//Route::get('/test', 'Test/index');
Route::post('/test', 'Test/index');
Route::post('/test_upload', 'Upload/uploadVideo');
Route::post('test_api', 'User/editUserBaseLabel');
Route::post('test_api', 'User/editUserStage');
Route::group('/', function () {
// 上传图片
Route::post('/upload', 'Upload/upload');
@ -195,8 +195,9 @@ Route::group('/', function () {
Route::post('/user/reg_email', 'User/reg_email')->middleware('admin_log');
Route::post('/user/bank', 'User/bankDetail');
Route::post('/user/edit_bank', 'User/editBank')->middleware('admin_log');
Route::post('/user/edit_password', 'User/editPassword')->middleware('admin_log');
Route::post('/user/frozen', 'User/frozen'); //用户充值、提款封禁与解封
Route::post('user/edit_password', 'User/editPassword')->middleware('admin_log');
Route::post('user/frozen', 'User/frozen'); //用户充值、提款封禁与解封
Route::post('user/edit_user_stage', 'User/editUserStage'); //编辑用户阶段信息
//送股
Route::post('/user/give_stock', 'setting.GiveStock/add')->middleware('admin_log');

452
app/admin/service/UserService.php

@ -19,6 +19,7 @@ use app\model\UserDigitalModel;
use app\model\UserForexModel;
use app\model\UserLoginLog;
use app\model\UserModel;
use app\model\UserStageStateModel;
use app\model\UserStockBrlModel;
use app\model\UserStockEurModel;
use app\model\UserStockFurModel;
@ -124,212 +125,228 @@ class UserService extends AdminBaseService
}
$userList = UserModel::where($where)->where($whereU)->page($param['page'], $param['limit'])->order('user_id', 'desc')->select();
if (empty($userList)) {
return $this->toData('0', 'SUCCESS', ['total' => 0, 'list' => [], 'extent' => ['market_type_list' => StockMarketModel::STOCK_MARKET_TYPE, 'is_agent' => $IsAgent, 'agent_list' => $agentNameArr, 'market_rate' => $marketRate, 'market_tape_list' => $tapeList]]);
}
$total = UserModel::where($where)->where($whereU)->count();
$rows = [];
if (!empty($userList)) {
$userIdArr = [];
$parentIdArr = [];
foreach ($userList as $value) {
$userIdArr[] = $value['user_id'];
if ($value['parent_id'] > 0) {
$parentIdArr[] = $value['parent_id'];
}
}
// 查询父级
$parentNos = UserModel::where('user_id', 'in', $parentIdArr)->column('user_no', 'user_id');
// 查询用户余额
$userContractList = UserContractModel::where('user_id', 'in', $userIdArr)
->where('contract_id', 'USDT')
->column('usable_num,frozen_num', 'user_id');
// 查询用户余额
$userContractSecList = UserContractSecModel::where('user_id', 'in', $userIdArr)
->where('contract_id', 'USDT')
->column('usable_num,frozen_num', 'user_id');
$userStockList = UserStockModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'USD')
->column('usable_num,frozen_num', 'user_id');
$userDigitalList = UserDigitalModel::where('user_id', 'in', $userIdArr)
->where('digital_id', 'USDT')
->column('usable_num,frozen_num', 'user_id');
// 印尼资产
$userStockIdrList = UserStockIdnModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'IDR')
->column('usable_num,frozen_num', 'user_id');
// 泰股资产
$userStockThaList = UserStockThaModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'THB')
->column('usable_num,frozen_num', 'user_id');
// 马股资产
$userStockMysList = UserStockMysModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'MYR')
->column('usable_num,frozen_num', 'user_id');
// 印度股票资产
$userStockInList = UserStockInModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'INR')
->column('usable_num,frozen_num', 'user_id');
//新加坡股票资产
$userStockSGDList = UserStockSgdModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'SGD')
->column('usable_num,frozen_num', 'user_id');
//基金资产
$userStockFundList = UserStockFundModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'USD')
->column('usable_num,frozen_num', 'user_id');
//印度期权
$userStockOptionInrList = UserStockOptionInrModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'INR')
->column('usable_num,frozen_num', 'user_id');
//港股
$userStockHkList = UserStockHkdModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'HKD')
->column('usable_num,frozen_num', 'user_id');
//英股
$userStockUkList = UserStockGBXModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'GBX')
->column('usable_num,frozen_num', 'user_id');
//法股
$userStockFurList = UserStockFurModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'EUR')
->column('usable_num,frozen_num', 'user_id');
//德股
$userStockEurList = UserStockEurModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'EUR')
->column('usable_num,frozen_num', 'user_id');
//巴西
$userStockBrlList = UserStockBrlModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'BRL')
->column('usable_num,frozen_num', 'user_id');
$userStockJpList = UserStockJpModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'JPY')
->column('usable_num,frozen_num', 'user_id');
//外汇
$userForexList = UserForexModel::where('user_id', 'in', $userIdArr)
->where('contract_id', 'USD')
->column('usable_num,frozen_num', 'user_id');
// 用户关联的客服id
$customerRelationList = CustomerRelationalModel::where('user_id', 'in', $userIdArr)->column('customer_id', 'user_id');
// 获取每个客服的名称
$customerNames = [];
if ($customerRelationList) {
$customerIds = array_values($customerRelationList);
$customerNames = AdminModel::where('id', 'in', $customerIds)->column('nick_name', 'id');
$rows = [];
$userIdArr = [];
$parentIdArr = [];
foreach ($userList as $value) {
$userIdArr[] = $value['user_id'];
if ($value['parent_id'] > 0) {
$parentIdArr[] = $value['parent_id'];
}
}
// 用户实名认证信息
$realNameTranslation = UserVerifyLogModel::where('user_id', 'in', $userIdArr) ->column('user_id,name,code,front_img,back_img,status,country', 'user_id');
if ($realNameTranslation) {
// 获取s3图片
$frontImgIds = array_column($realNameTranslation, 'front_img');
$imgArr = AwsS3Model::where('id', 'in', $frontImgIds)->column('s3_url', 'id');
// 获取国家
$countryIds = array_column($realNameTranslation, 'country');
$countryArr = CountryModel::where('id', 'in', $countryIds)->column('name_cn', 'id');
foreach ($realNameTranslation as $k=>$v) {
if (!empty($v['front_img'])) {
$realNameTranslation[$k]['front_img'] = $imgArr[$v['front_img']] ?? '';
}
if (!empty($v['country'])) {
$realNameTranslation[$k]['country'] = $countryArr[$v['country']] ?? '';
}
// 查询父级
$parentNos = UserModel::where('user_id', 'in', $parentIdArr)->column('user_no', 'user_id');
// 查询用户余额
$userContractList = UserContractModel::where('user_id', 'in', $userIdArr)
->where('contract_id', 'USDT')
->column('usable_num,frozen_num', 'user_id');
// 查询用户余额
$userContractSecList = UserContractSecModel::where('user_id', 'in', $userIdArr)
->where('contract_id', 'USDT')
->column('usable_num,frozen_num', 'user_id');
$userStockList = UserStockModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'USD')
->column('usable_num,frozen_num', 'user_id');
$userDigitalList = UserDigitalModel::where('user_id', 'in', $userIdArr)
->where('digital_id', 'USDT')
->column('usable_num,frozen_num', 'user_id');
// 印尼资产
$userStockIdrList = UserStockIdnModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'IDR')
->column('usable_num,frozen_num', 'user_id');
// 泰股资产
$userStockThaList = UserStockThaModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'THB')
->column('usable_num,frozen_num', 'user_id');
// 马股资产
$userStockMysList = UserStockMysModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'MYR')
->column('usable_num,frozen_num', 'user_id');
// 印度股票资产
$userStockInList = UserStockInModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'INR')
->column('usable_num,frozen_num', 'user_id');
//新加坡股票资产
$userStockSGDList = UserStockSgdModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'SGD')
->column('usable_num,frozen_num', 'user_id');
//基金资产
$userStockFundList = UserStockFundModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'USD')
->column('usable_num,frozen_num', 'user_id');
//印度期权
$userStockOptionInrList = UserStockOptionInrModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'INR')
->column('usable_num,frozen_num', 'user_id');
//港股
$userStockHkList = UserStockHkdModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'HKD')
->column('usable_num,frozen_num', 'user_id');
//英股
$userStockUkList = UserStockGBXModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'GBX')
->column('usable_num,frozen_num', 'user_id');
//法股
$userStockFurList = UserStockFurModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'EUR')
->column('usable_num,frozen_num', 'user_id');
//德股
$userStockEurList = UserStockEurModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'EUR')
->column('usable_num,frozen_num', 'user_id');
//巴西
$userStockBrlList = UserStockBrlModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'BRL')
->column('usable_num,frozen_num', 'user_id');
$userStockJpList = UserStockJpModel::where('user_id', 'in', $userIdArr)
->where('stock_id', 'JPY')
->column('usable_num,frozen_num', 'user_id');
//外汇
$userForexList = UserForexModel::where('user_id', 'in', $userIdArr)
->where('contract_id', 'USD')
->column('usable_num,frozen_num', 'user_id');
// 用户关联的客服id
$customerRelationList = CustomerRelationalModel::where('user_id', 'in', $userIdArr)->column('customer_id', 'user_id');
// 获取每个客服的名称
$customerNames = [];
if ($customerRelationList) {
$customerIds = array_values($customerRelationList);
$customerNames = AdminModel::where('id', 'in', $customerIds)->column('nick_name', 'id');
}
// 查询用户充值、提款冻结状态
$accountFrozenList = AccountFrozenModel::where('user_id', 'in', $userIdArr)->column('frozen_recharge,frozen_withdraw', 'user_id');
// 用户实名认证信息
$realNameTranslation = UserVerifyLogModel::where('user_id', 'in', $userIdArr)->column('user_id,name,code,front_img,back_img,status,country', 'user_id');
if ($realNameTranslation) {
// 获取s3图片
$frontImgIds = array_column($realNameTranslation, 'front_img');
$imgArr = AwsS3Model::where('id', 'in', $frontImgIds)->column('s3_url', 'id');
// 获取国家
$countryIds = array_column($realNameTranslation, 'country');
$countryArr = CountryModel::where('id', 'in', $countryIds)->column('name_cn', 'id');
foreach ($realNameTranslation as $k=>$v) {
if (!empty($v['front_img'])) {
$realNameTranslation[$k]['front_img'] = $imgArr[$v['front_img']] ?? '';
}
if (!empty($v['country'])) {
$realNameTranslation[$k]['country'] = $countryArr[$v['country']] ?? '';
}
}
}
//最近登录IP、最近登录国家
$subQuery = UserLoginLog::field('user_id,MAX(login_date) AS last_login_date')
->where('user_id', 'in', $userIdArr)->group('user_id')->buildSql();
$lastLoginLog = UserLoginLog::alias('a')->field('a.id')
->join([$subQuery => 'w'], 'a.user_id=w.user_id AND a.login_date=w.last_login_date')->column(['id', 'ip', 'country', 'city'], 'a.user_id');
// 用户阶段信息
$userStageStateList = UserStageStateModel::where('user_id', 'in', $userIdArr)->column('first_stage,first_stage_state,second_stage,second_stage_state,third_stage,third_stage_state', 'user_id');
foreach ($userList as $item) {
$itmCustomerId = $customerRelationList[$item['user_id']] ?? 0; //当前用户关联的客服ID
$itmCustomerName = "";
if ($itmCustomerId) {
$itmCustomerName = $customerNames[$itmCustomerId] ?? ""; //当前客服的名称
}
$rows[] = [
'id' => $item['user_id'],
'user_no' => $item['user_no'],
'nickname' => $item['nick_name'],
'regTime' => $item['create_time'],
'parentNo' => $parentNos[$item['parent_id']] ?? '-',
'parent_id' => $item['parent_id'],
'invite_code' => $item['invite_code'],
'email' => $item['email'],
'mobile' => $item['country_code'] . '-' . $item['phone_number'],
'customer_remark' => $item['customer_remark'],
'label' => $item['label'],
'base_label' => $item['base_label'],
'customer_id' => $itmCustomerId,
'customer_name' => $itmCustomerName,
'real_name_translation' => $realNameTranslation[$item['user_id']] ?? [],
//余额
'digital' => $userDigitalList[$item['user_id']]['usable_num'] ?? '0',
'stock' => $userStockList[$item['user_id']]['usable_num'] ?? '0',
'contract' => $userContractList[$item['user_id']]['usable_num'] ?? '0',
'contract_sec' => $userContractSecList[$item['user_id']]['usable_num'] ?? '0',
'forex' => $userForexList[$item['user_id']]['usable_num'] ?? '0',//外汇
'stock_idn' => $userStockIdrList[$item['user_id']]['usable_num'] ?? '0', // 印尼股票余额
'stock_tha' => $userStockThaList[$item['user_id']]['usable_num'] ?? '0', // 泰股资产
'stock_mys' => $userStockMysList[$item['user_id']]['usable_num'] ?? '0', // 马股资产
'stock_in' => $userStockInList[$item['user_id']]['usable_num'] ?? '0', // 印度股资产
'stock_sgd' => $userStockSGDList[$item['user_id']]['usable_num'] ?? '0', // 新加坡股资产
'stock_fund' => $userStockFundList[$item['user_id']]['usable_num'] ?? '0', // 基金资产
'stock_option_in' => $userStockOptionInrList[$item['user_id']]['usable_num'] ?? '0', // 印度期权资产
'stock_hk' => $userStockHkList[$item['user_id']]['usable_num'] ?? '0', // 香港股资产
'stock_uk' => $userStockUkList[$item['user_id']]['usable_num'] ?? '0', // 英股资产
'stock_fur' => $userStockFurList[$item['user_id']]['usable_num'] ?? '0', // 法股资产
'stock_eur' => $userStockEurList[$item['user_id']]['usable_num'] ?? '0', // 德股资产
'stock_brl' => $userStockBrlList[$item['user_id']]['usable_num'] ?? '0', // 巴西股资产
'stock_jp' => $userStockJpList[$item['user_id']]['usable_num'] ?? '0', // 巴西股资产
//冻结资金
'digital_frozen' => $userDigitalList[$item['user_id']]['frozen_num'] ?? '0',
'stock_frozen' => $userStockList[$item['user_id']]['frozen_num'] ?? '0',
'contract_frozen' => $userContractList[$item['user_id']]['frozen_num'] ?? '0',
'forex_frozen' => $userForexList[$item['user_id']]['frozen_num'] ?? '0',
'contract_sec_frozen' => $userContractSecList[$item['user_id']]['frozen_num'] ?? '0',
'stock_idn_frozen' => $userStockIdrList[$item['user_id']]['frozen_num'] ?? '0', // 印尼股票余额
'stock_tha_frozen' => $userStockThaList[$item['user_id']]['frozen_num'] ?? '0', // 泰股资产
'stock_mys_frozen' => $userStockMysList[$item['user_id']]['frozen_num'] ?? '0', // 马股资产
'stock_in_frozen' => $userStockInList[$item['user_id']]['frozen_num'] ?? '0', // 印度股资产
'stock_sgd_frozen' => $userStockSGDList[$item['user_id']]['frozen_num'] ?? '0', // 新加坡股资产
'stock_fund_frozen' => $userStockFundList[$item['user_id']]['frozen_num'] ?? '0', // 基金资产
'stock_option_in_frozen' => $userStockOptionInrList[$item['user_id']]['frozen_num'] ?? '0', // 印度期权资产
'stock_hk_frozen' => $userStockHkList[$item['user_id']]['frozen_num'] ?? '0', // 香港股资产
'stock_uk_frozen' => $userStockUkList[$item['user_id']]['frozen_num'] ?? '0', // 英港股资产
'stock_fur_frozen' => $userStockFurList[$item['user_id']]['frozen_num'] ?? '0', // 法股资产
'stock_eur_frozen' => $userStockEurList[$item['user_id']]['frozen_num'] ?? '0', // 德股资产
'stock_brl_frozen' => $userStockBrlList[$item['user_id']]['frozen_num'] ?? '0', // 德股资产
'stock_jp_frozen' => $userStockJpList[$item['user_id']]['frozen_num'] ?? '0', // 德股资产
//最近登录IP、最近登录国家
$subQuery = UserLoginLog::field('user_id,MAX(login_date) AS last_login_date')
->where('user_id', 'in', $userIdArr)->group('user_id')->buildSql();
$lastLoginLog = UserLoginLog::alias('a')->field('a.id')
->join([$subQuery => 'w'], 'a.user_id=w.user_id AND a.login_date=w.last_login_date')->column(['id', 'ip', 'country', 'city'], 'a.user_id');
'rechargeAmount' => 0,
'withdrawalAmount' => 0,
'regIp' => $item['reg_ip'],
'status' => $item['status'],
'statusName' => UserModel::$statusMap[$item['status']] ?? '-',
'loginTime' => $item['last_login_time'],
'is_real' => $item['is_real'],
'real_status' => $item['real_status'],
'lever_status' => $item['lever_status'],
'is_test_user' => $item['is_test_user'],
'is_test_user_text' => UserModel::$isTestUserMap[$item['is_test_user']] ?? '-',
'last_ip' => $lastLoginLog[$item['user_id']]['ip'] ?? '-',
'last_country' => empty($lastLoginLog[$item['user_id']]['country']) ? '-' : json_decode($lastLoginLog[$item['user_id']]['country'], true)['en'],
'agent_id' => $item['agent_id'],
'agent_name' => $item['agent_id'] > 0 ? $agentNameArr[$item['agent_id']] ?? '-' : '-',
];
foreach ($userList as $item) {
$itmCustomerId = $customerRelationList[$item['user_id']] ?? 0; //当前用户关联的客服ID
$itmCustomerName = "";
if ($itmCustomerId) {
$itmCustomerName = $customerNames[$itmCustomerId] ?? ""; //当前客服的名称
}
$rows[] = [
'id' => $item['user_id'],
'user_no' => $item['user_no'],
'nickname' => $item['nick_name'],
'regTime' => $item['create_time'],
'parentNo' => $parentNos[$item['parent_id']] ?? '-',
'parent_id' => $item['parent_id'],
'invite_code' => $item['invite_code'],
'email' => $item['email'],
'mobile' => $item['country_code'] . '-' . $item['phone_number'],
'customer_remark' => $item['customer_remark'],
'label' => $item['label'],
'base_label' => $item['base_label'],
'customer_id' => $itmCustomerId,
'customer_name' => $itmCustomerName,
'real_name_translation' => $realNameTranslation[$item['user_id']] ?? [],
'frozen_recharge' => $accountFrozenList[$item['user_id']]['frozen_recharge'] ?? 0,
'frozen_withdraw' => $accountFrozenList[$item['user_id']]['frozen_withdraw'] ?? 0,
'first_stage' => $userStageStateList[$item['user_id']]['first_stage'] ?? '',
'first_stage_state' => $userStageStateList[$item['user_id']]['first_stage_state'] ?? 0,
'second_stage' => $userStageStateList[$item['user_id']]['second_stage'] ?? '',
'second_stage_state' => $userStageStateList[$item['user_id']]['second_stage_state'] ?? 0,
'third_stage' => $userStageStateList[$item['user_id']]['third_stage'] ?? '',
'third_stage_state' => $userStageStateList[$item['user_id']]['third_stage_state'] ?? 0,
//余额
'digital' => $userDigitalList[$item['user_id']]['usable_num'] ?? '0',
'stock' => $userStockList[$item['user_id']]['usable_num'] ?? '0',
'contract' => $userContractList[$item['user_id']]['usable_num'] ?? '0',
'contract_sec' => $userContractSecList[$item['user_id']]['usable_num'] ?? '0',
'forex' => $userForexList[$item['user_id']]['usable_num'] ?? '0',//外汇
'stock_idn' => $userStockIdrList[$item['user_id']]['usable_num'] ?? '0', // 印尼股票余额
'stock_tha' => $userStockThaList[$item['user_id']]['usable_num'] ?? '0', // 泰股资产
'stock_mys' => $userStockMysList[$item['user_id']]['usable_num'] ?? '0', // 马股资产
'stock_in' => $userStockInList[$item['user_id']]['usable_num'] ?? '0', // 印度股资产
'stock_sgd' => $userStockSGDList[$item['user_id']]['usable_num'] ?? '0', // 新加坡股资产
'stock_fund' => $userStockFundList[$item['user_id']]['usable_num'] ?? '0', // 基金资产
'stock_option_in' => $userStockOptionInrList[$item['user_id']]['usable_num'] ?? '0', // 印度期权资产
'stock_hk' => $userStockHkList[$item['user_id']]['usable_num'] ?? '0', // 香港股资产
'stock_uk' => $userStockUkList[$item['user_id']]['usable_num'] ?? '0', // 英股资产
'stock_fur' => $userStockFurList[$item['user_id']]['usable_num'] ?? '0', // 法股资产
'stock_eur' => $userStockEurList[$item['user_id']]['usable_num'] ?? '0', // 德股资产
'stock_brl' => $userStockBrlList[$item['user_id']]['usable_num'] ?? '0', // 巴西股资产
'stock_jp' => $userStockJpList[$item['user_id']]['usable_num'] ?? '0', // 巴西股资产
//冻结资金
'digital_frozen' => $userDigitalList[$item['user_id']]['frozen_num'] ?? '0',
'stock_frozen' => $userStockList[$item['user_id']]['frozen_num'] ?? '0',
'contract_frozen' => $userContractList[$item['user_id']]['frozen_num'] ?? '0',
'forex_frozen' => $userForexList[$item['user_id']]['frozen_num'] ?? '0',
'contract_sec_frozen' => $userContractSecList[$item['user_id']]['frozen_num'] ?? '0',
'stock_idn_frozen' => $userStockIdrList[$item['user_id']]['frozen_num'] ?? '0', // 印尼股票余额
'stock_tha_frozen' => $userStockThaList[$item['user_id']]['frozen_num'] ?? '0', // 泰股资产
'stock_mys_frozen' => $userStockMysList[$item['user_id']]['frozen_num'] ?? '0', // 马股资产
'stock_in_frozen' => $userStockInList[$item['user_id']]['frozen_num'] ?? '0', // 印度股资产
'stock_sgd_frozen' => $userStockSGDList[$item['user_id']]['frozen_num'] ?? '0', // 新加坡股资产
'stock_fund_frozen' => $userStockFundList[$item['user_id']]['frozen_num'] ?? '0', // 基金资产
'stock_option_in_frozen' => $userStockOptionInrList[$item['user_id']]['frozen_num'] ?? '0', // 印度期权资产
'stock_hk_frozen' => $userStockHkList[$item['user_id']]['frozen_num'] ?? '0', // 香港股资产
'stock_uk_frozen' => $userStockUkList[$item['user_id']]['frozen_num'] ?? '0', // 英港股资产
'stock_fur_frozen' => $userStockFurList[$item['user_id']]['frozen_num'] ?? '0', // 法股资产
'stock_eur_frozen' => $userStockEurList[$item['user_id']]['frozen_num'] ?? '0', // 德股资产
'stock_brl_frozen' => $userStockBrlList[$item['user_id']]['frozen_num'] ?? '0', // 德股资产
'stock_jp_frozen' => $userStockJpList[$item['user_id']]['frozen_num'] ?? '0', // 德股资产
'rechargeAmount' => 0,
'withdrawalAmount' => 0,
'regIp' => $item['reg_ip'],
'status' => $item['status'],
'statusName' => UserModel::$statusMap[$item['status']] ?? '-',
'loginTime' => $item['last_login_time'],
'is_real' => $item['is_real'],
'real_status' => $item['real_status'],
'lever_status' => $item['lever_status'],
'is_test_user' => $item['is_test_user'],
'is_test_user_text' => UserModel::$isTestUserMap[$item['is_test_user']] ?? '-',
'last_ip' => $lastLoginLog[$item['user_id']]['ip'] ?? '-',
'last_country' => empty($lastLoginLog[$item['user_id']]['country']) ? '-' : json_decode($lastLoginLog[$item['user_id']]['country'], true)['en'],
'agent_id' => $item['agent_id'],
'agent_name' => $item['agent_id'] > 0 ? $agentNameArr[$item['agent_id']] ?? '-' : '-',
];
}
return $this->toData('0', 'SUCCESS', ['total' => $total, 'list' => $rows, 'extent' => ['market_type_list' => StockMarketModel::STOCK_MARKET_TYPE, 'is_agent' => $IsAgent, 'agent_list' => $agentNameArr, 'market_rate' => $marketRate, 'market_tape_list' => $tapeList]]);
@ -1166,6 +1183,51 @@ class UserService extends AdminBaseService
return $this->toData('1', '系统异常 请稍后重试', [$exception->getMessage(), $exception->getTrace()]);
}
}
// 编辑用户阶段信息
public function editUserStage($param)
{
try {
if (empty($param['user_id'])) {
return $this->toData('400', '缺少参数');
}
// 检测用户数据
$user = UserModel::where('user_id', $param['user_id'])->findOrEmpty()->toArray();
if (empty($user)) {
return $this->toData('1', '用户不存在');
}
// 检测用户阶段数据
$userStageState = UserStageStateModel::where(['user_id'=>$user['user_id']])->find();
if (empty($userStageState)) {
UserStageStateModel::create([
'user_id' => $user['user_id'],
'first_stage' => $param['first_stage'] ?? '',
'first_stage_state' => $param['first_stage_state'] ?? 0,
'second_stage' => $param['second_stage'] ?? '',
'second_stage_state' => $param['second_stage_state'] ?? 0,
'third_stage' => $param['third_stage'] ?? '',
'third_stage_state' => $param['third_stage_state'] ?? 0,
]);
} else {
if (isset($param['first_stage'])) {
$userStageState->first_stage = $param['first_stage'];
$userStageState->first_stage_state = $param['first_stage_state'] ?? 0;
}
if (isset($param['second_stage'])) {
$userStageState->second_stage = $param['second_stage'];
$userStageState->second_stage_state = $param['second_stage_state'] ?? 0;
}
if (isset($param['third_stage'])) {
$userStageState->third_stage = $param['third_stage'];
$userStageState->third_stage_state = $param['third_stage_state'] ?? 0;
}
$userStageState->save();
}
return $this->toData('0', 'SUCCESS');
} catch (\Exception $exception) {
return $this->toData('500', '系统异常 请稍后重试', [$exception->getMessage(), $exception->getTrace()]);
}
}
}

2
app/admin/validate/RechargeValidate.php

@ -37,7 +37,7 @@ class RechargeValidate extends AdminBaseValidate
protected $scene = [
// 现货
'index' => ['page','limit','order_id', 'user_no', 'start_time', 'end_time','is_online'],
'index' => ['page','limit','order_id', 'user_no', 'start_time', 'end_time'],
'info' => ['id'],
'check' => ['id','check_status'],
];

3
app/admin/validate/UserValidate.php

@ -18,6 +18,8 @@ class UserValidate extends AdminBaseValidate
'password'=>'require',
'id' =>'require|integer',
'is_test_user' => 'require|in:1,2',
'frozen_recharge' => 'in:1,0',
'frozen_withdraw' => 'in:1,0',
];
protected $message = [
@ -51,5 +53,6 @@ class UserValidate extends AdminBaseValidate
'relation' => ['page','limit','user_no'],
'add_phone' =>['nation','phone','password'],
'add_email' =>['email','password'],
'frozen_state' => ['id','frozen_recharge','frozen_withdraw'],
];
}

18
app/model/UserStageStateModel.php

@ -0,0 +1,18 @@
<?php
declare (strict_types = 1);
namespace app\model;
use think\Model;
/**
* @mixin \think\Model
*/
class UserStageStateModel extends Model
{
const FIRST_STAGE = 'first_stage';
const SECOND_STAGE = 'second_stage';
const THIRD_STAGE = 'third_stage';
protected $name = 'user_stage_state';
}
Loading…
Cancel
Save