dining.js 4.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. // 门店详情(GET /store/info/detail/{storeId},入参 storeId)
  9. export const GetStoreDetail = (storeId) =>
  10. api.get({ url: `/store/info/detail/${encodeURIComponent(storeId)}` });
  11. // 菜品种类(入参 storeId,GET /store/info/categories?storeId=)
  12. export const GetStoreCategories = (params) => api.get({ url: '/store/info/categories', params });
  13. // 根据菜品种类获取菜品(入参 categoryId,GET /store/info/cuisines?categoryId=)
  14. export const GetStoreCuisines = (params) => api.get({ url: '/store/info/cuisines', params });
  15. // 菜品详情(GET /store/dining/cuisine/{cuisineId},入参 cuisineId 菜品ID、tableId 桌号ID 传 query)
  16. export const GetCuisineDetail = (cuisineId, tableId) => {
  17. const id = cuisineId != null ? encodeURIComponent(cuisineId) : '';
  18. const url = id ? `/store/dining/cuisine/${id}` : '/store/dining/cuisine/0';
  19. const params = tableId != null && tableId !== '' ? { tableId } : {};
  20. return api.get({ url, params });
  21. };
  22. // 获取购物车(GET /store/order/cart/{tableId},建立 SSE 连接之后调用)
  23. export const GetOrderCart = (tableId) =>
  24. api.get({ url: `/store/order/cart/${encodeURIComponent(tableId)}` });
  25. // 加入购物车(POST /store/order/cart/add,dto: { cuisineId 菜品ID, quantity 数量, tableId 桌号ID })
  26. export const PostOrderCartAdd = (dto) =>
  27. api.post({ url: '/store/order/cart/add', params: dto });
  28. // 更新购物车(PUT /store/order/cart/update,请求类型 x-www-form-urlencoded,由 request 层 formUrlEncoded 封装)
  29. export const PostOrderCartUpdate = (params) =>
  30. api.put({ url: '/store/order/cart/update', params, formUrlEncoded: true });
  31. // 清空购物车(DELETE /store/order/cart/clear,入参 tableId:query + body 双传,兼容不同后端)
  32. export const PostOrderCartClear = (tableId) => {
  33. const id = tableId != null ? String(tableId) : '';
  34. const url = id ? `/store/order/cart/clear?tableId=${encodeURIComponent(id)}` : '/store/order/cart/clear';
  35. return api.delete({ url, params: id ? { tableId: id } : {} });
  36. };
  37. // 创建订单(POST /store/order/create,入参 dto:tableId 桌号ID、contactPhone 联系电话、couponId 优惠券ID 默认 null、dinerCount 就餐人数、immediatePay 是否立即支付 默认 0、remark 备注信息 最多30字)
  38. export const PostOrderCreate = (dto) =>
  39. api.post({ url: '/store/order/create', params: dto });
  40. // 订单分页列表(GET /store/order/page,入参 current 页码、size 每页数量、orderStatus 订单状态、storeId 门店ID、tableId 桌号ID)
  41. export const GetOrderPage = (params) =>
  42. api.get({ url: '/store/order/page', params });
  43. // 我的订单(GET /store/order/my-orders,入参 current 页码、size 每页数量、type 订单类型 0未支付 1历史)
  44. export const GetMyOrders = (params) =>
  45. api.get({ url: '/store/order/my-orders', params });
  46. // 订单详情(GET /store/order/info/{orderId},入参 orderId 订单ID)
  47. export const GetOrderInfo = (orderId) =>
  48. api.get({ url: `/store/order/info/${encodeURIComponent(orderId)}` });
  49. // 订单支付(POST /payment/prePay,入参 orderNo 订单号、payType 支付类型 默认 wechatPayMininProgram、payer 支付用户 openid、price 订单金额、subject 订单标题;返回微信支付调起参数)
  50. export const PostOrderPay = (params) =>
  51. api.get({
  52. url: '/payment/prePay',
  53. params: {
  54. orderNo: params.orderNo,
  55. payType: 'wechatPayMininProgram',
  56. payer: params.payer,
  57. price: params.price,
  58. subject: params.subject ?? '订单支付'
  59. }
  60. });
  61. /**
  62. * 订单 SSE 接口配置(GET /store/order/sse/{tableId})
  63. * 仅提供 URL 与 header,实际连接请使用 utils/sse.js 的 createSSEConnection 封装
  64. */
  65. export function getOrderSseConfig(tableId) {
  66. const userStore = useUserStore();
  67. return {
  68. url: `${BASE_API_URL}/store/order/sse/${encodeURIComponent(tableId)}`,
  69. header: { Authorization: userStore.getToken || '' },
  70. timeout: 0
  71. };
  72. }