6.7 KiB
Order Management Specification
ADDED Requirements
Requirement: Order List Display
The system SHALL display a paginated list of orders with comprehensive filtering and search capabilities.
Scenario: Display all orders with pagination
- GIVEN the user navigates to the order management page
- WHEN the page loads
- THEN the system displays a table of orders with pagination controls
- AND default page size is 20 items
- AND table shows columns: ID, order number, buyer type, buyer ID, order type, payment status, total amount, created date, and actions
Scenario: Filter orders by payment status
- GIVEN the user is on the order list page
- WHEN the user selects a payment status filter (pending=1, paid=2, cancelled=3, refunded=4)
- AND clicks the search button
- THEN the system displays only orders matching the selected payment status
- AND pagination resets to page 1
Scenario: Filter orders by order type
- GIVEN the user is on the order list page
- WHEN the user selects an order type filter (single_card or device)
- AND clicks the search button
- THEN the system displays only orders matching the selected order type
Scenario: Search by order number
- GIVEN the user is on the order list page
- WHEN the user enters an order number in the search field
- AND clicks the search button
- THEN the system performs an exact match search
- AND displays the matching order if found
Scenario: Filter by date range
- GIVEN the user is on the order list page
- WHEN the user selects a start date and/or end date
- AND clicks the search button
- THEN the system displays orders created within the specified date range
Requirement: Order Details Viewing
The system SHALL allow users to view detailed information about each order including order items and payment information.
Scenario: View order details
- GIVEN the user is viewing the order list
- WHEN the user clicks the view/detail action for an order
- THEN the system displays comprehensive order information including:
- AND order basic info (order_no, order_type, buyer_id, buyer_type)
- AND payment info (payment_status, payment_method, paid_at, total_amount)
- AND order items list (package_id, package_name, quantity, unit_price, amount)
- AND commission info (commission_status, commission_config_version)
- AND timestamps (created_at, updated_at)
Requirement: Order Cancellation
The system SHALL allow authorized users to cancel orders that are in pending payment status.
Scenario: Cancel a pending order
- GIVEN the user is viewing an order with payment_status = 1 (pending)
- WHEN the user clicks the cancel action
- AND confirms the cancellation in the confirmation dialog
- THEN the system sends a cancel request to POST
/api/admin/orders/{id}/cancel - AND updates the order status to cancelled (3)
- AND displays a success message
- AND refreshes the order list
Scenario: Cannot cancel paid order
- GIVEN the user is viewing an order with payment_status = 2 (paid)
- WHEN the cancel action is clicked
- THEN the system displays an error message "Cannot cancel a paid order"
- AND does not send the cancellation request
Requirement: Order Creation
The system SHALL provide an interface to create orders for single card or device purchases.
Scenario: Create single card order
- GIVEN the user clicks the create order button
- WHEN the user selects order_type = "single_card"
- AND selects an IoT card (iot_card_id)
- AND selects one or more packages (package_ids)
- AND submits the form
- THEN the system sends a POST request to
/api/admin/orderswith the order data - AND displays the newly created order details
- AND refreshes the order list
Scenario: Create device order
- GIVEN the user clicks the create order button
- WHEN the user selects order_type = "device"
- AND selects a device (device_id)
- AND selects one or more packages (package_ids, max 10)
- AND submits the form
- THEN the system creates the order
- AND displays a success message
Requirement: Order Status Display
The system SHALL display order payment status and order type using color-coded badges and human-readable text.
Scenario: Display payment status badge
- GIVEN an order is displayed in the table
- WHEN the payment_status is 1 (pending)
- THEN the system displays a warning-type badge with text "待支付"
- WHEN the payment_status is 2 (paid)
- THEN the system displays a success-type badge with text "已支付"
- WHEN the payment_status is 3 (cancelled)
- THEN the system displays an info-type badge with text "已取消"
- WHEN the payment_status is 4 (refunded)
- THEN the system displays a danger-type badge with text "已退款"
Scenario: Display order type badge
- GIVEN an order is displayed in the table
- WHEN the order_type is "single_card"
- THEN the system displays text "单卡购买"
- WHEN the order_type is "device"
- THEN the system displays text "设备购买"
Requirement: Currency Formatting
The system SHALL display monetary amounts in yuan (元) with proper formatting and conversion from cents.
Scenario: Format order total amount
- GIVEN an order has total_amount = 50000 (in cents)
- WHEN the order is displayed in the table
- THEN the system displays "¥500.00" or "500.00 元"
Requirement: Data Refresh and Real-time Updates
The system SHALL provide manual refresh capabilities and update data after mutations.
Scenario: Manual refresh
- GIVEN the user is viewing the order list
- WHEN the user clicks the refresh button in the table header
- THEN the system reloads the current page of orders with current filters
- AND maintains the current pagination state
Scenario: Auto-refresh after order cancellation
- GIVEN the user successfully cancels an order
- WHEN the cancellation is confirmed
- THEN the system automatically refreshes the order list
- AND displays the updated order status
Requirement: Internationalization Support
The system SHALL provide full internationalization support for order management UI in Chinese and English.
Scenario: Display Chinese text
- GIVEN the user's language is set to Chinese (zh)
- WHEN the order management page is viewed
- THEN all UI text displays in Chinese including menu titles, table headers, status labels, and messages
Scenario: Display English text
- GIVEN the user's language is set to English (en)
- WHEN the order management page is viewed
- THEN all UI text displays in English including menu titles, table headers, status labels, and messages