v2.5更新
This commit is contained in:
@@ -319,7 +319,8 @@ async def get_conduct_history(
|
||||
end_date: Optional[str] = None,
|
||||
grouped: bool = Query(False),
|
||||
related_type: Optional[str] = None,
|
||||
reason_prefix: Optional[str] = None
|
||||
reason_prefix: Optional[str] = None,
|
||||
is_revoked: Optional[int] = None
|
||||
):
|
||||
"""获取操行分历史记录"""
|
||||
try:
|
||||
@@ -335,7 +336,8 @@ async def get_conduct_history(
|
||||
end_date=end_date,
|
||||
grouped=grouped,
|
||||
related_type=related_type,
|
||||
reason_prefix=reason_prefix
|
||||
reason_prefix=reason_prefix,
|
||||
is_revoked=is_revoked
|
||||
)
|
||||
return success_response(data=result)
|
||||
except Exception as e:
|
||||
@@ -343,6 +345,86 @@ async def get_conduct_history(
|
||||
return error_response(message=f"获取历史记录失败: {str(e)}")
|
||||
|
||||
|
||||
@router.post("/conduct/batch-revoke")
|
||||
async def batch_revoke_conduct_records(request: Request):
|
||||
"""批量撤销操行分记录"""
|
||||
try:
|
||||
user = await get_current_user(request)
|
||||
if user["user_type"] != "admin":
|
||||
return error_response(message="无权进行此操作", code=403)
|
||||
|
||||
body = await request.json()
|
||||
record_ids = body.get("record_ids", [])
|
||||
if not record_ids or not isinstance(record_ids, list):
|
||||
return error_response(message="请提供要撤销的记录ID列表", code=400)
|
||||
if len(record_ids) > 100:
|
||||
return error_response(message="单次最多撤销100条记录", code=400)
|
||||
|
||||
success_count = 0
|
||||
fail_count = 0
|
||||
errors = []
|
||||
|
||||
for record_id in record_ids:
|
||||
result = await ConductService.revoke_record(
|
||||
record_id=record_id,
|
||||
revoker_id=user["user_id"]
|
||||
)
|
||||
if result["success"]:
|
||||
success_count += 1
|
||||
else:
|
||||
fail_count += 1
|
||||
errors.append({"record_id": record_id, "error": result["message"]})
|
||||
|
||||
return success_response(data={
|
||||
"success_count": success_count,
|
||||
"fail_count": fail_count,
|
||||
"errors": errors
|
||||
}, message=f"批量撤销完成: {success_count}条成功, {fail_count}条失败")
|
||||
except Exception as e:
|
||||
logger.error(f"批量撤销失败: {e}", exc_info=True)
|
||||
return error_response(message=f"批量撤销失败: {str(e)}")
|
||||
|
||||
|
||||
@router.post("/conduct/batch-restore")
|
||||
async def batch_restore_conduct_records(request: Request):
|
||||
"""批量反撤销操行分记录"""
|
||||
try:
|
||||
user = await get_current_user(request)
|
||||
if user["user_type"] != "admin":
|
||||
return error_response(message="无权进行此操作", code=403)
|
||||
|
||||
body = await request.json()
|
||||
record_ids = body.get("record_ids", [])
|
||||
if not record_ids or not isinstance(record_ids, list):
|
||||
return error_response(message="请提供要反撤销的记录ID列表", code=400)
|
||||
if len(record_ids) > 100:
|
||||
return error_response(message="单次最多反撤销100条记录", code=400)
|
||||
|
||||
success_count = 0
|
||||
fail_count = 0
|
||||
errors = []
|
||||
|
||||
for record_id in record_ids:
|
||||
result = await ConductService.restore_record(
|
||||
record_id=record_id,
|
||||
restorer_id=user["user_id"]
|
||||
)
|
||||
if result["success"]:
|
||||
success_count += 1
|
||||
else:
|
||||
fail_count += 1
|
||||
errors.append({"record_id": record_id, "error": result["message"]})
|
||||
|
||||
return success_response(data={
|
||||
"success_count": success_count,
|
||||
"fail_count": fail_count,
|
||||
"errors": errors
|
||||
}, message=f"批量反撤销完成: {success_count}条成功, {fail_count}条失败")
|
||||
except Exception as e:
|
||||
logger.error(f"批量反撤销失败: {e}", exc_info=True)
|
||||
return error_response(message=f"批量反撤销失败: {str(e)}")
|
||||
|
||||
|
||||
|
||||
# ========== 考勤管理 ==========
|
||||
|
||||
|
||||
Reference in New Issue
Block a user