dining.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import { api } from '@/utils/request.js';
  2. import { BASE_API_URL } from '@/settings/siteSetting.js';
  3. import { useUserStore } from '@/store/user.js';
  4. // 微信登录
  5. export const DiningUserWechatLogin = (params) => api.post({ url: '/dining/user/wechatLogin', params });
  6. // 点餐页数据(入参 dinerCount 就餐人数、tableId 桌号)
  7. export const DiningOrderFood = (params) => api.get({ url: '/store/dining/page-info', params });
  8. // 菜品种类(入参 storeId,GET /store/info/categories?storeId=)
  9. export const GetStoreCategories = (params) => api.get({ url: '/store/info/categories', params });
  10. // 根据菜品种类获取菜品(入参 categoryId,GET /store/info/cuisines?categoryId=)
  11. export const GetStoreCuisines = (params) => api.get({ url: '/store/info/cuisines', params });
  12. // 获取购物车(GET /store/order/cart/{tableId},建立 SSE 连接之后调用)
  13. export const GetOrderCart = (tableId) =>
  14. api.get({ url: `/store/order/cart/${encodeURIComponent(tableId)}` });
  15. // 加入购物车(POST /store/order/cart/add,dto: { cuisineId 菜品ID, quantity 数量, tableId 桌号ID })
  16. export const PostOrderCartAdd = (dto) =>
  17. api.post({ url: '/store/order/cart/add', params: dto });
  18. // 将对象转为 x-www-form-urlencoded 字符串(兼容小程序环境无 URLSearchParams)
  19. function toFormUrlEncoded(obj) {
  20. return Object.keys(obj || {})
  21. .filter((k) => obj[k] != null && obj[k] !== '')
  22. .map((k) => encodeURIComponent(k) + '=' + encodeURIComponent(obj[k]))
  23. .join('&');
  24. }
  25. // 更新购物车(POST /store/order/cart/update,请求类型 x-www-form-urlencoded)
  26. export const PostOrderCartUpdate = (params) => {
  27. const body = toFormUrlEncoded(params);
  28. return api.post({
  29. url: '/store/order/cart/update',
  30. headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
  31. params: body
  32. });
  33. };
  34. /**
  35. * 创建订单 SSE 连接(GET /store/order/sse/{tableId})
  36. * 返回 uni.request 的 requestTask,需在页面 onUnload 时 abort()
  37. */
  38. export function createOrderSseConnection(tableId, options = {}) {
  39. const userStore = useUserStore();
  40. const url = `${BASE_API_URL}/store/order/sse/${encodeURIComponent(tableId)}`;
  41. return uni.request({
  42. url,
  43. method: 'GET',
  44. header: {
  45. Authorization: userStore.getToken || ''
  46. },
  47. enableChunked: true,
  48. timeout: 0,
  49. ...options
  50. });
  51. }