refactor(store): adapt Zustand stores to backend-aligned types
- orders: remove name fields from creation, keep dispatchMode logic - chat: remove readonly/senderName/senderAvatar references - reviews: remove fromUserAvatar/toUserId, simplify participant check - disputes: remove initiatorId/initiatorName from creation - posts: remove authorRole/quotedPostId, keep linkedOrderId as number - comments: remove postId from creation - wallet: use string amounts
This commit is contained in:
+1
-34
@@ -14,7 +14,6 @@ import { useChatStore } from "@/store/chat"
|
||||
import { useNotificationStore } from "@/store/notifications"
|
||||
import { usePlayerStore } from "@/store/players"
|
||||
import { useServiceStore } from "@/store/services"
|
||||
import { useShopStore } from "@/store/shops"
|
||||
import { useWalletStore } from "@/store/wallet"
|
||||
import { create } from "zustand"
|
||||
|
||||
@@ -112,22 +111,15 @@ function applyStatus(order: Order, status: OrderStatus): Order {
|
||||
acceptedAt: order.acceptedAt ?? now,
|
||||
}
|
||||
case "pending_close":
|
||||
return {
|
||||
...order,
|
||||
status,
|
||||
closedAt: order.closedAt ?? now,
|
||||
}
|
||||
case "pending_review":
|
||||
return {
|
||||
...order,
|
||||
status,
|
||||
closedAt: order.closedAt ?? now,
|
||||
}
|
||||
case "completed":
|
||||
return {
|
||||
...order,
|
||||
status,
|
||||
closedAt: order.closedAt ?? now,
|
||||
completedAt: order.completedAt ?? now,
|
||||
}
|
||||
default:
|
||||
@@ -205,7 +197,7 @@ function notifyOrderStatus(order: Order) {
|
||||
},
|
||||
in_progress: {
|
||||
title: "订单已接单",
|
||||
content: `${order.playerName} 已开始服务`,
|
||||
content: `订单 ${order.service.title} 已开始服务`,
|
||||
},
|
||||
pending_close: {
|
||||
title: "订单发起结单",
|
||||
@@ -332,10 +324,6 @@ export const useOrderStore = create<OrderState>((set, get) => {
|
||||
return { decision: deny(400, "店铺信息与打手不匹配") }
|
||||
}
|
||||
|
||||
const resolvedShopName = resolvedShopId
|
||||
? useShopStore.getState().shops.find((item) => item.id === resolvedShopId)?.name
|
||||
: undefined
|
||||
|
||||
const quantity = Number.isFinite(input.quantity) ? Math.floor(input.quantity) : Number.NaN
|
||||
if (!quantity || quantity < 1) {
|
||||
return { decision: deny(400, "数量不合法") }
|
||||
@@ -345,11 +333,8 @@ export const useOrderStore = create<OrderState>((set, get) => {
|
||||
const order: Order = {
|
||||
id: generateId("ord"),
|
||||
consumerId: consumer.id,
|
||||
consumerName: consumer.nickname,
|
||||
playerId: player.id,
|
||||
playerName: player.user.nickname,
|
||||
shopId: resolvedShopId,
|
||||
shopName: resolvedShopName,
|
||||
service,
|
||||
status: "pending_payment",
|
||||
totalPrice,
|
||||
@@ -395,10 +380,6 @@ export const useOrderStore = create<OrderState>((set, get) => {
|
||||
return { decision: deny(400, "店铺信息与打手不匹配") }
|
||||
}
|
||||
|
||||
const resolvedShopName = resolvedShopId
|
||||
? useShopStore.getState().shops.find((item) => item.id === resolvedShopId)?.name
|
||||
: undefined
|
||||
|
||||
const quantity = Number.isFinite(input.quantity) ? Math.floor(input.quantity) : Number.NaN
|
||||
if (!quantity || quantity < 1) {
|
||||
return { decision: deny(400, "数量不合法") }
|
||||
@@ -420,11 +401,8 @@ export const useOrderStore = create<OrderState>((set, get) => {
|
||||
const order: Order = {
|
||||
id: orderId,
|
||||
consumerId: consumer.id,
|
||||
consumerName: consumer.nickname,
|
||||
playerId: player.id,
|
||||
playerName: player.user.nickname,
|
||||
shopId: resolvedShopId,
|
||||
shopName: resolvedShopName,
|
||||
service,
|
||||
status: "pending_accept",
|
||||
totalPrice,
|
||||
@@ -465,17 +443,6 @@ useOrderStore.subscribe((state, prevState) => {
|
||||
const prevOrder = prevState.orders.find((item) => item.id === order.id)
|
||||
if (!prevOrder || prevOrder.status !== order.status) {
|
||||
scheduleOrderTimeout(order.id, order.status)
|
||||
if (order.status === "pending_accept" && order.shopId) {
|
||||
const shop = useShopStore.getState().shops.find((s) => s.id === order.shopId)
|
||||
if (shop?.dispatchMode === "auto") {
|
||||
setTimeout(() => {
|
||||
const current = useOrderStore.getState().orders.find((o) => o.id === order.id)
|
||||
if (!current || current.status !== "pending_accept") return
|
||||
const actor: Actor = { userId: order.playerId, role: "player", shopId: order.shopId }
|
||||
useOrderStore.getState().acceptOrder(order.id, actor)
|
||||
}, 3000)
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
prevState.orders.forEach((order) => {
|
||||
|
||||
Reference in New Issue
Block a user