新增门店订单与核销管理列表,对齐 Android 订单能力并完善账号级缓存。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-29 14:46:10 +08:00
parent c4de3d17d0
commit 08492df6ce
51 changed files with 3668 additions and 102 deletions

View File

@ -25,11 +25,51 @@ protocol OrderServing {
) async throws -> ListPayload<OrderEntity>
///
func writeOffList(scenicId: Int, storeId: Int?, page: Int, pageSize: Int) async throws -> ListPayload<WriteOffOrderItem>
func writeOffList(
scenicId: Int,
storeId: Int?,
page: Int,
pageSize: Int,
orderStatus: Int?,
orderVerifyStatus: Int?,
startTime: String?,
endTime: String?,
userPhone: String?
) async throws -> ListPayload<WriteOffOrderItem>
///
func writeOff(orderNumber: String) async throws
///
func updateRefinedChoice(orderNumber: String, isRefined: Int) async throws
///
func cancelOrder(orderNumber: String) async throws
/// /
func sendGift(orderNumber: String, photoNum: Int, videoNum: Int) async throws
///
func storeOrderList(
storeId: Int?,
page: Int,
pageSize: Int,
userPhone: String?,
orderStatus: Int?,
orderType: Int?,
startTime: String?,
endTime: String?
) async throws -> ListPayload<StoreOrderListItem>
/// 退
func storeOrderRefund(
storeId: Int,
orderNumber: String,
refundType: OrderRefundMode,
refundAmount: String,
refundReason: String
) async throws
///
func storeOrderDetail(storeId: Int, orderNumber: String) async throws -> StoreOrderDetailResponse
@ -111,7 +151,17 @@ final class OrdersAPI: OrderServing {
}
///
func writeOffList(scenicId: Int, storeId: Int? = nil, page: Int = 1, pageSize: Int = 20) async throws -> ListPayload<WriteOffOrderItem> {
func writeOffList(
scenicId: Int,
storeId: Int? = nil,
page: Int = 1,
pageSize: Int = 20,
orderStatus: Int? = nil,
orderVerifyStatus: Int? = nil,
startTime: String? = nil,
endTime: String? = nil,
userPhone: String? = nil
) async throws -> ListPayload<WriteOffOrderItem> {
var queryItems = [
URLQueryItem(name: "scenic_id", value: "\(scenicId)"),
URLQueryItem(name: "page", value: "\(max(page, 1))"),
@ -120,6 +170,21 @@ final class OrdersAPI: OrderServing {
if let storeId, storeId > 0 {
queryItems.append(URLQueryItem(name: "store_id", value: "\(storeId)"))
}
if let orderStatus, orderStatus > 0 {
queryItems.append(URLQueryItem(name: "order_status", value: "\(orderStatus)"))
}
if let orderVerifyStatus, orderVerifyStatus > 0 {
queryItems.append(URLQueryItem(name: "order_verify_status", value: "\(orderVerifyStatus)"))
}
if let startTime, !startTime.isEmpty {
queryItems.append(URLQueryItem(name: "start_time", value: startTime))
}
if let endTime, !endTime.isEmpty {
queryItems.append(URLQueryItem(name: "end_time", value: endTime))
}
if let userPhone, !userPhone.isEmpty {
queryItems.append(URLQueryItem(name: "user_phone", value: userPhone))
}
return try await client.send(
APIRequest(
@ -256,4 +321,106 @@ final class OrdersAPI: OrderServing {
)
)
}
///
func updateRefinedChoice(orderNumber: String, isRefined: Int) async throws {
let _: EmptyPayload = try await client.send(
APIRequest(
method: .post,
path: "/api/yf-handset-app/photog/order/refined",
queryItems: [
URLQueryItem(name: "order_number", value: orderNumber),
URLQueryItem(name: "is_refined", value: "\(isRefined)")
]
)
)
}
///
func cancelOrder(orderNumber: String) async throws {
let _: EmptyPayload = try await client.send(
APIRequest(
method: .post,
path: "/api/yf-handset-app/photog/order/cancel",
body: CancelOrderRequest(orderNumber: orderNumber)
)
)
}
/// /
func sendGift(orderNumber: String, photoNum: Int, videoNum: Int) async throws {
let _: EmptyPayload = try await client.send(
APIRequest(
method: .post,
path: "/api/yf-handset-app/photog/order/gift-retouch",
body: SendGiftRequest(orderNumber: orderNumber, photoNum: photoNum, videoNum: videoNum)
)
)
}
///
func storeOrderList(
storeId: Int? = nil,
page: Int = 1,
pageSize: Int = 20,
userPhone: String? = nil,
orderStatus: Int? = nil,
orderType: Int? = nil,
startTime: String? = nil,
endTime: String? = nil
) async throws -> ListPayload<StoreOrderListItem> {
var queryItems = [
URLQueryItem(name: "page", value: "\(max(page, 1))"),
URLQueryItem(name: "page_size", value: "\(max(pageSize, 1))")
]
if let storeId, storeId > 0 {
queryItems.append(URLQueryItem(name: "store_id", value: "\(storeId)"))
}
if let userPhone, !userPhone.isEmpty {
queryItems.append(URLQueryItem(name: "user_phone", value: userPhone))
}
if let orderStatus, orderStatus > 0 {
queryItems.append(URLQueryItem(name: "order_status", value: "\(orderStatus)"))
}
if let orderType {
queryItems.append(URLQueryItem(name: "order_type", value: "\(orderType)"))
}
if let startTime, !startTime.isEmpty {
queryItems.append(URLQueryItem(name: "start_time", value: startTime))
}
if let endTime, !endTime.isEmpty {
queryItems.append(URLQueryItem(name: "end_time", value: endTime))
}
return try await client.send(
APIRequest(
method: .get,
path: "/api/app/store/order/list",
queryItems: queryItems
)
)
}
/// 退
func storeOrderRefund(
storeId: Int,
orderNumber: String,
refundType: OrderRefundMode,
refundAmount: String,
refundReason: String
) async throws {
let _: EmptyPayload = try await client.send(
APIRequest(
method: .post,
path: "/api/app/store/order/refund",
body: StoreOrderRefundRequest(
storeId: storeId,
orderNumber: orderNumber,
refundType: refundType.rawValue,
refundAmount: refundAmount,
refundReason: refundReason
)
)
)
}
}