'=', 'username' => 'like', ], ['vipPackage:id,name', 'parent']) ->whereIn('type', [UserType::MEMBER]) ->orderByDesc('id'); return $this->paginate($query, UserResource::class); } // 添加会员 public function store(Request $request): JsonResponse { $request->validate([ 'username' => 'required|regex:/^1[3-9]\d{9}$/|unique:users,username', 'password' => 'required|min:6', ]); $params = $request->only(['username', 'password', 'vip_id']); if (! empty($params['vip_id'])) { $params['start_at'] = now(); $params['end_at'] = now()->addMonth(); } $params['status'] = true; $params['type'] = UserType::MEMBER; $params['password'] = bcrypt($params['password']); User::query()->create($params); return $this->success(); } // 修改用户、代理 public function update(Request $request, $id): JsonResponse { $user = User::query()->whereIn('type', [UserType::MEMBER, UserType::AGENT])->findOrFail($id); $params = $request->only(['status', 'vip_id', 'end_at', 'credit']); $pack_id = $params['vip_id'] ?? null; $model = VipPackage::class; $pak = $user->getPackageConfig(); if ($pak?->id == $pack_id) { return $this->failed('没有修改'); } if ($pack_id) { if (app($model)->where('id', $pack_id)->doesntExist()) { return $this->failed('套餐不存在'); } $params['end_at'] = now()->addMonth(); if (empty($user->start_at)) { $user->start_at = now(); } } $user->update($params); return $this->success(); } public function agent_tree() { $list = User::query() ->select(['id', 'username as label', 'parent_id']) ->where('type', UserType::AGENT) ->get() ->toArray(); $list = $this->treeLevel($list, 0); // treeLevel return $this->success($list); } private function treeLevel($array, $pid): array { $tree = []; foreach ($array as $key => $value) { if ($value['parent_id'] == $pid) { $value['children'] = $this->treeLevel($array, $value['id']); if (! $value['children']) { unset($value['children']); } $tree[] = $value; } } return $tree; } // 代理邀请记录 public function invite(): JsonResponse { $query = User::query() ->where('parent_id', auth('api')->user()->id) ->orderByDesc('id'); return $this->paginate($query, UserResource::class); } }