orderItem.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. import { model, getAll } from '../../services/_utils/model';
  2. import { getSkuDetail } from '../sku/sku';
  3. import { DATA_MODEL_KEY } from '../../config/model';
  4. import { cloudbaseTemplateConfig } from '../../config/index';
  5. import { ORDER_ITEM, createId } from '../cloudbaseMock/index';
  6. const ORDER_ITEM_MODEL_KEY = DATA_MODEL_KEY.ORDER_ITEM;
  7. export async function getOrderItem(id) {
  8. return (
  9. await model()[ORDER_ITEM_MODEL_KEY].get({
  10. filter: {
  11. where: {
  12. _id: {
  13. $eq: id,
  14. },
  15. },
  16. },
  17. select: {
  18. sku: {
  19. _id: true,
  20. },
  21. comment: {
  22. _id: true,
  23. },
  24. },
  25. })
  26. ).data;
  27. }
  28. export async function createOrderItem({ count, skuId, orderId }) {
  29. if (cloudbaseTemplateConfig.useMock) {
  30. ORDER_ITEM.push({
  31. _id: createId(),
  32. count,
  33. order: {
  34. _id: orderId,
  35. },
  36. sku: {
  37. _id: skuId,
  38. },
  39. });
  40. return;
  41. }
  42. return model()[ORDER_ITEM_MODEL_KEY].create({
  43. data: {
  44. count,
  45. sku: {
  46. _id: skuId,
  47. },
  48. order: {
  49. _id: orderId,
  50. },
  51. },
  52. });
  53. }
  54. export function getAllOrderItems() {
  55. return getAll({ name: ORDER_ITEM_MODEL_KEY });
  56. }
  57. /**
  58. *
  59. * @param {{orderId: String}} param0
  60. */
  61. export async function getAllOrderItemsOfAnOrder({ orderId }) {
  62. if (cloudbaseTemplateConfig.useMock) {
  63. const orderItems = ORDER_ITEM.filter((orderItem) => orderItem.order._id === orderId);
  64. await Promise.all(
  65. orderItems.map(async (orderItem) => {
  66. const skuId = orderItem.sku._id;
  67. const sku = await getSkuDetail(skuId);
  68. orderItem.sku = sku;
  69. }),
  70. );
  71. return orderItems;
  72. }
  73. const orderItems = await getAll({
  74. name: ORDER_ITEM_MODEL_KEY,
  75. filter: {
  76. where: {
  77. order: {
  78. $eq: orderId,
  79. },
  80. },
  81. },
  82. select: {
  83. _id: true,
  84. count: true,
  85. sku: {
  86. _id: true,
  87. },
  88. },
  89. });
  90. const enhancedItems = await Promise.all(
  91. orderItems.map(async (orderItem) => {
  92. const skuId = orderItem.sku._id;
  93. const sku = await getSkuDetail(skuId);
  94. return {
  95. ...orderItem,
  96. sku: {
  97. ...sku,
  98. id: sku._id, // 确保有id字段
  99. cover_image: sku.image || '', // 统一使用cover_image字段
  100. imageUrl: sku.image || '', // 同时保留imageUrl字段以兼容旧代码
  101. price: sku.price || 0, // 确保price字段存在
  102. name: sku.name || '' // 确保商品名称存在
  103. },
  104. count: orderItem.count || 1, // 默认数量为1
  105. id: orderItem._id // 确保有id字段
  106. };
  107. }),
  108. );
  109. return enhancedItems;
  110. }