# _*_ coding : UTF-8 _*_ # @Time : 2025/01/18 23:00 # @UpdateTime : 2025/01/18 23:00 # @Author : sonder # @File : role.py # @Software : PyCharm # @Comment : 本程序 from tortoise import fields from models.common import BaseModel class Role(BaseModel): """ 角色表模型。 """ name = fields.CharField( max_length=255, description="角色名称", source_field="role_name" # 映射到数据库字段 role_name ) """ 角色名称。 - 允许重复,因为不同部门可能有相同的角色名称。 - 最大长度为 255 个字符。 - 映射到数据库字段 role_name。 """ code = fields.CharField( max_length=255, unique=True, description="角色编码", source_field="role_code" # 映射到数据库字段 role_code ) """ 角色编码。 - 用于系统内部识别角色。 - 必须唯一。 - 最大长度为 255 个字符。 - 映射到数据库字段 role_code。 """ description = fields.CharField( max_length=255, null=True, description="角色描述", source_field="role_description" # 映射到数据库字段 role_description ) """ 角色描述。 - 最大长度为 255 个字符。 - 允许为空。 - 映射到数据库字段 role_description。 """ status = fields.SmallIntField( default=1, description="角色状态", source_field="status" ) """ 角色状态。 - 1: 正常 - 0: 禁用 - 映射到数据库字段 status。 """ permissions = fields.ManyToManyField( "models.Permission", related_name="roles", through="role_permission", description="角色权限" ) """ 角色权限。 - 多对多关系,表示角色拥有的权限。 - 通过中间表 `role_permission` 关联权限表。 """ department = fields.ForeignKeyField( "models.Department", related_name="roles", null=True, description="所属部门", source_field="department_id" # 映射到数据库字段 department_id ) """ 所属部门。 - 表示角色所属的部门。 - 如果为 null,则表示角色是全局角色。 - 映射到数据库字段 department_id。 """ class Meta: table = "role" # 数据库表名 table_description = "角色表" # 表描述 ordering = ["-create_time"] # 默认按创建时间倒序排序 class RolePermission(BaseModel): """ 角色权限中间表。 """ role = fields.ForeignKeyField( "models.Role", related_name="role_permissions", source_field="role_id" # 映射到数据库字段 role_id ) permission = fields.ForeignKeyField( "models.Permission", related_name="role_permissions", source_field="permission_id" # 映射到数据库字段 permission_id ) class Meta: table = "role_permission" # 数据库表名 table_description = "角色权限中间表" # 表描述