Browse Source

role requirements

master
chuan 4 months ago
parent
commit
325191776f
  1. 16
      app/admin/controller/User.php
  2. 7
      app/admin/route/app.php
  3. 3
      app/admin/service/AdminService.php
  4. 110
      app/admin/service/UserService.php
  5. 9
      app/home/service/WalletService.php
  6. 8
      app/model/AccountFrozenModel.php

16
app/admin/controller/User.php

@ -139,4 +139,20 @@ class User extends AdminBaseController
$result = $service->editUserLabel($this->request->param()); $result = $service->editUserLabel($this->request->param());
return json($result); 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);
}
} }

7
app/admin/route/app.php

@ -14,7 +14,7 @@ $header = [
//Route::get('/test', 'Test/index'); //Route::get('/test', 'Test/index');
Route::post('/test', 'Test/index'); Route::post('/test', 'Test/index');
Route::post('/test_upload', 'Upload/uploadVideo'); Route::post('/test_upload', 'Upload/uploadVideo');
Route::post('test_api', 'Admin/getAdminOperationLog'); Route::post('test_api', 'User/editUserBaseLabel');
Route::group('/', function () { Route::group('/', function () {
// 上传图片 // 上传图片
Route::post('/upload', 'Upload/upload'); Route::post('/upload', 'Upload/upload');
@ -189,12 +189,15 @@ Route::group('/', function () {
Route::post('/user/change', 'User/change')->middleware('admin_log'); Route::post('/user/change', 'User/change')->middleware('admin_log');
Route::post('/user/relation', 'User/relation'); Route::post('/user/relation', 'User/relation');
Route::post('/user/edit_customer_remark', 'User/editCustomerRemark')->middleware('admin_log'); //编辑用户字段 customer_remark 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_phone', 'User/reg_phone')->middleware('admin_log');
Route::post('/user/reg_email', 'User/reg_email')->middleware('admin_log'); Route::post('/user/reg_email', 'User/reg_email')->middleware('admin_log');
Route::post('/user/bank', 'User/bankDetail'); Route::post('/user/bank', 'User/bankDetail');
Route::post('/user/edit_bank', 'User/editBank')->middleware('admin_log'); Route::post('/user/edit_bank', 'User/editBank')->middleware('admin_log');
Route::post('/user/edit_password', 'User/editPassword')->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', 'setting.GiveStock/add')->middleware('admin_log');
Route::post('/user/give_stock_list', 'setting.GiveStock/index'); Route::post('/user/give_stock_list', 'setting.GiveStock/index');

3
app/admin/service/AdminService.php

@ -533,6 +533,9 @@ class AdminService extends AdminBaseService
if (!empty($param['module'])) { if (!empty($param['module'])) {
$where['module'] = $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 = UserAccessLogModel::where($where)->order('id', 'desc')->paginate([
'list_rows' => $param['limit'], 'list_rows' => $param['limit'],
'page' => $param['page'], 'page' => $param['page'],

110
app/admin/service/UserService.php

@ -4,6 +4,7 @@ namespace app\admin\service;
use app\admin\validate\UserValidate; use app\admin\validate\UserValidate;
use app\home\service\BaseHomeService; use app\home\service\BaseHomeService;
use app\model\AccountFrozenModel;
use app\model\AdminModel; use app\model\AdminModel;
use app\model\AwsS3Model; use app\model\AwsS3Model;
use app\model\CountryModel; use app\model\CountryModel;
@ -49,6 +50,11 @@ class UserService extends AdminBaseService
validate(UserValidate::class)->scene('index')->check($param); validate(UserValidate::class)->scene('index')->check($param);
$where = []; $where = [];
// base_label过滤
if (!empty($param['base_label'])) {
$where['base_label'] = trim($param['base_label']);
}
// 邮箱搜索 // 邮箱搜索
if (!empty($param['email']) && trim($param['email'])) { if (!empty($param['email']) && trim($param['email'])) {
$where['email'] = $param['email']; $where['email'] = $param['email'];
@ -218,6 +224,25 @@ class UserService extends AdminBaseService
$customerNames = AdminModel::where('id', 'in', $customerIds)->column('nick_name', 'id'); $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、最近登录国家 //最近登录IP、最近登录国家
$subQuery = UserLoginLog::field('user_id,MAX(login_date) AS last_login_date') $subQuery = UserLoginLog::field('user_id,MAX(login_date) AS last_login_date')
->where('user_id', 'in', $userIdArr)->group('user_id')->buildSql(); ->where('user_id', 'in', $userIdArr)->group('user_id')->buildSql();
@ -243,8 +268,10 @@ class UserService extends AdminBaseService
'mobile' => $item['country_code'] . '-' . $item['phone_number'], 'mobile' => $item['country_code'] . '-' . $item['phone_number'],
'customer_remark' => $item['customer_remark'], 'customer_remark' => $item['customer_remark'],
'label' => $item['label'], 'label' => $item['label'],
'base_label' => $item['base_label'],
'customer_id' => $itmCustomerId, 'customer_id' => $itmCustomerId,
'customer_name' => $itmCustomerName, 'customer_name' => $itmCustomerName,
'real_name_translation' => $realNameTranslation[$item['user_id']] ?? [],
//余额 //余额
'digital' => $userDigitalList[$item['user_id']]['usable_num'] ?? '0', 'digital' => $userDigitalList[$item['user_id']]['usable_num'] ?? '0',
@ -1024,7 +1051,7 @@ class UserService extends AdminBaseService
Cache::store('redis')->set($key, $param['leverage_num']); Cache::store('redis')->set($key, $param['leverage_num']);
return $this->toData('0', 'SUCCESS', []); return $this->toData('0', 'SUCCESS', []);
} catch (\Exception $exception) { } 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) public function editCustomerRemark($param)
{ {
try { try {
if (empty($param['user_id']) || !is_numeric($param['user_id'])) { if (empty($param['user_id']) || !is_numeric($param['user_id']) || empty($param['remark'])) {
return $this->toData('1', 'Missing parameter user_id'); return $this->toData('400', 'Missing parameter user_id');
}
if (empty($param['remark'])) {
return $this->toData('1', 'Missing parameter remark');
} }
$user = UserModel::where(['user_id'=>$param['user_id']])->find(); $user = UserModel::where(['user_id'=>$param['user_id']])->find();
if (empty($user)) { if (empty($user)) {
return $this->toData('1', '操作的用户数据错误'); return $this->toData('500', '操作的用户数据错误');
} }
$user->customer_remark = $param['remark']; $user->customer_remark = $param['remark'];
$user->save(); $user->save();
return $this->toData('0', 'SUCCESS'); return $this->toData('0', 'SUCCESS');
} catch (\Exception $exception) { } 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) public function editUserLabel($param)
{ {
try { try {
if (empty($param['user_id']) || !is_numeric($param['user_id'])) { if (empty($param['user_id']) || !is_numeric($param['user_id']) || empty($param['label'])) {
return $this->toData('1', 'Missing parameter user_id'); return $this->toData('400', 'Missing parameter user_id');
}
if (empty($param['label'])) {
return $this->toData('1', 'Missing parameter label');
} }
$user = UserModel::where(['user_id'=>$param['user_id']])->find(); $user = UserModel::where(['user_id'=>$param['user_id']])->find();
if (empty($user)) { if (empty($user)) {
return $this->toData('1', '操作的用户数据错误'); return $this->toData('500', '操作的用户数据错误');
} }
$user->label = $param['label']; $user->label = $param['label'];
$user->save(); $user->save();
@ -1083,7 +1104,66 @@ class UserService extends AdminBaseService
} }
return $this->toData('0', 'SUCCESS'); return $this->toData('0', 'SUCCESS');
} catch (\Exception $exception) { } 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()]);
} }
} }
} }

9
app/home/service/WalletService.php

@ -5,6 +5,7 @@ namespace app\home\service;
use app\admin\service\AdminBaseService; use app\admin\service\AdminBaseService;
use app\home\validate\BankValidate; use app\home\validate\BankValidate;
use app\home\validate\WalletValidate; use app\home\validate\WalletValidate;
use app\model\AccountFrozenModel;
use app\model\DrawalSettingModel; use app\model\DrawalSettingModel;
use app\model\FeeSettingModel; use app\model\FeeSettingModel;
use app\model\RechargeApplyModel; use app\model\RechargeApplyModel;
@ -978,9 +979,6 @@ class WalletService extends BaseHomeService
$salt = env('ENCRYPT.SALT'); $salt = env('ENCRYPT.SALT');
$name = env('WALLET.NAME'); $name = env('WALLET.NAME');
$user_info = UserModel::getFieldsByUserId('trade_password,is_real,status', $data['user_id']); $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'])) { if (empty($user_info['trade_password'])) {
return $this->toData(3, "Please set a transaction password first."); return $this->toData(3, "Please set a transaction password first.");
} }
@ -991,6 +989,11 @@ class WalletService extends BaseHomeService
if (!$check_pwd) { if (!$check_pwd) {
return $this->toData(2, "Transaction password is incorrect."); 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']); $flag = $this->checkOnlyOneNotEmpty($data['bank_id'], $data['address_id'], $data['wallet_address']);
if ($flag) { if ($flag) {
//手续费 //手续费

8
app/model/AccountFrozenModel.php

@ -0,0 +1,8 @@
<?php
namespace app\model;
class AccountFrozenModel extends BaseModel
{
protected $name = 'account_frozen';
}
Loading…
Cancel
Save