From 2387c2e7df6480b912608ca6336c547f79f2aadd Mon Sep 17 00:00:00 2001 From: insistence <3055204202@qq.com> Date: Sat, 15 Jun 2024 15:44:50 +0800 Subject: [PATCH 1/7] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E9=80=9A=E7=94=A8?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E6=8E=A5=E5=8F=A3=E8=BF=94=E5=9B=9Eurl?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-fastapi-backend/module_admin/service/common_service.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-fastapi-backend/module_admin/service/common_service.py b/ruoyi-fastapi-backend/module_admin/service/common_service.py index 883f18c..f2d36be 100644 --- a/ruoyi-fastapi-backend/module_admin/service/common_service.py +++ b/ruoyi-fastapi-backend/module_admin/service/common_service.py @@ -42,7 +42,7 @@ class CommonService: fileName=f'{UploadConfig.UPLOAD_PREFIX}/{relative_path}/{filename}', newFileName=filename, originalFilename=file.filename, - url=f'{request.base_url}{UploadConfig.UPLOAD_PREFIX[1:]}/{relative_path}/{filename}' + url=f'{UploadConfig.UPLOAD_PREFIX}/{relative_path}/{filename}' ), message='上传成功' ) From 88f9574aaa6955f974d4ebe037dbdff10d754a23 Mon Sep 17 00:00:00 2001 From: insistence <3055204202@qq.com> Date: Sun, 16 Jun 2024 15:23:28 +0800 Subject: [PATCH 2/7] =?UTF-8?q?chore:=20=E5=9B=9E=E9=80=80=E9=80=9A?= =?UTF-8?q?=E7=94=A8=E4=B8=8A=E4=BC=A0=E6=8E=A5=E5=8F=A3=E8=BF=94=E5=9B=9E?= =?UTF-8?q?url=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-fastapi-backend/module_admin/service/common_service.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-fastapi-backend/module_admin/service/common_service.py b/ruoyi-fastapi-backend/module_admin/service/common_service.py index f2d36be..883f18c 100644 --- a/ruoyi-fastapi-backend/module_admin/service/common_service.py +++ b/ruoyi-fastapi-backend/module_admin/service/common_service.py @@ -42,7 +42,7 @@ class CommonService: fileName=f'{UploadConfig.UPLOAD_PREFIX}/{relative_path}/{filename}', newFileName=filename, originalFilename=file.filename, - url=f'{UploadConfig.UPLOAD_PREFIX}/{relative_path}/{filename}' + url=f'{request.base_url}{UploadConfig.UPLOAD_PREFIX[1:]}/{relative_path}/{filename}' ), message='上传成功' ) From d08fe67ab84e9c7f39615e8862cb83d8dd620b9a Mon Sep 17 00:00:00 2001 From: insistence <3055204202@qq.com> Date: Wed, 26 Jun 2024 21:05:25 +0800 Subject: [PATCH 3/7] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=90=84=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E6=96=B0=E5=A2=9E=E6=95=B0=E6=8D=AE=E6=97=B6=E5=88=9B?= =?UTF-8?q?=E5=BB=BA=E6=97=B6=E9=97=B4=E8=AE=B0=E5=BD=95=E5=BC=82=E5=B8=B8?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module_admin/controller/config_controller.py | 2 ++ .../module_admin/controller/dept_controller.py | 2 ++ .../module_admin/controller/dict_controller.py | 4 ++++ .../module_admin/controller/job_controller.py | 2 ++ .../module_admin/controller/menu_controller.py | 2 ++ .../module_admin/controller/notice_controller.py | 2 ++ .../module_admin/controller/post_controler.py | 2 ++ .../module_admin/controller/role_controller.py | 2 ++ .../module_admin/controller/user_controller.py | 2 ++ ruoyi-fastapi-backend/module_admin/service/user_service.py | 7 +++++-- 10 files changed, 25 insertions(+), 2 deletions(-) diff --git a/ruoyi-fastapi-backend/module_admin/controller/config_controller.py b/ruoyi-fastapi-backend/module_admin/controller/config_controller.py index 576d62c..bc442d0 100644 --- a/ruoyi-fastapi-backend/module_admin/controller/config_controller.py +++ b/ruoyi-fastapi-backend/module_admin/controller/config_controller.py @@ -31,7 +31,9 @@ async def get_system_config_list(request: Request, config_page_query: ConfigPage async def add_system_config(request: Request, add_config: ConfigModel, query_db: AsyncSession = Depends(get_db), current_user: CurrentUserModel = Depends(LoginService.get_current_user)): try: add_config.create_by = current_user.user.user_name + add_config.create_time = datetime.now() add_config.update_by = current_user.user.user_name + add_config.update_time = datetime.now() add_config_result = await ConfigService.add_config_services(request, query_db, add_config) if add_config_result.is_success: logger.info(add_config_result.message) diff --git a/ruoyi-fastapi-backend/module_admin/controller/dept_controller.py b/ruoyi-fastapi-backend/module_admin/controller/dept_controller.py index 741dd7e..476ca3a 100644 --- a/ruoyi-fastapi-backend/module_admin/controller/dept_controller.py +++ b/ruoyi-fastapi-backend/module_admin/controller/dept_controller.py @@ -41,7 +41,9 @@ async def get_system_dept_list(request: Request, dept_query: DeptQueryModel = De async def add_system_dept(request: Request, add_dept: DeptModel, query_db: AsyncSession = Depends(get_db), current_user: CurrentUserModel = Depends(LoginService.get_current_user)): try: add_dept.create_by = current_user.user.user_name + add_dept.create_time = datetime.now() add_dept.update_by = current_user.user.user_name + add_dept.update_time = datetime.now() add_dept_result = await DeptService.add_dept_services(query_db, add_dept) if add_dept_result.is_success: logger.info(add_dept_result.message) diff --git a/ruoyi-fastapi-backend/module_admin/controller/dict_controller.py b/ruoyi-fastapi-backend/module_admin/controller/dict_controller.py index fcf96eb..a686ef8 100644 --- a/ruoyi-fastapi-backend/module_admin/controller/dict_controller.py +++ b/ruoyi-fastapi-backend/module_admin/controller/dict_controller.py @@ -31,7 +31,9 @@ async def get_system_dict_type_list(request: Request, dict_type_page_query: Dict async def add_system_dict_type(request: Request, add_dict_type: DictTypeModel, query_db: AsyncSession = Depends(get_db), current_user: CurrentUserModel = Depends(LoginService.get_current_user)): try: add_dict_type.create_by = current_user.user.user_name + add_dict_type.create_time = datetime.now() add_dict_type.update_by = current_user.user.user_name + add_dict_type.update_time = datetime.now() add_dict_type_result = await DictTypeService.add_dict_type_services(request, query_db, add_dict_type) if add_dict_type_result.is_success: logger.info(add_dict_type_result.message) @@ -160,7 +162,9 @@ async def get_system_dict_data_list(request: Request, dict_data_page_query: Dict async def add_system_dict_data(request: Request, add_dict_data: DictDataModel, query_db: AsyncSession = Depends(get_db), current_user: CurrentUserModel = Depends(LoginService.get_current_user)): try: add_dict_data.create_by = current_user.user.user_name + add_dict_data.create_time = datetime.now() add_dict_data.update_by = current_user.user.user_name + add_dict_data.update_time = datetime.now() add_dict_data_result = await DictDataService.add_dict_data_services(request, query_db, add_dict_data) if add_dict_data_result.is_success: logger.info(add_dict_data_result.message) diff --git a/ruoyi-fastapi-backend/module_admin/controller/job_controller.py b/ruoyi-fastapi-backend/module_admin/controller/job_controller.py index 2204722..04cc6e0 100644 --- a/ruoyi-fastapi-backend/module_admin/controller/job_controller.py +++ b/ruoyi-fastapi-backend/module_admin/controller/job_controller.py @@ -32,7 +32,9 @@ async def get_system_job_list(request: Request, job_page_query: JobPageQueryMode async def add_system_job(request: Request, add_job: JobModel, query_db: AsyncSession = Depends(get_db), current_user: CurrentUserModel = Depends(LoginService.get_current_user)): try: add_job.create_by = current_user.user.user_name + add_job.create_time = datetime.now() add_job.update_by = current_user.user.user_name + add_job.update_time = datetime.now() add_job_result = await JobService.add_job_services(query_db, add_job) if add_job_result.is_success: logger.info(add_job_result.message) diff --git a/ruoyi-fastapi-backend/module_admin/controller/menu_controller.py b/ruoyi-fastapi-backend/module_admin/controller/menu_controller.py index 49d1db0..949fd1a 100644 --- a/ruoyi-fastapi-backend/module_admin/controller/menu_controller.py +++ b/ruoyi-fastapi-backend/module_admin/controller/menu_controller.py @@ -50,7 +50,9 @@ async def get_system_menu_list(request: Request, menu_query: MenuQueryModel = De async def add_system_menu(request: Request, add_menu: MenuModel, query_db: AsyncSession = Depends(get_db), current_user: CurrentUserModel = Depends(LoginService.get_current_user)): try: add_menu.create_by = current_user.user.user_name + add_menu.create_time = datetime.now() add_menu.update_by = current_user.user.user_name + add_menu.update_time = datetime.now() add_menu_result = await MenuService.add_menu_services(query_db, add_menu) if add_menu_result.is_success: logger.info(add_menu_result.message) diff --git a/ruoyi-fastapi-backend/module_admin/controller/notice_controller.py b/ruoyi-fastapi-backend/module_admin/controller/notice_controller.py index 1525727..0e2c0d7 100644 --- a/ruoyi-fastapi-backend/module_admin/controller/notice_controller.py +++ b/ruoyi-fastapi-backend/module_admin/controller/notice_controller.py @@ -30,7 +30,9 @@ async def get_system_notice_list(request: Request, notice_page_query: NoticePage async def add_system_notice(request: Request, add_notice: NoticeModel, query_db: AsyncSession = Depends(get_db), current_user: CurrentUserModel = Depends(LoginService.get_current_user)): try: add_notice.create_by = current_user.user.user_name + add_notice.create_time = datetime.now() add_notice.update_by = current_user.user.user_name + add_notice.update_time = datetime.now() add_notice_result = await NoticeService.add_notice_services(query_db, add_notice) if add_notice_result.is_success: logger.info(add_notice_result.message) diff --git a/ruoyi-fastapi-backend/module_admin/controller/post_controler.py b/ruoyi-fastapi-backend/module_admin/controller/post_controler.py index 046ec63..2128a68 100644 --- a/ruoyi-fastapi-backend/module_admin/controller/post_controler.py +++ b/ruoyi-fastapi-backend/module_admin/controller/post_controler.py @@ -32,7 +32,9 @@ async def get_system_post_list(request: Request, post_page_query: PostPageQueryM async def add_system_post(request: Request, add_post: PostModel, query_db: AsyncSession = Depends(get_db), current_user: CurrentUserModel = Depends(LoginService.get_current_user)): try: add_post.create_by = current_user.user.user_name + add_post.create_time = datetime.now() add_post.update_by = current_user.user.user_name + add_post.update_time = datetime.now() add_post_result = await PostService.add_post_services(query_db, add_post) if add_post_result.is_success: logger.info(add_post_result.message) diff --git a/ruoyi-fastapi-backend/module_admin/controller/role_controller.py b/ruoyi-fastapi-backend/module_admin/controller/role_controller.py index 6b848c9..068d94f 100644 --- a/ruoyi-fastapi-backend/module_admin/controller/role_controller.py +++ b/ruoyi-fastapi-backend/module_admin/controller/role_controller.py @@ -46,7 +46,9 @@ async def get_system_role_list(request: Request, role_page_query: RolePageQueryM async def add_system_role(request: Request, add_role: AddRoleModel, query_db: AsyncSession = Depends(get_db), current_user: CurrentUserModel = Depends(LoginService.get_current_user)): try: add_role.create_by = current_user.user.user_name + add_role.create_time = datetime.now() add_role.update_by = current_user.user.user_name + add_role.update_time = datetime.now() add_role_result = await RoleService.add_role_services(query_db, add_role) if add_role_result.is_success: logger.info(add_role_result.message) diff --git a/ruoyi-fastapi-backend/module_admin/controller/user_controller.py b/ruoyi-fastapi-backend/module_admin/controller/user_controller.py index fc9f884..93c13ca 100644 --- a/ruoyi-fastapi-backend/module_admin/controller/user_controller.py +++ b/ruoyi-fastapi-backend/module_admin/controller/user_controller.py @@ -47,7 +47,9 @@ async def add_system_user(request: Request, add_user: AddUserModel, query_db: As try: add_user.password = PwdUtil.get_password_hash(add_user.password) add_user.create_by = current_user.user.user_name + add_user.create_time = datetime.now() add_user.update_by = current_user.user.user_name + add_user.update_time = datetime.now() add_user_result = await UserService.add_user_services(query_db, add_user) if add_user_result.is_success: logger.info(add_user_result.message) diff --git a/ruoyi-fastapi-backend/module_admin/service/user_service.py b/ruoyi-fastapi-backend/module_admin/service/user_service.py index 40ff531..d1132de 100644 --- a/ruoyi-fastapi-backend/module_admin/service/user_service.py +++ b/ruoyi-fastapi-backend/module_admin/service/user_service.py @@ -275,7 +275,9 @@ class UserService: sex=row['sex'], status=row['status'], createBy=current_user.user.user_name, - updateBy=current_user.user.user_name + createTime=datetime.now(), + updateBy=current_user.user.user_name, + updateTime=datetime.now() ) user_info = await UserDao.get_user_by_info(query_db, UserModel(userName=row['user_name'])) if user_info: @@ -289,7 +291,8 @@ class UserService: phonenumber=str(row['phonenumber']), sex=row['sex'], status=row['status'], - updateBy=current_user.user.user_name + updateBy=current_user.user.user_name, + updateTime=datetime.now() ).model_dump(exclude_unset=True) await UserDao.edit_user_dao(query_db, edit_user) else: From 43f903c6e0878fa012ea5b19ebf9c4ddae3bd2ff Mon Sep 17 00:00:00 2001 From: insistence <3055204202@qq.com> Date: Thu, 27 Jun 2024 21:51:01 +0800 Subject: [PATCH 4/7] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E6=8C=82=E8=BD=BD=E5=88=B0=E6=A0=B9=E7=9B=AE=E5=BD=95=E6=97=B6?= =?UTF-8?q?=E8=B7=AF=E7=94=B1=E5=8A=A0=E8=BD=BD=E5=BC=82=E5=B8=B8=E7=AD=89?= =?UTF-8?q?=E4=B8=80=E7=B3=BB=E5=88=97=E7=9B=B8=E5=85=B3=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module_admin/entity/vo/login_vo.py | 32 ++- .../module_admin/service/login_service.py | 229 ++++++++++++++---- 2 files changed, 216 insertions(+), 45 deletions(-) diff --git a/ruoyi-fastapi-backend/module_admin/entity/vo/login_vo.py b/ruoyi-fastapi-backend/module_admin/entity/vo/login_vo.py index 13ad73a..76bb7b8 100644 --- a/ruoyi-fastapi-backend/module_admin/entity/vo/login_vo.py +++ b/ruoyi-fastapi-backend/module_admin/entity/vo/login_vo.py @@ -1,8 +1,9 @@ import re from pydantic import BaseModel, ConfigDict, model_validator from pydantic.alias_generators import to_camel -from typing import Optional +from typing import Optional, List, Union from exceptions.exception import ModelValidatorException +from module_admin.entity.vo.menu_vo import MenuModel class UserLogin(BaseModel): @@ -52,4 +53,31 @@ class SmsCode(BaseModel): is_success: Optional[bool] = None sms_code: str session_id: str - message: Optional[str] = None \ No newline at end of file + message: Optional[str] = None + + +class MenuTreeModel(MenuModel): + children: Optional[Union[List['MenuTreeModel'], None]] = None + + +class MetaModel(BaseModel): + model_config = ConfigDict(alias_generator=to_camel) + + title: Optional[str] = None + icon: Optional[str] = None + no_cache: Optional[bool] = None + link: Optional[str] = None + + +class RouterModel(BaseModel): + model_config = ConfigDict(alias_generator=to_camel) + + name: Optional[str] = None + path: Optional[str] = None + hidden: Optional[bool] = None + redirect: Optional[str] = None + component: Optional[str] = None + query: Optional[str] = None + always_show: Optional[bool] = None + meta: Optional[MetaModel] = None + children: Optional[Union[List['RouterModel'], None]] = None diff --git a/ruoyi-fastapi-backend/module_admin/service/login_service.py b/ruoyi-fastapi-backend/module_admin/service/login_service.py index 5ae6974..5f9eaaa 100644 --- a/ruoyi-fastapi-backend/module_admin/service/login_service.py +++ b/ruoyi-fastapi-backend/module_admin/service/login_service.py @@ -24,6 +24,7 @@ class CustomOAuth2PasswordRequestForm(OAuth2PasswordRequestForm): """ 自定义OAuth2PasswordRequestForm类,增加验证码及会话编号参数 """ + def __init__( self, grant_type: str = Form(default=None, regex="password"), @@ -47,6 +48,7 @@ class LoginService: """ 登录模块服务层 """ + @classmethod async def authenticate_user(cls, request: Request, query_db: AsyncSession, login_user: UserLogin): """ @@ -231,57 +233,95 @@ class LoginService: """ query_user = await UserDao.get_user_by_id(query_db, user_id=user_id) user_router_menu = sorted([row for row in query_user.get('user_menu_info') if row.menu_type in ['M', 'C']], key=lambda x: x.order_num) - user_router = cls.__generate_user_router_menu(0, user_router_menu) - return user_router + menus = cls.__generate_menus(0, user_router_menu) + user_router = cls.__generate_user_router_menu(menus) + return [router.model_dump(exclude_unset=True, by_alias=True) for router in user_router] @classmethod - def __generate_user_router_menu(cls, pid: int, permission_list): + def __generate_menus(cls, pid: int, permission_list: List[SysMenu]): """ - 工具方法:根据菜单信息生成路由信息树形嵌套数据 + 工具方法:根据菜单信息生成菜单信息树形嵌套数据 :param pid: 菜单id :param permission_list: 菜单列表信息 - :return: 路由信息树形嵌套数据 + :return: 菜单信息树形嵌套数据 """ - router_list = [] + menu_list: List[MenuTreeModel] = [] for permission in permission_list: if permission.parent_id == pid: - children = cls.__generate_user_router_menu(permission.menu_id, permission_list) - router_list_data = {} - if permission.menu_type == 'M': - router_list_data['name'] = permission.path.capitalize() - router_list_data['hidden'] = False if permission.visible == '0' else True - if permission.parent_id == 0: - router_list_data['component'] = 'Layout' - router_list_data['path'] = f'/{permission.path}' - else: - router_list_data['component'] = 'ParentView' - router_list_data['path'] = permission.path - if permission.is_frame == 1: - router_list_data['redirect'] = 'noRedirect' - else: - router_list_data['path'] = permission.path - if children: - router_list_data['alwaysShow'] = True - router_list_data['children'] = children - router_list_data['meta'] = { - 'title': permission.menu_name, - 'icon': permission.icon, - 'noCache': False if permission.is_cache == '0' else True, - 'link': permission.path if permission.is_frame == 0 else None - } - elif permission.menu_type == 'C': - router_list_data['name'] = permission.path.capitalize() - router_list_data['path'] = permission.path - router_list_data['query'] = permission.query - router_list_data['hidden'] = False if permission.visible == '0' else True - router_list_data['component'] = permission.component - router_list_data['meta'] = { - 'title': permission.menu_name, - 'icon': permission.icon, - 'noCache': False if permission.is_cache == '0' else True, - 'link': permission.path if permission.is_frame == 0 else None - } - router_list.append(router_list_data) + children = cls.__generate_menus(permission.menu_id, permission_list) + menu_list_data = MenuTreeModel(**CamelCaseUtil.transform_result(permission)) + if children: + menu_list_data.children = children + menu_list.append(menu_list_data) + + return menu_list + + @classmethod + def __generate_user_router_menu(cls, permission_list: List[MenuTreeModel]): + """ + 工具方法:根据菜单树信息生成路由信息树形嵌套数据 + :param permission_list: 菜单树列表信息 + :return: 路由信息树形嵌套数据 + """ + router_list: List[RouterModel] = [] + for permission in permission_list: + router = RouterModel( + hidden=True if permission.visible == '1' else False, + name=RouterUtil.get_router_name(permission), + path=RouterUtil.get_router_path(permission), + component=RouterUtil.get_component(permission), + query=permission.query, + meta=MetaModel( + title=permission.menu_name, + icon=permission.icon, + noCache=True if permission.is_cache == 1 else False, + link=permission.path if RouterUtil.is_http(permission.path) else None + ) + ) + c_menus = permission.children + if c_menus and permission.menu_type == 'M': + router.always_show = True + router.redirect = 'noRedirect' + router.children = cls.__generate_user_router_menu(c_menus) + elif RouterUtil.is_menu_frame(permission): + router.meta = None + children_list: List[RouterModel] = [] + children = RouterModel( + path=permission.path, + component=permission.component, + name=permission.path.capitalize(), + meta=MetaModel( + title=permission.menu_name, + icon=permission.icon, + noCache=True if permission.is_cache == 1 else False, + link=permission.path if RouterUtil.is_http(permission.path) else None + ), + query=permission.query + ) + children_list.append(children) + router.children = children_list + elif permission.parent_id == 0 and RouterUtil.is_inner_link(permission): + router.meta = MetaModel( + title=permission.menu_name, + icon=permission.icon + ) + router.path = '/' + children_list: List[RouterModel] = [] + router_path = RouterUtil.inner_link_replace_each(permission.path) + children = RouterModel( + path=router_path, + component='InnerLink', + name=router_path.capitalize(), + meta=MetaModel( + title=permission.menu_name, + icon=permission.icon, + link=permission.path if RouterUtil.is_http(permission.path) else None + ) + ) + children_list.append(children) + router.children = children_list + + router_list.append(router) return router_list @@ -386,3 +426,106 @@ class LoginService: # await request.app.state.redis.delete(f'{current_user.user.user_id}_session_id') return True + + +class RouterUtil: + """ + 路由处理工具类 + """ + + @classmethod + def get_router_name(cls, menu: MenuTreeModel): + """ + 获取路由名称 + :param menu: 菜单数对象 + :return: 路由名称 + """ + router_name = menu.path.capitalize() + if cls.is_menu_frame(menu): + router_name = '' + + return router_name + + @classmethod + def get_router_path(cls, menu: MenuTreeModel): + """ + 获取路由地址 + :param menu: 菜单数对象 + :return: 路由地址 + """ + # 内链打开外网方式 + router_path = menu.path + if menu.parent_id != 0 and cls.is_inner_link(menu): + router_path = cls.inner_link_replace_each(router_path) + # 非外链并且是一级目录(类型为目录) + if menu.parent_id == 0 and menu.menu_type == 'M' and menu.is_frame == 1: + router_path = f'/{menu.path}' + # 非外链并且是一级目录(类型为菜单) + elif cls.is_menu_frame(menu): + router_path = '/' + return router_path + + @classmethod + def get_component(cls, menu: MenuTreeModel): + """ + 获取组件信息 + :param menu: 菜单数对象 + :return: 组件信息 + """ + component = 'Layout' + if menu.component and not cls.is_menu_frame(menu): + component = menu.component + elif menu.component and menu.parent_id != 0 and cls.is_inner_link(menu): + component = 'InnerLink' + elif menu.component and cls.is_parent_view(menu): + component = 'ParentView' + return component + + @classmethod + def is_menu_frame(cls, menu: MenuTreeModel): + """ + 判断是否为菜单内部跳转 + :param menu: 菜单数对象 + :return: 是否为菜单内部跳转 + """ + return menu.parent_id == 0 and menu.menu_type == 'C' and menu.is_frame == 1 + + @classmethod + def is_inner_link(cls, menu: MenuTreeModel): + """ + 判断是否为内链组件 + :param menu: 菜单数对象 + :return: 是否为内链组件 + """ + return menu.is_frame == 1 and cls.is_http(menu.path) + + @classmethod + def is_parent_view(cls, menu: MenuTreeModel): + """ + 判断是否为parent_view组件 + :param menu: 菜单数对象 + :return: 是否为parent_view组件 + """ + return menu.parent_id != 0 and menu.menu_type == 'M' + + @classmethod + def is_http(cls, link: str): + """ + 判断是否为http(s)://开头 + :param link: 链接 + :return: 是否为http(s)://开头 + """ + return link.startswith('http://') or link.startswith('https://') + + @classmethod + def inner_link_replace_each(cls, path: str): + """ + 内链域名特殊字符替换 + :param path: 内链域名 + :return: 替换后的内链域名 + """ + old_values = ["http://", "https://", "www.", ".", ":"] + new_values = ["", "", "", "/", "/"] + for old, new in zip(old_values, new_values): + path = path.replace(old, new) + return path From 2cf5268f7ddf5df6aebec70c6a17e1cd0c2273d6 Mon Sep 17 00:00:00 2001 From: insistence <3055204202@qq.com> Date: Fri, 28 Jun 2024 14:31:22 +0800 Subject: [PATCH 5/7] =?UTF-8?q?perf:=20=E4=BF=AE=E6=94=B9=E4=BB=A3?= =?UTF-8?q?=E7=90=86localhost=E4=B8=BA127.0.0.1=E4=BB=A5=E9=80=82=E9=85=8D?= =?UTF-8?q?=E9=83=A8=E5=88=86=E8=AE=BE=E5=A4=87=E8=A7=A3=E6=9E=90localhost?= =?UTF-8?q?=E5=BC=82=E5=B8=B8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-fastapi-frontend/vite.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ruoyi-fastapi-frontend/vite.config.js b/ruoyi-fastapi-frontend/vite.config.js index e1e8f83..ba9fd12 100644 --- a/ruoyi-fastapi-frontend/vite.config.js +++ b/ruoyi-fastapi-frontend/vite.config.js @@ -31,7 +31,7 @@ export default defineConfig(({ mode, command }) => { proxy: { // https://cn.vitejs.dev/config/#server-proxy '/dev-api': { - target: 'http://localhost:9099', + target: 'http://127.0.0.1:9099', changeOrigin: true, rewrite: (p) => p.replace(/^\/dev-api/, '') } From b04debcf75600269a520de791160c76db6c9e8aa Mon Sep 17 00:00:00 2001 From: insistence <3055204202@qq.com> Date: Fri, 28 Jun 2024 14:31:48 +0800 Subject: [PATCH 6/7] =?UTF-8?q?chore:=20=E5=8D=87=E7=BA=A7=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E8=87=B31.2.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-fastapi-backend/.env.dev | 2 +- ruoyi-fastapi-backend/.env.prod | 2 +- ruoyi-fastapi-frontend/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ruoyi-fastapi-backend/.env.dev b/ruoyi-fastapi-backend/.env.dev index f982a6c..955d39c 100644 --- a/ruoyi-fastapi-backend/.env.dev +++ b/ruoyi-fastapi-backend/.env.dev @@ -10,7 +10,7 @@ APP_HOST = '0.0.0.0' # 应用端口 APP_PORT = 9099 # 应用版本 -APP_VERSION= '1.2.0' +APP_VERSION= '1.2.1' # 应用是否开启热重载 APP_RELOAD = true # 应用是否开启IP归属区域查询 diff --git a/ruoyi-fastapi-backend/.env.prod b/ruoyi-fastapi-backend/.env.prod index c651f43..c2b1560 100644 --- a/ruoyi-fastapi-backend/.env.prod +++ b/ruoyi-fastapi-backend/.env.prod @@ -10,7 +10,7 @@ APP_HOST = '0.0.0.0' # 应用端口 APP_PORT = 9099 # 应用版本 -APP_VERSION= '1.2.0' +APP_VERSION= '1.2.1' # 应用是否开启热重载 APP_RELOAD = false # 应用是否开启IP归属区域查询 diff --git a/ruoyi-fastapi-frontend/package.json b/ruoyi-fastapi-frontend/package.json index d0e0a6a..c755a8a 100644 --- a/ruoyi-fastapi-frontend/package.json +++ b/ruoyi-fastapi-frontend/package.json @@ -1,6 +1,6 @@ { "name": "vfadmin", - "version": "1.2.0", + "version": "1.2.1", "description": "vfadmin管理系统", "author": "insistence", "license": "MIT", From ad20a5da7058e47a20b88cc9e14d10457780b786 Mon Sep 17 00:00:00 2001 From: insistence <3055204202@qq.com> Date: Fri, 28 Jun 2024 14:35:18 +0800 Subject: [PATCH 7/7] =?UTF-8?q?docs:=20=E6=9B=B4=E6=96=B0README=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 14975b2..6794146 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,12 @@
-
- + @@ -17,7 +17,6 @@ - ## 平台简介 RuoYi-Vue3-FastAPI是一套全部开源的快速开发平台,毫无保留给个人及企业免费使用。