| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365 |
- # -*- coding: utf-8 -*-
- # @Author : YY
- from datetime import datetime
- from types import NoneType
- from typing import Optional
- from pydantic import BeforeValidator, Field, PlainSerializer
- from pydantic_core import to_json
- from typing_extensions import Annotated
- from ruoyi_common.base.transformer import to_datetime, str_to_int
- from ruoyi_common.domain.entity import LoginUser
- from ruoyi_common.base.model import AuditEntity, BaseEntity, VoAccess
- class SysUserRole(BaseEntity):
-
- # 用户ID
- user_id: int
-
- # 角色ID
- role_id: int
-
- class SysUserOnline(BaseEntity):
-
- # 会话编号
- token_id: Optional[str] = None
- # 用户名称
- user_name: Annotated[
- Optional[str],
- Field(default=None,vo=VoAccess(query=True,sort=True))
- ]
- # 登录IP地址
- ip_addr: Annotated[
- Optional[str],
- Field(default=None,vo=VoAccess(query=True,sort=True))
- ]
- # 登录地址
- login_location: Optional[str] = None
- # 浏览器类型
- browser: Optional[str] = None
- # 操作系统
- os: Optional[str] = None
- # 登录时间
- login_time: Optional[datetime] = None
-
- # 部门名称
- dept_name: Optional[str] = None
-
- @classmethod
- def from_loginuser(cls, login_user:LoginUser):
- return cls(
- token_id=login_user.token.hex,
- user_name=login_user.user_name,
- dept_name=login_user.dept_name,
- ip_addr=login_user.ip_addr,
- login_location=login_user.login_location,
- browser=login_user.browser,
- os=login_user.os,
- login_time=login_user.login_time,
- )
-
- class SysRoleMenu(BaseEntity):
- # 角色ID
- role_id: int
-
- # 菜单ID
- menu_id: int
-
- class SysUserPost(BaseEntity):
- # 用户ID
- user_id: int
-
- # 岗位ID
- post_id: int
-
- class SysRoleDept(BaseEntity):
- # 角色ID
- role_id: int
-
- # 部门ID
- dept_id: int
-
- class SysPost(AuditEntity):
-
- # 岗位序号
- post_id: Annotated[
- Optional[int],
- BeforeValidator(str_to_int),
- Field(gt=0,default=None)
- ]
-
- # 岗位编码
- post_code: Annotated[
- Optional[str],
- Field(default=None,vo=VoAccess(query=True))
- ]
-
- # 岗位名称
- post_name: Annotated[
- Optional[str],
- Field(default=None,vo=VoAccess(query=True))
- ]
-
- # 岗位排序
- post_sort: Optional[int] = None
-
- # 状态(0正常 1停用)
- status: Annotated[
- Optional[str],
- Field(default=None,vo=VoAccess(query=True))
- ]
-
- # 标识 默认不存在
- flag: Annotated[
- Optional[str],
- Field(default=None,exclude=True,vo=VoAccess(body=False))
- ]
- class SysOperLog(BaseEntity):
-
- # 日志主键 #
- oper_id: Annotated[
- Optional[int],
- BeforeValidator(str_to_int),
- Field(gt=0,default=None)]
-
- # 操作模块 #
- title: Optional[str] = None
-
- # 业务类型(0其它 1新增 2修改 3删除)
- business_type: Optional[int] = None
-
- # 业务类型数组
- business_types: Optional[str] = None
-
- # 请求方法
- method: Optional[str] = None
-
- # 请求方式
- request_method: Optional[str] = None
-
- # 操作类别(0其它 1后台用户 2手机端用户)
- operator_type: Optional[int] = None
-
- # 操作人员
- oper_name: Annotated[
- Optional[str],
- Field(default=None,vo=VoAccess(query=True,sort=True))
- ]
-
- # 部门名称
- dept_name: Annotated[
- Optional[str],
- Field(default=None,vo=VoAccess(body=False))
- ]
-
- # 请求url
- oper_url: Optional[str] = None
-
- # 操作地址
- oper_ip: Annotated[
- Optional[str],
- Field(default=None,vo=VoAccess(query=True))
- ]
-
- # 操作地点
- oper_location: Optional[str] = None
-
- # 请求参数
- oper_param: Annotated[
- Optional[str],
- BeforeValidator(lambda x: to_json(x) if isinstance(x,(dict,list,tuple)) else x),
- ] = None
-
- # 返回参数
- json_result: Optional[str] = None
-
- # 操作状态(0正常 1异常)
- status: Annotated[
- Optional[int],
- Field(default=None,vo=VoAccess(query=True))
- ]
-
- # 错误消息
- error_msg: Optional[str] = None
-
- # 操作时间
- oper_time: Annotated[
- Optional[datetime],
- BeforeValidator(to_datetime()),
- Field(default=None,vo=VoAccess(query=True,sort=True))
- ]
-
-
- class SysNotice(AuditEntity):
- # 公告ID
- notice_id: Annotated[
- int,
- BeforeValidator(str_to_int),
- Field(gt=0,default=None)
- ]
- # 公告标题
- notice_title: Annotated[
- Optional[str],
- Field(default=None,vo=VoAccess(query=True))
- ]
- # 公告类型(1通知 2公告)
- notice_type: Annotated[
- Optional[str],
- Field(default=None,vo=VoAccess(query=True))
- ]
- # 公告内容
- notice_content: Annotated[
- Optional[str],
- BeforeValidator(lambda x: x.decode('utf-8') if isinstance(x, bytes) else x),
- PlainSerializer(lambda x: x.encode('utf-8'), return_type=bytes)
- ] = None
- # 公告状态(0正常 1关闭)
- status: Optional[str] = None
-
- create_by: Annotated[
- str | int | NoneType,
- Field(default=None,vo=VoAccess(body=False,query=True))
- ]
-
- class SysLogininfor(AuditEntity):
-
- # id
- info_id: Optional[int] = None
-
- # 用户账号
- user_name: Annotated[
- Optional[str],
- Field(default=None,vo=VoAccess(query=True,sort=True))
- ]
-
- # 登录状态(0成功 1失败)
- status: Annotated[
- Optional[str],
- Field(default=None,vo=VoAccess(query=True))
- ]
-
- # 登录IP地址
- ipaddr: Annotated[
- Optional[str],
- Field(default=None,vo=VoAccess(query=True))
- ]
-
- # 登录地点
- login_location: Optional[str] = None
-
- # 登录浏览器
- browser: Optional[str] = None
-
- # 登录操作系统
- os: Optional[str] = None
-
- # 登录时间
- login_time: Annotated[
- Optional[datetime],
- BeforeValidator(to_datetime()),
- Field(default=None,vo=VoAccess(query=True,sort=True))
- ]
-
- # 提示消息
- msg: Optional[str] = None
-
- class SysConfig(AuditEntity):
-
- # 参数主键
- config_id: Optional[int] = None # @Excel(name = "参数主键")
-
- # 参数名称
- config_name: Annotated[
- Optional[str],
- Field(default=None,vo=VoAccess(query=True))
- ]
-
- # 参数键名
- config_key: Annotated[
- Optional[str],
- Field(default=None,vo=VoAccess(query=True))
- ]
- # 系统内置(Y是 N否)
- config_type: Annotated[
- Optional[str],
- Field(default=None,vo=VoAccess(query=True))
- ]
-
- # 参数键值
- config_value: Optional[str] = None # @Excel(name = "参数键值")
-
- class MetaEntity(BaseEntity):
-
- # 设置该路由在侧边栏和面包屑中展示的名字
- title: Optional[str] = None # @Excel(name = "标题")
-
- # 设置该路由的图标,对应路径src/assets/icons/svg
- icon: Optional[str] = None # @Excel(name = "图标")
-
- # 设置为true,则不会被 <keep-alive>缓存
- no_cache: Optional[bool] = None # @Excel(name = "是否缓存", readConverterExp = "Y=是,N=否")
-
- # 内链地址(http(s)://开头)
- link: Optional[str] = None
-
- class RouterEntity(BaseEntity):
-
- # 路由名字
- name: Optional[str] = None # @Excel(name = "名称")
-
- # 路由路径
- path: Optional[str] = None # @Excel(name = "路径")
-
- # 组件路径
- component: Optional[str] = None # @Excel(name = "组件")
-
- # 其他元素
- meta: Optional[MetaEntity] = None # @Excel(name = "元数据")
-
- # 子路由
- children: Optional[list] = [] # @Excel(name = "子路由")
-
- # 是否隐藏路由,当设置 true 的时候该路由不会再侧边栏出现
- hidden: Optional[bool] = None # @Excel(name = "是否隐藏", readConverterExp = "Y=是,N=否")
-
- # 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式--如组件页面
- always_show: Optional[bool] = None # @Excel(name = "显示根路由", readConverterExp = "Y=是,N=否")
-
- # 重定向地址,当设置 noRedirect 的时候该路由在面包屑导航中不可被点击
- redirect: Optional[str] = None # @Excel(name = "重定向")
-
- # 排序
- sort: Optional[int] = None # @Excel(name = "排序")
-
- # 路由参数:如 {"id": 1, "name": "ry"}
- query: Optional[str] = None # @Excel(name = "查询")
|