Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions backend/app/admin/api/v1/sys/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
from backend.app.admin.api.v1.sys.casbin import router as casbin_router
from backend.app.admin.api.v1.sys.config import router as config_router
from backend.app.admin.api.v1.sys.data_rule import router as data_rule_router
from backend.app.admin.api.v1.sys.data_rule_type import router as data_rule_type_router
from backend.app.admin.api.v1.sys.dept import router as dept_router
from backend.app.admin.api.v1.sys.dict_data import router as dict_data_router
from backend.app.admin.api.v1.sys.dict_type import router as dict_type_router
Expand All @@ -26,4 +25,3 @@
router.include_router(role_router, prefix='/roles', tags=['系统角色'])
router.include_router(user_router, prefix='/users', tags=['系统用户'])
router.include_router(data_rule_router, prefix='/data-rules', tags=['系统数据权限规则'])
router.include_router(data_rule_type_router, prefix='/data-rule-types', tags=['系统数据权限类型'])
15 changes: 11 additions & 4 deletions backend/app/admin/api/v1/sys/data_rule.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-
from typing import Annotated

from fastapi import APIRouter, Depends, Path, Query
from fastapi import APIRouter, Depends, Path, Query, Request

from backend.app.admin.schema.data_rule import CreateDataRuleParam, GetDataRuleListDetails, UpdateDataRuleParam
from backend.app.admin.service.data_rule_service import data_rule_service
Expand All @@ -12,7 +12,7 @@
from backend.common.security.permission import RequestPermission
from backend.common.security.rbac import DependsRBAC
from backend.database.db_mysql import CurrentSession
from backend.utils.serializers import select_as_dict
from backend.utils.serializers import select_as_dict, select_list_serialize

router = APIRouter()

Expand All @@ -29,6 +29,13 @@ async def get_data_rule_model_columns(model: Annotated[str, Path()]) -> Response
return response_base.success(data=models)


@router.get('/all', summary='获取所有数据规则', dependencies=[DependsJwtAuth])
async def get_all_data_rule() -> ResponseModel:
data_rules = await data_rule_service.get_all()
data = select_list_serialize(data_rules)
return response_base.success(data=data)


@router.get('/{pk}', summary='获取数据权限规则详情', dependencies=[DependsJwtAuth])
async def get_data_rule(pk: Annotated[int, Path(...)]) -> ResponseModel:
data_rule = await data_rule_service.get(pk=pk)
Expand Down Expand Up @@ -86,8 +93,8 @@ async def update_data_rule(pk: Annotated[int, Path(...)], obj: UpdateDataRulePar
DependsRBAC,
],
)
async def delete_data_rule(pk: Annotated[list[int], Query(...)]) -> ResponseModel:
count = await data_rule_service.delete(pk=pk)
async def delete_data_rule(request: Request, pk: Annotated[list[int], Query(...)]) -> ResponseModel:
count = await data_rule_service.delete(request=request, pk=pk)
if count > 0:
return response_base.success()
return response_base.fail()
85 changes: 0 additions & 85 deletions backend/app/admin/api/v1/sys/data_rule_type.py

This file was deleted.

6 changes: 3 additions & 3 deletions backend/app/admin/api/v1/sys/dept.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# -*- coding: utf-8 -*-
from typing import Annotated

from fastapi import APIRouter, Depends, Path, Query
from fastapi import APIRouter, Depends, Path, Query, Request

from backend.app.admin.schema.dept import CreateDeptParam, GetDeptListDetails, UpdateDeptParam
from backend.app.admin.service.dept_service import dept_service
Expand Down Expand Up @@ -69,8 +69,8 @@ async def update_dept(pk: Annotated[int, Path(...)], obj: UpdateDeptParam) -> Re
DependsRBAC,
],
)
async def delete_dept(pk: Annotated[int, Path(...)]) -> ResponseModel:
count = await dept_service.delete(pk=pk)
async def delete_dept(request: Request, pk: Annotated[int, Path(...)]) -> ResponseModel:
count = await dept_service.delete(request=request, pk=pk)
if count > 0:
return response_base.success()
return response_base.fail()
4 changes: 2 additions & 2 deletions backend/app/admin/api/v1/sys/menu.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,8 @@ async def update_menu(pk: Annotated[int, Path(...)], obj: UpdateMenuParam) -> Re
DependsRBAC,
],
)
async def delete_menu(pk: Annotated[int, Path(...)]) -> ResponseModel:
count = await menu_service.delete(pk=pk)
async def delete_menu(request: Request, pk: Annotated[int, Path(...)]) -> ResponseModel:
count = await menu_service.delete(request=request, pk=pk)
if count > 0:
return response_base.success()
return response_base.fail()
11 changes: 9 additions & 2 deletions backend/app/admin/api/v1/sys/role.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
UpdateRoleParam,
UpdateRoleRuleParam,
)
from backend.app.admin.service.data_rule_service import data_rule_service
from backend.app.admin.service.menu_service import menu_service
from backend.app.admin.service.role_service import role_service
from backend.common.pagination import DependsPagination, paging_data
Expand Down Expand Up @@ -44,6 +45,12 @@ async def get_role_all_menus(pk: Annotated[int, Path(...)]) -> ResponseModel:
return response_base.success(data=menu)


