Skip to content

Commit d30c234

Browse files
committed
feat: Order 목록 조회 API에 필터 추가
1 parent b2e8e18 commit d30c234

2 files changed

Lines changed: 24 additions & 0 deletions

File tree

app/admin_api/filtersets/shop/orders.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,15 @@ class OrderAdminFilterSet(filters.FilterSet):
2020
created_at_after = filters.DateTimeFilter(field_name="created_at", lookup_expr="gte")
2121
created_at_before = filters.DateTimeFilter(field_name="created_at", lookup_expr="lte")
2222

23+
first_paid_at_after = filters.DateTimeFilter(field_name="first_paid_at", lookup_expr="gte")
24+
first_paid_at_before = filters.DateTimeFilter(field_name="first_paid_at", lookup_expr="lte")
25+
26+
status_changed_at_after = filters.DateTimeFilter(field_name="status_changed_at", lookup_expr="gte")
27+
status_changed_at_before = filters.DateTimeFilter(field_name="status_changed_at", lookup_expr="lte")
28+
2329
product_id = filters.BaseInFilter(field_name="products__product_id", distinct=True)
30+
category_id = filters.BaseInFilter(field_name="products__product__category_id", distinct=True)
31+
category_group_id = filters.BaseInFilter(field_name="products__product__category__group_id", distinct=True)
2432

2533
price_min = filters.NumberFilter(field_name="latest_price", lookup_expr="gte")
2634
price_max = filters.NumberFilter(field_name="latest_price", lookup_expr="lte")
@@ -37,7 +45,13 @@ class Meta:
3745
"status",
3846
"created_at_after",
3947
"created_at_before",
48+
"first_paid_at_after",
49+
"first_paid_at_before",
50+
"status_changed_at_after",
51+
"status_changed_at_before",
4052
"product_id",
53+
"category_id",
54+
"category_group_id",
4155
"price_min",
4256
"price_max",
4357
]

app/admin_api/views/shop/orders.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,16 @@ class OrderAdminViewSet(
6969
current_status=PaymentHistory.objects.latest_per_order_field("status"),
7070
latest_imp_id=PaymentHistory.objects.latest_per_order_field("imp_id"),
7171
latest_price=PaymentHistory.objects.latest_per_order_field("price"),
72+
first_paid_at=models.Subquery(
73+
PaymentHistory.objects.filter(order_id=models.OuterRef("pk"))
74+
.order_by("created_at")
75+
.values("created_at")[:1]
76+
),
77+
status_changed_at=models.Subquery(
78+
PaymentHistory.objects.filter(order_id=models.OuterRef("pk"))
79+
.order_by("-created_at")
80+
.values("created_at")[:1]
81+
),
7282
)
7383
.order_by("-created_at")
7484
)

0 commit comments

Comments
 (0)