refactor: P3a 模型层迁入 src/modules/(22 模型)

- 19 个模块目录(system/association/cms/dictionary/configuration/log 等)
- 一对一 16 个 + 合并 3 组(dict+dict_item、config+config_item、login_log+operation_log)
- 重写模型 import:base_db/base_model→src.common、db→src.core.database、
  case_converter/rich_text/request→src.common.utils
- application/models/ 全部替换为 shim(指向 src.modules)
- src/models_registry.py 改为从 src.modules 全量导入

【修复】codemod 两处 bug:shim 与 registry 的 import 路径含斜杠(已改点分);
strip_license 误剥无许可头文件的 docstring 开头(log/models.py 已补回)

【验收】22 表全量识别;应用启动;pytest 5 passed

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
DjangoAdmin Dev
2026-08-07 13:48:30 +08:00
co-authored by Claude
parent 658ee6d596
commit 6de4f3bef2
64 changed files with 3126 additions and 3399 deletions
+4 -182
View File
@@ -1,186 +1,8 @@
""" """
文章模型模块 兼容 shim(绞杀者迁移期间保留)
============================================================= =============================================================
提供文章管理的数据模型定义,用于管理文章内容。 模型已迁移至 src.modules.cms.article.models。
本文件仅作兼容转发,最终在 P7(切尾)阶段删除。
""" """
from src.modules.cms.article.models import * # noqa: F401,F403
from application.models.base_db import BaseDB
from application.models.base_model import BaseModel
from config import DB_PREFIX
from extensions import db
from utils.case_converter import convert_camel_to_snake
# ============================================================
# 文章模型
# ============================================================
class Article(BaseModel, BaseDB):
"""
文章模型
用于存储文章信息,包括:分类、标题、封面、图集、导读、内容、作者、状态等。
Attributes:
id: 主键ID(继承自 BaseModel)
category_id: 分类ID(Integer,可选)
title: 文章标题(String(150),可选)
cover: 文章封面(String(255),可选)
images: 文章图集(Text,可选,JSON格式存储多张图片)
intro: 文章导读(String(255),可选)
content: 文章内容(Text,可选,富文本内容)
author: 文章作者(String(100),可选)
status: 文章状态(Integer,0-正常,1-下架,默认0)
click: 文章点击率(Integer,默认0)
sort: 文章排序(Integer,默认0)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "article"
# ============================================================
# 字段定义
# ============================================================
# 分类ID
category_id = db.Column(
db.Integer,
nullable=True,
comment="分类ID"
)
# 文章标题
title = db.Column(
db.String(150),
nullable=True,
comment="文章标题"
)
# 文章封面
cover = db.Column(
db.String(255),
nullable=True,
comment="文章封面"
)
# 文章图集(JSON格式存储多张图片)
images = db.Column(
db.Text,
nullable=True,
comment="文章图集"
)
# 文章导读
intro = db.Column(
db.String(255),
nullable=True,
comment="文章导读"
)
# 文章内容
content = db.Column(
db.Text,
nullable=True,
comment="文章内容"
)
# 文章作者
author = db.Column(
db.String(100),
nullable=True,
comment="文章作者"
)
# 文章状态:0-正常 1-下架
status = db.Column(
db.Integer,
nullable=False,
default=0,
comment="文章状态:0-正常 1-下架"
)
# 文章点击率
click = db.Column(
db.Integer,
nullable=False,
default=0,
comment="文章点击率"
)
# 文章排序
sort = db.Column(
db.Integer,
nullable=False,
default=0,
comment="文章排序"
)
# ============================================================
# 常量定义
# ============================================================
class Status:
"""文章状态常量"""
NORMAL = 0 # 正常
OFFLINE = 1 # 下架
# ============================================================
# 业务方法
# ============================================================
def increment_click(self):
"""
增加点击率
每次调用点击量加1
"""
self.click = (self.click or 0) + 1
self.save()
def get_images_list(self):
"""
获取图集列表
Returns:
list: 图集URL列表
"""
if not self.images:
return []
return [img.strip() for img in self.images.split(',') if img.strip()]
def get_cover_url(self):
"""
获取封面URL
Returns:
str: 封面URL
"""
from utils.rich_text import get_file_url
return get_file_url(self.cover) if self.cover else ""
# ============================================================
# 魔法方法
# ============================================================
def __repr__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "文章:{title}" 的字符串
"""
return '文章:{}'.format(self.title or '未命名')
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "文章:{title}" 的字符串
"""
return self.__repr__()
+1 -1
View File
@@ -2,7 +2,7 @@
兼容 shim(绞杀者迁移期间保留) 兼容 shim(绞杀者迁移期间保留)
============================================================= =============================================================
数据库操作基类已迁移至 src/common/base_db.py。 数据库操作基类已迁移至 src.common.base_db.py。
本文件仅作兼容转发,最终在 P7(切尾)阶段删除。 本文件仅作兼容转发,最终在 P7(切尾)阶段删除。
""" """
from src.common.base_db import * # noqa: F401,F403 from src.common.base_db import * # noqa: F401,F403
+1 -1
View File
@@ -2,7 +2,7 @@
兼容 shim(绞杀者迁移期间保留) 兼容 shim(绞杀者迁移期间保留)
============================================================= =============================================================
模型基类已迁移至 src/common/base_model.py。 模型基类已迁移至 src.common.base_model.py。
本文件仅作兼容转发,最终在 P7(切尾)阶段删除。 本文件仅作兼容转发,最终在 P7(切尾)阶段删除。
""" """
from src.common.base_model import * # noqa: F401,F403 from src.common.base_model import * # noqa: F401,F403
+4 -118
View File
@@ -1,122 +1,8 @@
""" """
分类模型模块 兼容 shim(绞杀者迁移期间保留)
============================================================= =============================================================
提供文章分类管理的数据模型定义,支持多级分类结构。 模型已迁移至 src.modules.cms.category.models。
本文件仅作兼容转发,最终在 P7(切尾)阶段删除。
""" """
from src.modules.cms.category.models import * # noqa: F401,F403
from application.models.base_db import BaseDB
from application.models.base_model import BaseModel
from config import DB_PREFIX
from extensions import db
from utils.case_converter import convert_camel_to_snake
# ============================================================
# 分类模型
# ============================================================
class Category(BaseModel, BaseDB):
"""
分类模型
用于存储文章分类数据,支持多级分类结构(无限级)。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
category_name: 分类名称(String(100),必填)
category_code: 分类编码(String(100),可选)
parent_id: 上级分类ID(Integer,默认0,0表示顶级分类)
sort: 分类排序(Integer,默认0,数值越小越靠前)
note: 分类备注(String(100),可选)
type: 分类类型(Integer,必填,1-公司,2-子公司,3-部门,4-小组)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "category"
# ============================================================
# 字段定义
# ============================================================
# 分类名称
category_name = db.Column(
db.String(100),
nullable=False,
comment="分类名称"
)
# 分类编码
category_code = db.Column(
db.String(100),
nullable=True,
comment="分类编码"
)
# 上级分类ID
parent_id = db.Column(
db.Integer,
nullable=False,
default=0,
comment="上级ID"
)
# 分类排序
sort = db.Column(
db.Integer,
nullable=False,
default=0,
comment="排序"
)
# 分类备注
note = db.Column(
db.String(100),
nullable=True,
comment="分类备注"
)
# 分类类型
type = db.Column(
db.Integer,
nullable=False,
comment="分类类型:1-公司 2-子公司 3-部门 4-小组"
)
# ============================================================
# 常量定义
# ============================================================
class Type:
"""分类类型常量"""
COMPANY = 1 # 公司
SUBSIDIARY = 2 # 子公司
DEPARTMENT = 3 # 部门
GROUP = 4 # 小组
# ============================================================
# 魔法方法
# ============================================================
def __repr__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "分类:{category_name}" 的字符串
"""
return '分类:{}'.format(self.category_name)
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "分类:{category_name}" 的字符串
"""
return self.__repr__()
+4 -185
View File
@@ -1,189 +1,8 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称“本产品”)拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
""" """
城市模型模块 兼容 shim(绞杀者迁移期间保留)
============================================================= =============================================================
提供城市区域的数据模型定义,支持省、市、县区、街道四级区域结构。 模型已迁移至 src.modules.city.models。
本文件仅作兼容转发,最终在 P7(切尾)阶段删除。
""" """
from src.modules.city.models import * # noqa: F401,F403
from application.models.base_db import BaseDB
from application.models.base_model import BaseModel
from config import DB_PREFIX
from extensions import db
from utils.case_converter import convert_camel_to_snake
# ============================================================
# 城市模型
# ============================================================
class City(BaseModel, BaseDB):
"""
城市区域模型
用于存储行政区划数据,支持省、市、县区、街道四级区域结构。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
city_code: 城市区号(String(6),必填)
area_code: 行政编码(String(20),必填)
parent_code: 上级行政编码(String(20),必填)
zip_code: 邮政编码(String(6),必填)
level: 城市级别(Integer,1-省份,2-城市,3-县区,4-街道)
pid: 上级城市ID(Integer,默认0)
name: 城市名称(String(150),必填)
short_name: 城市简称(String(150),必填)
full_name: 城市全称(String(150),可选)
pinyin: 城市拼音(String(150),可选)
lng: 城市经度(String(150),可选)
lat: 城市纬度(String(150),可选)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "city"
# ============================================================
# 字段定义
# ============================================================
# 城市区号
city_code = db.Column(
db.String(6),
nullable=False,
comment="城市区号"
)
# 行政编码
area_code = db.Column(
db.String(20),
nullable=False,
comment="行政编码"
)
# 上级行政编码
parent_code = db.Column(
db.String(20),
nullable=False,
comment="上级行政编码"
)
# 邮政编码
zip_code = db.Column(
db.String(6),
nullable=False,
comment="邮政编码"
)
# 城市级别:1-省份 2-城市 3-县区 4-街道
level = db.Column(
db.Integer,
default=0,
comment="城市级别:1-省份 2-城市 3-县区 4-街道"
)
# 城市名称
name = db.Column(
db.String(150),
nullable=False,
comment="城市名称"
)
# 城市简称
short_name = db.Column(
db.String(150),
nullable=False,
comment="城市简称"
)
# 上级城市ID
pid = db.Column(
db.Integer,
default=0,
comment="上级城市ID"
)
# 城市全称
full_name = db.Column(
db.String(150),
nullable=True,
comment="城市全称"
)
# 城市拼音
pinyin = db.Column(
db.String(150),
nullable=True,
comment="城市拼音"
)
# 城市经度
lng = db.Column(
db.String(150),
nullable=True,
comment="城市经度"
)
# 城市纬度
lat = db.Column(
db.String(150),
nullable=True,
comment="城市纬度"
)
# ============================================================
# 魔法方法
# ============================================================
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "城市{id}" 的字符串
"""
return '城市{}'.format(self.id)
+4 -121
View File
@@ -1,125 +1,8 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称“本产品”)拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
""" """
配置模型模块 兼容 shim(绞杀者迁移期间保留)
============================================================= =============================================================
提供系统配置分组的数据模型定义,用于管理的分类。 模型已迁移至 src.modules.configuration.models。
本文件仅作兼容转发,最终在 P7(切尾)阶段删除。
""" """
from src.modules.configuration.models import * # noqa: F401,F403
from application.models.base_db import BaseDB
from application.models.base_model import BaseModel
from config import DB_PREFIX
from extensions import db
from utils.case_converter import convert_camel_to_snake
# ============================================================
# 配置模型
# ============================================================
class Config(BaseModel, BaseDB):
"""
配置分组模型
用于存储系统配置分组信息,如:基础配置、邮件配置等。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
name: 配置名称(String(100),必填)
code: 配置编码(String(100),必填)
sort: 配置排序(Integer,默认0,数值越小越靠前)
note: 配置备注(String(255),可选)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "config"
# ============================================================
# 字段定义
# ============================================================
# 配置名称
name = db.Column(
db.String(100),
nullable=False,
comment="配置名称"
)
# 配置编码
code = db.Column(
db.String(100),
nullable=False,
comment="配置编码"
)
# 配置排序
sort = db.Column(
db.Integer,
default=0,
comment="配置排序"
)
# 配置备注
note = db.Column(
db.String(255),
nullable=True,
comment="配置备注"
)
# ============================================================
# 魔法方法
# ============================================================
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "配置{id}" 的字符串
"""
return "配置{}".format(self.id)
+4 -169
View File
@@ -1,173 +1,8 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称“本产品”)拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
""" """
模型模块 兼容 shim(绞杀者迁移期间保留)
============================================================= =============================================================
提供系统的数据模型定义,用于管理具体的键值对。 模型已迁移至 src.modules.configuration.models。
本文件仅作兼容转发,最终在 P7(切尾)阶段删除。
""" """
from src.modules.configuration.models import * # noqa: F401,F403
from application.models.base_db import BaseDB
from application.models.base_model import BaseModel
from config import DB_PREFIX
from extensions import db
from utils.case_converter import convert_camel_to_snake
# ============================================================
# 模型
# ============================================================
class ConfigItem(BaseModel, BaseDB):
"""
模型
用于存储系统配置的具体项,属于某个配置。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
config_id: 配置ID(Integer,默认0,关联配置ID)
config_code: 配置编码(String(100),默认0,关联配置编码)
name: 名称(String(100),必填)
code: 编码(String(100),必填,唯一标识)
value: 值(String(1000),可选)
options: 配置选项(Text,可选,用于下拉选择等场景)
type: 配置类型(String(100),必填)
status: 配置状态(Integer,1-正常,2-停用,默认1)
sort: 排序(Integer,默认0,数值越小越靠前)
note: 备注(String(255),可选)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "config_item"
# ============================================================
# 字段定义
# ============================================================
# 配置ID
config_id = db.Column(
db.Integer,
default=0,
comment="配置ID"
)
# 配置编码
config_code = db.Column(
db.String(100),
nullable=False,
comment="配置编码"
)
# 名称
name = db.Column(
db.String(100),
nullable=False,
comment="名称"
)
# 编码
code = db.Column(
db.String(100),
nullable=False,
comment="编码"
)
# 值
value = db.Column(
db.String(1000),
nullable=True,
comment="值"
)
# 配置选项
options = db.Column(
db.Text,
nullable=True,
comment="配置选项"
)
# 配置类型
type = db.Column(
db.String(100),
nullable=False,
comment="配置类型"
)
# 配置状态:1-正常 2-停用
status = db.Column(
db.Integer,
default=1,
comment="配置状态:1-正常 2-停用"
)
# 排序
sort = db.Column(
db.Integer,
default=0,
comment="顺序"
)
# 备注
note = db.Column(
db.String(255),
nullable=True,
comment="备注"
)
# ============================================================
# 魔法方法
# ============================================================
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "{id}" 的字符串
"""
return "{}".format(self.id)
+4 -129
View File
@@ -1,133 +1,8 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称“本产品”)拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
""" """
部门模型模块 兼容 shim(绞杀者迁移期间保留)
============================================================= =============================================================
提供部门组织架构的数据模型定义,支持公司、子公司、部门、小组四级结构。 模型已迁移至 src.modules.system.dept.models。
本文件仅作兼容转发,最终在 P7(切尾)阶段删除。
""" """
from src.modules.system.dept.models import * # noqa: F401,F403
from application.models.base_db import BaseDB
from application.models.base_model import BaseModel
from config import DB_PREFIX
from extensions import db
from utils.case_converter import convert_camel_to_snake
# ============================================================
# 部门模型
# ============================================================
class Dept(BaseModel, BaseDB):
"""
部门模型
用于存储组织架构数据,支持公司、子公司、部门、小组四级结构。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
name: 部门名称(String(100),必填)
type: 部门类型(Integer,1-公司,2-子公司,3-部门,4-小组,默认0)
parent_id: 上级部门ID(Integer,默认0,0表示顶级部门)
sort: 部门排序(Integer,默认0,数值越小越靠前)
note: 部门备注(String(255),可选)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "dept"
# ============================================================
# 字段定义
# ============================================================
# 部门名称
name = db.Column(
db.String(100),
nullable=False,
comment="部门名称"
)
# 部门类型:1-公司 2-子公司 3-部门 4-小组
type = db.Column(
db.Integer,
default=0,
comment="部门类型:1-公司 2-子公司 3-部门 4-小组"
)
# 上级部门ID
parent_id = db.Column(
db.Integer,
default=0,
comment="上级部门ID"
)
# 部门排序
sort = db.Column(
db.Integer,
default=0,
comment="部门排序"
)
# 备注
note = db.Column(
db.String(255),
nullable=True,
comment="备注"
)
# ============================================================
# 魔法方法
# ============================================================
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "部门{name}" 的字符串
"""
return '部门{}'.format(self.name)
+4 -121
View File
@@ -1,125 +1,8 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称“本产品”)拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
""" """
字典模型模块 兼容 shim(绞杀者迁移期间保留)
============================================================= =============================================================
提供数据字典分组的数据模型定义,用于管理字典项的分类。 模型已迁移至 src.modules.dictionary.models。
本文件仅作兼容转发,最终在 P7(切尾)阶段删除。
""" """
from src.modules.dictionary.models import * # noqa: F401,F403
from application.models.base_db import BaseDB
from application.models.base_model import BaseModel
from config import DB_PREFIX
from extensions import db
from utils.case_converter import convert_camel_to_snake
# ============================================================
# 字典模型
# ============================================================
class Dict(BaseModel, BaseDB):
"""
字典分组模型
用于存储数据字典分组信息,如:性别、状态等。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
name: 字典名称(String(150),必填)
code: 字典编码(String(150),必填,唯一标识)
sort: 字典排序(Integer,默认0,数值越小越靠前)
note: 字典备注(String(255),可选)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "dict"
# ============================================================
# 字段定义
# ============================================================
# 字典名称
name = db.Column(
db.String(150),
nullable=False,
comment="字典名称"
)
# 字典编码
code = db.Column(
db.String(150),
nullable=False,
comment="字典编码"
)
# 字典排序
sort = db.Column(
db.Integer,
default=0,
comment="字典排序"
)
# 字典备注
note = db.Column(
db.String(255),
nullable=True,
comment="字典备注"
)
# ============================================================
# 魔法方法
# ============================================================
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "字典{id}" 的字符串
"""
return "字典{}".format(self.id)
+4 -136
View File
@@ -1,140 +1,8 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称“本产品”)拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
""" """
字典项模型模块 兼容 shim(绞杀者迁移期间保留)
============================================================= =============================================================
提供数据字典项的数据模型定义,用于管理字典的具体选项。 模型已迁移至 src.modules.dictionary.models。
本文件仅作兼容转发,最终在 P7(切尾)阶段删除。
""" """
from src.modules.dictionary.models import * # noqa: F401,F403
from application.models.base_db import BaseDB
from application.models.base_model import BaseModel
from config import DB_PREFIX
from extensions import db
from utils.case_converter import convert_camel_to_snake
# ============================================================
# 字典项模型
# ============================================================
class DictItem(BaseModel, BaseDB):
"""
字典项模型
用于存储数据字典的具体项,属于某个字典分组。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
name: 字典项名称(String(100),必填)
value: 字典项值(String(100),必填)
dict_id: 字典ID(Integer,默认0,关联字典分组)
sort: 字典项排序(Integer,默认0,数值越小越靠前)
note: 字典项备注(String(255),可选)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "dict_item"
# ============================================================
# 字段定义
# ============================================================
# 字典ID
dict_id = db.Column(
db.Integer,
default=0,
comment="字典ID"
)
# 字典编码
dict_code = db.Column(
db.String(100),
nullable=False,
comment="字典编码"
)
# 字典项名称
name = db.Column(
db.String(100),
nullable=False,
comment="字典项名称"
)
# 字典项值
value = db.Column(
db.String(100),
nullable=False,
comment="字典项值"
)
# 字典项排序
sort = db.Column(
db.Integer,
default=0,
comment="字典项顺序"
)
# 字典项备注
note = db.Column(
db.String(255),
nullable=True,
comment="字典项备注"
)
# ============================================================
# 魔法方法
# ============================================================
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "字典项{id}" 的字符串
"""
return "字典项{}".format(self.id)
+4 -105
View File
@@ -1,109 +1,8 @@
""" """
文件模板模型模块 兼容 shim(绞杀者迁移期间保留)
============================================================= =============================================================
提供文件模板管理的数据模型定义,用于管理文件模板信息。 模型已迁移至 src.modules.file_template.models。
本文件仅作兼容转发,最终在 P7(切尾)阶段删除。
""" """
from src.modules.file_template.models import * # noqa: F401,F403
from application.models.base_db import BaseDB
from application.models.base_model import BaseModel
from config import DB_PREFIX
from extensions import db
from utils.case_converter import convert_camel_to_snake
# ============================================================
# 文件模板模型
# ============================================================
class FileTemplate(BaseModel, BaseDB):
"""
文件模板模型
用于存储文件模板信息,如:导入导出模板、报表模板等。
Attributes:
id: 主键ID(继承自 BaseModel)
name: 模板名称(String(100),可选)
code: 模板编码(String(50),可选,唯一标识)
file_name: 文件名称(String(255),可选)
file_path: 文件路径(String(255),可选)
note: 文件模板备注(String(255),可选)
sort: 文件模板顺序(Integer,必填,默认0)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "file_template"
# ============================================================
# 字段定义
# ============================================================
# 模板名称
name = db.Column(
db.String(100),
nullable=True,
comment="模板名称"
)
# 模板编码
code = db.Column(
db.String(50),
nullable=True,
comment="模板编码"
)
# 文件名称
file_name = db.Column(
db.String(255),
nullable=True,
comment="文件名称"
)
# 文件路径
file_path = db.Column(
db.String(255),
nullable=True,
comment="文件路径"
)
# 文件模板备注
note = db.Column(
db.String(255),
nullable=True,
comment="文件模板备注"
)
# 文件模板顺序
sort = db.Column(
db.Integer,
nullable=False,
default=0,
comment="文件模板顺序"
)
# ============================================================
# 魔法方法
# ============================================================
def __repr__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "文件模板:{name}" 的字符串
"""
return '文件模板:{}'.format(self.name or self.code)
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "文件模板:{name}" 的字符串
"""
return self.__repr__()
+4 -148
View File
@@ -1,152 +1,8 @@
""" """
定时任务模型模块 兼容 shim(绞杀者迁移期间保留)
============================================================= =============================================================
提供定时任务管理的数据模型定义。 模型已迁移至 src.modules.job.models。
本文件仅作兼容转发,最终在 P7(切尾)阶段删除。
""" """
from src.modules.job.models import * # noqa: F401,F403
from application.models.base_db import BaseDB
from application.models.base_model import BaseModel
from config import DB_PREFIX
from extensions import db
from utils.case_converter import convert_camel_to_snake
# ============================================================
# 定时任务模型
# ============================================================
class Job(BaseModel, BaseDB):
"""
定时任务模型
用于存储定时任务信息。
Attributes:
id: 主键ID(继承自 BaseModel)
job_name: 任务名称(String(255),必填)
job_alias: 任务别名(String(255),可选)
job_group: 任务分组(String(255),可选)
job_trigger: 任务触发器(String(255),可选)
status: 任务状态(Integer,0-未发布 1-运行中 2-暂停 3-删除)
cron_expression: Cron表达式(String(255),可选)
execute_policy: 执行策略(Integer,1-立即执行 2-执行一次 3-放弃执行)
is_sync: 是否同步任务(Integer,0-否 1-是)
url: 任务URL(String(255),可选)
note: 任务备注(String(255),可选)
"""
# ============================================================
# 表配置
# ============================================================
__tablename__ = DB_PREFIX + "job"
# ============================================================
# 字段定义
# ============================================================
# 任务名称
job_name = db.Column(
db.String(255),
nullable=False,
comment="任务名称"
)
# 任务别名
job_alias = db.Column(
db.String(255),
nullable=True,
comment="任务别名"
)
# 任务分组
job_group = db.Column(
db.String(255),
nullable=True,
comment="任务分组"
)
# 任务触发器
job_trigger = db.Column(
db.String(255),
nullable=True,
comment="任务触发器"
)
# 任务状态:0-未发布 1-运行中 2-暂停 3-删除
status = db.Column(
db.Integer,
nullable=False,
default=0,
comment="任务状态:0-未发布 1-运行中 2-暂停 3-删除"
)
# Cron表达式
cron_expression = db.Column(
db.String(255),
nullable=True,
comment="Cron表达式"
)
# 执行策略:1-立即执行 2-执行一次 3-放弃执行
execute_policy = db.Column(
db.Integer,
nullable=False,
default=1,
comment="执行策略:1-立即执行 2-执行一次 3-放弃执行"
)
# 是否同步任务:0-否 1-是
is_sync = db.Column(
db.Integer,
nullable=False,
default=0,
comment="是否同步任务:0-否 1-是"
)
# 任务URL
url = db.Column(
db.String(255),
nullable=True,
comment="任务URL"
)
# 任务备注
note = db.Column(
db.String(255),
nullable=True,
comment="任务备注"
)
# ============================================================
# 常量定义
# ============================================================
class Status:
"""任务状态常量"""
UNPUBLISHED = 0 # 未发布
RUNNING = 1 # 运行中
PAUSED = 2 # 暂停
DELETED = 3 # 删除
class ExecutePolicy:
"""执行策略常量"""
EXECUTE_NOW = 1 # 立即执行
EXECUTE_ONCE = 2 # 执行一次
ABANDON = 3 # 放弃执行
class IsSync:
"""是否同步任务常量"""
ASYNC = 0 # 异步
SYNC = 1 # 同步
# ============================================================
# 魔法方法
# ============================================================
def __repr__(self):
return '定时任务:{}'.format(self.job_name)
def __str__(self):
return self.__repr__()
+4 -113
View File
@@ -1,117 +1,8 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称“本产品”)拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
""" """
职级模型模块 兼容 shim(绞杀者迁移期间保留)
============================================================= =============================================================
提供职级管理的数据模型定义,用于定义员工职级体系。 模型已迁移至 src.modules.system.level.models。
本文件仅作兼容转发,最终在 P7(切尾)阶段删除。
""" """
from src.modules.system.level.models import * # noqa: F401,F403
from application.models.base_db import BaseDB
from application.models.base_model import BaseModel
from config import DB_PREFIX
from extensions import db
from utils.case_converter import convert_camel_to_snake
# ============================================================
# 职级模型
# ============================================================
class Level(BaseModel, BaseDB):
"""
职级模型
用于存储员工职级信息,如:初级、中级、高级等。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
name: 职级名称(String(255),必填)
status: 职级状态(Integer,1-在用,2-停用,默认0)
sort: 职级排序(Integer,默认0,数值越小越靠前)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "level"
# ============================================================
# 字段定义
# ============================================================
# 职级名称
name = db.Column(
db.String(255),
nullable=False,
comment="职级名称"
)
# 职级状态:1-在用 2-停用
status = db.Column(
db.Integer,
default=0,
comment="职级状态:1-在用 2-停用"
)
# 职级排序
sort = db.Column(
db.Integer,
default=0,
comment="职级排序"
)
# ============================================================
# 魔法方法
# ============================================================
def __repr__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "职级:{name}" 的字符串
"""
return '职级:{}'.format(self.name)
+4 -153
View File
@@ -1,157 +1,8 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称“本产品”)拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
""" """
友链模型模块 兼容 shim(绞杀者迁移期间保留)
============================================================= =============================================================
提供友情链接的数据模型定义,用于管理网站友情链接和合作伙伴。 模型已迁移至 src.modules.cms.link.models。
本文件仅作兼容转发,最终在 P7(切尾)阶段删除。
""" """
from src.modules.cms.link.models import * # noqa: F401,F403
from application.models.base_db import BaseDB
from application.models.base_model import BaseModel
from config import DB_PREFIX
from extensions import db
from utils.case_converter import convert_camel_to_snake
# ============================================================
# 友链模型
# ============================================================
class Link(BaseModel, BaseDB):
"""
友链模型
用于存储友情链接和合作伙伴信息,支持多种投放平台和链接形式。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
name: 友链名称(String(255),必填)
type: 友链类型(Integer,1-友情链接,2-合作伙伴,默认1)
url: 友链URL(String(255),可选)
form: 友链形式(Integer,1-文字链接,2-图片链接,默认1)
image: 友链图片(String(255),可选)
status: 友链状态(Integer,1-正常,2-停用,默认1)
sort: 友链排序(Integer,默认0,数值越小越靠前)
note: 友链备注(String(255),可选)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "link"
# ============================================================
# 字段定义
# ============================================================
# 友链名称
name = db.Column(
db.String(255),
nullable=False,
comment="友链名称"
)
# 友链类型:1-友情链接 2-合作伙伴
type = db.Column(
db.Integer,
default=1,
comment="友链类型:1-友情链接 2-合作伙伴"
)
# 友链URL
url = db.Column(
db.String(255),
nullable=True,
comment="友链URL"
)
# 友链形式:1-文字链接 2-图片链接
form = db.Column(
db.Integer,
default=1,
comment="友链形式:1-文字链接 2-图片链接"
)
# 友链图片
image = db.Column(
db.String(255),
nullable=True,
comment="友链图片"
)
# 友链状态:1-正常 2-停用
status = db.Column(
db.Integer,
default=1,
comment="友链状态:1-正常 2-停用"
)
# 友链顺序
sort = db.Column(
db.Integer,
default=0,
comment="友链顺序"
)
# 友链备注
note = db.Column(
db.String(255),
nullable=True,
comment="友链备注"
)
# ============================================================
# 魔法方法
# ============================================================
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "友链{name}" 的字符串
"""
return "友链{}".format(self.name)
+4 -197
View File
@@ -1,201 +1,8 @@
""" """
登录日志模型模块 兼容 shim(绞杀者迁移期间保留)
============================================================= =============================================================
提供登录日志管理的数据模型定义,用于记录用户登录、退出等操作日志。 模型已迁移至 src.modules.log.models。
本文件仅作兼容转发,最终在 P7(切尾)阶段删除。
""" """
from src.modules.log.models import * # noqa: F401,F403
from application.models.base_db import BaseDB
from application.models.base_model import BaseModel
from config import DB_PREFIX
from extensions import db
from utils.case_converter import convert_camel_to_snake
# ============================================================
# 登录日志模型
# ============================================================
class LoginLog(BaseModel, BaseDB):
"""
登录日志模型
用于记录用户登录和退出操作的详细信息,包括:登录账号、日志类型、
来源、请求信息、IP地址、归属地、设备信息、请求耗时、操作状态等。
Attributes:
id: 主键ID(继承自 BaseModel)
username: 登录账号(String(50),必填)
log_type: 日志类型(Integer,1-登录,2-退出,必填)
source: 登录来源(Integer,0-后台,1-前台,必填)
method: 请求方法(String(10),必填)
request_method: 请求方式(String(255),必填)
url: 请求URL(String(500),必填)
param: 请求参数(Text,可选)
result: 返回结果(Text,必填)
ip: IP地址(String(50),必填)
location: IP归属地(String(100),必填)
os: 操作系统(String(100),必填)
browser: 浏览器(String(100),必填)
consume_time: 请求耗时(Integer,必填)
status: 操作状态(Integer,0-正常,1-异常,必填)
error: 错误信息(Text,可选)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "login_log"
# ============================================================
# 字段定义
# ============================================================
# 登录账号
username = db.Column(
db.String(50),
nullable=False,
comment="登录账号"
)
# 日志类型:1-登录,2-退出
log_type = db.Column(
db.Integer,
nullable=False,
comment="日志类型:1-登录,2-退出"
)
# 登录来源:0-后台,1-前台
source = db.Column(
db.Integer,
nullable=False,
comment="登录来源:0-后台,1-前台"
)
# 请求方法(HTTP方法,如POST/GET)
method = db.Column(
db.String(10),
nullable=False,
comment="请求方法"
)
# 请求方式(视图方法路径,如application.views.login.logout)
request_method = db.Column(
db.String(255),
nullable=False,
comment="请求方式"
)
# 请求URL
url = db.Column(
db.String(500),
nullable=False,
comment="请求URL"
)
# 请求参数
param = db.Column(
db.Text,
nullable=True,
comment="请求参数"
)
# 返回结果
result = db.Column(
db.Text,
nullable=False,
comment="返回结果"
)
# IP地址
ip = db.Column(
db.String(50),
nullable=False,
comment="IP地址"
)
# IP归属地
location = db.Column(
db.String(100),
nullable=False,
comment="IP归属地"
)
# 操作系统
os = db.Column(
db.String(100),
nullable=False,
comment="操作系统"
)
# 浏览器
browser = db.Column(
db.String(100),
nullable=False,
comment="浏览器"
)
# 请求耗时(毫秒)
consume_time = db.Column(
db.Integer,
nullable=False,
comment="请求耗时"
)
# 操作状态:0-正常,1-异常
status = db.Column(
db.Integer,
nullable=False,
comment="操作状态:0-正常,1-异常"
)
# 错误信息
error = db.Column(
db.Text,
nullable=True,
comment="错误信息"
)
# ============================================================
# 常量定义
# ============================================================
class LogType:
"""日志类型常量"""
LOGIN = 1 # 登录
LOGOUT = 2 # 退出
class Source:
"""登录来源常量"""
ADMIN = 0 # 后台
FRONT = 1 # 前台
class Status:
"""操作状态常量"""
NORMAL = 0 # 正常
ERROR = 1 # 异常
# ============================================================
# 魔法方法
# ============================================================
def __repr__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "登录日志:{username} - {log_type}" 的字符串
"""
log_type_name = "登录" if self.log_type == self.LogType.LOGIN else "退出"
return '登录日志:{} - {}'.format(self.username, log_type_name)
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "登录日志:{username} - {log_type}" 的字符串
"""
return self.__repr__()
+4 -184
View File
@@ -1,188 +1,8 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称“本产品”)拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
""" """
菜单模型模块 兼容 shim(绞杀者迁移期间保留)
============================================================= =============================================================
提供系统菜单的数据模型定义,用于管理后台导航菜单和权限节点。 模型已迁移至 src.modules.system.menu.models。
本文件仅作兼容转发,最终在 P7(切尾)阶段删除。
""" """
from src.modules.system.menu.models import * # noqa: F401,F403
from application.models.base_db import BaseDB
from application.models.base_model import BaseModel
from config import DB_PREFIX
from extensions import db
# ============================================================
# 菜单模型
# ============================================================
class Menu(BaseModel, BaseDB):
"""
菜单模型
用于存储系统导航菜单和权限节点信息,支持树形结构。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
name: 菜单名称(String(100),必填)
icon: 菜单图标(String(50),可选)
parent_id: 上级ID(Integer,默认0,0表示顶级菜单)
path: 菜单路径(String(255),可选,前端路由地址)
component: 菜单组件(String(255),可选,前端组件路径)
permission: 权限节点(String(100),可选,权限标识符)
target: 打开方式(Integer,0-内部打开,1-外部打开,默认0)
type: 菜单类型(Integer,0-菜单,1-节点,默认0)
status: 菜单状态(Integer,0-正常,1-禁用,默认0)
hide: 是否可见(Integer,0-可见,1-不可见,默认0)
sort: 菜单排序(Integer,默认0,数值越小越靠前)
note: 菜单备注(String(255),可选)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "menu"
# ============================================================
# 字段定义
# ============================================================
# 菜单名称
name = db.Column(
db.String(100),
nullable=False,
comment="菜单名称"
)
# 菜单图标
icon = db.Column(
db.String(50),
nullable=True,
comment="菜单图标"
)
# 上级ID
parent_id = db.Column(
db.Integer,
default=0,
comment="上级ID"
)
# 菜单路径
path = db.Column(
db.String(255),
nullable=True,
comment="菜单路径"
)
# 菜单组件
component = db.Column(
db.String(255),
nullable=True,
comment="菜单组件"
)
# 权限节点
permission = db.Column(
db.String(100),
nullable=True,
comment="权限节点"
)
# 打开方式:0-内部打开 1-外部打开
target = db.Column(
db.Integer,
default=0,
comment="打开方式:0-内部打开 1-外部打开"
)
# 菜单类型:0-菜单 1-节点
type = db.Column(
db.Integer,
default=0,
comment="菜单类型:0-菜单 1-节点"
)
# 状态选项
status = db.Column(
db.Integer,
default=0,
comment="菜单状态:0-正常 1-禁用"
)
# 是否可见:0-可见 1-不可见
hide = db.Column(
db.Integer,
default=0,
comment="是否可见:0-可见 1-不可见"
)
# 排序
sort = db.Column(
db.Integer,
default=0,
comment="排序"
)
# 备注
note = db.Column(
db.String(255),
nullable=True,
comment="备注"
)
# ============================================================
# 魔法方法
# ============================================================
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "菜单{id}" 的字符串
"""
return "菜单{}".format(self.id)
+4 -137
View File
@@ -1,141 +1,8 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称“本产品”)拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
""" """
通知公告模型模块 兼容 shim(绞杀者迁移期间保留)
============================================================= =============================================================
提供通知公告的数据模型定义,用于管理系统通知和公告信息。 模型已迁移至 src.modules.notice.models。
本文件仅作兼容转发,最终在 P7(切尾)阶段删除。
""" """
from src.modules.notice.models import * # noqa: F401,F403
from application.models.base_db import BaseDB
from application.models.base_model import BaseModel
from config import DB_PREFIX
from extensions import db
from utils.case_converter import convert_camel_to_snake
# ============================================================
# 通知公告模型
# ============================================================
class Notice(BaseModel, BaseDB):
"""
通知公告模型
用于存储系统通知和公告信息,支持置顶、来源分类等功能。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
title: 通知标题(String(150),必填)
cover: 通知封面(String(150),必填)
type: 通知类型(Integer,默认1)
status: 通知状态(Integer,1-正常,2-停用,默认1)
click_num: 点击率(Integer,默认0)
content: 通知公告内容(Text,可选,支持富文本)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "notice"
# ============================================================
# 字段定义
# ============================================================
# 通知标题
title = db.Column(
db.String(150),
nullable=False,
comment="通知标题"
)
# 通知封面
cover = db.Column(
db.String(255),
nullable=False,
comment="通知封面"
)
# 通知类型:1-通知 2-公告
type = db.Column(
db.Integer,
default=1,
comment="通知类型:1-通知 2-公告"
)
# 通知状态:1-正常 2-停用
status = db.Column(
db.Integer,
default=1,
comment="通知状态:1-正常 2-停用"
)
# 点击率
click_num = db.Column(
db.Integer,
default=0,
comment="点击率"
)
# 通知公告内容
content = db.Column(
db.Text,
nullable=True,
comment="通知内容"
)
# ============================================================
# 魔法方法
# ============================================================
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "通知公告{title}" 的字符串
"""
return "通知公告{}".format(self.title)
+4 -191
View File
@@ -1,195 +1,8 @@
""" """
操作日志模型模块 兼容 shim(绞杀者迁移期间保留)
============================================================= =============================================================
提供操作日志管理的数据模型定义,用于记录用户操作行为日志。 模型已迁移至 src.modules.log.models。
本文件仅作兼容转发,最终在 P7(切尾)阶段删除。
""" """
from src.modules.log.models import * # noqa: F401,F403
from application.models.base_db import BaseDB
from application.models.base_model import BaseModel
from config import DB_PREFIX
from extensions import db
from utils.case_converter import convert_camel_to_snake
# ============================================================
# 操作日志模型
# ============================================================
class OperationLog(BaseModel, BaseDB):
"""
操作日志模型
用于记录用户操作行为的详细信息,包括:操作标题、操作类型、
来源、请求信息、IP地址、归属地、设备信息、请求耗时、操作状态等。
Attributes:
id: 主键ID(继承自 BaseModel)
title: 请求标题(String(150),必填)
type: 请求类型(Integer,必填)
source: 请求来源(Integer,必填,0-后台,1-前台)
method: 请求方法(String(100),必填)
request_method: 请求方式(String(255),必填)
url: 请求URL(String(1000),必填)
param: 请求参数(Text,必填)
result: 请求结果(Text,必填)
ip: 请求IP(String(100),必填)
location: 请求所在区域(String(255),必填)
os: 操作系统(String(100),必填)
browser: 浏览器(String(100),必填)
consume_time: 请求耗时(Integer,必填,单位毫秒)
status: 请求状态(Integer,必填,0-正常,1-异常)
error: 错误描述(Text,必填)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "operation_log"
# ============================================================
# 字段定义
# ============================================================
# 请求标题
title = db.Column(
db.String(150),
nullable=False,
comment="请求标题"
)
# 请求类型
type = db.Column(
db.Integer,
nullable=False,
comment="请求类型"
)
# 请求来源:0-后台,1-前台
source = db.Column(
db.Integer,
nullable=False,
comment="请求来源:0-后台,1-前台"
)
# 请求方法(如:UserController.add)
method = db.Column(
db.String(100),
nullable=False,
comment="请求方法"
)
# 请求方式(如:GET、POST、PUT、DELETE)
request_method = db.Column(
db.String(255),
nullable=False,
comment="请求方式"
)
# 请求URL
url = db.Column(
db.String(1000),
nullable=False,
comment="请求URL"
)
# 请求参数
param = db.Column(
db.Text,
nullable=False,
comment="请求参数"
)
# 请求结果
result = db.Column(
db.Text,
nullable=False,
comment="请求结果"
)
# 请求IP
ip = db.Column(
db.String(100),
nullable=False,
comment="请求IP"
)
# 请求所在区域
location = db.Column(
db.String(255),
nullable=False,
comment="请求所在区域"
)
# 操作系统
os = db.Column(
db.String(100),
nullable=False,
comment="操作系统"
)
# 浏览器
browser = db.Column(
db.String(100),
nullable=False,
comment="浏览器"
)
# 请求耗时(毫秒)
consume_time = db.Column(
db.BigInteger,
nullable=False,
comment="请求耗时"
)
# 请求状态:0-正常,1-异常
status = db.Column(
db.Integer,
nullable=False,
comment="请求状态:0-正常,1-异常"
)
# 错误描述
error = db.Column(
db.Text,
nullable=False,
comment="错误描述"
)
# ============================================================
# 常量定义
# ============================================================
class Source:
"""请求来源常量"""
ADMIN = 0 # 后台
FRONT = 1 # 前台
class Status:
"""请求状态常量"""
NORMAL = 0 # 正常
ERROR = 1 # 异常
# ============================================================
# 魔法方法
# ============================================================
def __repr__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "操作日志:{title} - {method}" 的字符串
"""
return '操作日志:{} - {}'.format(self.title, self.method)
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "操作日志:{title} - {method}" 的字符串
"""
return self.__repr__()
+4 -113
View File
@@ -1,117 +1,8 @@
""" """
参数模型模块 兼容 shim(绞杀者迁移期间保留)
============================================================= =============================================================
提供系统参数管理的数据模型定义,用于管理系统参数和业务参数。 模型已迁移至 src.modules.param.models。
本文件仅作兼容转发,最终在 P7(切尾)阶段删除。
""" """
from src.modules.param.models import * # noqa: F401,F403
from application.models.base_db import BaseDB
from application.models.base_model import BaseModel
from config import DB_PREFIX
from extensions import db
from utils.case_converter import convert_camel_to_snake
# ============================================================
# 参数模型
# ============================================================
class Param(BaseModel, BaseDB):
"""
参数模型
用于存储系统参数和业务参数信息,如:系统配置参数、业务规则参数等。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
name: 参数名称(String(100),必填)
code: 参数编码(String(100),必填,唯一标识)
value: 参数值(String(255),必填)
type: 参数类型(Integer,0-系统 1-业务,必填)
status: 参数状态(Integer,1-正常 2-禁用,必填)
sort: 参数排序(Integer,默认0,数值越小越靠前)
note: 参数备注(String(255),可选)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "param"
# ============================================================
# 字段定义
# ============================================================
# 参数名称
name = db.Column(
db.String(100),
nullable=False,
comment="参数名称"
)
# 参数编码
code = db.Column(
db.String(100),
nullable=False,
comment="参数编码"
)
# 参数值
value = db.Column(
db.String(255),
nullable=False,
comment="参数值"
)
# 参数类型:0-系统 1-业务
type = db.Column(
db.Integer,
nullable=False,
comment="参数类型:0-系统 1-业务"
)
# 参数状态:1-正常 2-禁用
status = db.Column(
db.Integer,
nullable=False,
comment="参数状态:1-正常 2-禁用"
)
# 参数排序
sort = db.Column(
db.Integer,
nullable=False,
comment="参数排序"
)
# 参数备注
note = db.Column(
db.String(255),
nullable=True,
comment="参数备注"
)
# ============================================================
# 魔法方法
# ============================================================
def __repr__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "参数:{name}" 的字符串
"""
return '参数:{}'.format(self.name)
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "参数:{name}" 的字符串
"""
return self.__repr__()
+4 -291
View File
@@ -1,295 +1,8 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称"本产品")拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
""" """
岗位模型模块 兼容 shim(绞杀者迁移期间保留)
============================================================= =============================================================
提供岗位管理的数据模型定义,用于定义员工岗位信息。 模型已迁移至 src.modules.system.position.models。
本文件仅作兼容转发,最终在 P7(切尾)阶段删除。
企业级特性:
1. 使用枚举类管理状态常量,确保类型安全
2. 状态文本自动转换,便于前端展示
3. 便捷的查询方法,提高开发效率
4. 继承 BaseModel 和 BaseDB,复用通用功能
5. __init__ 由 BaseModel 统一管理,无需重复定义
模型说明:
岗位用于标识用户的职位,如:技术总监、产品经理、开发工程师等。
通过 sort 字段控制显示顺序,数值越小越靠前。
""" """
from src.modules.system.position.models import * # noqa: F401,F403
from enum import IntEnum
from typing import Optional, List
from application.models.base_db import BaseDB
from application.models.base_model import BaseModel
from config import DB_PREFIX
from extensions import db
from utils.request import like_contains
# ============================================================
# 岗位状态枚举
# ============================================================
class PositionStatus(IntEnum):
"""
岗位状态枚举
使用 IntEnum 确保类型安全,避免魔法数字。
可直接用于数据库查询和比较。
Example:
# 查询启用状态的岗位
Position.query.filter(Position.status == PositionStatus.ENABLED)
# 创建岗位时设置状态
position = Position(name='经理', status=PositionStatus.ENABLED)
# 判断岗位是否启用
if position.status == PositionStatus.ENABLED:
print("岗位已启用")
"""
DISABLED = 0 # 停用
ENABLED = 1 # 启用
# ============================================================
# 岗位模型
# ============================================================
class Position(BaseModel, BaseDB):
"""
岗位模型
用于存储员工岗位信息,如:技术总监、产品经理等。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
name: 岗位名称(String(255),必填)
status: 岗位状态(使用 PositionStatus 枚举,默认停用)
sort: 岗位排序(Integer,默认0,数值越小越靠前)
便捷属性:
status_text: 获取状态文本("启用"/"停用")
is_enabled: 判断是否启用
is_disabled: 判断是否停用
自定义查询:
get_enabled(): 获取所有启用的岗位
get_by_name(): 根据名称精确查询
search_by_name(): 根据名称模糊搜索
"""
# ============================================================
# 表配置
# ============================================================
# 表名:使用配置前缀 + 模型名
__tablename__ = DB_PREFIX + "position"
# ============================================================
# 字段定义
# ============================================================
# 岗位名称:必填字段,最长255字符
name = db.Column(
db.String(255),
nullable=False,
comment="岗位名称"
)
# 岗位状态:使用枚举确保类型安全
# 默认值为停用,创建后需手动启用
status = db.Column(
db.Integer,
default=PositionStatus.DISABLED,
comment="岗位状态:0-停用 1-启用"
)
# 岗位排序:数值越小越靠前
# 用于列表展示时的排序控制
sort = db.Column(
db.Integer,
default=0,
comment="岗位排序"
)
# ============================================================
# 注意:__init__ 方法在 BaseModel 中已实现,无需重复定义
# BaseModel 已处理驼峰转换、字段过滤等逻辑
# ============================================================
# ============================================================
# 便捷属性
# ============================================================
@property
def status_text(self) -> str:
"""
获取岗位状态文本
将数字状态转换为可读的中文文本。
用于前端展示或日志记录。
Returns:
str: "启用" 或 "停用"
"""
status_map = {
PositionStatus.DISABLED: '停用',
PositionStatus.ENABLED: '启用'
}
return status_map.get(self.status, '未知')
@property
def is_enabled(self) -> bool:
"""
判断岗位是否启用
Returns:
bool: 启用返回 True,否则返回 False
"""
return self.status == PositionStatus.ENABLED
@property
def is_disabled(self) -> bool:
"""
判断岗位是否停用
Returns:
bool: 停用返回 True,否则返回 False
"""
return self.status == PositionStatus.DISABLED
# ============================================================
# 自定义查询方法
# ============================================================
@classmethod
def get_enabled(cls) -> List['Position']:
"""
获取所有启用的岗位
按排序值升序排列,适用于下拉选择框等场景。
只返回未删除且状态为启用的岗位。
Returns:
List[Position]: 启用的岗位列表
Example:
positions = Position.get_enabled()
for pos in positions:
print(pos.name, pos.status_text)
"""
return cls.query.filter(
cls.is_delete == 0,
cls.status == PositionStatus.ENABLED
).order_by(cls.sort.asc()).all()
@classmethod
def get_by_name(cls, name: Optional[str]) -> Optional['Position']:
"""
根据岗位名称精确查询
用于检查岗位名称是否已存在等场景。
Args:
name: 岗位名称
Returns:
Optional[Position]: 岗位对象,不存在或名称为空时返回 None
Example:
position = Position.get_by_name('经理')
if position:
print("岗位已存在")
"""
if not name:
return None
return cls.query.filter(
cls.name == name,
cls.is_delete == 0
).first()
@classmethod
def search_by_name(cls, name: Optional[str]) -> List['Position']:
"""
根据岗位名称模糊搜索
支持名称关键字匹配,按排序值升序排列。
适用于搜索建议或筛选场景。
Args:
name: 岗位名称关键字
Returns:
List[Position]: 匹配的岗位列表
Example:
positions = Position.search_by_name('经理')
for pos in positions:
print(pos.name)
"""
if not name:
return []
return cls.query.filter(
cls.name.like(like_contains(name), escape='\\'),
cls.is_delete == 0
).order_by(cls.sort.asc()).all()
# ============================================================
# 魔法方法
# ============================================================
def __repr__(self) -> str:
"""
返回模型的字符串表示
用于调试和日志输出。
Returns:
str: 格式为 "岗位:{name}"
"""
return f'岗位:{self.name}'
+4 -121
View File
@@ -1,125 +1,8 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称“本产品”)拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
""" """
角色模型模块 兼容 shim(绞杀者迁移期间保留)
============================================================= =============================================================
提供角色管理的数据模型定义,用于定义系统角色和权限分配。 模型已迁移至 src.modules.system.role.models。
本文件仅作兼容转发,最终在 P7(切尾)阶段删除。
""" """
from src.modules.system.role.models import * # noqa: F401,F403
from application.models.base_db import BaseDB
from application.models.base_model import BaseModel
from config import DB_PREFIX
from extensions import db
from utils.case_converter import convert_camel_to_snake
# ============================================================
# 角色模型
# ============================================================
class Role(BaseModel, BaseDB):
"""
角色模型
用于存储系统角色信息,角色是权限分配的基本单位。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
name: 角色名称(String(150),必填)
code: 角色编码(String(30),必填,唯一标识)
sort: 角色排序(Integer,默认0,数值越小越靠前)
note: 角色备注(String(255),可选)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "role"
# ============================================================
# 字段定义
# ============================================================
# 角色名称
name = db.Column(
db.String(150),
nullable=False,
comment="角色名称"
)
# 角色编码
code = db.Column(
db.String(30),
nullable=False,
comment="角色编码"
)
# 角色排序
sort = db.Column(
db.Integer,
default=0,
comment="角色排序"
)
# 角色备注
note = db.Column(
db.String(255),
nullable=True,
comment="角色备注"
)
# ============================================================
# 魔法方法
# ============================================================
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "角色{name}:" 的字符串
"""
return '角色{}:'.format(self.name)
+4 -104
View File
@@ -1,108 +1,8 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称“本产品”)拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
""" """
角色菜单关联模型模块 兼容 shim(绞杀者迁移期间保留)
============================================================= =============================================================
提供角色与菜单的关联关系数据模型定义,用于实现角色权限分配。 模型已迁移至 src.modules.association.role_menu.models。
本文件仅作兼容转发,最终在 P7(切尾)阶段删除。
""" """
from src.modules.association.role_menu.models import * # noqa: F401,F403
from application.models.base_db import BaseDB
from application.models.base_model import BaseModel
from config import DB_PREFIX
from extensions import db
# ============================================================
# 角色菜单关联模型
# ============================================================
class RoleMenu(BaseModel, BaseDB):
"""
角色菜单关联模型
用于存储角色与菜单的关联关系,实现角色的权限分配。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
role_id: 角色ID(Integer,默认0)
menu_id: 菜单ID(Integer,默认0)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "role_menu"
# ============================================================
# 字段定义
# ============================================================
# 角色ID
role_id = db.Column(
db.Integer,
default=0,
comment="角色ID"
)
# 菜单ID
menu_id = db.Column(
db.Integer,
default=0,
comment="菜单ID"
)
# ============================================================
# 魔法方法
# ============================================================
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "角色菜单表{role_id}" 的字符串
"""
return "角色菜单表{}".format(self.role_id)
+4 -257
View File
@@ -1,261 +1,8 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称“本产品”)拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
""" """
用户模型模块 兼容 shim(绞杀者迁移期间保留)
============================================================= =============================================================
提供用户管理的数据模型定义,用于存储系统用户基本信息。 模型已迁移至 src.modules.system.user.models。
本文件仅作兼容转发,最终在 P7(切尾)阶段删除。
""" """
from src.modules.system.user.models import * # noqa: F401,F403
from application.models.base_db import BaseDB
from application.models.base_model import BaseModel
from config import DB_PREFIX
from extensions import db
from utils.case_converter import convert_camel_to_snake
# ============================================================
# 用户模型
# ============================================================
class User(BaseModel, BaseDB):
"""
用户模型
用于存储系统用户信息,包括基本信息、联系方式、地址等。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
realname: 用户姓名(String(150),必填)
gender: 性别(Integer,1-男,2-女,3-保密,默认1)
avatar: 用户头像(String(255),必填)
mobile: 手机号(String(30),必填)
email: 邮箱(String(30),必填)
dept_id: 部门ID(Integer,默认0)
level_id: 职级ID(Integer,默认0)
position_id: 岗位ID(Integer,默认0)
province_code: 省份编码(String(30),必填)
city_code: 城市编码(String(30),必填)
district_code: 县区编码(String(30),必填)
street_code: 街道编码(String(30),必填)
city_info: 省市区信息(String(255),可选)
address: 详细地址(String(255),必填)
username: 用户名(String(30),可选,登录账号)
password: 密码(String(255),可选,加密存储)
salt: 加密盐(String(30),可选)
intro: 个人简介(String(255),可选)
status: 用户状态(Integer,1-正常,2-禁用,默认1)
sort: 排序(Integer,默认0,数值越小越靠前)
note: 个人备注(String(255),可选)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "user"
# ============================================================
# 字段定义
# ============================================================
# 用户姓名
realname = db.Column(
db.String(150),
nullable=False,
comment="用户姓名"
)
# 性别:1-男 2-女 3-保密
gender = db.Column(
db.Integer,
default=1,
comment="性别:1-男 2-女 3-保密"
)
# 用户头像
avatar = db.Column(
db.String(255),
nullable=False,
comment="用户头像"
)
# 手机号
mobile = db.Column(
db.String(30),
nullable=False,
comment="手机号"
)
# 邮箱
email = db.Column(
db.String(30),
nullable=False,
comment="邮箱"
)
# 部门ID
dept_id = db.Column(
db.Integer,
default=0,
comment="部门ID"
)
# 职级ID
level_id = db.Column(
db.Integer,
default=0,
comment="职级ID"
)
# 岗位ID
position_id = db.Column(
db.Integer,
default=0,
comment="岗位ID"
)
# 省份编码
province_code = db.Column(
db.String(30),
nullable=False,
comment="省份编码"
)
# 城市编码
city_code = db.Column(
db.String(30),
nullable=False,
comment="城市编码"
)
# 县区编码
district_code = db.Column(
db.String(30),
nullable=False,
comment="县区编码"
)
# 街道编码
street_code = db.Column(
db.String(30),
nullable=False,
comment="街道编码"
)
# 省市区信息
city_info = db.Column(
db.String(255),
nullable=True,
comment="省市区信息"
)
# 详细地址
address = db.Column(
db.String(255),
nullable=False,
comment="详细地址"
)
# 用户名
username = db.Column(
db.String(30),
nullable=True,
comment="用户名"
)
# 密码
password = db.Column(
db.String(255),
nullable=True,
comment="密码"
)
# 加密盐
salt = db.Column(
db.String(30),
nullable=True,
comment="加密盐"
)
# 个人简介
intro = db.Column(
db.String(255),
nullable=True,
comment="个人简介"
)
# 状态:1-正常 2-禁用
status = db.Column(
db.Integer,
default=1,
comment="状态:1-正常 2-禁用"
)
# 排序
sort = db.Column(
db.Integer,
default=0,
comment="排序"
)
# 个人备注
note = db.Column(
db.String(255),
nullable=True,
comment="个人备注"
)
# ============================================================
# 魔法方法
# ============================================================
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "用户{id}" 的字符串
"""
return "用户{}".format(self.id)
+4 -104
View File
@@ -1,108 +1,8 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称“本产品”)拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
""" """
用户角色关联模型模块 兼容 shim(绞杀者迁移期间保留)
============================================================= =============================================================
提供用户与角色的关联关系数据模型定义,用于实现用户角色分配。 模型已迁移至 src.modules.association.user_role.models。
本文件仅作兼容转发,最终在 P7(切尾)阶段删除。
""" """
from src.modules.association.user_role.models import * # noqa: F401,F403
from application.models.base_db import BaseDB
from application.models.base_model import BaseModel
from config import DB_PREFIX
from extensions import db
# ============================================================
# 用户角色关联模型
# ============================================================
class UserRole(BaseModel, BaseDB):
"""
用户角色关联模型
用于存储用户与角色的关联关系,实现用户的角色分配。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
user_id: 用户ID(Integer,默认0)
role_id: 角色ID(Integer,默认0)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "user_role"
# ============================================================
# 字段定义
# ============================================================
# 用户ID
user_id = db.Column(
db.Integer,
default=0,
comment="用户ID"
)
# 角色ID
role_id = db.Column(
db.Integer,
default=0,
comment="角色ID"
)
# ============================================================
# 魔法方法
# ============================================================
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "用户角色表{user_id}" 的字符串
"""
return "用户角色表{}".format(self.user_id)
+20 -18
View File
@@ -4,22 +4,24 @@
统一在此导入全部数据库模型,确保 Flask-Migrate 能全量识别表结构 统一在此导入全部数据库模型,确保 Flask-Migrate 能全量识别表结构
(migrations/env.py 依赖 db.metadata 收集所有表)。 (migrations/env.py 依赖 db.metadata 收集所有表)。
P2 阶段:模型仍位于 application/models/,经其 __init__ 全量导入。
P3 阶段:随模块逐个迁入 src/modules/,此处逐行改为
from modules.<domain>.<name>.models import * 并移除对应旧行。
P7 阶段:application/ 删除后,仅保留 src.modules 导入。
""" """
# 全量导入(P3a 起:模型位于 src/modules/ 各模块 models.py)
# ============================================================ from src.modules.association.role_menu.models import * # noqa: F401,F403 (role_menu)
# P2:模型仍位于 application/models/(经其 __init__ 全量导入) from src.modules.association.user_role.models import * # noqa: F401,F403 (user_role)
# ============================================================ from src.modules.city.models import * # noqa: F401,F403 (city)
import application.models # noqa: F401 (P3 起逐步替换为 src.modules 导入) from src.modules.cms.article.models import * # noqa: F401,F403 (article)
from src.modules.cms.category.models import * # noqa: F401,F403 (category)
# ============================================================ from src.modules.cms.link.models import * # noqa: F401,F403 (link)
# P3 起按此格式逐模块替换: from src.modules.file_template.models import * # noqa: F401,F403 (file_template)
# from modules.system.user.models import * # noqa: F401,F403 from src.modules.job.models import * # noqa: F401,F403 (job)
# from modules.system.role.models import * # noqa: F401,F403 from src.modules.notice.models import * # noqa: F401,F403 (notice)
# from modules.system.menu.models import * # noqa: F401,F403 from src.modules.param.models import * # noqa: F401,F403 (param)
# ... from src.modules.system.dept.models import * # noqa: F401,F403 (dept)
# ============================================================ from src.modules.system.level.models import * # noqa: F401,F403 (level)
from src.modules.system.menu.models import * # noqa: F401,F403 (menu)
from src.modules.system.position.models import * # noqa: F401,F403 (position)
from src.modules.system.role.models import * # noqa: F401,F403 (role)
from src.modules.system.user.models import * # noqa: F401,F403 (user)
from src.modules.dictionary.models import * # noqa: F401,F403 (dict+dict_item)
from src.modules.configuration.models import * # noqa: F401,F403 (config+config_item)
from src.modules.log.models import * # noqa: F401,F403 (login_log+operation_log)
+1
View File
@@ -0,0 +1 @@
"""模块包。"""
@@ -0,0 +1 @@
"""模块包。"""
+108
View File
@@ -0,0 +1,108 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称“本产品”)拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
"""
角色菜单关联模型模块
=============================================================
提供角色与菜单的关联关系数据模型定义,用于实现角色权限分配。
"""
from src.common.base_db import BaseDB
from src.common.base_model import BaseModel
from config import DB_PREFIX
from src.core.database import db
# ============================================================
# 角色菜单关联模型
# ============================================================
class RoleMenu(BaseModel, BaseDB):
"""
角色菜单关联模型
用于存储角色与菜单的关联关系,实现角色的权限分配。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
role_id: 角色ID(Integer,默认0)
menu_id: 菜单ID(Integer,默认0)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "role_menu"
# ============================================================
# 字段定义
# ============================================================
# 角色ID
role_id = db.Column(
db.Integer,
default=0,
comment="角色ID"
)
# 菜单ID
menu_id = db.Column(
db.Integer,
default=0,
comment="菜单ID"
)
# ============================================================
# 魔法方法
# ============================================================
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "角色菜单表{role_id}" 的字符串
"""
return "角色菜单表{}".format(self.role_id)
@@ -0,0 +1 @@
"""模块包。"""
+108
View File
@@ -0,0 +1,108 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称“本产品”)拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
"""
用户角色关联模型模块
=============================================================
提供用户与角色的关联关系数据模型定义,用于实现用户角色分配。
"""
from src.common.base_db import BaseDB
from src.common.base_model import BaseModel
from config import DB_PREFIX
from src.core.database import db
# ============================================================
# 用户角色关联模型
# ============================================================
class UserRole(BaseModel, BaseDB):
"""
用户角色关联模型
用于存储用户与角色的关联关系,实现用户的角色分配。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
user_id: 用户ID(Integer,默认0)
role_id: 角色ID(Integer,默认0)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "user_role"
# ============================================================
# 字段定义
# ============================================================
# 用户ID
user_id = db.Column(
db.Integer,
default=0,
comment="用户ID"
)
# 角色ID
role_id = db.Column(
db.Integer,
default=0,
comment="角色ID"
)
# ============================================================
# 魔法方法
# ============================================================
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "用户角色表{user_id}" 的字符串
"""
return "用户角色表{}".format(self.user_id)
+1
View File
@@ -0,0 +1 @@
"""模块包。"""
+189
View File
@@ -0,0 +1,189 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称“本产品”)拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
"""
城市模型模块
=============================================================
提供城市区域的数据模型定义,支持省、市、县区、街道四级区域结构。
"""
from src.common.base_db import BaseDB
from src.common.base_model import BaseModel
from config import DB_PREFIX
from src.core.database import db
from src.common.utils.case_converter import convert_camel_to_snake
# ============================================================
# 城市模型
# ============================================================
class City(BaseModel, BaseDB):
"""
城市区域模型
用于存储行政区划数据,支持省、市、县区、街道四级区域结构。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
city_code: 城市区号(String(6),必填)
area_code: 行政编码(String(20),必填)
parent_code: 上级行政编码(String(20),必填)
zip_code: 邮政编码(String(6),必填)
level: 城市级别(Integer,1-省份,2-城市,3-县区,4-街道)
pid: 上级城市ID(Integer,默认0)
name: 城市名称(String(150),必填)
short_name: 城市简称(String(150),必填)
full_name: 城市全称(String(150),可选)
pinyin: 城市拼音(String(150),可选)
lng: 城市经度(String(150),可选)
lat: 城市纬度(String(150),可选)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "city"
# ============================================================
# 字段定义
# ============================================================
# 城市区号
city_code = db.Column(
db.String(6),
nullable=False,
comment="城市区号"
)
# 行政编码
area_code = db.Column(
db.String(20),
nullable=False,
comment="行政编码"
)
# 上级行政编码
parent_code = db.Column(
db.String(20),
nullable=False,
comment="上级行政编码"
)
# 邮政编码
zip_code = db.Column(
db.String(6),
nullable=False,
comment="邮政编码"
)
# 城市级别:1-省份 2-城市 3-县区 4-街道
level = db.Column(
db.Integer,
default=0,
comment="城市级别:1-省份 2-城市 3-县区 4-街道"
)
# 城市名称
name = db.Column(
db.String(150),
nullable=False,
comment="城市名称"
)
# 城市简称
short_name = db.Column(
db.String(150),
nullable=False,
comment="城市简称"
)
# 上级城市ID
pid = db.Column(
db.Integer,
default=0,
comment="上级城市ID"
)
# 城市全称
full_name = db.Column(
db.String(150),
nullable=True,
comment="城市全称"
)
# 城市拼音
pinyin = db.Column(
db.String(150),
nullable=True,
comment="城市拼音"
)
# 城市经度
lng = db.Column(
db.String(150),
nullable=True,
comment="城市经度"
)
# 城市纬度
lat = db.Column(
db.String(150),
nullable=True,
comment="城市纬度"
)
# ============================================================
# 魔法方法
# ============================================================
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "城市{id}" 的字符串
"""
return '城市{}'.format(self.id)
+1
View File
@@ -0,0 +1 @@
"""模块包。"""
+1
View File
@@ -0,0 +1 @@
"""模块包。"""
+186
View File
@@ -0,0 +1,186 @@
"""
文章模型模块
=============================================================
提供文章管理的数据模型定义,用于管理文章内容。
"""
from src.common.base_db import BaseDB
from src.common.base_model import BaseModel
from config import DB_PREFIX
from src.core.database import db
from src.common.utils.case_converter import convert_camel_to_snake
# ============================================================
# 文章模型
# ============================================================
class Article(BaseModel, BaseDB):
"""
文章模型
用于存储文章信息,包括:分类、标题、封面、图集、导读、内容、作者、状态等。
Attributes:
id: 主键ID(继承自 BaseModel)
category_id: 分类ID(Integer,可选)
title: 文章标题(String(150),可选)
cover: 文章封面(String(255),可选)
images: 文章图集(Text,可选,JSON格式存储多张图片)
intro: 文章导读(String(255),可选)
content: 文章内容(Text,可选,富文本内容)
author: 文章作者(String(100),可选)
status: 文章状态(Integer,0-正常,1-下架,默认0)
click: 文章点击率(Integer,默认0)
sort: 文章排序(Integer,默认0)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "article"
# ============================================================
# 字段定义
# ============================================================
# 分类ID
category_id = db.Column(
db.Integer,
nullable=True,
comment="分类ID"
)
# 文章标题
title = db.Column(
db.String(150),
nullable=True,
comment="文章标题"
)
# 文章封面
cover = db.Column(
db.String(255),
nullable=True,
comment="文章封面"
)
# 文章图集(JSON格式存储多张图片)
images = db.Column(
db.Text,
nullable=True,
comment="文章图集"
)
# 文章导读
intro = db.Column(
db.String(255),
nullable=True,
comment="文章导读"
)
# 文章内容
content = db.Column(
db.Text,
nullable=True,
comment="文章内容"
)
# 文章作者
author = db.Column(
db.String(100),
nullable=True,
comment="文章作者"
)
# 文章状态:0-正常 1-下架
status = db.Column(
db.Integer,
nullable=False,
default=0,
comment="文章状态:0-正常 1-下架"
)
# 文章点击率
click = db.Column(
db.Integer,
nullable=False,
default=0,
comment="文章点击率"
)
# 文章排序
sort = db.Column(
db.Integer,
nullable=False,
default=0,
comment="文章排序"
)
# ============================================================
# 常量定义
# ============================================================
class Status:
"""文章状态常量"""
NORMAL = 0 # 正常
OFFLINE = 1 # 下架
# ============================================================
# 业务方法
# ============================================================
def increment_click(self):
"""
增加点击率
每次调用点击量加1
"""
self.click = (self.click or 0) + 1
self.save()
def get_images_list(self):
"""
获取图集列表
Returns:
list: 图集URL列表
"""
if not self.images:
return []
return [img.strip() for img in self.images.split(',') if img.strip()]
def get_cover_url(self):
"""
获取封面URL
Returns:
str: 封面URL
"""
from src.common.utils.rich_text import get_file_url
return get_file_url(self.cover) if self.cover else ""
# ============================================================
# 魔法方法
# ============================================================
def __repr__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "文章:{title}" 的字符串
"""
return '文章:{}'.format(self.title or '未命名')
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "文章:{title}" 的字符串
"""
return self.__repr__()
+1
View File
@@ -0,0 +1 @@
"""模块包。"""
+122
View File
@@ -0,0 +1,122 @@
"""
分类模型模块
=============================================================
提供文章分类管理的数据模型定义,支持多级分类结构。
"""
from src.common.base_db import BaseDB
from src.common.base_model import BaseModel
from config import DB_PREFIX
from src.core.database import db
from src.common.utils.case_converter import convert_camel_to_snake
# ============================================================
# 分类模型
# ============================================================
class Category(BaseModel, BaseDB):
"""
分类模型
用于存储文章分类数据,支持多级分类结构(无限级)。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
category_name: 分类名称(String(100),必填)
category_code: 分类编码(String(100),可选)
parent_id: 上级分类ID(Integer,默认0,0表示顶级分类)
sort: 分类排序(Integer,默认0,数值越小越靠前)
note: 分类备注(String(100),可选)
type: 分类类型(Integer,必填,1-公司,2-子公司,3-部门,4-小组)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "category"
# ============================================================
# 字段定义
# ============================================================
# 分类名称
category_name = db.Column(
db.String(100),
nullable=False,
comment="分类名称"
)
# 分类编码
category_code = db.Column(
db.String(100),
nullable=True,
comment="分类编码"
)
# 上级分类ID
parent_id = db.Column(
db.Integer,
nullable=False,
default=0,
comment="上级ID"
)
# 分类排序
sort = db.Column(
db.Integer,
nullable=False,
default=0,
comment="排序"
)
# 分类备注
note = db.Column(
db.String(100),
nullable=True,
comment="分类备注"
)
# 分类类型
type = db.Column(
db.Integer,
nullable=False,
comment="分类类型:1-公司 2-子公司 3-部门 4-小组"
)
# ============================================================
# 常量定义
# ============================================================
class Type:
"""分类类型常量"""
COMPANY = 1 # 公司
SUBSIDIARY = 2 # 子公司
DEPARTMENT = 3 # 部门
GROUP = 4 # 小组
# ============================================================
# 魔法方法
# ============================================================
def __repr__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "分类:{category_name}" 的字符串
"""
return '分类:{}'.format(self.category_name)
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "分类:{category_name}" 的字符串
"""
return self.__repr__()
+1
View File
@@ -0,0 +1 @@
"""模块包。"""
+157
View File
@@ -0,0 +1,157 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称“本产品”)拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
"""
友链模型模块
=============================================================
提供友情链接的数据模型定义,用于管理网站友情链接和合作伙伴。
"""
from src.common.base_db import BaseDB
from src.common.base_model import BaseModel
from config import DB_PREFIX
from src.core.database import db
from src.common.utils.case_converter import convert_camel_to_snake
# ============================================================
# 友链模型
# ============================================================
class Link(BaseModel, BaseDB):
"""
友链模型
用于存储友情链接和合作伙伴信息,支持多种投放平台和链接形式。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
name: 友链名称(String(255),必填)
type: 友链类型(Integer,1-友情链接,2-合作伙伴,默认1)
url: 友链URL(String(255),可选)
form: 友链形式(Integer,1-文字链接,2-图片链接,默认1)
image: 友链图片(String(255),可选)
status: 友链状态(Integer,1-正常,2-停用,默认1)
sort: 友链排序(Integer,默认0,数值越小越靠前)
note: 友链备注(String(255),可选)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "link"
# ============================================================
# 字段定义
# ============================================================
# 友链名称
name = db.Column(
db.String(255),
nullable=False,
comment="友链名称"
)
# 友链类型:1-友情链接 2-合作伙伴
type = db.Column(
db.Integer,
default=1,
comment="友链类型:1-友情链接 2-合作伙伴"
)
# 友链URL
url = db.Column(
db.String(255),
nullable=True,
comment="友链URL"
)
# 友链形式:1-文字链接 2-图片链接
form = db.Column(
db.Integer,
default=1,
comment="友链形式:1-文字链接 2-图片链接"
)
# 友链图片
image = db.Column(
db.String(255),
nullable=True,
comment="友链图片"
)
# 友链状态:1-正常 2-停用
status = db.Column(
db.Integer,
default=1,
comment="友链状态:1-正常 2-停用"
)
# 友链顺序
sort = db.Column(
db.Integer,
default=0,
comment="友链顺序"
)
# 友链备注
note = db.Column(
db.String(255),
nullable=True,
comment="友链备注"
)
# ============================================================
# 魔法方法
# ============================================================
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "友链{name}" 的字符串
"""
return "友链{}".format(self.name)
+1
View File
@@ -0,0 +1 @@
"""模块包。"""
+260
View File
@@ -0,0 +1,260 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称“本产品”)拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
"""
配置模型模块
=============================================================
提供系统配置分组的数据模型定义,用于管理的分类。
"""
from src.common.base_db import BaseDB
from src.common.base_model import BaseModel
from config import DB_PREFIX
from src.core.database import db
from src.common.utils.case_converter import convert_camel_to_snake
# ============================================================
# 配置模型
# ============================================================
class Config(BaseModel, BaseDB):
"""
配置分组模型
用于存储系统配置分组信息,如:基础配置、邮件配置等。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
name: 配置名称(String(100),必填)
code: 配置编码(String(100),必填)
sort: 配置排序(Integer,默认0,数值越小越靠前)
note: 配置备注(String(255),可选)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "config"
# ============================================================
# 字段定义
# ============================================================
# 配置名称
name = db.Column(
db.String(100),
nullable=False,
comment="配置名称"
)
# 配置编码
code = db.Column(
db.String(100),
nullable=False,
comment="配置编码"
)
# 配置排序
sort = db.Column(
db.Integer,
default=0,
comment="配置排序"
)
# 配置备注
note = db.Column(
db.String(255),
nullable=True,
comment="配置备注"
)
# ============================================================
# 魔法方法
# ============================================================
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "配置{id}" 的字符串
"""
return "配置{}".format(self.id)
"""
模型模块
=============================================================
提供系统的数据模型定义,用于管理具体的键值对。
"""
from src.common.base_db import BaseDB
from src.common.base_model import BaseModel
from config import DB_PREFIX
from src.core.database import db
from src.common.utils.case_converter import convert_camel_to_snake
# ============================================================
# 模型
# ============================================================
class ConfigItem(BaseModel, BaseDB):
"""
模型
用于存储系统配置的具体项,属于某个配置。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
config_id: 配置ID(Integer,默认0,关联配置ID)
config_code: 配置编码(String(100),默认0,关联配置编码)
name: 名称(String(100),必填)
code: 编码(String(100),必填,唯一标识)
value: 值(String(1000),可选)
options: 配置选项(Text,可选,用于下拉选择等场景)
type: 配置类型(String(100),必填)
status: 配置状态(Integer,1-正常,2-停用,默认1)
sort: 排序(Integer,默认0,数值越小越靠前)
note: 备注(String(255),可选)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "config_item"
# ============================================================
# 字段定义
# ============================================================
# 配置ID
config_id = db.Column(
db.Integer,
default=0,
comment="配置ID"
)
# 配置编码
config_code = db.Column(
db.String(100),
nullable=False,
comment="配置编码"
)
# 名称
name = db.Column(
db.String(100),
nullable=False,
comment="名称"
)
# 编码
code = db.Column(
db.String(100),
nullable=False,
comment="编码"
)
# 值
value = db.Column(
db.String(1000),
nullable=True,
comment="值"
)
# 配置选项
options = db.Column(
db.Text,
nullable=True,
comment="配置选项"
)
# 配置类型
type = db.Column(
db.String(100),
nullable=False,
comment="配置类型"
)
# 配置状态:1-正常 2-停用
status = db.Column(
db.Integer,
default=1,
comment="配置状态:1-正常 2-停用"
)
# 排序
sort = db.Column(
db.Integer,
default=0,
comment="顺序"
)
# 备注
note = db.Column(
db.String(255),
nullable=True,
comment="备注"
)
# ============================================================
# 魔法方法
# ============================================================
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "{id}" 的字符串
"""
return "{}".format(self.id)
+1
View File
@@ -0,0 +1 @@
"""模块包。"""
+227
View File
@@ -0,0 +1,227 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称“本产品”)拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
"""
字典模型模块
=============================================================
提供数据字典分组的数据模型定义,用于管理字典项的分类。
"""
from src.common.base_db import BaseDB
from src.common.base_model import BaseModel
from config import DB_PREFIX
from src.core.database import db
from src.common.utils.case_converter import convert_camel_to_snake
# ============================================================
# 字典模型
# ============================================================
class Dict(BaseModel, BaseDB):
"""
字典分组模型
用于存储数据字典分组信息,如:性别、状态等。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
name: 字典名称(String(150),必填)
code: 字典编码(String(150),必填,唯一标识)
sort: 字典排序(Integer,默认0,数值越小越靠前)
note: 字典备注(String(255),可选)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "dict"
# ============================================================
# 字段定义
# ============================================================
# 字典名称
name = db.Column(
db.String(150),
nullable=False,
comment="字典名称"
)
# 字典编码
code = db.Column(
db.String(150),
nullable=False,
comment="字典编码"
)
# 字典排序
sort = db.Column(
db.Integer,
default=0,
comment="字典排序"
)
# 字典备注
note = db.Column(
db.String(255),
nullable=True,
comment="字典备注"
)
# ============================================================
# 魔法方法
# ============================================================
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "字典{id}" 的字符串
"""
return "字典{}".format(self.id)
"""
字典项模型模块
=============================================================
提供数据字典项的数据模型定义,用于管理字典的具体选项。
"""
from src.common.base_db import BaseDB
from src.common.base_model import BaseModel
from config import DB_PREFIX
from src.core.database import db
from src.common.utils.case_converter import convert_camel_to_snake
# ============================================================
# 字典项模型
# ============================================================
class DictItem(BaseModel, BaseDB):
"""
字典项模型
用于存储数据字典的具体项,属于某个字典分组。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
name: 字典项名称(String(100),必填)
value: 字典项值(String(100),必填)
dict_id: 字典ID(Integer,默认0,关联字典分组)
sort: 字典项排序(Integer,默认0,数值越小越靠前)
note: 字典项备注(String(255),可选)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "dict_item"
# ============================================================
# 字段定义
# ============================================================
# 字典ID
dict_id = db.Column(
db.Integer,
default=0,
comment="字典ID"
)
# 字典编码
dict_code = db.Column(
db.String(100),
nullable=False,
comment="字典编码"
)
# 字典项名称
name = db.Column(
db.String(100),
nullable=False,
comment="字典项名称"
)
# 字典项值
value = db.Column(
db.String(100),
nullable=False,
comment="字典项值"
)
# 字典项排序
sort = db.Column(
db.Integer,
default=0,
comment="字典项顺序"
)
# 字典项备注
note = db.Column(
db.String(255),
nullable=True,
comment="字典项备注"
)
# ============================================================
# 魔法方法
# ============================================================
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "字典项{id}" 的字符串
"""
return "字典项{}".format(self.id)
+1
View File
@@ -0,0 +1 @@
"""模块包。"""
+109
View File
@@ -0,0 +1,109 @@
"""
文件模板模型模块
=============================================================
提供文件模板管理的数据模型定义,用于管理文件模板信息。
"""
from src.common.base_db import BaseDB
from src.common.base_model import BaseModel
from config import DB_PREFIX
from src.core.database import db
from src.common.utils.case_converter import convert_camel_to_snake
# ============================================================
# 文件模板模型
# ============================================================
class FileTemplate(BaseModel, BaseDB):
"""
文件模板模型
用于存储文件模板信息,如:导入导出模板、报表模板等。
Attributes:
id: 主键ID(继承自 BaseModel)
name: 模板名称(String(100),可选)
code: 模板编码(String(50),可选,唯一标识)
file_name: 文件名称(String(255),可选)
file_path: 文件路径(String(255),可选)
note: 文件模板备注(String(255),可选)
sort: 文件模板顺序(Integer,必填,默认0)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "file_template"
# ============================================================
# 字段定义
# ============================================================
# 模板名称
name = db.Column(
db.String(100),
nullable=True,
comment="模板名称"
)
# 模板编码
code = db.Column(
db.String(50),
nullable=True,
comment="模板编码"
)
# 文件名称
file_name = db.Column(
db.String(255),
nullable=True,
comment="文件名称"
)
# 文件路径
file_path = db.Column(
db.String(255),
nullable=True,
comment="文件路径"
)
# 文件模板备注
note = db.Column(
db.String(255),
nullable=True,
comment="文件模板备注"
)
# 文件模板顺序
sort = db.Column(
db.Integer,
nullable=False,
default=0,
comment="文件模板顺序"
)
# ============================================================
# 魔法方法
# ============================================================
def __repr__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "文件模板:{name}" 的字符串
"""
return '文件模板:{}'.format(self.name or self.code)
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "文件模板:{name}" 的字符串
"""
return self.__repr__()
+1
View File
@@ -0,0 +1 @@
"""模块包。"""
+152
View File
@@ -0,0 +1,152 @@
"""
定时任务模型模块
=============================================================
提供定时任务管理的数据模型定义。
"""
from src.common.base_db import BaseDB
from src.common.base_model import BaseModel
from config import DB_PREFIX
from src.core.database import db
from src.common.utils.case_converter import convert_camel_to_snake
# ============================================================
# 定时任务模型
# ============================================================
class Job(BaseModel, BaseDB):
"""
定时任务模型
用于存储定时任务信息。
Attributes:
id: 主键ID(继承自 BaseModel)
job_name: 任务名称(String(255),必填)
job_alias: 任务别名(String(255),可选)
job_group: 任务分组(String(255),可选)
job_trigger: 任务触发器(String(255),可选)
status: 任务状态(Integer,0-未发布 1-运行中 2-暂停 3-删除)
cron_expression: Cron表达式(String(255),可选)
execute_policy: 执行策略(Integer,1-立即执行 2-执行一次 3-放弃执行)
is_sync: 是否同步任务(Integer,0-否 1-是)
url: 任务URL(String(255),可选)
note: 任务备注(String(255),可选)
"""
# ============================================================
# 表配置
# ============================================================
__tablename__ = DB_PREFIX + "job"
# ============================================================
# 字段定义
# ============================================================
# 任务名称
job_name = db.Column(
db.String(255),
nullable=False,
comment="任务名称"
)
# 任务别名
job_alias = db.Column(
db.String(255),
nullable=True,
comment="任务别名"
)
# 任务分组
job_group = db.Column(
db.String(255),
nullable=True,
comment="任务分组"
)
# 任务触发器
job_trigger = db.Column(
db.String(255),
nullable=True,
comment="任务触发器"
)
# 任务状态:0-未发布 1-运行中 2-暂停 3-删除
status = db.Column(
db.Integer,
nullable=False,
default=0,
comment="任务状态:0-未发布 1-运行中 2-暂停 3-删除"
)
# Cron表达式
cron_expression = db.Column(
db.String(255),
nullable=True,
comment="Cron表达式"
)
# 执行策略:1-立即执行 2-执行一次 3-放弃执行
execute_policy = db.Column(
db.Integer,
nullable=False,
default=1,
comment="执行策略:1-立即执行 2-执行一次 3-放弃执行"
)
# 是否同步任务:0-否 1-是
is_sync = db.Column(
db.Integer,
nullable=False,
default=0,
comment="是否同步任务:0-否 1-是"
)
# 任务URL
url = db.Column(
db.String(255),
nullable=True,
comment="任务URL"
)
# 任务备注
note = db.Column(
db.String(255),
nullable=True,
comment="任务备注"
)
# ============================================================
# 常量定义
# ============================================================
class Status:
"""任务状态常量"""
UNPUBLISHED = 0 # 未发布
RUNNING = 1 # 运行中
PAUSED = 2 # 暂停
DELETED = 3 # 删除
class ExecutePolicy:
"""执行策略常量"""
EXECUTE_NOW = 1 # 立即执行
EXECUTE_ONCE = 2 # 执行一次
ABANDON = 3 # 放弃执行
class IsSync:
"""是否同步任务常量"""
ASYNC = 0 # 异步
SYNC = 1 # 同步
# ============================================================
# 魔法方法
# ============================================================
def __repr__(self):
return '定时任务:{}'.format(self.job_name)
def __str__(self):
return self.__repr__()
+1
View File
@@ -0,0 +1 @@
"""模块包。"""
+141
View File
@@ -0,0 +1,141 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称“本产品”)拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
"""
通知公告模型模块
=============================================================
提供通知公告的数据模型定义,用于管理系统通知和公告信息。
"""
from src.common.base_db import BaseDB
from src.common.base_model import BaseModel
from config import DB_PREFIX
from src.core.database import db
from src.common.utils.case_converter import convert_camel_to_snake
# ============================================================
# 通知公告模型
# ============================================================
class Notice(BaseModel, BaseDB):
"""
通知公告模型
用于存储系统通知和公告信息,支持置顶、来源分类等功能。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
title: 通知标题(String(150),必填)
cover: 通知封面(String(150),必填)
type: 通知类型(Integer,默认1)
status: 通知状态(Integer,1-正常,2-停用,默认1)
click_num: 点击率(Integer,默认0)
content: 通知公告内容(Text,可选,支持富文本)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "notice"
# ============================================================
# 字段定义
# ============================================================
# 通知标题
title = db.Column(
db.String(150),
nullable=False,
comment="通知标题"
)
# 通知封面
cover = db.Column(
db.String(255),
nullable=False,
comment="通知封面"
)
# 通知类型:1-通知 2-公告
type = db.Column(
db.Integer,
default=1,
comment="通知类型:1-通知 2-公告"
)
# 通知状态:1-正常 2-停用
status = db.Column(
db.Integer,
default=1,
comment="通知状态:1-正常 2-停用"
)
# 点击率
click_num = db.Column(
db.Integer,
default=0,
comment="点击率"
)
# 通知公告内容
content = db.Column(
db.Text,
nullable=True,
comment="通知内容"
)
# ============================================================
# 魔法方法
# ============================================================
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "通知公告{title}" 的字符串
"""
return "通知公告{}".format(self.title)
+1
View File
@@ -0,0 +1 @@
"""模块包。"""
+117
View File
@@ -0,0 +1,117 @@
"""
参数模型模块
=============================================================
提供系统参数管理的数据模型定义,用于管理系统参数和业务参数。
"""
from src.common.base_db import BaseDB
from src.common.base_model import BaseModel
from config import DB_PREFIX
from src.core.database import db
from src.common.utils.case_converter import convert_camel_to_snake
# ============================================================
# 参数模型
# ============================================================
class Param(BaseModel, BaseDB):
"""
参数模型
用于存储系统参数和业务参数信息,如:系统配置参数、业务规则参数等。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
name: 参数名称(String(100),必填)
code: 参数编码(String(100),必填,唯一标识)
value: 参数值(String(255),必填)
type: 参数类型(Integer,0-系统 1-业务,必填)
status: 参数状态(Integer,1-正常 2-禁用,必填)
sort: 参数排序(Integer,默认0,数值越小越靠前)
note: 参数备注(String(255),可选)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "param"
# ============================================================
# 字段定义
# ============================================================
# 参数名称
name = db.Column(
db.String(100),
nullable=False,
comment="参数名称"
)
# 参数编码
code = db.Column(
db.String(100),
nullable=False,
comment="参数编码"
)
# 参数值
value = db.Column(
db.String(255),
nullable=False,
comment="参数值"
)
# 参数类型:0-系统 1-业务
type = db.Column(
db.Integer,
nullable=False,
comment="参数类型:0-系统 1-业务"
)
# 参数状态:1-正常 2-禁用
status = db.Column(
db.Integer,
nullable=False,
comment="参数状态:1-正常 2-禁用"
)
# 参数排序
sort = db.Column(
db.Integer,
nullable=False,
comment="参数排序"
)
# 参数备注
note = db.Column(
db.String(255),
nullable=True,
comment="参数备注"
)
# ============================================================
# 魔法方法
# ============================================================
def __repr__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "参数:{name}" 的字符串
"""
return '参数:{}'.format(self.name)
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "参数:{name}" 的字符串
"""
return self.__repr__()
+1
View File
@@ -0,0 +1 @@
"""模块包。"""
+1
View File
@@ -0,0 +1 @@
"""模块包。"""
+133
View File
@@ -0,0 +1,133 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称“本产品”)拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
"""
部门模型模块
=============================================================
提供部门组织架构的数据模型定义,支持公司、子公司、部门、小组四级结构。
"""
from src.common.base_db import BaseDB
from src.common.base_model import BaseModel
from config import DB_PREFIX
from src.core.database import db
from src.common.utils.case_converter import convert_camel_to_snake
# ============================================================
# 部门模型
# ============================================================
class Dept(BaseModel, BaseDB):
"""
部门模型
用于存储组织架构数据,支持公司、子公司、部门、小组四级结构。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
name: 部门名称(String(100),必填)
type: 部门类型(Integer,1-公司,2-子公司,3-部门,4-小组,默认0)
parent_id: 上级部门ID(Integer,默认0,0表示顶级部门)
sort: 部门排序(Integer,默认0,数值越小越靠前)
note: 部门备注(String(255),可选)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "dept"
# ============================================================
# 字段定义
# ============================================================
# 部门名称
name = db.Column(
db.String(100),
nullable=False,
comment="部门名称"
)
# 部门类型:1-公司 2-子公司 3-部门 4-小组
type = db.Column(
db.Integer,
default=0,
comment="部门类型:1-公司 2-子公司 3-部门 4-小组"
)
# 上级部门ID
parent_id = db.Column(
db.Integer,
default=0,
comment="上级部门ID"
)
# 部门排序
sort = db.Column(
db.Integer,
default=0,
comment="部门排序"
)
# 备注
note = db.Column(
db.String(255),
nullable=True,
comment="备注"
)
# ============================================================
# 魔法方法
# ============================================================
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "部门{name}" 的字符串
"""
return '部门{}'.format(self.name)
+1
View File
@@ -0,0 +1 @@
"""模块包。"""
+117
View File
@@ -0,0 +1,117 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称“本产品”)拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
"""
职级模型模块
=============================================================
提供职级管理的数据模型定义,用于定义员工职级体系。
"""
from src.common.base_db import BaseDB
from src.common.base_model import BaseModel
from config import DB_PREFIX
from src.core.database import db
from src.common.utils.case_converter import convert_camel_to_snake
# ============================================================
# 职级模型
# ============================================================
class Level(BaseModel, BaseDB):
"""
职级模型
用于存储员工职级信息,如:初级、中级、高级等。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
name: 职级名称(String(255),必填)
status: 职级状态(Integer,1-在用,2-停用,默认0)
sort: 职级排序(Integer,默认0,数值越小越靠前)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "level"
# ============================================================
# 字段定义
# ============================================================
# 职级名称
name = db.Column(
db.String(255),
nullable=False,
comment="职级名称"
)
# 职级状态:1-在用 2-停用
status = db.Column(
db.Integer,
default=0,
comment="职级状态:1-在用 2-停用"
)
# 职级排序
sort = db.Column(
db.Integer,
default=0,
comment="职级排序"
)
# ============================================================
# 魔法方法
# ============================================================
def __repr__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "职级:{name}" 的字符串
"""
return '职级:{}'.format(self.name)
+1
View File
@@ -0,0 +1 @@
"""模块包。"""
+188
View File
@@ -0,0 +1,188 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称“本产品”)拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
"""
菜单模型模块
=============================================================
提供系统菜单的数据模型定义,用于管理后台导航菜单和权限节点。
"""
from src.common.base_db import BaseDB
from src.common.base_model import BaseModel
from config import DB_PREFIX
from src.core.database import db
# ============================================================
# 菜单模型
# ============================================================
class Menu(BaseModel, BaseDB):
"""
菜单模型
用于存储系统导航菜单和权限节点信息,支持树形结构。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
name: 菜单名称(String(100),必填)
icon: 菜单图标(String(50),可选)
parent_id: 上级ID(Integer,默认0,0表示顶级菜单)
path: 菜单路径(String(255),可选,前端路由地址)
component: 菜单组件(String(255),可选,前端组件路径)
permission: 权限节点(String(100),可选,权限标识符)
target: 打开方式(Integer,0-内部打开,1-外部打开,默认0)
type: 菜单类型(Integer,0-菜单,1-节点,默认0)
status: 菜单状态(Integer,0-正常,1-禁用,默认0)
hide: 是否可见(Integer,0-可见,1-不可见,默认0)
sort: 菜单排序(Integer,默认0,数值越小越靠前)
note: 菜单备注(String(255),可选)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "menu"
# ============================================================
# 字段定义
# ============================================================
# 菜单名称
name = db.Column(
db.String(100),
nullable=False,
comment="菜单名称"
)
# 菜单图标
icon = db.Column(
db.String(50),
nullable=True,
comment="菜单图标"
)
# 上级ID
parent_id = db.Column(
db.Integer,
default=0,
comment="上级ID"
)
# 菜单路径
path = db.Column(
db.String(255),
nullable=True,
comment="菜单路径"
)
# 菜单组件
component = db.Column(
db.String(255),
nullable=True,
comment="菜单组件"
)
# 权限节点
permission = db.Column(
db.String(100),
nullable=True,
comment="权限节点"
)
# 打开方式:0-内部打开 1-外部打开
target = db.Column(
db.Integer,
default=0,
comment="打开方式:0-内部打开 1-外部打开"
)
# 菜单类型:0-菜单 1-节点
type = db.Column(
db.Integer,
default=0,
comment="菜单类型:0-菜单 1-节点"
)
# 状态选项
status = db.Column(
db.Integer,
default=0,
comment="菜单状态:0-正常 1-禁用"
)
# 是否可见:0-可见 1-不可见
hide = db.Column(
db.Integer,
default=0,
comment="是否可见:0-可见 1-不可见"
)
# 排序
sort = db.Column(
db.Integer,
default=0,
comment="排序"
)
# 备注
note = db.Column(
db.String(255),
nullable=True,
comment="备注"
)
# ============================================================
# 魔法方法
# ============================================================
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "菜单{id}" 的字符串
"""
return "菜单{}".format(self.id)
+1
View File
@@ -0,0 +1 @@
"""模块包。"""
+295
View File
@@ -0,0 +1,295 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称"本产品")拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
"""
岗位模型模块
=============================================================
提供岗位管理的数据模型定义,用于定义员工岗位信息。
企业级特性:
1. 使用枚举类管理状态常量,确保类型安全
2. 状态文本自动转换,便于前端展示
3. 便捷的查询方法,提高开发效率
4. 继承 BaseModel 和 BaseDB,复用通用功能
5. __init__ 由 BaseModel 统一管理,无需重复定义
模型说明:
岗位用于标识用户的职位,如:技术总监、产品经理、开发工程师等。
通过 sort 字段控制显示顺序,数值越小越靠前。
"""
from enum import IntEnum
from typing import Optional, List
from src.common.base_db import BaseDB
from src.common.base_model import BaseModel
from config import DB_PREFIX
from src.core.database import db
from src.common.utils.request import like_contains
# ============================================================
# 岗位状态枚举
# ============================================================
class PositionStatus(IntEnum):
"""
岗位状态枚举
使用 IntEnum 确保类型安全,避免魔法数字。
可直接用于数据库查询和比较。
Example:
# 查询启用状态的岗位
Position.query.filter(Position.status == PositionStatus.ENABLED)
# 创建岗位时设置状态
position = Position(name='经理', status=PositionStatus.ENABLED)
# 判断岗位是否启用
if position.status == PositionStatus.ENABLED:
print("岗位已启用")
"""
DISABLED = 0 # 停用
ENABLED = 1 # 启用
# ============================================================
# 岗位模型
# ============================================================
class Position(BaseModel, BaseDB):
"""
岗位模型
用于存储员工岗位信息,如:技术总监、产品经理等。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
name: 岗位名称(String(255),必填)
status: 岗位状态(使用 PositionStatus 枚举,默认停用)
sort: 岗位排序(Integer,默认0,数值越小越靠前)
便捷属性:
status_text: 获取状态文本("启用"/"停用")
is_enabled: 判断是否启用
is_disabled: 判断是否停用
自定义查询:
get_enabled(): 获取所有启用的岗位
get_by_name(): 根据名称精确查询
search_by_name(): 根据名称模糊搜索
"""
# ============================================================
# 表配置
# ============================================================
# 表名:使用配置前缀 + 模型名
__tablename__ = DB_PREFIX + "position"
# ============================================================
# 字段定义
# ============================================================
# 岗位名称:必填字段,最长255字符
name = db.Column(
db.String(255),
nullable=False,
comment="岗位名称"
)
# 岗位状态:使用枚举确保类型安全
# 默认值为停用,创建后需手动启用
status = db.Column(
db.Integer,
default=PositionStatus.DISABLED,
comment="岗位状态:0-停用 1-启用"
)
# 岗位排序:数值越小越靠前
# 用于列表展示时的排序控制
sort = db.Column(
db.Integer,
default=0,
comment="岗位排序"
)
# ============================================================
# 注意:__init__ 方法在 BaseModel 中已实现,无需重复定义
# BaseModel 已处理驼峰转换、字段过滤等逻辑
# ============================================================
# ============================================================
# 便捷属性
# ============================================================
@property
def status_text(self) -> str:
"""
获取岗位状态文本
将数字状态转换为可读的中文文本。
用于前端展示或日志记录。
Returns:
str: "启用" 或 "停用"
"""
status_map = {
PositionStatus.DISABLED: '停用',
PositionStatus.ENABLED: '启用'
}
return status_map.get(self.status, '未知')
@property
def is_enabled(self) -> bool:
"""
判断岗位是否启用
Returns:
bool: 启用返回 True,否则返回 False
"""
return self.status == PositionStatus.ENABLED
@property
def is_disabled(self) -> bool:
"""
判断岗位是否停用
Returns:
bool: 停用返回 True,否则返回 False
"""
return self.status == PositionStatus.DISABLED
# ============================================================
# 自定义查询方法
# ============================================================
@classmethod
def get_enabled(cls) -> List['Position']:
"""
获取所有启用的岗位
按排序值升序排列,适用于下拉选择框等场景。
只返回未删除且状态为启用的岗位。
Returns:
List[Position]: 启用的岗位列表
Example:
positions = Position.get_enabled()
for pos in positions:
print(pos.name, pos.status_text)
"""
return cls.query.filter(
cls.is_delete == 0,
cls.status == PositionStatus.ENABLED
).order_by(cls.sort.asc()).all()
@classmethod
def get_by_name(cls, name: Optional[str]) -> Optional['Position']:
"""
根据岗位名称精确查询
用于检查岗位名称是否已存在等场景。
Args:
name: 岗位名称
Returns:
Optional[Position]: 岗位对象,不存在或名称为空时返回 None
Example:
position = Position.get_by_name('经理')
if position:
print("岗位已存在")
"""
if not name:
return None
return cls.query.filter(
cls.name == name,
cls.is_delete == 0
).first()
@classmethod
def search_by_name(cls, name: Optional[str]) -> List['Position']:
"""
根据岗位名称模糊搜索
支持名称关键字匹配,按排序值升序排列。
适用于搜索建议或筛选场景。
Args:
name: 岗位名称关键字
Returns:
List[Position]: 匹配的岗位列表
Example:
positions = Position.search_by_name('经理')
for pos in positions:
print(pos.name)
"""
if not name:
return []
return cls.query.filter(
cls.name.like(like_contains(name), escape='\\'),
cls.is_delete == 0
).order_by(cls.sort.asc()).all()
# ============================================================
# 魔法方法
# ============================================================
def __repr__(self) -> str:
"""
返回模型的字符串表示
用于调试和日志输出。
Returns:
str: 格式为 "岗位:{name}"
"""
return f'岗位:{self.name}'
+1
View File
@@ -0,0 +1 @@
"""模块包。"""
+125
View File
@@ -0,0 +1,125 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称“本产品”)拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
"""
角色模型模块
=============================================================
提供角色管理的数据模型定义,用于定义系统角色和权限分配。
"""
from src.common.base_db import BaseDB
from src.common.base_model import BaseModel
from config import DB_PREFIX
from src.core.database import db
from src.common.utils.case_converter import convert_camel_to_snake
# ============================================================
# 角色模型
# ============================================================
class Role(BaseModel, BaseDB):
"""
角色模型
用于存储系统角色信息,角色是权限分配的基本单位。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
name: 角色名称(String(150),必填)
code: 角色编码(String(30),必填,唯一标识)
sort: 角色排序(Integer,默认0,数值越小越靠前)
note: 角色备注(String(255),可选)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "role"
# ============================================================
# 字段定义
# ============================================================
# 角色名称
name = db.Column(
db.String(150),
nullable=False,
comment="角色名称"
)
# 角色编码
code = db.Column(
db.String(30),
nullable=False,
comment="角色编码"
)
# 角色排序
sort = db.Column(
db.Integer,
default=0,
comment="角色排序"
)
# 角色备注
note = db.Column(
db.String(255),
nullable=True,
comment="角色备注"
)
# ============================================================
# 魔法方法
# ============================================================
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "角色{name}:" 的字符串
"""
return '角色{}:'.format(self.name)
+1
View File
@@ -0,0 +1 @@
"""模块包。"""
+261
View File
@@ -0,0 +1,261 @@
# +======================================================================
# | DjangoAdmin 企业数字化开发平台 [ 赋能开发者,助力企业发展 ]
# +----------------------------------------------------------------------
# | Copyright (c) 2021-2026 一米阳光团队 版权所有
# +----------------------------------------------------------------------
# | 开源协议: Apache-2.0
# | 重要声明: 未经书面许可,不得移除或修改本框架相关版权标识。
# +----------------------------------------------------------------------
# | 官方网站: https://www.djangoadmin.cn
# +----------------------------------------------------------------------
# | 研发团队: 一米阳光团队 荣誉出品
# +======================================================================
# | 版权和免责声明:
# | 一、知识产权声明
# | 本团队对该软件框架产品(以下简称“本产品”)拥有完整知识产权,包括但不限于商标权、专利权、
# | 著作权、商业秘密等。前述权利均受中华人民共和国及相关国际法律法规保护。未经本团队书面授权,
# | 任何个人或单位不得基于本产品本身申请任何形式的知识产权。
# | 二、使用限制与禁止条款
# | 您理解并同意,禁止将本产品用于以下任何行为:
# | 1. 任何违反中华人民共和国法律法规的用途;
# | 2. 任何侵害他人合法权益(包括但不限于人身权、财产权、知识产权等)的行为;
# | 3. 任何危害国家安全、公共利益及社会道德风尚的行为。
# | 三、责任豁免
# | 因使用本产品而产生的任何损失或法律纠纷(包括但不限于直接损失、间接损失、附带损失、衍生损失
# | 以及因违约、侵权等引发的责任),本团队均不承担任何法律责任。若因违规使用本产品导致任何第三
# | 方提起索赔或行政机关进行调查,您应独立承担全部责任。
# | 四、违约与法律责任
# | 如发现任何违反本声明的行为,本团队有权:
# | 1. 无条件配合公安机关及其他有权机关的调查取证工作;
# | 2. 依法追究相关方的民事责任,并要求赔偿全部损失;
# | 3. 保留进一步采取刑事控告等法律措施的权利。
# | 五、许可范围说明
# | 1、被授权方应视本产品源代码为核心机密信息,负有最高标准的保密与保管义务。禁止以任何形式(包
# | 括但不限于直接或间接的分享、复制、传播、分发、转售、出租、开源、反向工程、反编译、反汇编或通
# | 过网络服务提供给任何第三方)泄露、披露或处置源代码的全部或部分内容。任何未经授权的复制、使用、
# | 传播行为均构成对本团队知识产权的严重侵权,本团队有权依法追究其全部法律责任,并要求赔偿因此造
# | 成的一切经济损失及商誉损害。
# | 2、本产品仅限于公司或个人在法律允许范围内,用于内部且合规的软件产品研发。具体权利义务以《软件
# | 许可协议》附件为准。
# +======================================================================
"""
用户模型模块
=============================================================
提供用户管理的数据模型定义,用于存储系统用户基本信息。
"""
from src.common.base_db import BaseDB
from src.common.base_model import BaseModel
from config import DB_PREFIX
from src.core.database import db
from src.common.utils.case_converter import convert_camel_to_snake
# ============================================================
# 用户模型
# ============================================================
class User(BaseModel, BaseDB):
"""
用户模型
用于存储系统用户信息,包括基本信息、联系方式、地址等。
继承自 BaseModel(通用字段)和 BaseDB(数据库操作方法)。
Attributes:
id: 主键ID(继承自 BaseModel)
realname: 用户姓名(String(150),必填)
gender: 性别(Integer,1-男,2-女,3-保密,默认1)
avatar: 用户头像(String(255),必填)
mobile: 手机号(String(30),必填)
email: 邮箱(String(30),必填)
dept_id: 部门ID(Integer,默认0)
level_id: 职级ID(Integer,默认0)
position_id: 岗位ID(Integer,默认0)
province_code: 省份编码(String(30),必填)
city_code: 城市编码(String(30),必填)
district_code: 县区编码(String(30),必填)
street_code: 街道编码(String(30),必填)
city_info: 省市区信息(String(255),可选)
address: 详细地址(String(255),必填)
username: 用户名(String(30),可选,登录账号)
password: 密码(String(255),可选,加密存储)
salt: 加密盐(String(30),可选)
intro: 个人简介(String(255),可选)
status: 用户状态(Integer,1-正常,2-禁用,默认1)
sort: 排序(Integer,默认0,数值越小越靠前)
note: 个人备注(String(255),可选)
"""
# ============================================================
# 表配置
# ============================================================
# 设置表名
__tablename__ = DB_PREFIX + "user"
# ============================================================
# 字段定义
# ============================================================
# 用户姓名
realname = db.Column(
db.String(150),
nullable=False,
comment="用户姓名"
)
# 性别:1-男 2-女 3-保密
gender = db.Column(
db.Integer,
default=1,
comment="性别:1-男 2-女 3-保密"
)
# 用户头像
avatar = db.Column(
db.String(255),
nullable=False,
comment="用户头像"
)
# 手机号
mobile = db.Column(
db.String(30),
nullable=False,
comment="手机号"
)
# 邮箱
email = db.Column(
db.String(30),
nullable=False,
comment="邮箱"
)
# 部门ID
dept_id = db.Column(
db.Integer,
default=0,
comment="部门ID"
)
# 职级ID
level_id = db.Column(
db.Integer,
default=0,
comment="职级ID"
)
# 岗位ID
position_id = db.Column(
db.Integer,
default=0,
comment="岗位ID"
)
# 省份编码
province_code = db.Column(
db.String(30),
nullable=False,
comment="省份编码"
)
# 城市编码
city_code = db.Column(
db.String(30),
nullable=False,
comment="城市编码"
)
# 县区编码
district_code = db.Column(
db.String(30),
nullable=False,
comment="县区编码"
)
# 街道编码
street_code = db.Column(
db.String(30),
nullable=False,
comment="街道编码"
)
# 省市区信息
city_info = db.Column(
db.String(255),
nullable=True,
comment="省市区信息"
)
# 详细地址
address = db.Column(
db.String(255),
nullable=False,
comment="详细地址"
)
# 用户名
username = db.Column(
db.String(30),
nullable=True,
comment="用户名"
)
# 密码
password = db.Column(
db.String(255),
nullable=True,
comment="密码"
)
# 加密盐
salt = db.Column(
db.String(30),
nullable=True,
comment="加密盐"
)
# 个人简介
intro = db.Column(
db.String(255),
nullable=True,
comment="个人简介"
)
# 状态:1-正常 2-禁用
status = db.Column(
db.Integer,
default=1,
comment="状态:1-正常 2-禁用"
)
# 排序
sort = db.Column(
db.Integer,
default=0,
comment="排序"
)
# 个人备注
note = db.Column(
db.String(255),
nullable=True,
comment="个人备注"
)
# ============================================================
# 魔法方法
# ============================================================
def __str__(self):
"""
返回模型的字符串表示
Returns:
str: 格式为 "用户{id}" 的字符串
"""
return "用户{}".format(self.id)