- 24 个模块 service 从直接 db.query 改为使用各自 repository(get_by_id/filter/create/update) - 4 个 agent 并行分组转换:system 组、dictionary/configuration/member/region、cms/link/notice、job/log - 保留合法 db 用法:跨模型查询(user→dept/level/position、ad→adsort、adsort→item/itemcate)、投影查询(role/menu)、按条件删除(set_permission/save_role_menu/add_user_role)、独立会话(record_job_log/record_operation_log)、db.commit(pause/resume) - 修复 JobLogRepository 软删列 del_flag;修复 ad/notice create 重复传参 bug - 修复 base_repository.get_by_id/get_by_ids 兼容字符串 ID - 实测:27 个读接口 + dept/notice/member/level 写操作全通过 Co-Authored-By: Claude <noreply@anthropic.com>
31 lines
911 B
Python
31 lines
911 B
Python
# +========== 迁移新增:本模块 Repository 层
|
|
"""modules/job 数据访问层。"""
|
|
from modules.job.models import Job, JobLog
|
|
from shared.base_repository import BaseRepository
|
|
|
|
class JobRepository(BaseRepository[Job]):
|
|
pass
|
|
|
|
job_repo = JobRepository(Job)
|
|
|
|
class JobLogRepository(BaseRepository[JobLog]):
|
|
# JobLog 使用 del_flag 而非 is_delete 作为软删标识
|
|
soft_delete_col = "del_flag"
|
|
|
|
def get_by_id(self, obj_id):
|
|
"""覆盖:按 del_flag 过滤。"""
|
|
if obj_id is None or obj_id == '':
|
|
return None
|
|
try:
|
|
obj_id = int(obj_id)
|
|
except (TypeError, ValueError):
|
|
return None
|
|
if obj_id <= 0:
|
|
return None
|
|
return self.db.query(self.model).filter(
|
|
self.model.id == obj_id, getattr(self.model, self.soft_delete_col) == 0
|
|
).first()
|
|
|
|
|
|
joblog_repo = JobLogRepository(JobLog)
|