Files
DjangoAdmin_FastAPI_EleVue/modules/system/dept/service.py
T
ClaudeandClaude ae2e141713 refactor(repo): 收敛 base_model 双轨,删除函数统一走 repo.batch_delete_r
- shared/base_repository.py 新增 batch_delete_r(返回 R,等价原 base_model 语义)
- 20 个模块删除函数从 Model.batch_delete_r 改为 x_repo.batch_delete_r
- shared/base_model.py 移除 classmethod(get_by_id/get_by_ids/get_all_active/exists/batch_delete_r),只留字段 + to_dict
- 清理 base_model 多余 imports
- 实测 dept 删除、批量删除及多模块读接口正常

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-07 11:28:25 +08:00

104 lines
3.0 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, timezone
from fastapi.logger import logger
from modules.system.dept.schemas import DeptForm
from modules.system.dept.models import Dept
from modules.system.dept.repository import dept_repo
from core.database import get_db_session
from core import R
from core.security import get_user_id
from utils.request import like_contains, parse_id_list
# 查询部门数据
def get_dept_page(request):
# 实例化查询对象
query = dept_repo.filter(Dept.is_delete == 0)
# 部门名称
name = request.query_params.get('name')
if name:
# 部门名称模糊查询
query = query.filter(Dept.name.like(like_contains(name), escape='\\'))
# 查询数据
dept_list = query.order_by(Dept.sort.asc()).all()
# 实例化数组对象
result = []
# 遍历数据源
if dept_list:
for item in dept_list:
# 对象转字典
data = item.to_dict()
# 加入列表
result.append(data)
# 返回结果
return R.ok(data=result)
# 根据ID查询部门
def get_dept_detail(dept_id):
# 根据ID查询部门
dept = dept_repo.get_by_id(dept_id)
# 查询结果判空
if not dept:
return None
# 对象转字典
data = dept.to_dict()
# 返回结果
return data
# 添加部门
def add_dept(request, data: DeptForm):
# 唯一性校验
if dept_repo.filter(Dept.name == data.name, Dept.is_delete == 0).first():
return R.failed("部门名称不能重复")
# 表单数据赋值给对象并插入
dept_repo.create(**data.model_dump(exclude={'id'}), create_user=get_user_id(request))
# 返回结果
return R.ok(msg="添加成功")
# 更新部门
def update_dept(request, data: DeptForm):
# 记录ID判空
if not data.id or data.id <= 0:
return R.failed("记录ID不能为空")
# 唯一性校验(排除自身)
if dept_repo.filter(Dept.name == data.name, Dept.id != data.id, Dept.is_delete == 0).first():
return R.failed("部门名称不能重复")
# 根据ID查询记录
if not dept_repo.get_by_id(data.id):
return R.failed("记录不存在")
# 构造更新数据(排除 id)
updData = data.model_dump(exclude={'id'})
updData['update_user'] = get_user_id(request)
updData['update_time'] = datetime.now(tz=timezone.utc)
result = dept_repo.update(data.id, updData)
# 提交数据
if not result:
return R.failed("更新失败")
# 返回结果
return R.ok(msg="更新成功")
# 删除部门
def delete_dept(dept_id):
return dept_repo.batch_delete_r(dept_id)
# 获取部门列表
def get_dept_list():
# 查询部门数据列表
dept_rows = dept_repo.filter(Dept.is_delete == 0).order_by(Dept.sort.asc()).all()
# 实例化列表
dept_list = []
# 遍历数据源
if dept_rows:
for v in dept_rows:
# 对象转字典
item = v.to_dict()
# 加入数组
dept_list.append(item)
# 返回结果
return dept_list