Files
shanxia2.0/backend/app/models/models.py
T
2026-05-12 16:35:07 +08:00

1551 lines
92 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""数据模型"""
from datetime import datetime
from sqlalchemy import Column, String, DateTime, Integer, Boolean, Text, Numeric, PrimaryKeyConstraint
from sqlalchemy.orm import relationship
from app.core.database import Base
import enum
class UserRole(str, enum.Enum):
"""用户角色"""
ADMIN = "admin" # 运营人员
SUPPLIER = "supplier" # 供应商
CLIENT = "client" # 客户
DELIVER = "deliver" # 配送人员
# =========================================
# 系统模块
# =========================================
class SysUser(Base):
"""用户表"""
__tablename__ = "sys_user"
id = Column(String(32), primary_key=True, comment="主键ID")
username = Column(String(50), unique=True, nullable=False, comment="用户名")
password_hash = Column(String(255), nullable=False, comment="密码哈希")
real_name = Column(String(100), nullable=True, comment="真实姓名")
phone = Column(String(20), nullable=True, comment="联系电话")
avatar_url = Column(String(512), nullable=True, comment="头像URL")
wx_mini_openid = Column(String(64), nullable=True, unique=True, comment="微信小程序openid")
role = Column(String(20), nullable=False, comment="角色")
region_id = Column(String(32), nullable=True, comment="所属区域ID")
is_active = Column(Boolean, default=True, comment="是否激活")
is_del = Column(Integer, default=0, comment="是否删除: 0-否, 1-是")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class SysUserHis(Base):
"""用户历史表"""
__tablename__ = "sys_user_his"
id = Column(String(32), primary_key=True, nullable=False, comment="主键ID")
username = Column(String(50), nullable=False, comment="用户名")
password_hash = Column(String(255), nullable=False, comment="密码哈希")
real_name = Column(String(100), nullable=True, comment="真实姓名")
phone = Column(String(20), nullable=True, comment="联系电话")
avatar_url = Column(String(512), nullable=True, comment="头像URL")
wx_mini_openid = Column(String(64), nullable=True, comment="微信小程序openid")
role = Column(String(20), nullable=False, comment="角色")
region_id = Column(String(32), nullable=True, comment="所属区域ID")
is_active = Column(Boolean, default=True, comment="是否激活")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
class SysRegion(Base):
"""区域表"""
__tablename__ = "sys_region"
id = Column(String(32), primary_key=True, comment="主键ID")
name = Column(String(100), nullable=False, comment="区域名称")
code = Column(String(50), unique=True, nullable=False, comment="区域编码")
description = Column(String(500), nullable=True, comment="区域描述")
sort_order = Column(Integer, default=0, comment="排序")
expected_delivery_minutes = Column(Integer, nullable=True, comment="预计配送时长(分钟)")
delivery_warn_advance_minutes = Column(
Integer, nullable=True, comment="计划到货前未送达时预警提前时间(分钟)"
)
is_active = Column(Boolean, default=True, comment="是否启用")
is_del = Column(Integer, default=0, comment="是否删除: 0-否, 1-是")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class SysRegionHis(Base):
"""区域历史表"""
__tablename__ = "sys_region_his"
id = Column(String(32), primary_key=True, nullable=False, comment="主键ID")
name = Column(String(100), nullable=False, comment="区域名称")
code = Column(String(50), nullable=False, comment="区域编码")
description = Column(String(500), nullable=True, comment="区域描述")
sort_order = Column(Integer, default=0, comment="排序")
expected_delivery_minutes = Column(Integer, nullable=True, comment="预计配送时长(分钟)")
delivery_warn_advance_minutes = Column(
Integer, nullable=True, comment="计划到货前未送达时预警提前时间(分钟)"
)
is_active = Column(Boolean, default=True, comment="是否启用")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
class BasChinaRegion(Base):
"""中国行政区划(GB/T 2260),见 docs/sql/bas_china_region.sql"""
__tablename__ = "bas_china_region"
id = Column(String(32), primary_key=True, comment="主键,与 region_code 一致")
parent_id = Column(String(32), nullable=True, comment="父级 region_code,省级为 NULL")
region_code = Column(String(6), nullable=False, comment="六位行政区划码")
region_name = Column(String(100), nullable=False, comment="区划名称")
level = Column(Integer, nullable=False, comment="层级:1省 2市 3区县")
sort_order = Column(Integer, nullable=False, default=0, comment="排序")
is_del = Column(Integer, default=0, nullable=False, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class SysApiRequestLog(Base):
"""API 请求日志(统一记录请求/响应出入参)"""
__tablename__ = "sys_api_request_log"
id = Column(String(32), primary_key=True, comment="主键ID")
http_method = Column(String(10), nullable=False, comment="HTTP 方法")
path = Column(String(500), nullable=False, comment="请求路径")
query_string = Column(String(2000), nullable=True, comment="Query 字符串")
request_body = Column(Text, nullable=True, comment="请求体(截断)")
response_body = Column(Text, nullable=True, comment="响应体(截断)")
status_code = Column(Integer, nullable=False, comment="HTTP 状态码")
duration_ms = Column(Integer, nullable=False, comment="耗时(ms)")
user_id = Column(String(32), nullable=True, comment="用户ID(JWT 解析)")
username = Column(String(100), nullable=True, comment="用户名")
role = Column(String(20), nullable=True, comment="角色")
ip_address = Column(String(50), nullable=True, comment="IP地址")
user_agent = Column(String(500), nullable=True, comment="User-Agent")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class SysMenu(Base):
"""菜单表"""
__tablename__ = "sys_menu"
id = Column(String(32), primary_key=True, comment="主键ID")
name = Column(String(100), nullable=False, comment="菜单名称")
code = Column(String(100), nullable=False, comment="菜单编码(唯一标识)")
path = Column(String(500), nullable=False, comment="路由路径")
component = Column(String(500), nullable=True, comment="组件路径")
icon = Column(String(100), nullable=True, comment="菜单图标")
parent_id = Column(String(32), nullable=True, comment="父菜单ID")
sort_order = Column(Integer, default=0, comment="排序(数字越小越靠前)")
redirect = Column(String(500), nullable=True, comment="重定向路径")
menu_type = Column(String(20), default="menu", comment="菜单类型: menu-菜单, button-按钮")
is_visible = Column(Integer, default=1, comment="是否显示: 0-隐藏, 1-显示")
is_cache = Column(Integer, default=0, comment="是否缓存: 0-不缓存, 1-缓存")
is_active = Column(Integer, default=1, comment="是否启用: 0-禁用, 1-启用")
is_del = Column(Integer, default=0, comment="是否删除: 0-否, 1-是")
remark = Column(String(500), nullable=True, comment="备注")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class SysUserRegionScope(Base):
"""用户区域权限表"""
__tablename__ = "sys_user_region_scope"
id = Column(String(32), primary_key=True, comment="主键ID")
user_id = Column(String(32), nullable=False, comment="用户ID")
region_id = Column(String(32), nullable=False, comment="区域ID")
is_del = Column(Integer, default=0, comment="是否删除: 0-否, 1-是")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class SysUserRegionScopeHis(Base):
"""用户区域权限历史表"""
__tablename__ = "sys_user_region_scope_his"
id = Column(String(32), primary_key=True, nullable=False, comment="主键ID")
user_id = Column(String(32), nullable=False, comment="用户ID")
region_id = Column(String(32), nullable=False, comment="区域ID")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
class SysUserMenuScope(Base):
"""用户菜单权限表(按菜单 code 授权)"""
__tablename__ = "sys_user_menu_scope"
id = Column(String(32), primary_key=True, comment="主键ID")
user_id = Column(String(32), nullable=False, comment="用户ID")
menu_code = Column(String(100), nullable=False, comment="菜单编码")
is_del = Column(Integer, default=0, comment="是否删除: 0-否, 1-是")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class SysUserMenuScopeHis(Base):
"""用户菜单权限历史表"""
__tablename__ = "sys_user_menu_scope_his"
id = Column(String(32), primary_key=True, nullable=False, comment="主键ID")
user_id = Column(String(32), nullable=False, comment="用户ID")
menu_code = Column(String(100), nullable=False, comment="菜单编码")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
class SysPasswordHistory(Base):
"""密码修改历史表"""
__tablename__ = "sys_password_history"
id = Column(String(32), primary_key=True, comment="主键ID")
user_id = Column(String(32), nullable=False, comment="用户ID")
operation_type = Column(String(20), nullable=False, comment="操作类型")
operator_id = Column(String(32), nullable=True, comment="操作人ID")
operator_name = Column(String(100), nullable=True, comment="操作人姓名")
ip_address = Column(String(50), nullable=True, comment="IP地址")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
# =========================================
# 基础模块
# =========================================
class BasProductCategory(Base):
"""商品分类表"""
__tablename__ = "bas_product_category"
id = Column(String(32), primary_key=True, comment="主键ID")
name = Column(String(100), nullable=False, comment="分类名称")
image_url = Column(String(500), nullable=True, comment="图片URL")
parent_id = Column(String(32), nullable=True, comment="父分类ID")
sort_order = Column(Integer, default=0, comment="排序")
price_coefficient = Column(
Numeric(6, 2), default=0, nullable=False, comment="价格系数(百分比点数,5表示5%)"
)
is_active = Column(Boolean, default=True, comment="是否启用")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class BasProductCategoryHis(Base):
"""商品分类历史表"""
__tablename__ = "bas_product_category_his"
id = Column(String(32), primary_key=True, nullable=False, comment="主键ID")
name = Column(String(100), nullable=False, comment="分类名称")
image_url = Column(String(500), nullable=True, comment="图片URL")
parent_id = Column(String(32), nullable=True, comment="父分类ID")
sort_order = Column(Integer, default=0, comment="排序")
price_coefficient = Column(
Numeric(6, 2), default=0, nullable=False, comment="价格系数(百分比点数,5表示5%)"
)
is_active = Column(Boolean, default=True, comment="是否启用")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
class BasProductUnit(Base):
"""商品单位码表"""
__tablename__ = "bas_product_unit"
id = Column(String(32), primary_key=True, comment="主键ID")
name = Column(String(50), nullable=False, comment="单位名称")
code = Column(String(20), unique=True, nullable=False, comment="单位编码")
is_active = Column(Boolean, default=True, comment="是否启用")
sort_order = Column(Integer, default=0, comment="排序字段,数值越小越靠前")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class BasProductUnitHis(Base):
"""商品单位历史表"""
__tablename__ = "bas_product_unit_his"
id = Column(String(32), primary_key=True, nullable=False, comment="主键ID")
name = Column(String(50), nullable=False, comment="单位名称")
code = Column(String(20), nullable=False, comment="单位编码")
is_active = Column(Boolean, default=True, comment="是否启用")
sort_order = Column(Integer, default=0, comment="排序字段,数值越小越靠前")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
class BasProduct(Base):
"""商品表"""
__tablename__ = "bas_product"
id = Column(String(32), primary_key=True, comment="主键ID")
name = Column(String(200), nullable=False, comment="商品名称")
sku_code = Column(String(50), nullable=True, unique=True, comment="商品SKU编码")
category_id = Column(String(32), nullable=True, comment="分类ID")
unit_id = Column(String(32), nullable=True, comment="单位ID")
measure_value = Column(Numeric(12, 3), nullable=True, comment="计量数量(与单位组合表示售卖规格,如500克、1个)")
description = Column(String(1000), nullable=True, comment="商品描述")
detail_content = Column(Text, nullable=True, comment="商品详情富文本内容")
image_url = Column(String(500), nullable=True, comment="图片URL")
price_coefficient = Column(
Numeric(6, 2), default=0, nullable=False, comment="调价系数(百分比点数,5表示5%)"
)
is_active = Column(Boolean, default=True, comment="是否启用")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
category = relationship(
"BasProductCategory",
foreign_keys=[category_id],
primaryjoin="BasProduct.category_id==BasProductCategory.id",
lazy="select",
)
unit = relationship(
"BasProductUnit",
foreign_keys=[unit_id],
primaryjoin="BasProduct.unit_id==BasProductUnit.id",
lazy="select",
)
class BasProductHis(Base):
"""商品历史表"""
__tablename__ = "bas_product_his"
id = Column(String(32), primary_key=True, nullable=False, comment="主键ID")
name = Column(String(200), nullable=False, comment="商品名称")
sku_code = Column(String(50), nullable=True, comment="商品SKU编码")
category_id = Column(String(32), nullable=True, comment="分类ID")
unit_id = Column(String(32), nullable=True, comment="单位ID")
measure_value = Column(Numeric(12, 3), nullable=True, comment="计量数量(与单位组合表示售卖规格,如500克、1个)")
description = Column(String(1000), nullable=True, comment="商品描述")
detail_content = Column(Text, nullable=True, comment="商品详情富文本内容")
image_url = Column(String(500), nullable=True, comment="图片URL")
price_coefficient = Column(
Numeric(6, 2), default=0, nullable=False, comment="调价系数(百分比点数,5表示5%)"
)
is_active = Column(Boolean, default=True, comment="是否启用")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
class BasAddress(Base):
"""地址表"""
__tablename__ = "bas_address"
id = Column(String(32), primary_key=True, comment="主键ID")
user_id = Column(String(32), nullable=False, comment="用户ID")
address_type = Column(String(20), nullable=False, comment="地址类型")
contact_person = Column(String(100), nullable=False, comment="联系人")
contact_phone = Column(String(20), nullable=False, comment="联系电话")
province = Column(String(50), nullable=True, comment="省份")
city = Column(String(50), nullable=True, comment="城市")
district = Column(String(50), nullable=True, comment="区县")
detail_address = Column(String(500), nullable=False, comment="详细地址")
is_default = Column(Boolean, default=False, comment="是否默认地址")
latitude = Column(String(20), nullable=True, comment="纬度")
longitude = Column(String(20), nullable=True, comment="经度")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class BasAddressHis(Base):
"""地址历史表"""
__tablename__ = "bas_address_his"
id = Column(String(32), primary_key=True, nullable=False, comment="主键ID")
user_id = Column(String(32), nullable=False, comment="用户ID")
address_type = Column(String(20), nullable=False, comment="地址类型")
contact_person = Column(String(100), nullable=False, comment="联系人")
contact_phone = Column(String(20), nullable=False, comment="联系电话")
province = Column(String(50), nullable=True, comment="省份")
city = Column(String(50), nullable=True, comment="城市")
district = Column(String(50), nullable=True, comment="区县")
detail_address = Column(String(500), nullable=False, comment="详细地址")
is_default = Column(Boolean, default=False, comment="是否默认地址")
latitude = Column(String(20), nullable=True, comment="纬度")
longitude = Column(String(20), nullable=True, comment="经度")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
# =========================================
# 业务模块
# =========================================
class BizInquiry(Base):
"""询价单表"""
__tablename__ = "biz_inquiry"
id = Column(String(32), primary_key=True, comment="主键ID")
region_id = Column(String(32), nullable=False, comment="区域ID")
title = Column(String(200), nullable=False, comment="询价单标题")
status = Column(String(20), default="draft", comment="状态")
publish_time = Column(DateTime, nullable=True, comment="发布时间")
close_time = Column(DateTime, nullable=True, comment="关闭时间")
remark = Column(String(1000), nullable=True, comment="备注")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class BizInquiryItem(Base):
"""询价单项表"""
__tablename__ = "biz_inquiry_item"
id = Column(String(32), primary_key=True, comment="主键ID")
inquiry_id = Column(String(32), nullable=False, comment="询价单ID")
product_id = Column(String(32), nullable=False, comment="商品ID")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class BizInquiryHis(Base):
"""询价单历史表"""
__tablename__ = "biz_inquiry_his"
id = Column(String(32), primary_key=True, nullable=False, comment="主键ID")
region_id = Column(String(32), nullable=False, comment="区域ID")
title = Column(String(200), nullable=False, comment="询价单标题")
status = Column(String(20), default="draft", comment="状态")
publish_time = Column(DateTime, nullable=True, comment="发布时间")
close_time = Column(DateTime, nullable=True, comment="关闭时间")
remark = Column(String(1000), nullable=True, comment="备注")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
class BizInquiryItemHis(Base):
"""询价单项历史表"""
__tablename__ = "biz_inquiry_item_his"
id = Column(String(32), primary_key=True, nullable=False, comment="主键ID")
inquiry_id = Column(String(32), nullable=False, comment="询价单ID")
product_id = Column(String(32), nullable=False, comment="商品ID")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
class BizQuotation(Base):
"""报价单表"""
__tablename__ = "biz_quotation"
id = Column(String(32), primary_key=True, comment="主键ID")
inquiry_id = Column(String(32), nullable=False, comment="询价单ID")
supplier_id = Column(String(32), nullable=False, comment="供应商ID")
region_id = Column(String(32), nullable=False, comment="区域ID")
# 报价无需审核:仅使用 submitted / selected
status = Column(String(20), default="submitted", comment="状态")
total_amount = Column(Numeric(12, 2), default=0, comment="报价总金额")
submit_time = Column(DateTime, nullable=True, comment="提交时间")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class BizQuotationItem(Base):
"""报价单项表"""
__tablename__ = "biz_quotation_item"
id = Column(String(32), primary_key=True, comment="主键ID")
quotation_id = Column(String(32), nullable=False, comment="报价单ID")
product_id = Column(String(32), nullable=False, comment="商品ID")
unit_id = Column(String(32), nullable=False, comment="单位ID")
price = Column(Numeric(10, 2), nullable=False, comment="单价")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class BizQuotationHis(Base):
"""报价单历史表"""
__tablename__ = "biz_quotation_his"
id = Column(String(32), primary_key=True, nullable=False, comment="主键ID")
inquiry_id = Column(String(32), nullable=False, comment="询价单ID")
supplier_id = Column(String(32), nullable=False, comment="供应商ID")
region_id = Column(String(32), nullable=False, comment="区域ID")
status = Column(String(20), default="submitted", comment="状态")
total_amount = Column(Numeric(12, 2), default=0, comment="报价总金额")
submit_time = Column(DateTime, nullable=True, comment="提交时间")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
class BizQuotationItemHis(Base):
"""报价单项历史表"""
__tablename__ = "biz_quotation_item_his"
id = Column(String(32), primary_key=True, nullable=False, comment="主键ID")
quotation_id = Column(String(32), nullable=False, comment="报价单ID")
product_id = Column(String(32), nullable=False, comment="商品ID")
unit_id = Column(String(32), nullable=False, comment="单位ID")
price = Column(Numeric(10, 2), nullable=False, comment="单价")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
class BizPriceList(Base):
"""价格清单表"""
__tablename__ = "biz_price_list"
id = Column(String(32), primary_key=True, comment="主键ID")
region_id = Column(String(32), nullable=False, comment="区域ID")
supplier_id = Column(String(32), nullable=False, comment="选用供应商ID")
inquiry_id = Column(String(32), nullable=True, comment="来源询价单ID")
quotation_id = Column(String(32), nullable=True, comment="来源报价单ID")
source_type = Column(String(20), nullable=True, comment="来源类型")
version = Column(Integer, default=1, comment="版本号")
status = Column(String(20), default="draft", comment="状态")
effective_time = Column(DateTime, nullable=True, comment="生效时间")
published_by = Column(String(32), nullable=True, comment="发布人ID")
published_time = Column(DateTime, nullable=True, comment="发布时间")
remark = Column(String(500), nullable=True, comment="备注")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class BizPriceListHis(Base):
"""价格清单历史表"""
__tablename__ = "biz_price_list_his"
id = Column(String(32), primary_key=True, nullable=False, comment="主键ID")
region_id = Column(String(32), nullable=False, comment="区域ID")
supplier_id = Column(String(32), nullable=False, comment="选用供应商ID")
inquiry_id = Column(String(32), nullable=True, comment="来源询价单ID")
quotation_id = Column(String(32), nullable=True, comment="来源报价单ID")
source_type = Column(String(20), nullable=True, comment="来源类型")
version = Column(Integer, default=1, comment="版本号")
status = Column(String(20), default="draft", comment="状态")
effective_time = Column(DateTime, nullable=True, comment="生效时间")
published_by = Column(String(32), nullable=True, comment="发布人ID")
published_time = Column(DateTime, nullable=True, comment="发布时间")
remark = Column(String(500), nullable=True, comment="备注")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
class BizPriceListItem(Base):
"""价格清单项表"""
__tablename__ = "biz_price_list_item"
id = Column(String(32), primary_key=True, comment="主键ID")
price_list_id = Column(String(32), nullable=False, comment="价格清单ID")
product_id = Column(String(32), nullable=False, comment="商品ID")
unit_id = Column(String(32), nullable=False, comment="单位ID")
price = Column(Numeric(10, 2), nullable=False, comment="单价")
pricing_coefficient = Column(Numeric(8, 2), nullable=True, comment="本次发布使用的调价系数(%)")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class BizOrder(Base):
"""订单主表"""
__tablename__ = "biz_order"
id = Column(String(32), primary_key=True, comment="主键ID")
order_no = Column(String(50), unique=True, nullable=False, comment="订单编号")
region_id = Column(String(32), nullable=False, comment="区域ID")
client_id = Column(String(32), nullable=False, comment="客户ID")
price_list_id = Column(String(32), nullable=False, comment="价格清单ID")
price_version = Column(Integer, nullable=False, comment="价格版本号")
status = Column(String(30), nullable=False, default="pending_payment", comment="订单状态")
# 三字段状态(已统一为新模型)
order_status = Column(String(20), nullable=False, default="pending_payment", comment="订单主状态: pending_payment/pending_confirm/completed/cancelled")
delivery_status = Column(String(20), nullable=False, default="pending_dispatch", comment="配送状态: pending_dispatch/delivering/delivered")
pay_status = Column(String(20), nullable=False, default="pending_payment", comment="支付状态: pending_payment/paid/refunding/refunded")
cancel_status = Column(String(20), nullable=False, default="none", comment="取消审核状态: none/pending_review/approved/rejected")
payment_method = Column(String(20), nullable=True, comment="支付渠道: online=线上(微信等), offline=线下结算(与 pay_status 独立)")
client_settlement_status = Column(String(20), nullable=False, default="pending", comment="客户结算状态: pending/settled")
supplier_settlement_status = Column(String(20), nullable=False, default="pending", comment="供应商结算状态: pending/settled")
client_settlement_at = Column(DateTime, nullable=True, comment="客户结算时间")
supplier_settlement_at = Column(DateTime, nullable=True, comment="供应商结算时间")
total_amount = Column(Numeric(12, 2), default=0, comment="订单总金额")
paid_amount = Column(Numeric(12, 2), default=0, comment="已付金额")
receivable_amount = Column(Numeric(12, 2), default=0, comment="应收金额")
refund_amount = Column(Numeric(12, 2), default=0, comment="退款金额")
contact_person = Column(String(100), nullable=True, comment="联系人")
contact_phone = Column(String(20), nullable=True, comment="联系电话")
delivery_address = Column(String(500), nullable=True, comment="配送地址")
cancel_reason = Column(String(500), nullable=True, comment="取消原因")
cancel_review_time = Column(DateTime, nullable=True, comment="取消审核时间")
cancel_reviewed_by = Column(String(32), nullable=True, comment="取消审核人ID")
cancel_review_note = Column(String(500), nullable=True, comment="取消审核备注")
completed_time = Column(DateTime, nullable=True, comment="完结时间")
completed_by = Column(String(32), nullable=True, comment="完结人ID")
remark = Column(Text, nullable=True, comment="订单备注")
payment_time = Column(DateTime, nullable=True, comment="支付时间")
delivery_assign_time = Column(DateTime, nullable=True, comment="配送分配时间")
delivered_time = Column(DateTime, nullable=True, comment="配送完成时间(待客户确认收货起算点)")
lock_operator_id = Column(String(32), nullable=True, comment="锁定操作人ID")
lock_time = Column(DateTime, nullable=True, comment="锁定时间")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class BizOrderItem(Base):
"""订单项表"""
__tablename__ = "biz_order_item"
id = Column(String(32), primary_key=True, comment="主键ID")
order_id = Column(String(32), nullable=False, comment="订单ID")
product_id = Column(String(32), nullable=False, comment="商品ID")
unit_id = Column(String(32), nullable=False, comment="单位ID")
quantity = Column(Numeric(12, 4), default=0, comment="数量")
unit_price = Column(Numeric(10, 2), nullable=False, comment="单价")
amount = Column(Numeric(12, 2), default=0, comment="金额")
delivered_quantity = Column(Numeric(12, 4), default=0, comment="已配送数量")
status = Column(String(20), default="normal", comment="项状态")
note = Column(String(500), nullable=True, comment="备注")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class BizOrderHis(Base):
"""订单主表历史表"""
__tablename__ = "biz_order_his"
id = Column(String(32), primary_key=True, nullable=False, comment="主键ID")
order_no = Column(String(50), nullable=False, comment="订单编号")
region_id = Column(String(32), nullable=False, comment="区域ID")
client_id = Column(String(32), nullable=False, comment="客户ID")
price_list_id = Column(String(32), nullable=False, comment="价格清单ID")
price_version = Column(Integer, nullable=False, comment="价格版本号")
status = Column(String(30), nullable=False, default="pending_payment", comment="订单状态")
# 三字段状态(历史表同步保留新模型)
order_status = Column(String(20), nullable=False, default="pending_payment", comment="订单主状态: pending_payment/pending_confirm/completed/cancelled")
delivery_status = Column(String(20), nullable=False, default="pending_dispatch", comment="配送状态: pending_dispatch/delivering/delivered")
pay_status = Column(String(20), nullable=False, default="pending_payment", comment="支付状态: pending_payment/paid/refunding/refunded")
cancel_status = Column(String(20), nullable=False, default="none", comment="取消审核状态: none/pending_review/approved/rejected")
payment_method = Column(String(20), nullable=True, comment="支付渠道: online=线上(微信等), offline=线下结算(与 pay_status 独立)")
client_settlement_status = Column(String(20), nullable=False, default="pending", comment="客户结算状态: pending/settled")
supplier_settlement_status = Column(String(20), nullable=False, default="pending", comment="供应商结算状态: pending/settled")
client_settlement_at = Column(DateTime, nullable=True, comment="客户结算时间")
supplier_settlement_at = Column(DateTime, nullable=True, comment="供应商结算时间")
total_amount = Column(Numeric(12, 2), default=0, comment="订单总金额")
paid_amount = Column(Numeric(12, 2), default=0, comment="已付金额")
receivable_amount = Column(Numeric(12, 2), default=0, comment="应收金额")
refund_amount = Column(Numeric(12, 2), default=0, comment="退款金额")
contact_person = Column(String(100), nullable=True, comment="联系人")
contact_phone = Column(String(20), nullable=True, comment="联系电话")
delivery_address = Column(String(500), nullable=True, comment="配送地址")
cancel_reason = Column(String(500), nullable=True, comment="取消原因")
cancel_review_time = Column(DateTime, nullable=True, comment="取消审核时间")
cancel_reviewed_by = Column(String(32), nullable=True, comment="取消审核人ID")
cancel_review_note = Column(String(500), nullable=True, comment="取消审核备注")
completed_time = Column(DateTime, nullable=True, comment="完结时间")
completed_by = Column(String(32), nullable=True, comment="完结人ID")
remark = Column(Text, nullable=True, comment="订单备注")
payment_time = Column(DateTime, nullable=True, comment="支付时间")
delivery_assign_time = Column(DateTime, nullable=True, comment="配送分配时间")
delivered_time = Column(DateTime, nullable=True, comment="配送完成时间(待客户确认收货起算点)")
lock_operator_id = Column(String(32), nullable=True, comment="锁定操作人ID")
lock_time = Column(DateTime, nullable=True, comment="锁定时间")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
class BizOrderStatusLog(Base):
"""订单状态变更日志表"""
__tablename__ = "biz_order_status_log"
id = Column(String(32), primary_key=True, comment="主键ID")
order_id = Column(String(32), nullable=False, comment="订单ID")
from_status = Column(String(30), nullable=True, comment="变更前状态")
to_status = Column(String(30), nullable=False, comment="变更后状态")
operator_id = Column(String(32), nullable=False, comment="操作人ID")
operator_role = Column(String(20), nullable=False, comment="操作人角色")
reason = Column(String(500), nullable=True, comment="变更原因")
note = Column(String(1000), nullable=True, comment="备注")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class BizDeliveryTask(Base):
"""配送任务表"""
__tablename__ = "biz_delivery_task"
id = Column(String(32), primary_key=True, comment="主键ID")
task_no = Column(String(50), unique=True, nullable=False, comment="配送单编号")
order_id = Column(String(32), nullable=False, comment="订单ID")
region_id = Column(String(32), nullable=False, comment="区域ID")
supplier_id = Column(String(32), nullable=False, comment="供应商ID")
deliver_id = Column(String(32), nullable=True, comment="配送员ID")
status = Column(String(20), default="pending", comment="状态")
deliverer_status = Column(String(20), default="pending_pickup", comment="配送员状态: pending_pickup/delivering/delivered")
supplier_prepare_status = Column(String(20), default="pending_prepare", comment="供应商备货状态: pending_prepare/prepared/picked_up")
pickup_time = Column(DateTime, nullable=True, comment="取货时间")
pickup_remark = Column(String(500), nullable=True, comment="取货备注")
pickup_image_url = Column(String(500), nullable=True, comment="取货凭证图片")
delivery_time = Column(DateTime, nullable=True, comment="送达时间")
delivery_remark = Column(String(500), nullable=True, comment="送达备注")
delivery_image_url = Column(String(500), nullable=True, comment="送达凭证图片")
expire_warning_sent = Column(Boolean, default=False, comment="是否已发送过期预警")
effective_time = Column(DateTime, nullable=True, comment="生效时间")
dispatch_remark = Column(String(500), nullable=True, comment="运营分配配送备注")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class BizDeliveryTaskItem(Base):
"""配送任务明细表"""
__tablename__ = "biz_delivery_task_item"
id = Column(String(32), primary_key=True, comment="主键ID")
task_id = Column(String(32), nullable=False, comment="配送任务ID")
order_id = Column(String(32), nullable=False, comment="订单ID")
order_item_id = Column(String(32), nullable=False, comment="订单项ID")
product_id = Column(String(32), nullable=False, comment="商品ID")
client_id = Column(String(32), nullable=False, comment="客户ID")
delivery_address = Column(String(500), nullable=False, comment="配送地址")
contact_person = Column(String(100), nullable=False, comment="联系人")
contact_phone = Column(String(20), nullable=False, comment="联系电话")
quantity = Column(Numeric(12, 4), default=0, comment="配送数量")
delivered_quantity = Column(Numeric(12, 4), default=0, comment="已送达数量")
status = Column(String(20), default="pending", comment="状态")
pickup_time = Column(DateTime, nullable=True, comment="取货时间")
delivery_time = Column(DateTime, nullable=True, comment="送达时间")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class BizDeliveryTaskHis(Base):
"""配送任务历史表"""
__tablename__ = "biz_delivery_task_his"
id = Column(String(32), primary_key=True, nullable=False, comment="主键ID")
task_no = Column(String(50), nullable=False, comment="配送单编号")
order_id = Column(String(32), nullable=False, comment="订单ID")
region_id = Column(String(32), nullable=False, comment="区域ID")
supplier_id = Column(String(32), nullable=False, comment="供应商ID")
deliver_id = Column(String(32), nullable=True, comment="配送员ID")
status = Column(String(20), default="pending", comment="状态")
deliverer_status = Column(String(20), default="pending_pickup", comment="配送员状态: pending_pickup/delivering/delivered")
supplier_prepare_status = Column(String(20), default="pending_prepare", comment="供应商备货状态: pending_prepare/prepared/picked_up")
pickup_time = Column(DateTime, nullable=True, comment="取货时间")
pickup_remark = Column(String(500), nullable=True, comment="取货备注")
pickup_image_url = Column(String(500), nullable=True, comment="取货凭证图片")
delivery_time = Column(DateTime, nullable=True, comment="送达时间")
delivery_remark = Column(String(500), nullable=True, comment="送达备注")
delivery_image_url = Column(String(500), nullable=True, comment="送达凭证图片")
expire_warning_sent = Column(Boolean, default=False, comment="是否已发送过期预警")
effective_time = Column(DateTime, nullable=True, comment="生效时间")
dispatch_remark = Column(String(500), nullable=True, comment="运营分配配送备注")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
class BizSettlement(Base):
"""结算记录表"""
__tablename__ = "biz_settlement"
id = Column(String(32), primary_key=True, comment="主键ID")
order_id = Column(String(32), nullable=False, comment="订单ID")
client_id = Column(String(32), nullable=False, comment="客户ID")
region_id = Column(String(32), nullable=False, comment="区域ID")
amount = Column(Numeric(12, 2), nullable=False, comment="结算金额")
settlement_method = Column(String(20), nullable=False, comment="结算方式")
settlement_time = Column(DateTime, nullable=True, comment="结算时间")
settlement_file_url = Column(String(500), nullable=True, comment="结算凭证文件URL")
settlement_note = Column(String(500), nullable=True, comment="结算备注")
status = Column(String(20), default="pending", comment="状态")
reviewed_by = Column(String(32), nullable=True, comment="审核人ID")
reviewed_time = Column(DateTime, nullable=True, comment="审核时间")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class OrdClientSettlement(Base):
"""客户结算主表"""
__tablename__ = "ord_client_settlement"
id = Column(String(32), primary_key=True, comment="主键ID")
settlement_no = Column(String(50), nullable=False, unique=True, comment="结算单号")
client_id = Column(String(32), nullable=False, comment="客户ID")
client_name = Column(String(100), nullable=True, comment="客户名称快照")
order_count = Column(Integer, nullable=False, default=0, comment="订单数量")
total_amount = Column(Numeric(12, 2), nullable=False, default=0, comment="结算总金额")
voucher_urls = Column(Text, nullable=True, comment="结算凭证URL(JSON数组)")
remark = Column(String(500), nullable=True, comment="结算备注")
settlement_at = Column(DateTime, nullable=False, default=datetime.now, comment="结算时间")
status = Column(String(20), nullable=False, default="done", comment="结算单状态")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class OrdClientSettlementHis(Base):
"""客户结算主表历史"""
__tablename__ = "ord_client_settlement_his"
__table_args__ = (PrimaryKeyConstraint("id", "his_create_at", name="pk_ord_client_settlement_his"),)
id = Column(String(32), nullable=False, comment="主键ID")
settlement_no = Column(String(50), nullable=False, comment="结算单号")
client_id = Column(String(32), nullable=False, comment="客户ID")
client_name = Column(String(100), nullable=True, comment="客户名称快照")
order_count = Column(Integer, nullable=False, default=0, comment="订单数量")
total_amount = Column(Numeric(12, 2), nullable=False, default=0, comment="结算总金额")
voucher_urls = Column(Text, nullable=True, comment="结算凭证URL(JSON数组)")
remark = Column(String(500), nullable=True, comment="结算备注")
settlement_at = Column(DateTime, nullable=False, default=datetime.now, comment="结算时间")
status = Column(String(20), nullable=False, default="done", comment="结算单状态")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
class OrdClientSettlementItem(Base):
"""客户结算明细表"""
__tablename__ = "ord_client_settlement_item"
id = Column(String(32), primary_key=True, comment="主键ID")
settlement_id = Column(String(32), nullable=False, comment="结算主表ID")
order_id = Column(String(32), nullable=False, comment="订单ID")
order_no = Column(String(50), nullable=False, comment="订单号")
client_id = Column(String(32), nullable=False, comment="客户ID")
order_amount = Column(Numeric(12, 2), nullable=False, default=0, comment="订单结算金额")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class OrdClientSettlementItemHis(Base):
"""客户结算明细历史表"""
__tablename__ = "ord_client_settlement_item_his"
__table_args__ = (PrimaryKeyConstraint("id", "his_create_at", name="pk_ord_client_settlement_item_his"),)
id = Column(String(32), nullable=False, comment="主键ID")
settlement_id = Column(String(32), nullable=False, comment="结算主表ID")
order_id = Column(String(32), nullable=False, comment="订单ID")
order_no = Column(String(50), nullable=False, comment="订单号")
client_id = Column(String(32), nullable=False, comment="客户ID")
order_amount = Column(Numeric(12, 2), nullable=False, default=0, comment="订单结算金额")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
class OrdSupplierSettlement(Base):
"""供应商结算主表"""
__tablename__ = "ord_supplier_settlement"
id = Column(String(32), primary_key=True, comment="主键ID")
settlement_no = Column(String(50), nullable=False, unique=True, comment="结算单号")
supplier_id = Column(String(32), nullable=False, comment="供应商ID")
supplier_name = Column(String(100), nullable=True, comment="供应商名称快照")
order_count = Column(Integer, nullable=False, default=0, comment="订单数量")
total_amount = Column(Numeric(12, 2), nullable=False, default=0, comment="结算总金额")
voucher_urls = Column(Text, nullable=True, comment="结算凭证URL(JSON数组)")
remark = Column(String(500), nullable=True, comment="结算备注")
settlement_at = Column(DateTime, nullable=False, default=datetime.now, comment="结算时间")
status = Column(String(20), nullable=False, default="done", comment="结算单状态")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class OrdSupplierSettlementHis(Base):
"""供应商结算主表历史"""
__tablename__ = "ord_supplier_settlement_his"
__table_args__ = (PrimaryKeyConstraint("id", "his_create_at", name="pk_ord_supplier_settlement_his"),)
id = Column(String(32), nullable=False, comment="主键ID")
settlement_no = Column(String(50), nullable=False, comment="结算单号")
supplier_id = Column(String(32), nullable=False, comment="供应商ID")
supplier_name = Column(String(100), nullable=True, comment="供应商名称快照")
order_count = Column(Integer, nullable=False, default=0, comment="订单数量")
total_amount = Column(Numeric(12, 2), nullable=False, default=0, comment="结算总金额")
voucher_urls = Column(Text, nullable=True, comment="结算凭证URL(JSON数组)")
remark = Column(String(500), nullable=True, comment="结算备注")
settlement_at = Column(DateTime, nullable=False, default=datetime.now, comment="结算时间")
status = Column(String(20), nullable=False, default="done", comment="结算单状态")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
class OrdSupplierSettlementItem(Base):
"""供应商结算明细表"""
__tablename__ = "ord_supplier_settlement_item"
id = Column(String(32), primary_key=True, comment="主键ID")
settlement_id = Column(String(32), nullable=False, comment="结算主表ID")
order_id = Column(String(32), nullable=False, comment="订单ID")
order_no = Column(String(50), nullable=False, comment="订单号")
supplier_id = Column(String(32), nullable=False, comment="供应商ID")
order_amount = Column(Numeric(12, 2), nullable=False, default=0, comment="订单结算金额")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class OrdSupplierSettlementItemHis(Base):
"""供应商结算明细历史表"""
__tablename__ = "ord_supplier_settlement_item_his"
__table_args__ = (PrimaryKeyConstraint("id", "his_create_at", name="pk_ord_supplier_settlement_item_his"),)
id = Column(String(32), nullable=False, comment="主键ID")
settlement_id = Column(String(32), nullable=False, comment="结算主表ID")
order_id = Column(String(32), nullable=False, comment="订单ID")
order_no = Column(String(50), nullable=False, comment="订单号")
supplier_id = Column(String(32), nullable=False, comment="供应商ID")
order_amount = Column(Numeric(12, 2), nullable=False, default=0, comment="订单结算金额")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
class BizRefund(Base):
"""退款记录表"""
__tablename__ = "biz_refund"
id = Column(String(32), primary_key=True, comment="主键ID")
order_id = Column(String(32), nullable=False, comment="订单ID")
refund_no = Column(String(50), unique=True, nullable=False, comment="退款单编号")
refund_amount = Column(Numeric(12, 2), nullable=False, comment="退款金额")
refund_method = Column(String(20), nullable=False, comment="退款方式")
refund_no_wechat = Column(String(100), nullable=True, comment="微信退款单号")
refund_time = Column(DateTime, nullable=True, comment="退款时间")
refund_result = Column(String(20), default="success", comment="退款结果")
refund_fail_reason = Column(String(500), nullable=True, comment="退款失败原因")
status = Column(String(20), default="pending", comment="状态")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class BizSettlementHis(Base):
"""结算记录历史表"""
__tablename__ = "biz_settlement_his"
id = Column(String(32), primary_key=True, nullable=False, comment="主键ID")
order_id = Column(String(32), nullable=False, comment="订单ID")
client_id = Column(String(32), nullable=False, comment="客户ID")
region_id = Column(String(32), nullable=False, comment="区域ID")
amount = Column(Numeric(12, 2), nullable=False, comment="结算金额")
settlement_method = Column(String(20), nullable=False, comment="结算方式")
settlement_time = Column(DateTime, nullable=True, comment="结算时间")
settlement_file_url = Column(String(500), nullable=True, comment="结算凭证文件URL")
settlement_note = Column(String(500), nullable=True, comment="结算备注")
status = Column(String(20), default="pending", comment="状态")
reviewed_by = Column(String(32), nullable=True, comment="审核人ID")
reviewed_time = Column(DateTime, nullable=True, comment="审核时间")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
class BizRefundHis(Base):
"""退款记录历史表"""
__tablename__ = "biz_refund_his"
id = Column(String(32), primary_key=True, nullable=False, comment="主键ID")
order_id = Column(String(32), nullable=False, comment="订单ID")
refund_no = Column(String(50), nullable=False, comment="退款单编号")
refund_amount = Column(Numeric(12, 2), nullable=False, comment="退款金额")
refund_method = Column(String(20), nullable=False, comment="退款方式")
refund_no_wechat = Column(String(100), nullable=True, comment="微信退款单号")
refund_time = Column(DateTime, nullable=True, comment="退款时间")
refund_result = Column(String(20), default="success", comment="退款结果")
refund_fail_reason = Column(String(500), nullable=True, comment="退款失败原因")
status = Column(String(20), default="pending", comment="状态")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
class BizWechatPay(Base):
"""微信支付订单表"""
__tablename__ = "biz_wechat_pay"
id = Column(String(32), primary_key=True, comment="主键ID")
order_id = Column(String(32), nullable=False, comment="订单ID")
out_trade_no = Column(String(64), unique=True, nullable=False, comment="商户订单号")
transaction_id = Column(String(64), nullable=True, comment="微信支付订单号")
total_fee = Column(Integer, nullable=False, comment="支付金额(分)")
cash_fee = Column(Integer, nullable=True, comment="现金支付金额(分)")
pay_time = Column(DateTime, nullable=True, comment="支付时间")
trade_state = Column(String(20), nullable=True, comment="交易状态")
trade_state_desc = Column(String(200), nullable=True, comment="交易状态描述")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class BizAttachment(Base):
"""附件表"""
__tablename__ = "biz_attachment"
id = Column(String(32), primary_key=True, comment="主键ID")
business_type = Column(String(50), nullable=False, comment="业务类型")
business_id = Column(String(32), nullable=False, comment="业务ID")
file_name = Column(String(200), nullable=False, comment="文件名称")
file_url = Column(String(500), nullable=False, comment="文件URL")
file_size = Column(Integer, nullable=True, comment="文件大小")
file_type = Column(String(50), nullable=True, comment="文件类型")
upload_by = Column(String(32), nullable=True, comment="上传人ID")
upload_by_name = Column(String(100), nullable=True, comment="上传人姓名")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class BizOrderAdjust(Base):
"""订单调整记录表"""
__tablename__ = "biz_order_adjust"
id = Column(String(32), primary_key=True, comment="主键ID")
order_id = Column(String(32), nullable=False, comment="订单ID")
order_item_id = Column(String(32), nullable=True, comment="订单项ID")
adjust_type = Column(String(20), nullable=False, comment="调整类型")
before_quantity = Column(Numeric(12, 4), nullable=True, comment="调整前数量")
after_quantity = Column(Numeric(12, 4), nullable=True, comment="调整后数量")
before_amount = Column(Numeric(12, 2), nullable=True, comment="调整前金额")
after_amount = Column(Numeric(12, 2), nullable=True, comment="调整后金额")
difference_amount = Column(Numeric(12, 2), default=0, comment="差异金额")
reason = Column(String(500), nullable=False, comment="调整原因")
snapshot_items_json = Column(Text, nullable=True, comment="调整后订单商品快照(JSON)")
substitute_product_id = Column(String(32), nullable=True, comment="替代商品ID")
operator_id = Column(String(32), nullable=False, comment="操作人ID")
operator_name = Column(String(100), nullable=False, comment="操作人姓名")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class BizOrderAdjustHis(Base):
"""订单调整记录历史表"""
__tablename__ = "biz_order_adjust_his"
id = Column(String(32), primary_key=True, nullable=False, comment="主键ID")
order_id = Column(String(32), nullable=False, comment="订单ID")
order_item_id = Column(String(32), nullable=True, comment="订单项ID")
adjust_type = Column(String(20), nullable=False, comment="调整类型")
before_quantity = Column(Numeric(12, 4), nullable=True, comment="调整前数量")
after_quantity = Column(Numeric(12, 4), nullable=True, comment="调整后数量")
before_amount = Column(Numeric(12, 2), nullable=True, comment="调整前金额")
after_amount = Column(Numeric(12, 2), nullable=True, comment="调整后金额")
difference_amount = Column(Numeric(12, 2), default=0, comment="差异金额")
reason = Column(String(500), nullable=False, comment="调整原因")
snapshot_items_json = Column(Text, nullable=True, comment="调整后订单商品快照(JSON)")
substitute_product_id = Column(String(32), nullable=True, comment="替代商品ID")
operator_id = Column(String(32), nullable=False, comment="操作人ID")
operator_name = Column(String(100), nullable=False, comment="操作人姓名")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
class BizInvoice(Base):
"""发票表"""
__tablename__ = "biz_invoice"
id = Column(String(32), primary_key=True, comment="主键ID")
invoice_no = Column(String(50), nullable=False, unique=True, comment="发票号")
order_id = Column(String(32), nullable=False, comment="订单ID")
order_no = Column(String(50), nullable=False, comment="订单号")
client_id = Column(String(32), nullable=False, comment="客户ID")
client_name = Column(String(100), nullable=False, comment="客户名称")
invoice_type = Column(String(20), nullable=False, comment="发票类型: normal-普通发票, vat-增值税发票")
invoice_amount = Column(Numeric(12, 2), nullable=False, comment="发票金额")
tax_rate = Column(Numeric(5, 2), default=0, comment="税率")
tax_amount = Column(Numeric(12, 2), default=0, comment="税额")
title = Column(String(200), nullable=False, comment="发票抬头")
tax_no = Column(String(50), nullable=True, comment="税号")
address = Column(String(500), nullable=True, comment="开票地址")
phone = Column(String(20), nullable=True, comment="电话")
bank = Column(String(100), nullable=True, comment="开户银行")
bank_account = Column(String(50), nullable=True, comment="银行账号")
status = Column(String(20), nullable=False, default="pending", comment="状态: pending-待开票, issued-已开票, void-已作废")
invoice_url = Column(String(500), nullable=True, comment="发票文件URL")
issued_at = Column(DateTime, nullable=True, comment="开票时间")
issued_by = Column(String(32), nullable=True, comment="开票人ID")
issued_by_name = Column(String(100), nullable=True, comment="开票人姓名")
remark = Column(String(500), nullable=True, comment="备注")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class BizSystemConfig(Base):
"""系统配置表"""
__tablename__ = "biz_system_config"
id = Column(String(32), primary_key=True, comment="主键ID")
config_key = Column(String(100), nullable=False, unique=True, comment="配置键")
config_value = Column(Text, nullable=True, comment="配置值")
config_type = Column(String(50), default="string", comment="配置类型: string, number, boolean, json")
config_name = Column(String(100), nullable=False, comment="配置名称")
config_group = Column(String(50), nullable=True, comment="配置分组")
description = Column(String(500), nullable=True, comment="描述")
is_active = Column(Integer, default=1, comment="是否启用")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class BizDelivererReview(Base):
"""配送员评价表"""
__tablename__ = "biz_deliverer_review"
id = Column(String(32), primary_key=True, comment="主键ID")
order_id = Column(String(32), nullable=False, comment="订单ID")
task_id = Column(String(32), nullable=True, comment="配送任务ID")
client_id = Column(String(32), nullable=False, comment="客户ID")
deliverer_id = Column(String(32), nullable=False, comment="配送员ID")
score = Column(Integer, nullable=False, comment="评分(1-5)")
tags = Column(String(500), nullable=True, comment="评价标签,逗号分隔")
content = Column(String(1000), nullable=True, comment="评价内容")
is_anonymous = Column(Boolean, default=False, comment="是否匿名")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class BizDelivererReviewHis(Base):
"""配送员评价历史表"""
__tablename__ = "biz_deliverer_review_his"
id = Column(String(32), primary_key=True, nullable=False, comment="主键ID")
order_id = Column(String(32), nullable=False, comment="订单ID")
task_id = Column(String(32), nullable=True, comment="配送任务ID")
client_id = Column(String(32), nullable=False, comment="客户ID")
deliverer_id = Column(String(32), nullable=False, comment="配送员ID")
score = Column(Integer, nullable=False, comment="评分(1-5)")
tags = Column(String(500), nullable=True, comment="评价标签,逗号分隔")
content = Column(String(1000), nullable=True, comment="评价内容")
is_anonymous = Column(Boolean, default=False, comment="是否匿名")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
class BizDeliveryWarning(Base):
"""配送时效预警表"""
__tablename__ = "biz_delivery_warning"
id = Column(String(32), primary_key=True, comment="主键ID")
task_id = Column(String(32), nullable=False, comment="配送任务ID")
order_id = Column(String(32), nullable=True, comment="订单ID")
warning_type = Column(String(20), nullable=False, comment="预警类型")
urgency_level = Column(String(20), nullable=False, comment="紧急程度")
remaining_minutes = Column(Integer, nullable=True, comment="剩余分钟数")
message = Column(String(500), nullable=True, comment="预警消息")
is_sent = Column(Integer, default=0, comment="是否已发送通知")
sent_time = Column(DateTime, nullable=True, comment="发送时间")
is_resolved = Column(Integer, default=0, comment="是否已解决")
resolved_time = Column(DateTime, nullable=True, comment="解决时间")
resolved_by = Column(String(32), nullable=True, comment="解决人ID")
resolved_note = Column(String(500), nullable=True, comment="解决备注")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
is_del = Column(Integer, default=0, comment="是否删除")
class BizDeliveryWarningHis(Base):
"""配送时效预警历史表"""
__tablename__ = "biz_delivery_warning_his"
id = Column(String(32), primary_key=True, nullable=False, comment="主键ID")
task_id = Column(String(32), nullable=False, comment="配送任务ID")
order_id = Column(String(32), nullable=True, comment="订单ID")
warning_type = Column(String(20), nullable=False, comment="预警类型")
urgency_level = Column(String(20), nullable=False, comment="紧急程度")
remaining_minutes = Column(Integer, nullable=True, comment="剩余分钟数")
message = Column(String(500), nullable=True, comment="预警消息")
is_sent = Column(Integer, default=0, comment="是否已发送通知")
sent_time = Column(DateTime, nullable=True, comment="发送时间")
is_resolved = Column(Integer, default=0, comment="是否已解决")
resolved_time = Column(DateTime, nullable=True, comment="解决时间")
resolved_by = Column(String(32), nullable=True, comment="解决人ID")
resolved_note = Column(String(500), nullable=True, comment="解决备注")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
class BizOrderStatusLogHis(Base):
"""订单状态变更日志历史表"""
__tablename__ = "biz_order_status_log_his"
id = Column(String(32), primary_key=True, nullable=False, comment="主键ID")
order_id = Column(String(32), nullable=False, comment="订单ID")
from_status = Column(String(30), nullable=True, comment="变更前状态")
to_status = Column(String(30), nullable=False, comment="变更后状态")
operator_id = Column(String(32), nullable=False, comment="操作人ID")
operator_role = Column(String(20), nullable=False, comment="操作人角色")
reason = Column(String(500), nullable=True, comment="变更原因")
note = Column(String(1000), nullable=True, comment="备注")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
class SysApiRequestLogHis(Base):
"""API 请求日志历史表"""
__tablename__ = "sys_api_request_log_his"
id = Column(String(32), primary_key=True, nullable=False, comment="主键ID")
http_method = Column(String(10), nullable=False, comment="HTTP 方法")
path = Column(String(500), nullable=False, comment="请求路径")
query_string = Column(String(2000), nullable=True, comment="Query 字符串")
request_body = Column(Text, nullable=True, comment="请求体(截断)")
response_body = Column(Text, nullable=True, comment="响应体(截断)")
status_code = Column(Integer, nullable=False, comment="HTTP 状态码")
duration_ms = Column(Integer, nullable=False, comment="耗时(ms)")
user_id = Column(String(32), nullable=True, comment="用户ID")
username = Column(String(100), nullable=True, comment="用户名")
role = Column(String(20), nullable=True, comment="角色")
ip_address = Column(String(50), nullable=True, comment="IP地址")
user_agent = Column(String(500), nullable=True, comment="User-Agent")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
class SysPasswordHistoryHis(Base):
"""密码修改历史表(历史)"""
__tablename__ = "sys_password_history_his"
id = Column(String(32), primary_key=True, nullable=False, comment="主键ID")
user_id = Column(String(32), nullable=False, comment="用户ID")
operation_type = Column(String(20), nullable=False, comment="操作类型")
operator_id = Column(String(32), nullable=True, comment="操作人ID(重置时)")
operator_name = Column(String(100), nullable=True, comment="操作人姓名")
ip_address = Column(String(50), nullable=True, comment="IP地址")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
# =========================================
# 扩展模块
# =========================================
class SysUpgradeLog(Base):
"""系统更新日志表"""
__tablename__ = "sys_upgrade_log"
id = Column(String(32), primary_key=True, comment="主键ID")
version = Column(String(50), nullable=False, comment="版本号")
title = Column(String(200), nullable=False, comment="更新标题")
date = Column(DateTime, nullable=False, comment="更新日期")
detail = Column(Text, nullable=True, comment="更新详情(JSON数组)")
require_re_login = Column(Integer, default=0, comment="是否需要重新登录: 0-否, 1-是")
remark = Column(String(500), nullable=True, comment="备注")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class SysUpgradeLogHis(Base):
"""系统更新日志历史表"""
__tablename__ = "sys_upgrade_log_his"
id = Column(String(32), primary_key=True, nullable=False, comment="主键ID")
version = Column(String(50), nullable=False, comment="版本号")
title = Column(String(200), nullable=False, comment="更新标题")
date = Column(DateTime, nullable=False, comment="更新日期")
detail = Column(Text, nullable=True, comment="更新详情(JSON数组)")
require_re_login = Column(Integer, default=0, comment="是否需要重新登录: 0-否, 1-是")
remark = Column(String(500), nullable=True, comment="备注")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")
class SysComment(Base):
"""系统评论表"""
__tablename__ = "sys_comment"
id = Column(String(32), primary_key=True, comment="主键ID")
parent_id = Column(String(32), nullable=True, comment="父评论ID")
author = Column(String(100), nullable=False, comment="评论者")
author_id = Column(String(32), nullable=True, comment="评论者ID")
content = Column(String(1000), nullable=False, comment="评论内容")
target_type = Column(String(50), nullable=True, comment="目标类型")
target_id = Column(String(32), nullable=True, comment="目标ID")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class BizClientCart(Base):
"""客户购物车"""
__tablename__ = "biz_client_cart"
id = Column(String(32), primary_key=True, comment="主键ID")
client_id = Column(String(32), nullable=False, comment="客户用户ID")
price_list_id = Column(String(32), nullable=False, comment="价格清单ID")
product_id = Column(String(32), nullable=False, comment="商品ID")
unit_id = Column(String(32), nullable=False, comment="单位ID")
quantity = Column(Numeric(12, 4), nullable=False, default=0, comment="数量")
unit_price = Column(Numeric(12, 2), nullable=False, default=0, comment="单价(元)")
amount = Column(Numeric(12, 2), nullable=False, default=0, comment="行金额(元)")
product_name = Column(String(200), nullable=True, comment="商品名称快照")
unit_name = Column(String(50), nullable=True, comment="单位名称快照")
category_name = Column(String(100), nullable=True, comment="分类名称快照")
image_url = Column(String(500), nullable=True, comment="图片")
is_del = Column(Integer, default=0, comment="是否删除")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
class BizClientCartHis(Base):
"""客户购物车历史"""
__tablename__ = "biz_client_cart_his"
id = Column(String(32), primary_key=True, nullable=False, comment="主键ID")
client_id = Column(String(32), nullable=False, comment="客户用户ID")
price_list_id = Column(String(32), nullable=False, comment="价格清单ID")
product_id = Column(String(32), nullable=False, comment="商品ID")
unit_id = Column(String(32), nullable=False, comment="单位ID")
quantity = Column(Numeric(12, 4), nullable=False, default=0, comment="数量")
unit_price = Column(Numeric(12, 2), nullable=False, default=0, comment="单价(元)")
amount = Column(Numeric(12, 2), nullable=False, default=0, comment="行金额(元)")
product_name = Column(String(200), nullable=True, comment="商品名称快照")
unit_name = Column(String(50), nullable=True, comment="单位名称快照")
category_name = Column(String(100), nullable=True, comment="分类名称快照")
image_url = Column(String(500), nullable=True, comment="图片")
create_at = Column(DateTime, default=datetime.now, comment="创建时间")
create_by = Column(String(32), nullable=True, comment="创建人ID")
create_name = Column(String(100), nullable=True, comment="创建人姓名")
update_at = Column(DateTime, nullable=True, comment="修改时间")
update_by = Column(String(32), nullable=True, comment="修改人ID")
his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间")