/** * 商户端 API 接口 */ import type { MerchantOrder, MerchantGoods, MerchantStats, FinanceOverview, Transaction, Settlement, WithdrawRecord, ShopInfo, GoodsFormData, } from '@/typings/merchant' import { OrderStatus, GoodsStatus } from '@/typings/merchant' import { mockMerchantStats, mockMerchantOrders, mockMerchantGoods, mockFinanceOverview, mockTransactions, mockSettlements, mockWithdrawRecords, mockShopInfo, } from '../mock' // ==================== 统计 API ==================== /** 获取商户统计数据 */ export function getMerchantStats(): Promise { return new Promise((resolve) => { setTimeout(() => { resolve(mockMerchantStats) }, 300) }) } // ==================== 订单 API ==================== /** 订单查询参数 */ interface OrderQueryParams { status?: OrderStatus | 'all' keyword?: string page?: number pageSize?: number } /** 获取订单列表 */ export function getMerchantOrders(params: OrderQueryParams = {}): Promise<{ list: MerchantOrder[]; total: number }> { return new Promise((resolve) => { setTimeout(() => { let list = [...mockMerchantOrders] // 状态筛选 if (params.status && params.status !== 'all') { list = list.filter(item => item.status === params.status) } // 关键词搜索 if (params.keyword) { const keyword = params.keyword.toLowerCase() list = list.filter(item => item.orderNo.toLowerCase().includes(keyword) || item.customerName.toLowerCase().includes(keyword) ) } resolve({ list, total: list.length }) }, 300) }) } /** 获取订单详情 */ export function getMerchantOrderDetail(id: string): Promise { return new Promise((resolve) => { setTimeout(() => { const order = mockMerchantOrders.find(item => item.id === id) resolve(order || null) }, 300) }) } /** 确认订单 */ export function confirmOrder(id: string): Promise { return new Promise((resolve) => { setTimeout(() => { const order = mockMerchantOrders.find(item => item.id === id) if (order) { order.status = OrderStatus.SHIPPING } resolve(true) }, 500) }) } /** 发货 */ export function shipOrder(id: string, data: { company: string; trackingNo: string }): Promise { return new Promise((resolve) => { setTimeout(() => { const order = mockMerchantOrders.find(item => item.id === id) if (order) { order.status = OrderStatus.SHIPPED order.shipTime = new Date().toISOString() order.logistics = { company: data.company, trackingNo: data.trackingNo, status: '已发货', traces: [{ time: new Date().toISOString(), content: '商家已发货' }], } } resolve(true) }, 500) }) } /** 添加商家备注 */ export function addMerchantRemark(id: string, remark: string): Promise { return new Promise((resolve) => { setTimeout(() => { const order = mockMerchantOrders.find(item => item.id === id) if (order) { order.merchantRemark = remark } resolve(true) }, 300) }) } // ==================== 商品 API ==================== /** 商品查询参数 */ interface GoodsQueryParams { status?: GoodsStatus | 'all' | 'lowStock' keyword?: string page?: number pageSize?: number } /** 获取商品列表 */ export function getMerchantGoodsList(params: GoodsQueryParams = {}): Promise<{ list: MerchantGoods[]; total: number }> { return new Promise((resolve) => { setTimeout(() => { let list = [...mockMerchantGoods] // 状态筛选 if (params.status) { if (params.status === 'lowStock') { list = list.filter(item => item.stock <= 10) } else if (params.status !== 'all') { list = list.filter(item => item.status === params.status) } } // 关键词搜索 if (params.keyword) { const keyword = params.keyword.toLowerCase() list = list.filter(item => item.name.toLowerCase().includes(keyword)) } resolve({ list, total: list.length }) }, 300) }) } /** 获取商品详情 */ export function getMerchantGoodsDetail(id: string): Promise { return new Promise((resolve) => { setTimeout(() => { const goods = mockMerchantGoods.find(item => item.id === id) resolve(goods || null) }, 300) }) } /** 保存商品 */ export function saveMerchantGoods(data: GoodsFormData): Promise<{ id: string }> { return new Promise((resolve) => { setTimeout(() => { const id = data.id || `goods_${Date.now()}` resolve({ id }) }, 500) }) } /** 更新商品状态 */ export function updateGoodsStatus(id: string, status: GoodsStatus): Promise { return new Promise((resolve) => { setTimeout(() => { const goods = mockMerchantGoods.find(item => item.id === id) if (goods) { goods.status = status } resolve(true) }, 300) }) } /** 删除商品 */ export function deleteMerchantGoods(id: string): Promise { return new Promise((resolve) => { setTimeout(() => { resolve(true) }, 300) }) } // ==================== 财务 API ==================== /** 获取财务概览 */ export function getFinanceOverview(): Promise { return new Promise((resolve) => { setTimeout(() => { resolve(mockFinanceOverview) }, 300) }) } /** 获取交易记录 */ export function getTransactions(page = 1, pageSize = 20): Promise<{ list: Transaction[]; total: number }> { return new Promise((resolve) => { setTimeout(() => { resolve({ list: mockTransactions, total: mockTransactions.length }) }, 300) }) } /** 获取结算记录 */ export function getSettlements(page = 1, pageSize = 20): Promise<{ list: Settlement[]; total: number }> { return new Promise((resolve) => { setTimeout(() => { resolve({ list: mockSettlements, total: mockSettlements.length }) }, 300) }) } /** 获取提现记录 */ export function getWithdrawRecords(page = 1, pageSize = 20): Promise<{ list: WithdrawRecord[]; total: number }> { return new Promise((resolve) => { setTimeout(() => { resolve({ list: mockWithdrawRecords, total: mockWithdrawRecords.length }) }, 300) }) } /** 申请提现 */ export function applyWithdraw(data: { amount: number; bankAccount: string }): Promise<{ id: string }> { return new Promise((resolve) => { setTimeout(() => { resolve({ id: `withdraw_${Date.now()}` }) }, 500) }) } // ==================== 店铺 API ==================== /** 获取店铺信息 */ export function getShopInfo(): Promise { return new Promise((resolve) => { setTimeout(() => { resolve(mockShopInfo) }, 300) }) } /** 更新店铺信息 */ export function updateShopInfo(data: Partial): Promise { return new Promise((resolve) => { setTimeout(() => { Object.assign(mockShopInfo, data) resolve(true) }, 500) }) }