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:
zetaloop
2026-04-23 21:15:11 +08:00
parent 4037816998
commit 12284290cc
7 changed files with 28 additions and 125 deletions
+5 -29
View File
@@ -19,29 +19,6 @@ interface ReviewState {
hasUserReviewed: (orderId: string, userId: string) => boolean
}
function resolveOrderUser(orderId: string, userId: string) {
const order = useOrderStore.getState().orders.find((item) => item.id === orderId)
if (!order) return null
if (order.consumerId === userId) {
return {
fromUserName: order.consumerName,
toUserId: order.playerId,
toUserName: order.playerName,
}
}
if (order.playerId === userId) {
return {
fromUserName: order.playerName,
toUserId: order.consumerId,
toUserName: order.consumerName,
}
}
return null
}
export const useReviewStore = create<ReviewState>((set, get) => ({
reviews: [],
getReviewsByOrder: (orderId) => get().reviews.filter((review) => review.orderId === orderId),
@@ -65,8 +42,9 @@ export const useReviewStore = create<ReviewState>((set, get) => ({
return deny(400, "仅待评价订单可提交评价")
}
const relation = resolveOrderUser(input.orderId, input.fromUserId)
if (!relation) {
const isParticipant =
order.consumerId === input.fromUserId || order.playerId === input.fromUserId
if (!isParticipant) {
return deny(403, "仅订单参与方可评价")
}
@@ -81,11 +59,9 @@ export const useReviewStore = create<ReviewState>((set, get) => ({
id: generateId("rev"),
orderId: input.orderId,
fromUserId: input.fromUserId,
fromUserName: relation.fromUserName,
fromUserAvatar: "",
toUserId: relation.toUserId,
fromUserName: "",
rating: input.rating,
content: input.content?.trim() || undefined,
content: input.content?.trim() ?? "",
sealed: true,
createdAt,
}