import { api } from '@/utils/request.js'; import { BASE_API_URL } from '@/settings/siteSetting.js'; import { useUserStore } from '@/store/user.js'; // 微信登录 export const DiningUserWechatLogin = (params) => api.post({ url: '/dining/user/wechatLogin', params }); // 点餐页数据(入参 dinerCount 就餐人数、tableId 桌号) export const DiningOrderFood = (params) => api.get({ url: '/store/dining/page-info', params }); // 菜品种类(入参 storeId,GET /store/info/categories?storeId=) export const GetStoreCategories = (params) => api.get({ url: '/store/info/categories', params }); // 根据菜品种类获取菜品(入参 categoryId,GET /store/info/cuisines?categoryId=) export const GetStoreCuisines = (params) => api.get({ url: '/store/info/cuisines', params }); // 获取购物车(GET /store/order/cart/{tableId},建立 SSE 连接之后调用) export const GetOrderCart = (tableId) => api.get({ url: `/store/order/cart/${encodeURIComponent(tableId)}` }); // 加入购物车(POST /store/order/cart/add,dto: { cuisineId 菜品ID, quantity 数量, tableId 桌号ID }) export const PostOrderCartAdd = (dto) => api.post({ url: '/store/order/cart/add', params: dto }); // 将对象转为 x-www-form-urlencoded 字符串(兼容小程序环境无 URLSearchParams) function toFormUrlEncoded(obj) { return Object.keys(obj || {}) .filter((k) => obj[k] != null && obj[k] !== '') .map((k) => encodeURIComponent(k) + '=' + encodeURIComponent(obj[k])) .join('&'); } // 更新购物车(POST /store/order/cart/update,请求类型 x-www-form-urlencoded) export const PostOrderCartUpdate = (params) => { const body = toFormUrlEncoded(params); return api.post({ url: '/store/order/cart/update', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, params: body }); }; /** * 创建订单 SSE 连接(GET /store/order/sse/{tableId}) * 返回 uni.request 的 requestTask,需在页面 onUnload 时 abort() */ export function createOrderSseConnection(tableId, options = {}) { const userStore = useUserStore(); const url = `${BASE_API_URL}/store/order/sse/${encodeURIComponent(tableId)}`; return uni.request({ url, method: 'GET', header: { Authorization: userStore.getToken || '' }, enableChunked: true, timeout: 0, ...options }); }