diff --git a/app/admin/controller/User.php b/app/admin/controller/User.php index b1b4080..07c7c81 100644 --- a/app/admin/controller/User.php +++ b/app/admin/controller/User.php @@ -35,6 +35,14 @@ class User extends AdminBaseController return json($result); } + // 账号冻结与解冻 + public function frozen() + { + $service = new UserService(); + $result = $service->frozen($this->request->param(),$this->getAdminId()); + return json($result); + } + // 用户资金管理 public function change() { diff --git a/app/admin/route/app.php b/app/admin/route/app.php index 41be364..f29b3a2 100644 --- a/app/admin/route/app.php +++ b/app/admin/route/app.php @@ -169,6 +169,7 @@ Route::group('/', function () { Route::post('/user/index', 'User/index'); Route::post('/user/real_list', 'User/RealList'); Route::post('/user/status', 'User/status'); + Route::post('/user/frozen', 'User/frozen'); Route::post('/user/change', 'User/change')->middleware('admin_log'); Route::post('/user/relation', 'User/relation'); Route::post('/user/reg_phone', 'User/reg_phone')->middleware('admin_log'); diff --git a/app/admin/service/UserService.php b/app/admin/service/UserService.php index 67109b2..7f55763 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\CountryModel; use app\model\FileModel; @@ -212,7 +213,12 @@ class UserService extends AdminBaseService ->column('usable_num,frozen_num', 'user_id'); } - + // 查询用户冻结状态 + $accountFrozenList = []; + if ($userIdArr) { + $accountFrozenList = AccountFrozenModel::where('user_id', 'in', $userIdArr) + ->column('frozen_state', 'user_id'); + } //最近登录IP、最近登录国家 @@ -222,10 +228,12 @@ class UserService extends AdminBaseService ->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'); foreach ($userList as $item) { + $frozenState = isset($accountFrozenList[$item['user_id']]) ? $accountFrozenList[$item['user_id']] : 0; $key = 'LEVERAGE:' . $item['user_id']; $leverage_num=empty(Cache::store('redis')->get($key))? 1: Cache::store('redis')->get($key); $userRow= [ 'id' => $item['user_id'], + 'frozen_state' => $frozenState, 'user_no' => $item['user_no'], 'nickname' => $item['nick_name'], 'regTime' => $item['create_time'], @@ -485,6 +493,38 @@ class UserService extends AdminBaseService } } + // 账号冻结与解冻 + public function frozen($param, $adminId) + { + try { + // 参数校验 + validate(UserValidate::class)->scene('frozen_state')->check($param); + $userId = $param['id']; + $frozenState = $param['frozen_state']; //1-冻结;0-解冻 + $frozenReason = $param['frozen_reason']?? ""; //冻结原因 + $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)) { + AccountFrozenModel::create(['user_id'=>$userId, 'frozen_state' => $frozenState, 'frozen_reason'=>$frozenReason]); + } else { + AccountFrozenModel::update(['frozen_state' => $frozenState, 'frozen_reason' => $frozenReason], ['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()]); + } + } // 资产修改 public function change($param, $adminId) diff --git a/app/admin/validate/UserValidate.php b/app/admin/validate/UserValidate.php index 5215039..12e3c0f 100644 --- a/app/admin/validate/UserValidate.php +++ b/app/admin/validate/UserValidate.php @@ -14,6 +14,7 @@ class UserValidate extends AdminBaseValidate 'user_no' => 'alphaNum', 'email' => 'email', 'status' => 'require|in:1,2,3', + 'frozen_state' => 'require|in:1,0', 'nation'=>'require', 'password'=>'require', 'id' =>'require|integer', @@ -47,6 +48,7 @@ class UserValidate extends AdminBaseValidate protected $scene = [ 'index' => ['page','limit','user_no', 'email', 'phone', 'start_time', 'end_time'], 'status' => ['id','status'], + 'frozen_state' => ['id','frozen_state'], 'change' => ['id','amount'], 'relation' => ['page','limit','user_no'], 'add_phone' =>['nation','phone','password'], diff --git a/app/home/service/PayService.php b/app/home/service/PayService.php index 08d8a27..c3101d4 100644 --- a/app/home/service/PayService.php +++ b/app/home/service/PayService.php @@ -2,6 +2,7 @@ namespace app\home\service; +use app\model\AccountFrozenModel; use app\model\PaymentListModel; use app\model\RechargeApplyModel; use app\model\StockMarketModel; @@ -34,6 +35,11 @@ class PayService extends BaseHomeService */ public function insertRechargeApply(array $data): array { + //判断账号是否冻结 + $isFrozen = AccountFrozenModel::where('user_id', $data['user_id'])->find(); + if (!empty($isFrozen) && $isFrozen->frozen_state == 1) { + return $this->toData('100110', 'The current account has been frozen', []); + } $channel = PaymentListModel::getPaymentInfo([ 'id' => $data['recharge_channel'] ]); diff --git a/app/home/service/WalletService.php b/app/home/service/WalletService.php index bf6db09..cec0417 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; @@ -998,6 +999,11 @@ class WalletService extends BaseHomeService */ public function dealDrawalApply(array $data): array { + //判断账号是否冻结 + $isFrozen = AccountFrozenModel::where('user_id', $data['user_id'])->find(); + if (!empty($isFrozen) && $isFrozen->frozen_state == 1) { + return $this->toData('100110', 'The current account has been frozen', []); + } //校验交易密码 $salt = env('ENCRYPT.SALT'); $name = env('WALLET.NAME'); diff --git a/app/model/AccountFrozenModel.php b/app/model/AccountFrozenModel.php new file mode 100644 index 0000000..c7b6eb5 --- /dev/null +++ b/app/model/AccountFrozenModel.php @@ -0,0 +1,8 @@ +