success(compact('web_setting')); } /** 用户登录 */ #[PostRoute('/login')] public function login(Request $request): JsonResponse { $credentials = $request->validate([ 'username' => 'required|min:4|alphaDash', 'password' => 'required|min:4|alphaDash', ]); if (Auth::guard('users')->attempt($credentials, true)) { $data = $request->user('users') ->createToken($credentials['username']) ->toArray(); return $this->success($data, __('user.login_success')); } return $this->error(__('user.login_error')); } /** 用户注册 */ #[PostRoute('/register')] public function register(UserRegisterRequest $request): JsonResponse { $data = $request->validated(); $model = new UserModel; $model->username = $data['username']; $model->password = password_hash($data['password'], PASSWORD_DEFAULT); $model->email = $data['email']; if ($model->save()) { return $this->success(); } return $this->error('创建用户失败'); } /** 获取首页数据(公开接口):轮播图 + 宫格导航 */ #[GetRoute('/home', false)] public function home(): JsonResponse { $site_title = site_config('web.subtitle'); $carousel = SysCarouselModel::query() ->where('status', 0) ->orderBy('sort', 'desc') ->orderBy('id', 'desc') ->get(); $gridNav = SysGridNavModel::query() ->where('status', 0) ->orderBy('sort', 'desc') ->orderBy('id', 'desc') ->get(); return $this->success(compact('carousel', 'gridNav', 'site_title')); } /** * 获取分类及分类下所有链接(公开接口) * 前端点击轮播图/导航时,若 link_type 为分类则跳转分类项页,调用此接口 */ #[GetRoute('/category/{id}', false, where: ['id' => '[0-9]+'])] public function category(int $id): JsonResponse { $category = SysCategoryModel::query() ->where('status', 0) ->find($id); if (empty($category)) { return $this->error('分类不存在'); } $items = SysCategoryItemModel::query() ->where('category_id', $id) ->where('status', 0) ->orderBy('sort', 'desc') ->orderBy('id', 'desc') ->get(); return $this->success($items->toArray()); } }