File size: 1,319 Bytes
b4f2238
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
"""
证据清单 API

提供证据清单的排序等 API 端点.

Requirements: 4.2, 4.3, 12.1
"""

from __future__ import annotations

from typing import Any

from django.http import HttpRequest
from ninja import Router, Schema

from apps.core.security.auth import JWTOrSessionAuth

router = Router(tags=["证据清单"], auth=JWTOrSessionAuth())


def _get_evidence_service() -> Any:
    """工厂函数获取证据服务"""
    from apps.evidence.services.wiring import get_evidence_service

    return get_evidence_service()


class ReorderItemsRequest(Schema):
    """重新排序请求"""

    item_ids: list[int]


class ReorderItemsResponse(Schema):
    """重新排序响应"""

    success: bool
    message: str = ""


@router.post(
    "/evidence-lists/{list_id}/reorder",
    response=ReorderItemsResponse,
    summary="重新排序证据明细",
)
def reorder_evidence_items(request: HttpRequest, list_id: int, data: ReorderItemsRequest) -> Any:
    """
    重新排序证据明细

    Args:
        list_id: 证据清单 ID
        data: 包含新顺序的明细 ID 列表

    Returns:
        操作结果

    Requirements: 4.2, 4.3
    """
    service = _get_evidence_service()
    service.reorder_items(list_id, data.item_ids)
    return ReorderItemsResponse(success=True, message="排序成功")