From 325191776f7db5ba6595c3f3211b3e7500094543 Mon Sep 17 00:00:00 2001 From: chuan <2154243450@qq.com> Date: Thu, 20 Feb 2025 16:22:37 +0800 Subject: [PATCH] role requirements --- app/admin/controller/User.php | 16 +++++ app/admin/route/app.php | 7 +- app/admin/service/AdminService.php | 3 + app/admin/service/UserService.php | 110 +++++++++++++++++++++++++---- app/home/service/WalletService.php | 9 ++- app/model/AccountFrozenModel.php | 8 +++ 6 files changed, 133 insertions(+), 20 deletions(-) create mode 100644 app/model/AccountFrozenModel.php diff --git a/app/admin/controller/User.php b/app/admin/controller/User.php index 827beb82..0f22c4aa 100644 --- a/app/admin/controller/User.php +++ b/app/admin/controller/User.php @@ -139,4 +139,20 @@ class User extends AdminBaseController $result = $service->editUserLabel($this->request->param()); return json($result); } + + // 编辑用户的base_label字段 + public function editUserBaseLabel() + { + $service = new UserService(); + $result = $service->editUserBaseLabel($this->request->param()); + return json($result); + } + + // 用户充值、提款封禁与解封 + public function frozen() + { + $service = new UserService(); + $result = $service->frozen($this->request->param(),$this->getAdminId()); + return json($result); + } } diff --git a/app/admin/route/app.php b/app/admin/route/app.php index e44aab14..7c3595a0 100644 --- a/app/admin/route/app.php +++ b/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', 'Admin/getAdminOperationLog'); +Route::post('test_api', 'User/editUserBaseLabel'); Route::group('/', function () { // 上传图片 Route::post('/upload', 'Upload/upload'); @@ -189,12 +189,15 @@ Route::group('/', function () { Route::post('/user/change', 'User/change')->middleware('admin_log'); Route::post('/user/relation', 'User/relation'); Route::post('/user/edit_customer_remark', 'User/editCustomerRemark')->middleware('admin_log'); //编辑用户字段 customer_remark - Route::post('/user/edit_user_label', 'User/editUserLabel')->middleware('admin_log'); //编辑用户标签字段 + Route::post('user/edit_user_label', 'User/editUserLabel')->middleware('admin_log'); //编辑用户标签字段 + Route::post('user/edit_user_base_label', 'User/editUserBaseLabel')->middleware('admin_log'); //编辑用户的base_label字段 Route::post('/user/reg_phone', 'User/reg_phone')->middleware('admin_log'); 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/give_stock', 'setting.GiveStock/add')->middleware('admin_log'); Route::post('/user/give_stock_list', 'setting.GiveStock/index'); diff --git a/app/admin/service/AdminService.php b/app/admin/service/AdminService.php index 8163418e..078a184b 100644 --- a/app/admin/service/AdminService.php +++ b/app/admin/service/AdminService.php @@ -533,6 +533,9 @@ class AdminService extends AdminBaseService if (!empty($param['module'])) { $where['module'] = $param['module']; } + if (!empty($param['user_id'])) { + $where['user_id'] = $param['user_id']; + } $list = UserAccessLogModel::where($where)->order('id', 'desc')->paginate([ 'list_rows' => $param['limit'], 'page' => $param['page'], diff --git a/app/admin/service/UserService.php b/app/admin/service/UserService.php index bbfc356a..59091a7e 100644 --- a/app/admin/service/UserService.php +++ b/app/admin/service/UserService.php @@ -4,6 +4,7 @@ namespace app\admin\service; use app\admin\validate\UserValidate; use app\home\service\BaseHomeService; +use app\model\AccountFrozenModel; use app\model\AdminModel; use app\model\AwsS3Model; use app\model\CountryModel; @@ -49,6 +50,11 @@ class UserService extends AdminBaseService validate(UserValidate::class)->scene('index')->check($param); $where = []; + // base_label过滤 + if (!empty($param['base_label'])) { + $where['base_label'] = trim($param['base_label']); + } + // 邮箱搜索 if (!empty($param['email']) && trim($param['email'])) { $where['email'] = $param['email']; @@ -218,6 +224,25 @@ class UserService extends AdminBaseService $customerNames = AdminModel::where('id', 'in', $customerIds)->column('nick_name', '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(); @@ -243,8 +268,10 @@ class UserService extends AdminBaseService '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', @@ -1024,7 +1051,7 @@ class UserService extends AdminBaseService Cache::store('redis')->set($key, $param['leverage_num']); return $this->toData('0', 'SUCCESS', []); } catch (\Exception $exception) { - return $this->toData('1', '系统异常 请稍后重试', [$exception->getMessage(), $exception->getTrace()]); + return $this->toData('500', '系统异常 请稍后重试', [$exception->getMessage(), $exception->getTrace()]); } } @@ -1032,21 +1059,18 @@ class UserService extends AdminBaseService public function editCustomerRemark($param) { try { - if (empty($param['user_id']) || !is_numeric($param['user_id'])) { - return $this->toData('1', 'Missing parameter user_id'); - } - if (empty($param['remark'])) { - return $this->toData('1', 'Missing parameter remark'); + if (empty($param['user_id']) || !is_numeric($param['user_id']) || empty($param['remark'])) { + return $this->toData('400', 'Missing parameter user_id'); } $user = UserModel::where(['user_id'=>$param['user_id']])->find(); if (empty($user)) { - return $this->toData('1', '操作的用户数据错误'); + return $this->toData('500', '操作的用户数据错误'); } $user->customer_remark = $param['remark']; $user->save(); return $this->toData('0', 'SUCCESS'); } catch (\Exception $exception) { - return $this->toData('1', 'The system is busy.', [$exception->getMessage(), $exception->getTrace()]); + return $this->toData('500', 'The system is busy.', [$exception->getMessage(), $exception->getTrace()]); } } @@ -1054,15 +1078,12 @@ class UserService extends AdminBaseService public function editUserLabel($param) { try { - if (empty($param['user_id']) || !is_numeric($param['user_id'])) { - return $this->toData('1', 'Missing parameter user_id'); - } - if (empty($param['label'])) { - return $this->toData('1', 'Missing parameter label'); + if (empty($param['user_id']) || !is_numeric($param['user_id']) || empty($param['label'])) { + return $this->toData('400', 'Missing parameter user_id'); } $user = UserModel::where(['user_id'=>$param['user_id']])->find(); if (empty($user)) { - return $this->toData('1', '操作的用户数据错误'); + return $this->toData('500', '操作的用户数据错误'); } $user->label = $param['label']; $user->save(); @@ -1083,7 +1104,66 @@ class UserService extends AdminBaseService } return $this->toData('0', 'SUCCESS'); } catch (\Exception $exception) { - return $this->toData('1', 'The system is busy.', [$exception->getMessage(), $exception->getTrace()]); + return $this->toData('500', 'The system is busy.', [$exception->getMessage(), $exception->getTrace()]); + } + } + + public function editUserBaseLabel($param) + { + try { + if (empty($param['user_id']) || !is_numeric($param['user_id']) || empty($param['base_label'])) { + return $this->toData('400', 'Missing parameter user_id'); + } + $user = UserModel::where(['user_id'=>$param['user_id']])->find(); + if (empty($user)) { + return $this->toData('500', '操作的用户数据错误'); + } + $user->base_label = $param['base_label']; + $user->save(); + return $this->toData('0', 'SUCCESS'); + } catch (\Exception $exception) { + return $this->toData('500', 'The system is busy.', [$exception->getMessage(), $exception->getTrace()]); + } + } + + // 用户充值、提款封禁与解封 + public function frozen($param, $adminId) + { + try { + // 参数校验 + validate(UserValidate::class)->scene('frozen_state')->check($param); + $userId = $param['id']; + $user = UserModel::where('user_id', $userId)->find(); + if (empty($user)) { + return $this->toData('1', '用户不存在'); + } + $bool = $this->checkUserIdInAgent($adminId, $userId); + if (!$bool) { + return $this->toData('1', '无权操作'); + } + // 查询冻结记录表 + $accountFrozen = AccountFrozenModel::where('user_id', $userId)->find(); + if (empty($accountFrozen)) { + if (isset($param['frozen_recharge'])) { + AccountFrozenModel::create(['user_id'=>$userId, 'frozen_recharge' => $param['frozen_recharge']]); + } + if (isset($param['frozen_withdraw'])) { + AccountFrozenModel::create(['user_id'=>$userId, 'frozen_withdraw' => $param['frozen_withdraw']]); + } + } else { + if (isset($param['frozen_recharge'])) { + AccountFrozenModel::update(['frozen_recharge' => $param['frozen_recharge']], ['user_id' => $userId]); + } + if (isset($param['frozen_withdraw'])) { + AccountFrozenModel::update(['frozen_withdraw' => $param['frozen_withdraw']], ['user_id' => $userId]); + } + } + return $this->toData('0', 'SUCCESS'); + } catch (ValidateException $validateException) { + $message = $validateException->getError(); + return $this->toData('1', $message); + } catch (\Exception $exception) { + return $this->toData('1', '系统异常 请稍后重试', [$exception->getMessage(), $exception->getTrace()]); } } } diff --git a/app/home/service/WalletService.php b/app/home/service/WalletService.php index af9bbef0..25927955 100644 --- a/app/home/service/WalletService.php +++ b/app/home/service/WalletService.php @@ -5,6 +5,7 @@ namespace app\home\service; use app\admin\service\AdminBaseService; use app\home\validate\BankValidate; use app\home\validate\WalletValidate; +use app\model\AccountFrozenModel; use app\model\DrawalSettingModel; use app\model\FeeSettingModel; use app\model\RechargeApplyModel; @@ -978,9 +979,6 @@ class WalletService extends BaseHomeService $salt = env('ENCRYPT.SALT'); $name = env('WALLET.NAME'); $user_info = UserModel::getFieldsByUserId('trade_password,is_real,status', $data['user_id']); - if (in_array($user_info['status'], [UserModel::STATUS_FORBID, UserModel::STATUS_BLACK])) { - return $this->toData(3, "禁用或拉黑账户不能提款"); - } if (empty($user_info['trade_password'])) { return $this->toData(3, "Please set a transaction password first."); } @@ -991,6 +989,11 @@ class WalletService extends BaseHomeService if (!$check_pwd) { return $this->toData(2, "Transaction password is incorrect."); } + // 检测是否被封禁提款 + $accountFrozen = AccountFrozenModel::where('user_id', $data['user_id'])->findOrEmpty()->toArray(); + if (isset($accountFrozen['frozen_withdraw']) && $accountFrozen['frozen_withdraw'] == 1) { + return $this->toData(2, "Withdrawals are frozen"); + } $flag = $this->checkOnlyOneNotEmpty($data['bank_id'], $data['address_id'], $data['wallet_address']); if ($flag) { //手续费 diff --git a/app/model/AccountFrozenModel.php b/app/model/AccountFrozenModel.php new file mode 100644 index 00000000..c7b6eb5f --- /dev/null +++ b/app/model/AccountFrozenModel.php @@ -0,0 +1,8 @@ +