import { http } from '@/common/service/service.js' import { USER_INFO } from '@/common/util/constants.js' /** 线上下单模式:与后端 DiningMode 枚举一致 */ export const DINING_MODE = { ORDER_ONLY: 'ORDER_ONLY', ORDER_AND_PAY: 'ORDER_AND_PAY' } export function getMerchantId() { const info = uni.getStorageSync(USER_INFO) || {} return info.merchantId || '' } /** 前端下单类型 -> 后端 diningMode */ export function mapOrderModeToDiningMode(orderMode) { return orderMode === 'orderPay' ? DINING_MODE.ORDER_AND_PAY : DINING_MODE.ORDER_ONLY } /** 后端 diningMode -> 前端下单类型 */ export function mapDiningModeToOrderMode(diningMode) { return diningMode === DINING_MODE.ORDER_AND_PAY ? 'orderPay' : 'orderOnly' } /** 查询门店扫码点餐配置 */ export function fetchDiningConfig(merchantId) { return http.get('/api/v2/merchant/dining-config', { params: { merchantId } }) } /** 保存门店扫码点餐配置 POST /api/v2/merchant/dining-config */ export function saveDiningConfig(data) { return http.post('/api/v2/merchant/dining-config', data) } /** 解析配置接口 result */ export function parseDiningConfigResponse(result = {}) { return { diningMode: result.diningMode || '' } } /** 批量添加门店桌号 */ export function batchCreateTables(data) { return http.post('/api/v2/merchant/dining-tables/batch', data) } /** 查询门店桌号列表 GET /jeecg-boot/api/v2/merchant/dining-tables */ export function fetchTableList(merchantId, { pageNo = 1, pageSize = 10 } = {}) { return http.get('/api/v2/merchant/dining-tables', { params: { merchantId, pageNo, pageSize } }) } /** 解析列表接口 result(兼容分页与普通数组) */ export function parseTableListResponse(result) { if (!result) { return { list: [], diningMode: '', total: 0, current: 1, pages: 0, hasMore: false } } if (Array.isArray(result)) { return { list: result, diningMode: '', total: result.length, current: 1, pages: 1, hasMore: false } } const list = result.records || result.list || result.items || [] const total = result.total != null ? result.total : list.length const current = result.current != null ? result.current : (result.pageNo != null ? result.pageNo : 1) const size = result.size != null ? result.size : (result.pageSize != null ? result.pageSize : list.length || 1) const pages = result.pages != null ? result.pages : Math.ceil(total / size) return { list, diningMode: result.diningMode || '', total, current, pages, hasMore: current < pages } } /** 归一化桌号列表项 */ export function normalizeTableItem(row = {}) { const code = row.tableCode != null ? String(row.tableCode) : (row.tableNo != null ? String(row.tableNo) : String(row.no || '')) return { id: row.id, no: code, tableCode: code, miniQrUrl: row.miniQrUrl || row.miniProgramQrUrl || '', officialQrUrl: row.officialQrUrl || row.mpQrUrl || '' } } export function normalizeTableList(list) { if (!Array.isArray(list)) return [] return list.map(normalizeTableItem).sort((a, b) => parseInt(a.no, 10) - parseInt(b.no, 10)) }