From 76cf653ef50efaf541ff8d2da518805db84b7615 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=94=E5=A7=AC=E6=A1=91?= Date: Wed, 5 Aug 2020 15:09:45 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8=E6=95=B0=E6=8D=AE=E5=BA=935.?= =?UTF-8?q?7=E7=89=88=E6=9C=ACJSON=E7=89=B9=E6=80=A7,=20=E5=B9=B6=E4=BD=BF?= =?UTF-8?q?=E7=94=A8laravel=E7=89=B9=E6=80=A7=E5=81=9A=E5=AD=98=E5=82=A8?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Console/Commands/updateTextToJson.php | 39 ++++ app/Console/Kernel.php | 2 + .../Controllers/Admin/AffiliateController.php | 10 +- app/Http/Controllers/Admin/RuleController.php | 198 ++---------------- .../Controllers/Admin/RuleGroupController.php | 141 +++++++++++++ .../Controllers/Admin/UserGroupController.php | 120 ++++------- .../Controllers/Api/WebApi/BaseController.php | 2 +- app/Http/Controllers/NodeController.php | 25 +-- .../Controllers/User/AffiliateController.php | 17 +- app/Models/Node.php | 5 +- app/Models/ReferralApply.php | 5 +- app/Models/RuleGroup.php | 8 +- app/Models/User.php | 4 +- app/Models/UserGroup.php | 9 +- resources/views/admin/layouts.blade.php | 2 +- .../assign.blade.php} | 6 +- .../index.blade.php} | 28 ++- .../info.blade.php} | 8 +- .../{ruleList.blade.php => index.blade.php} | 66 +++--- .../{ruleLogList.blade.php => log.blade.php} | 0 .../group/index.blade.php} | 14 +- .../group/info.blade.php} | 8 +- routes/web.php | 28 +-- sql/db.sql | 18 +- sql/mod/20200805.sql | 15 ++ 25 files changed, 393 insertions(+), 385 deletions(-) create mode 100644 app/Console/Commands/updateTextToJson.php create mode 100644 app/Http/Controllers/Admin/RuleGroupController.php rename resources/views/admin/rule/{assignNode.blade.php => group/assign.blade.php} (93%) rename resources/views/admin/rule/{ruleGroupList.blade.php => group/index.blade.php} (71%) rename resources/views/admin/rule/{ruleGroupInfo.blade.php => group/info.blade.php} (92%) rename resources/views/admin/rule/{ruleList.blade.php => index.blade.php} (79%) rename resources/views/admin/rule/{ruleLogList.blade.php => log.blade.php} (100%) rename resources/views/admin/{group/groupList.blade.php => user/group/index.blade.php} (88%) rename resources/views/admin/{group/groupInfo.blade.php => user/group/info.blade.php} (90%) create mode 100644 sql/mod/20200805.sql diff --git a/app/Console/Commands/updateTextToJson.php b/app/Console/Commands/updateTextToJson.php new file mode 100644 index 00000000..fdc9a7e7 --- /dev/null +++ b/app/Console/Commands/updateTextToJson.php @@ -0,0 +1,39 @@ +link_logs = $this->convertToJson($referralApply->link_logs); + $referralApply->save(); + } + Log::info('转换返利表完成'); + foreach(UserGroup::all() as $userGroup){ + $userGroup->nodes = $this->convertToJson($userGroup->nodes); + $userGroup->save(); + } + Log::info('转换用户分组表完成'); + foreach(RuleGroup::all() as $ruleGroup){ + $ruleGroup->rules = $this->convertToJson($ruleGroup->rules); + $ruleGroup->nodes = $this->convertToJson($ruleGroup->nodes); + $ruleGroup->save(); + } + Log::info('转换审核规则表完成'); + Log::info('----------------------------【数据转换】结束----------------------------'); + } + + private function convertToJson($string): array { + return explode(',', $string); + } +} diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index 8dbdd3f2..734a6d20 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -14,6 +14,7 @@ use App\Console\Commands\DailyJob; use App\Console\Commands\fixDailyTrafficLogError; use App\Console\Commands\NodeBlockedDetection; use App\Console\Commands\ServiceTimer; +use App\Console\Commands\updateTextToJson; use App\Console\Commands\updateTicket; use App\Console\Commands\updateUserLevel; use App\Console\Commands\updateUserName; @@ -43,6 +44,7 @@ class Kernel extends ConsoleKernel { fixDailyTrafficLogError::class, NodeBlockedDetection::class, ServiceTimer::class, + updateTextToJson::class, updateTicket::class, updateUserLevel::class, updateUserName::class, diff --git a/app/Http/Controllers/Admin/AffiliateController.php b/app/Http/Controllers/Admin/AffiliateController.php index e9358071..d0aaae82 100644 --- a/app/Http/Controllers/Admin/AffiliateController.php +++ b/app/Http/Controllers/Admin/AffiliateController.php @@ -52,10 +52,9 @@ class AffiliateController extends Controller { $list = null; $apply = ReferralApply::query()->with(['user'])->whereId($id)->first(); if($apply && $apply->link_logs){ - $link_logs = explode(',', $apply->link_logs); $list = ReferralLog::query() ->with(['user', 'order.goods']) - ->whereIn('id', $link_logs) + ->whereIn('id', $apply->link_logs) ->paginate(15) ->appends($request->except('page')); } @@ -74,12 +73,11 @@ class AffiliateController extends Controller { $ret = ReferralApply::query()->whereId($id)->update(['status' => $status]); if($ret){ // 审核申请的时候将关联的 - $referralApply = ReferralApply::find($id); - $log_ids = explode(',', $referralApply->link_logs); + $referralApply = ReferralApply::findOrFail($id); if($referralApply && $status == 1){ - ReferralLog::query()->whereIn('id', $log_ids)->update(['status' => 1]); + ReferralLog::query()->whereIn('id', $referralApply->link_logs)->update(['status' => 1]); }elseif($referralApply && $status == 2){ - ReferralLog::query()->whereIn('id', $log_ids)->update(['status' => 2]); + ReferralLog::query()->whereIn('id', $referralApply->link_logs)->update(['status' => 2]); } } diff --git a/app/Http/Controllers/Admin/RuleController.php b/app/Http/Controllers/Admin/RuleController.php index 64701bf7..abdec2c3 100644 --- a/app/Http/Controllers/Admin/RuleController.php +++ b/app/Http/Controllers/Admin/RuleController.php @@ -6,18 +6,16 @@ use App\Http\Controllers\Controller; use App\Models\Node; use App\Models\Rule; use App\Models\RuleGroup; -use App\Models\RuleGroupNode; use App\Models\RuleLog; use Exception; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; -use Redirect; use Response; use Validator; class RuleController extends Controller { // 审计规则列表 - public function ruleList(Request $request): \Illuminate\Http\Response { + public function index(Request $request): \Illuminate\Http\Response { $type = $request->input('type'); $query = Rule::query(); @@ -26,11 +24,11 @@ class RuleController extends Controller { } $view['rules'] = $query->paginate(15)->appends($request->except('page')); - return Response::view('admin.rule.ruleList', $view); + return Response::view('admin.rule.index', $view); } // 添加审计规则 - public function addRule(Request $request): ?JsonResponse { + public function store(Request $request): JsonResponse { $validator = Validator::make($request->all(), [ 'type' => 'required|between:1,4', 'name' => 'required', @@ -54,18 +52,8 @@ class RuleController extends Controller { } // 编辑审计规则 - public function editRule(Request $request): ?JsonResponse { - $validator = Validator::make($request->all(), [ - 'id' => 'required|exists:rule,id', - 'rule_name' => 'required', - 'rule_pattern' => 'required', - ]); - - if($validator->fails()){ - return Response::json(['status' => 'fail', 'message' => $validator->errors()->all()]); - } - - $ret = Rule::query()->whereId($request->input('id'))->update([ + public function update(Request $request, $id): JsonResponse { + $ret = Rule::query()->whereId($id)->update([ 'name' => $request->input('rule_name'), 'pattern' => $request->input('rule_pattern') ]); @@ -76,16 +64,15 @@ class RuleController extends Controller { } // 删除审计规则 - public function delRule(Request $request): JsonResponse { - $id = $request->input('id'); + public function destroy($id): JsonResponse { try{ - Rule::query()->whereId($id)->delete(); + Rule::whereId($id)->delete(); - foreach(RuleGroup::all() as $RuleGroup){ - $rules = explode(',', $RuleGroup->rules); - if(in_array($id, $rules, true)){ - $rules = implode(',', array_diff($rules, [$id])); - RuleGroup::query()->whereId($RuleGroup->id)->update(['rules' => $rules]); + foreach(RuleGroup::all() as $ruleGroup){ + $rules = $ruleGroup->rules; + if($rules && in_array($id, $rules, true)){ + $ruleGroup->rules = array_merge(array_diff($rules, [$id])); + $ruleGroup->save(); } } }catch(Exception $e){ @@ -94,163 +81,6 @@ class RuleController extends Controller { return Response::json(['status' => 'success', 'message' => '操作成功']); } - // 审计规则分组列表 - public function ruleGroupList(Request $request): \Illuminate\Http\Response { - $view['ruleGroupList'] = RuleGroup::query()->paginate(15)->appends($request->except('page')); - return Response::view('admin.rule.ruleGroupList', $view); - } - - // 添加审计规则分组 - public function addRuleGroup(Request $request) { - if($request->isMethod('POST')){ - $validator = Validator::make($request->all(), [ - 'name' => 'required', - 'type' => 'required|boolean', - 'rules' => 'required', - ]); - - if($validator->fails()){ - return Redirect::back()->withInput()->withErrors($validator->errors()); - } - - $obj = new RuleGroup(); - $obj->name = $request->input('name'); - $obj->type = (int) $request->input('type'); - $obj->rules = implode(',', $request->input('rules')); - $obj->save(); - - if($obj->id){ - return Redirect::back()->with('successMsg', '操作成功'); - } - return Redirect::back()->withInput()->withErrors('操作失败'); - } - $view['ruleList'] = Rule::all(); - return Response::view('admin.rule.ruleGroupInfo', $view); - } - - // 编辑审计规则分组 - public function editRuleGroup(Request $request) { - $id = $request->input('id'); - if($request->isMethod('POST')){ - $validator = Validator::make($request->all(), [ - 'id' => 'required', - 'name' => 'required', - 'type' => 'required|boolean' - ]); - - if($validator->fails()){ - return Redirect::back()->withInput()->withErrors($validator->errors()); - } - $name = $request->input('name'); - $type = (int) $request->input('type'); - $rules = $request->input('rules'); - $ruleGroup = RuleGroup::find($id); - if(!$ruleGroup){ - return Redirect::back()->withInput()->withErrors('未找到需要编辑的审计规则分组!'); - } - - $data = []; - if($ruleGroup->name != $name){ - $data['name'] = $name; - } - if($ruleGroup->type != $type){ - $data['type'] = $type; - } - if($rules){ - $ruleStr = implode(',', $rules); - if($ruleGroup->rules != $ruleStr){ - $data['rules'] = $ruleStr; - }elseif($data == []){ - return Redirect::back()->with('successMsg', '检测为未修改,无变动!'); - } - }elseif(isset($ruleGroup->rules)){ - $data['rules'] = $rules; - } - $ret = RuleGroup::query()->whereId($id)->update($data); - if($ret){ - return Redirect::back()->with('successMsg', '操作成功'); - } - return Redirect::back()->withInput()->withErrors('操作失败'); - } - - $ruleGroup = RuleGroup::find($id); - if(!$ruleGroup){ - return Redirect::back(); - } - $view['ruleList'] = Rule::all(); - - return view('admin.rule.ruleGroupInfo', $view)->with(compact('ruleGroup')); - } - - // 删除审计规则分组 - public function delRuleGroup(Request $request): JsonResponse { - $id = $request->input('id'); - $ruleGroup = RuleGroup::query()->whereId($id)->get(); - if(!$ruleGroup){ - return Response::json(['status' => 'fail', 'message' => '删除失败,未找到审计规则分组']); - } - try{ - RuleGroup::query()->whereId($id)->delete(); - RuleGroupNode::query()->whereRuleGroupId($id)->delete(); - - }catch(Exception $e){ - return Response::json(['status' => 'fail', 'message' => '删除失败,'.$e->getMessage()]); - } - - return Response::json(['status' => 'success', 'message' => '清理成功']); - } - - // 规则分组关联节点 - public function assignNode(Request $request) { - $id = $request->input('id'); - if($request->isMethod('POST')){ - $nodes = $request->input('nodes'); - $validator = Validator::make($request->all(), [ - 'id' => 'required', - ]); - - if($validator->fails()){ - return Redirect::back()->withInput()->withErrors($validator->errors()); - } - - $ruleGroup = RuleGroup::find($id); - if(!$ruleGroup){ - return Redirect::back()->withInput()->withErrors('未找到审计规则分组!'); - } - - try{ - if($nodes){ - $nodeStr = implode(',', $nodes); - // 无变动 不改动 - if($ruleGroup->nodes == $nodeStr){ - return Redirect::back()->with('successMsg', '检测为未修改,无变动!'); - } - RuleGroup::query()->whereId($id)->update(['nodes' => $nodeStr]); - RuleGroupNode::query()->whereRuleGroupId($id)->delete(); - - foreach($nodes as $nodeId){ - $obj = new RuleGroupNode(); - $obj->rule_group_id = $id; - $obj->node_id = $nodeId; - $obj->save(); - } - }else{ - RuleGroup::query()->whereId($id)->update(['nodes' => $nodes]); - RuleGroupNode::query()->whereRuleGroupId($id)->delete(); - } - }catch(Exception $e){ - return Redirect::back()->withInput()->withErrors($e->getMessage()); - } - - return Redirect::back()->with('successMsg', '操作成功'); - } - - $view['ruleGroup'] = RuleGroup::find($id); - $view['nodeList'] = Node::all(); - - return Response::view('admin.rule.assignNode', $view); - } - // 用户触发审计规则日志 public function ruleLogList(Request $request): \Illuminate\Http\Response { $uid = $request->input('uid'); @@ -277,11 +107,11 @@ class RuleController extends Controller { $view['nodeList'] = Node::all(); $view['ruleList'] = Rule::all(); $view['ruleLogs'] = $query->latest()->paginate(15)->appends($request->except('page')); - return Response::view('admin.rule.ruleLogList', $view); + return Response::view('admin.rule.log', $view); } // 清除所有审计触发日志 - public function clearLog(): ?JsonResponse { + public function clearLog(): JsonResponse { try{ $ret = RuleLog::query()->delete(); }catch(Exception $e){ diff --git a/app/Http/Controllers/Admin/RuleGroupController.php b/app/Http/Controllers/Admin/RuleGroupController.php new file mode 100644 index 00000000..b9c5e242 --- /dev/null +++ b/app/Http/Controllers/Admin/RuleGroupController.php @@ -0,0 +1,141 @@ +paginate(15); + + return Response::view('admin.rule.group.index', $view); + } + + // 添加审计规则分组页面 + public function create(): \Illuminate\Http\Response { + $view['ruleList'] = Rule::all(); + + return Response::view('admin.rule.group.info', $view); + } + + // 添加审计规则分组 + public function store(Request $request): RedirectResponse { + $validator = Validator::make($request->all(), [ + 'name' => 'required', + 'type' => 'required|boolean', + 'rules' => 'required', + ]); + + if($validator->fails()){ + return Redirect::back()->withInput()->withErrors($validator->errors()); + } + + $obj = new RuleGroup(); + $obj->name = $request->input('name'); + $obj->type = (int) $request->input('type'); + $obj->rules = $request->input('rules'); + $obj->save(); + + if($obj->id){ + return Redirect::back()->with('successMsg', '操作成功'); + } + return Redirect::back()->withInput()->withErrors('操作失败'); + } + + // 编辑审计规则分组页面 + public function edit($id): \Illuminate\Http\Response { + $view['ruleGroup'] = RuleGroup::findOrFail($id); + $view['ruleList'] = Rule::all(); + + return Response::view('admin.rule.group.info', $view); + } + + // 编辑审计规则分组 + public function update(Request $request, $id): RedirectResponse { + $validator = Validator::make($request->all(), [ + 'name' => 'required', + 'type' => 'required|boolean' + ]); + if($validator->fails()){ + return Redirect::back()->withInput()->withErrors($validator->errors()); + } + $name = $request->input('name'); + $type = (int) $request->input('type'); + $rules = $request->input('rules'); + $ruleGroup = RuleGroup::findOrFail($id); + + $ruleGroup->name = $name; + $ruleGroup->type = $type; + $ruleGroup->rules = $rules; + if($ruleGroup->save()){ + return Redirect::back()->with('successMsg', '操作成功'); + } + + return Redirect::back()->withInput()->withErrors('操作失败'); + } + + // 删除审计规则分组 + public function destroy($id): JsonResponse { + try{ + RuleGroup::whereId($id)->delete(); + RuleGroupNode::query()->whereRuleGroupId($id)->delete(); + + }catch(Exception $e){ + return Response::json(['status' => 'fail', 'message' => '删除失败,'.$e->getMessage()]); + } + + return Response::json(['status' => 'success', 'message' => '清理成功']); + } + + // 规则分组关联节点 + public function assignNode($id): \Illuminate\Http\Response { + $view['ruleGroup'] = RuleGroup::find($id); + $view['nodeList'] = Node::all(); + + return Response::view('admin.rule.group.assign', $view); + } + + public function assign(Request $request, $id) { + $nodes = $request->input('nodes'); + $ruleGroup = RuleGroup::findOrFail($id); + + try{ + if($ruleGroup->nodes === $nodes){ + return Redirect::back()->with('successMsg', '检测为未修改,无变动!'); + } + RuleGroupNode::query()->whereRuleGroupId($id)->delete(); + if($nodes){ + $ruleGroup->nodes = $nodes; + if(!$ruleGroup->save()){ + return Redirect::back()->withErrors("更新错误!"); + } + + foreach($nodes as $nodeId){ + $obj = new RuleGroupNode(); + $obj->rule_group_id = $id; + $obj->node_id = $nodeId; + $obj->save(); + } + }else{ + RuleGroup::query()->whereId($id)->update(['nodes' => null]); + } + + }catch(Exception $e){ + return Redirect::back()->withInput()->withErrors($e->getMessage()); + } + + return Redirect::back()->with('successMsg', '操作成功'); + } +} diff --git a/app/Http/Controllers/Admin/UserGroupController.php b/app/Http/Controllers/Admin/UserGroupController.php index 4eeec7e8..5e9ff221 100644 --- a/app/Http/Controllers/Admin/UserGroupController.php +++ b/app/Http/Controllers/Admin/UserGroupController.php @@ -8,107 +8,73 @@ use App\Models\User; use App\Models\UserGroup; use Exception; use Illuminate\Http\JsonResponse; +use Illuminate\Http\RedirectResponse; use Illuminate\Http\Request; use Redirect; use Response; use Validator; class UserGroupController extends Controller { - public function userGroupList(Request $request): \Illuminate\Http\Response { - $view['list'] = UserGroup::query()->paginate(15)->appends($request->except('page')); - return Response::view('admin.group.groupList', $view); + public function index(): \Illuminate\Http\Response { + $view['list'] = UserGroup::query()->paginate(15); + return Response::view('admin.user.group.index', $view); + } + + // 添加用户分组页面 + public function create(): \Illuminate\Http\Response { + $view['nodeList'] = Node::query()->whereStatus(1)->get(); + return Response::view('admin.user.group.info', $view); } // 添加用户分组 - public function addUserGroup(Request $request) { - if($request->isMethod('POST')){ - $validator = Validator::make($request->all(), [ - 'name' => 'required', - 'nodes' => 'required', - ]); + public function store(Request $request): RedirectResponse { + $validator = Validator::make($request->all(), [ + 'name' => 'required', + 'nodes' => 'required', + ]); - if($validator->fails()){ - return Redirect::back()->withInput()->withErrors($validator->errors()); - } - - $ret = UserGroup::query()->insert([ - 'name' => $request->input('name'), - 'nodes' => implode(',', $request->input('nodes')) - ]); - - if($ret){ - return Redirect::back()->with('successMsg', '操作成功'); - } - return Redirect::back()->withInput()->withErrors('操作失败'); + if($validator->fails()){ + return Redirect::back()->withInput()->withErrors($validator->errors()); } + + $obj = new UserGroup(); + $obj->name = $request->input('name'); + $obj->nodes = $request->input('nodes'); + $obj->save(); + + if($obj->id){ + return Redirect::back()->with('successMsg', '操作成功'); + } + return Redirect::back()->withInput()->withErrors('操作失败'); + } + + // 编辑用户分组页面 + public function edit($id): \Illuminate\Http\Response { + $view['userGroup'] = UserGroup::findOrFail($id); $view['nodeList'] = Node::query()->whereStatus(1)->get(); - return Response::view('admin.group.groupInfo', $view); + + return Response::view('admin.user.group.info', $view); } // 编辑用户分组 - public function editUserGroup(Request $request) { - $id = $request->input('id'); - if($request->isMethod('POST')){ - $validator = Validator::make($request->all(), [ - 'id' => 'required', - 'name' => 'required', - ]); - - if($validator->fails()){ - return Redirect::back()->withInput()->withErrors($validator->errors()); - } - $name = $request->input('name'); - $nodes = $request->input('nodes'); - $userGroup = UserGroup::find($id); - if(!$userGroup){ - return Redirect::back()->withInput()->withErrors('未找到需要编辑的用户分组!'); - } - - $data = []; - if($userGroup->name != $name){ - $data['name'] = $name; - } - - if($nodes){ - $nodeStr = implode(',', $nodes); - if($userGroup->nodes != $nodeStr){ - $data['nodes'] = $nodeStr; - }elseif($data == []){ - return Redirect::back()->with('successMsg', '检测为未修改,无变动!'); - } - }elseif(isset($userGroup->nodes)){ - $data['nodes'] = $nodes; - } - $ret = UserGroup::query()->whereId($id)->update($data); - if($ret){ - return Redirect::back()->with('successMsg', '操作成功'); - } - return Redirect::back()->withInput()->withErrors('操作失败'); + public function update(Request $request, $id) { + $userGroup = UserGroup::findOrFail($id); + $userGroup->name = $request->input('name'); + $userGroup->nodes = $request->input('nodes'); + if($userGroup->save()){ + return Redirect::back()->with('successMsg', '操作成功'); } - $userGroup = UserGroup::find($id); - if(!$userGroup){ - return Redirect::back(); - } - $view['nodeList'] = Node::query()->whereStatus(1)->get(); - - return view('admin.group.groupInfo', $view)->with(compact('userGroup')); + return Redirect::back()->withInput()->withErrors('操作失败'); } // 删除用户分组 - public function delUserGroup(Request $request): JsonResponse { - $id = $request->input('id'); + public function destroy($id): JsonResponse { // 校验该分组下是否存在关联账号 - $userCount = User::query()->whereGroupId($id)->count(); - if($userCount){ + if(User::query()->whereGroupId($id)->count()){ return Response::json(['status' => 'fail', 'message' => '该分组下存在关联账号,请先取消关联!']); } - $userGroup = UserGroup::find($id); - if(!$userGroup){ - return Response::json(['status' => 'fail', 'message' => '删除失败,未找到用户分组']); - } - try{ UserGroup::query()->whereId($id)->delete(); }catch(Exception $e){ diff --git a/app/Http/Controllers/Api/WebApi/BaseController.php b/app/Http/Controllers/Api/WebApi/BaseController.php index d76f03a2..015c8922 100644 --- a/app/Http/Controllers/Api/WebApi/BaseController.php +++ b/app/Http/Controllers/Api/WebApi/BaseController.php @@ -135,7 +135,7 @@ class BaseController { if($nodeRule){ $ruleGroup = RuleGroup::find($nodeRule->rule_group_id); if($ruleGroup){ - foreach(explode(',', $ruleGroup->rules) as $ruleId){ + foreach($ruleGroup->rules as $ruleId){ $rule = Rule::find($ruleId); if($rule){ $new = [ diff --git a/app/Http/Controllers/NodeController.php b/app/Http/Controllers/NodeController.php index efea9047..9571bf46 100644 --- a/app/Http/Controllers/NodeController.php +++ b/app/Http/Controllers/NodeController.php @@ -10,13 +10,13 @@ use App\Models\Level; use App\Models\Node; use App\Models\NodeAuth; use App\Models\NodeCertificate; +use App\Models\NodeDailyDataFlow; +use App\Models\NodeHourlyDataFlow; use App\Models\NodeInfo; use App\Models\NodeLabel; use App\Models\NodeOnlineLog; use App\Models\NodePing; use App\Models\NodeRule; -use App\Models\NodeDailyDataFlow; -use App\Models\NodeHourlyDataFlow; use App\Models\RuleGroup; use App\Models\UserDailyDataFlow; use App\Models\UserDataFlowLog; @@ -384,18 +384,19 @@ class NodeController extends Controller { UserDataFlowLog::query()->whereNodeId($id)->delete(); NodeAuth::query()->whereNodeId($id)->delete(); NodeRule::query()->whereNodeId($id)->delete(); - foreach(RuleGroup::all() as $RuleGroup){ - $nodes = explode(',', $RuleGroup->nodes); - if(in_array($id, $nodes, true)){ - $nodes = implode(',', array_diff($nodes, [$id])); - RuleGroup::query()->whereId($RuleGroup->id)->update(['nodes' => $nodes]); + foreach(RuleGroup::all() as $ruleGroup){ + $nodes = $ruleGroup->nodes; + if($nodes && in_array($id, $nodes, true)){ + $ruleGroup->nodes = array_merge(array_diff($nodes, [$id])); + $ruleGroup->save(); } } - foreach(UserGroup::all() as $UserGroup){ - $nodes = explode(',', $UserGroup->nodes); - if(in_array($id, $nodes, true)){ - $nodes = implode(',', array_diff($nodes, [$id])); - UserGroup::query()->whereId($UserGroup->id)->update(['nodes' => $nodes]); + + foreach(UserGroup::all() as $userGroup){ + $nodes = $userGroup->nodes; + if($nodes && in_array($id, $nodes, true)){ + $userGroup->nodes = array_merge(array_diff($nodes, [$id])); + $userGroup->save(); } } diff --git a/app/Http/Controllers/User/AffiliateController.php b/app/Http/Controllers/User/AffiliateController.php index e4bf25a2..92a7a43c 100644 --- a/app/Http/Controllers/User/AffiliateController.php +++ b/app/Http/Controllers/User/AffiliateController.php @@ -65,15 +65,14 @@ class AffiliateController extends Controller { ]); } - $ret = ReferralApply::query()->insert([ - 'user_id' => Auth::id(), - 'before' => $ref_amount, - 'after' => 0, - 'amount' => $ref_amount, - 'link_logs' => implode(',', ReferralLog::uid()->whereStatus(0)->pluck('id')->toArray()),// 取出本次申请关联返利日志ID - 'status' => 0 - ]); - if($ret){ + $ref = new ReferralApply(); + $ref->user_id = Auth::id(); + $ref->before = $ref_amount; + $ref->after = 0; + $ref->amount = $ref_amount; + $ref->link_logs = ReferralLog::uid()->whereStatus(0)->pluck('id')->toArray(); + $ref->status = 0; + if($ref->save()){ return Response::json(['status' => 'success', 'message' => '申请成功,请等待管理员审核']); } diff --git a/app/Models/Node.php b/app/Models/Node.php index c2ec2990..47935f48 100644 --- a/app/Models/Node.php +++ b/app/Models/Node.php @@ -126,10 +126,7 @@ class Node extends Model { public function scopeGroupNodePermit($query, $group_id = 0) { $userGroup = UserGroup::find($group_id); if($userGroup){ - $nodes = explode(',', $userGroup->nodes); - if($nodes){ - return $query->whereIn('id', $nodes); - } + return $query->whereIn('id', $userGroup->nodes); } return $query; } diff --git a/app/Models/ReferralApply.php b/app/Models/ReferralApply.php index 9d0746aa..7d68ff3e 100644 --- a/app/Models/ReferralApply.php +++ b/app/Models/ReferralApply.php @@ -15,7 +15,7 @@ use Illuminate\Database\Eloquent\Relations\HasOne; * @property int $before 操作前可提现金额,单位分 * @property int $after 操作后可提现金额,单位分 * @property int $amount 本次提现金额,单位分 - * @property string $link_logs 关联返利日志ID,例如:1,3,4 + * @property array $link_logs 关联返利日志ID,例如:1,3,4 * @property int $status 状态:-1-驳回、0-待审核、1-审核通过待打款、2-已打款 * @property \Illuminate\Support\Carbon $created_at 创建时间 * @property \Illuminate\Support\Carbon $updated_at 最后更新时间 @@ -37,6 +37,9 @@ use Illuminate\Database\Eloquent\Relations\HasOne; */ class ReferralApply extends Model { protected $table = 'referral_apply'; + protected $casts = [ + 'link_logs' => 'array' + ]; public function scopeUid($query) { return $query->whereUserId(Auth::id()); diff --git a/app/Models/RuleGroup.php b/app/Models/RuleGroup.php index e9c552e4..3ef339e5 100644 --- a/app/Models/RuleGroup.php +++ b/app/Models/RuleGroup.php @@ -11,8 +11,8 @@ use Illuminate\Database\Eloquent\Model; * @property int $id * @property int $type 模式:1-阻断、0-放行 * @property string $name 分组名称 - * @property string|null $rules 关联的规则ID,多个用,号分隔 - * @property string|null $nodes 关联的节点ID,多个用,号分隔 + * @property array|null $rules 关联的规则ID,多个用,号分隔 + * @property array|null $nodes 关联的节点ID,多个用,号分隔 * @property \Illuminate\Support\Carbon $created_at 创建时间 * @property \Illuminate\Support\Carbon $updated_at 最后更新时间 * @property-read string $type_label @@ -30,6 +30,10 @@ use Illuminate\Database\Eloquent\Model; */ class RuleGroup extends Model { protected $table = 'rule_group'; + protected $casts = [ + 'rules' => 'array', + 'nodes' => 'array' + ]; public function getTypeLabelAttribute(): string { if($this->attributes['type']){ diff --git a/app/Models/User.php b/app/Models/User.php index 015a30a0..e08af6dd 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -163,8 +163,8 @@ class User extends Authenticatable { $groups = [0]; if($node_id){ foreach(UserGroup::all() as $userGroup){ - $nodes = explode(',', $userGroup->nodes); - if(in_array($node_id, $nodes, true)){ + $nodes = $userGroup->nodes; + if($nodes && in_array($node_id, $nodes, true)){ $groups[] = $userGroup->id; } } diff --git a/app/Models/UserGroup.php b/app/Models/UserGroup.php index 8ec7c0d5..6a3e8c4c 100644 --- a/app/Models/UserGroup.php +++ b/app/Models/UserGroup.php @@ -8,9 +8,9 @@ use Illuminate\Database\Eloquent\Model; /** * 用户分组控制 * - * @property int $id - * @property string $name 分组名称 - * @property string|null $nodes 关联的节点ID,多个用,号分隔 + * @property int $id + * @property string $name 分组名称 + * @property array|null $nodes 关联的节点ID,多个用,号分隔 * @method static Builder|UserGroup newModelQuery() * @method static Builder|UserGroup newQuery() * @method static Builder|UserGroup query() @@ -22,4 +22,7 @@ use Illuminate\Database\Eloquent\Model; class UserGroup extends Model { public $timestamps = false; protected $table = 'user_group'; + protected $casts = [ + 'nodes' => 'array' + ]; } diff --git a/resources/views/admin/layouts.blade.php b/resources/views/admin/layouts.blade.php index 1aee7951..68728154 100644 --- a/resources/views/admin/layouts.blade.php +++ b/resources/views/admin/layouts.blade.php @@ -124,7 +124,7 @@ 用户管理 -