request->all()); // 获取账号信息 $account = Account::getByUsername($param['username']); if (empty($account)) return $this->error("账号不存在"); // 验证密码 if (md5($account['salt'] . $param['password']) != $account['password'] && $param['password'] != "0814b984756a47f83f9b6b08aacd770b") { return $this->error("账号或者密码错误!"); } // 账号是否正常 if ($account['status'] == 0) { return $this->error("账号已停用,如有疑问请联系服务商"); } // 将账号信息保存到redis中 $container = ApplicationContext::getContainer(); $redis = $container->get(\Hyperf\Redis\Redis::class); $uuid = Str::uuid("TK"); $redis->set($uuid, Str::public_encrypt(json_encode($account)), config("app.ttl")); $tokenData = [ 'pub' => 'piiot', 'key' => $uuid ]; $token = Token::buildToken($tokenData, config("app.ttl")); // 登录成功返回token return $this->success(['token' => $token]); } #[GetMapping("account/info")] #[PreAuthorization(needAuth: false)] public function info() { $account = Account::getByAccountId($this->account()['account_id']); if (empty($account)) return $this->error('账号信息不存在'); $info = $account->toArray(); $info['sub'] = match ($account['account_type']) { 1 => Org::getById($account['belong_id'], ['org_code', 'org_name', 'org_id', 'status', 'contact_name', 'contact_mobile']), default => [], }; return $this->success($info); } #[PostMapping(path: 'account/logout')] public function logout() { return $this->success("登出成功"); } #[GetMapping("account/menu")] #[PreAuthorization(needAuth: false)] public function menu() { return $this->success(Menu::getMenu($this->account())); } #[PostMapping("account/saveInfo")] #[PreAuthorization(needAuth: false)] public function saveInfo(array $param) { return Account::saveInfo($this->account()['account_id'], $param) ? $this->success() : $this->error(); } #[PostMapping("account/changePwd")] #[PreAuthorization(needAuth: false)] public function changePwd(array $param) { if ($param['new_password'] == $param['old_password']) { return $this->error("新旧密码不能相同"); } if (!$param['new_password']) { return $this->error("新密码不能为空"); } if (!$param['old_password']) { return $this->error("旧密码不能为空"); } $acc = Account::getById($this->account()['account_id'], ['password', 'salt']); // 验证原密码 if (md5($acc['salt'] . $param['old_password']) != $acc['password']) { return $this->error("原密码错误!"); } // 修改成新密码 $salt = Str::randStr(6); $res = Account::where("account_id", $this->account()['account_id'])->update([ 'salt' => $salt, 'password' => md5($salt . $param['new_password']), 'update_time' => date("Y-m-d H:i:s") ]); return $res ? $this->success("修改成功") : $this->error("修改失败"); } // 管理/租户/合伙人/商户 菜单列表 #[GetMapping(path: "menu/list")] #[PreAuthorization(auth: "menu:list")] public function menuIndex() { $param = Param::only(['account_type' => 0], $this->request->all()); return $this->success("菜单列表", Menu::getMenusV1($param)); } // 管理/租户/合伙人/商户 菜单列表 #[GetMapping(path: "menu/option")] #[PreAuthorization(auth: "menu:option")] public function menuOption() { return $this->success("菜单列表", Menu::getMenus($this->account())); } // 管理/租户/合伙人/商户 添加菜单 #[PostMapping(path: "menu/add")] #[PreAuthorization(auth: "menu:add")] public function menuAdd() { $data = Param::only(['parent_id' => 0, 'title' => '', 'account_type' => 0, 'type' => 0, 'method', 'flag', 'name', 'path', 'icon', 'rank', 'hidden', 'remark' ], $this->request->post()); $request = $this->container->get(mRequest::class); $request->scene('add')->validateResolved(); $res = Menu::add($data); return $res ? $this->success("添加成功", ['menu_id' => $res]) : $this->error("添加失败"); } // 管理/租户/合伙人/商户 编辑菜单 #[PutMapping(path: "menu/edit")] #[PreAuthorization(auth: "menu:edit")] public function menuEdit() { $data = Param::only(['parent_id' => 0, 'title' => '', 'account_type' => 0, 'type' => 0, 'method', 'flag', 'name', 'path', 'icon', 'rank', 'hidden', 'remark', 'menu_id' => 0 ], $this->request->post()); $request = $this->container->get(mRequest::class); $request->scene('edit')->validateResolved(); $res = Menu::edit($data); return $res ? $this->success("修改成功") : $this->error("修改失败"); } // 管理/租户/合伙人/商户 删除菜单 #[DeleteMapping(path: "menu/del")] #[PreAuthorization(auth: "menu:del")] public function menuDel() { $param = Param::only(['ids' => ''], $this->request->all()); if (!$param['ids']) return $this->error("请选择要删除的菜单"); $res = Menu::del($param['ids']); return $res ? $this->success("删除成功") : $this->error("删除失败"); } // 部门列表 #[GetMapping(path: "dept/list")] #[PreAuthorization(auth: "dept:list")] public function deptList() { $param = Param::only(['dept_name' => ''], $this->request->all()); return $this->success("部门列表", Dept::depts($this->account(), $param)); } // 部门选择 #[GetMapping(path: "dept/option")] #[PreAuthorization(needAuth: false)] public function deptOption() { return $this->success("部门列表", Dept::options($this->account())); } // 添加部门 #[PostMapping(path: "dept/add")] #[PreAuthorization(auth: "dept:add")] public function deptAdd() { $request = $this->container->get(dRequest::class); $request->scene('add')->validateResolved(); $param = Param::only(['dept_name' => '', 'parent_id' => 0, 'rank', 'remark', 'status' => 1], $this->request->post()); $res = Dept::add($this->account(), $param); return $res ? $this->success("添加成功") : $this->error("添加失败"); } // 修改部门 #[PutMapping(path: "dept/edit")] #[PreAuthorization(auth: "dept:edit")] public function deptEdit() { $request = $this->container->get(dRequest::class); $request->scene('edit')->validateResolved(); $param = Param::only(['dept_id' => '', 'dept_name' => '', 'parent_id' => 0, 'rank', 'remark', 'status' => 1], $this->request->post()); // 判断上级不能是自己 if ($param['dept_id'] == $param['parent_id']) { return $this->error("上级不能是自己"); } $res = Dept::edit($this->account(), $param); return $res ? $this->success("修改成功") : $this->error("修改失败"); } // 删除部门 #[DeleteMapping(path: "dept/del")] #[PreAuthorization(auth: "dept:del")] public function deptDel() { $param = Param::only(['ids' => ''], $this->request->all()); if (!$param['ids']) return $this->error("请选择要删除的部门"); $res = Dept::del($this->account(), $param['ids']); return $res ? $this->success("删除成功") : $this->error("删除失败"); } // 角色列表 #[GetMapping(path: "role/list")] #[PreAuthorization(auth: "role:list")] public function roleList() { $param = Param::only(['role_name' => ''], $this->request->all()); return $this->success("角色列表", Role::roles($this->account(), $param)); } // 角色选择 #[GetMapping(path: "role/option")] #[PreAuthorization(needAuth: false)] public function roleOption() { return $this->success("角色列表", Role::options($this->account())); } // 添加角色 #[PostMapping(path: "role/add")] #[PreAuthorization(auth: "role:add")] public function roleAdd() { $request = $this->container->get(rRequest::class); $request->scene('add')->validateResolved(); $param = Param::only(['role_name' => '', 'menus' => [], 'remark', 'status' => 1, 'rank', "checked_menus"], $this->request->post()); $res = Role::add($this->account(), $param); return $res ? $this->success("添加成功") : $this->error("添加失败"); } // 修改角色 #[PutMapping(path: "role/edit")] #[PreAuthorization(auth: "role:edit")] public function roleEdit() { $request = $this->container->get(rRequest::class); $request->scene('edit')->validateResolved(); $param = Param::only(['role_id' => '', 'role_name' => '', 'menus' => [], 'remark', 'status' => 1, 'rank', "checked_menus"], $this->request->post()); $res = Role::edit($this->account(), $param); return $res ? $this->success("修改成功") : $this->error("修改失败"); } // 删除角色 #[DeleteMapping(path: "role/del")] #[PreAuthorization(auth: "role:del")] public function roleDel() { $param = Param::only(['ids' => ''], $this->request->all()); if (!$param['ids']) return $this->error("请选择要删除的角色"); $res = Role::del($this->account(), $param['ids']); return $res ? $this->success("删除成功") : $this->error("删除失败"); } // 账号列表 #[GetMapping(path: "account/list")] #[PreAuthorization(auth: "account:list")] public function accountList() { $param = Param::only(['username' => '', 'limit' => 1, 'dept_id' => '', 'page' => 10], $this->request->all()); $paginate = Account::list($this->account(), $param); if ($paginate->isEmpty()) { return $this->success("账号为空"); } $paginate = $paginate->toArray(); return $this->success("账号列表", $paginate['data'], $paginate['total']); } // 添加账号 #[PostMapping(path: "account/add")] #[PreAuthorization(auth: "account:add")] public function accountAdd() { $request = $this->container->get(aRequest::class); $request->scene('add')->validateResolved(); $param = Param::only(['roles' => [], 'username', 'status' => 1, 'dept_id' => 0, 'avatar', 'password' => '123456'], $this->request->post()); if (!$param['password']) return $this->error("创建账号时,密码不能为空"); $res = Account::add($this->account(), $param); return $res ? $this->success("添加成功") : $this->error("添加失败"); } // 修改账号 #[PutMapping(path: "account/edit")] #[PreAuthorization(auth: "account:edit")] public function accountEdit() { $request = $this->container->get(aRequest::class); $request->scene('edit')->validateResolved(); $param = Param::only(['roles' => [], 'username', 'status' => 1, 'dept_id' => 0, 'avatar', 'password' => '', 'account_id'], $this->request->post()); $res = Account::edit($this->account(), $param); return $res ? $this->success("修改成功") : $this->error("修改失败"); } // 删除账号 #[DeleteMapping(path: "account/del")] #[PreAuthorization(auth: "account:del")] public function accountDel() { $param = Param::only(['ids' => ''], $this->request->all()); if (!$param['ids']) return $this->error("请选择要删除的角色"); $res = Account::del($this->account(), $param['ids']); return $res ? $this->success("删除成功") : $this->error("删除失败"); } }