from sqlalchemy import Column, String, Integer, Text from shared.base_db import base_db from shared.base_model import base_model from config import DB_PREFIX # 定时任务模型 class Job(base_model, base_db): # 设置表名 __tablename__ = DB_PREFIX + "job" # 任务名称 job_name = Column(String(255), nullable=False, comment="任务名称") # 任务别名 job_alias = Column(String(255), nullable=True, comment="任务别名") # 任务分组 job_group = Column(String(255), nullable=True, comment="任务分组") # 任务触发器 job_trigger = Column(String(255), nullable=True, comment="任务触发器") # 任务状态:0-未发布 1-运行中 2-暂停 3-删除 status = Column(Integer, nullable=False, default=0, comment="任务状态:0-未发布 1-运行中 2-暂停 3-删除") # Cron表达式 cron_expression = Column(String(255), nullable=True, comment="Cron表达式") # 执行策略:1-立即执行 2-执行一次 3-放弃执行 execute_policy = Column(Integer, nullable=False, default=1, comment="执行策略:1-立即执行 2-执行一次 3-放弃执行") # 是否同步任务:0-否 1-是 is_sync = Column(Integer, nullable=False, default=0, comment="是否同步任务:0-否 1-是") # 任务URL url = Column(String(255), nullable=True, comment="任务URL") # 任务参数 params = Column(Text, nullable=True, comment="任务参数") # 任务备注 note = Column(String(255), nullable=True, comment="任务备注") def __str__(self): return "定时任务:{}".format(self.job_name) from datetime import datetime from sqlalchemy import Column, String, Integer, BigInteger, Text, DATETIME from shared.base_db import base_db from config import DB_PREFIX from core.database import Base # 定时任务日志模型 class JobLog(base_db, Base): # 设置表名 __tablename__ = DB_PREFIX + "job_log" # 任务日志ID id = Column(Integer, primary_key=True, autoincrement=True, comment="任务日志ID") # 任务ID job_id = Column(Integer, nullable=False, default=0, comment="任务ID") # 任务名称 job_name = Column(String(255), nullable=False, comment="任务名称") # 任务分组 job_group = Column(String(255), nullable=True, comment="任务分组") # 任务触发器 job_trigger = Column(String(255), nullable=True, comment="任务触发器") # 任务日志信息 job_message = Column(String(500), nullable=True, comment="任务日志信息") # Cron表达式 cron_expression = Column(String(255), nullable=True, comment="Cron表达式") # 执行状态:0-正常 1-失败 status = Column(Integer, nullable=False, default=0, comment="执行状态:0-正常 1-失败") # 执行开始时间 start_time = Column(DATETIME, nullable=True, comment="执行开始时间") # 执行结束时间 end_time = Column(DATETIME, nullable=True, comment="执行结束时间") # 执行耗时,单位:毫秒 consume_time = Column(BigInteger, nullable=False, default=0, comment="执行耗时,单位:毫秒") # 异常信息 exception_info = Column(Text, nullable=True, comment="异常信息") # 添加人 create_user = Column(String(50), nullable=True, comment="添加人") # 添加时间 create_time = Column(DATETIME, nullable=True, default=datetime.now, comment="添加时间") # 更新人 update_user = Column(String(50), nullable=True, comment="更新人") # 更新时间 update_time = Column(DATETIME, nullable=True, comment="更新时间") # 删除标识:0-有效 1-删除 del_flag = Column(Integer, nullable=False, default=0, comment="删除标识:0-有效 1-删除") def to_dict(self): """序列化为字典(排除del_flag,datetime转为字符串)""" result = {} for column in self.__table__.columns: if column.name == 'del_flag': continue value = getattr(self, column.name) if isinstance(value, datetime): value = value.strftime('%Y-%m-%d %H:%M:%S') result[column.name] = value return result def __str__(self): return "定时任务日志:{}".format(self.job_name)