@router.get('/{pk}/rules', summary='获取角色所有数据规则', dependencies=[DependsJwtAuth])
async def get_role_all_rules(pk: Annotated[int, Path(...)]) -> ResponseModel:
rule = await data_rule_service.get_role_rules(pk=pk)
return response_base.success(data=rule)


@router.get('/{pk}', summary='获取角色详情', dependencies=[DependsJwtAuth])
async def get_role(pk: Annotated[int, Path(...)]) -> ResponseModel:
role = await role_service.get(pk=pk)
Expand Down Expand Up @@ -140,8 +147,8 @@ async def update_role_rules(
DependsRBAC,
],
)
async def delete_role(pk: Annotated[list[int], Query(...)]) -> ResponseModel:
count = await role_service.delete(pk=pk)
async def delete_role(request: Request, pk: Annotated[list[int], Query(...)]) -> ResponseModel:
count = await role_service.delete(request=request, pk=pk)
if count > 0:
return response_base.success()
return response_base.fail()
83 changes: 0 additions & 83 deletions backend/app/admin/crud/crud_data_rule_type.py

This file was deleted.

6 changes: 5 additions & 1 deletion backend/app/admin/crud/crud_role.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,11 @@ async def get_list(self, name: str = None, data_scope: int = None, status: int =
:param status:
:return:
"""
stmt = select(self.model).options(selectinload(self.model.menus)).order_by(desc(self.model.created_time))
stmt = (
select(self.model)
.options(selectinload(self.model.menus), selectinload(self.model.rules))
.order_by(desc(self.model.created_time))
)
where_list = []
if name:
where_list.append(self.model.name.like(f'%{name}%'))
Expand Down
5 changes: 4 additions & 1 deletion backend/app/admin/crud/crud_user.py
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,10 @@ async def get_list(self, dept: int = None, username: str = None, phone: str = No
select(self.model)
.options(
selectinload(self.model.dept),
selectinload(self.model.roles).selectinload(Role.menus),
selectinload(self.model.roles).options(
selectinload(Role.menus),
selectinload(Role.rules),
),
)
.order_by(desc(self.model.join_time))
)
Expand Down
1 change: 0 additions & 1 deletion backend/app/admin/model/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
from backend.app.admin.model.casbin_rule import CasbinRule
from backend.app.admin.model.config import Config
from backend.app.admin.model.data_rule import DataRule
from backend.app.admin.model.data_rule_type import DataRuleType
from backend.app.admin.model.dept import Dept
from backend.app.admin.model.dict_data import DictData
from backend.app.admin.model.dict_type import DictType
Expand Down
8 changes: 1 addition & 7 deletions backend/app/admin/model/data_rule.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from sqlalchemy import ForeignKey, String
from sqlalchemy import String
from sqlalchemy.orm import Mapped, mapped_column, relationship

from backend.app.admin.model.m2m import sys_role_data_rule
Expand All @@ -22,11 +22,5 @@ class DataRule(Base):
)
value: Mapped[str] = mapped_column(String(255), comment='规则值')

# 数据权限规则类型一对多
type_id: Mapped[int] = mapped_column(
ForeignKey('sys_data_rule_type.id', ondelete='CASCADE'), comment='数据权限规则类型关联ID'
)
type: Mapped['DataRuleType'] = relationship(init=False, back_populates='rules') # noqa: F821

# 角色规则多对多
roles: Mapped[list['Role']] = relationship(init=False, secondary=sys_role_data_rule, back_populates='rules') # noqa: F821
21 changes: 0 additions & 21 deletions backend/app/admin/model/data_rule_type.py

This file was deleted.

1 change: 0 additions & 1 deletion backend/app/admin/schema/data_rule.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@


class DataRuleSchemaBase(SchemaBase):
type_id: int
name: str
model: str
column: str
Expand Down
Loading