cart.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. import { model, getAll } from '../../services/_utils/model';
  2. import { config } from '../../config/index';
  3. import { DATA_MODEL_KEY } from '../../config/model';
  4. import { cloudbaseTemplateConfig } from '../../config/index';
  5. import { CART_ITEM, SKU, createId } from '../cloudbaseMock/index';
  6. import { getCloudImageTempUrl } from '../../utils/cloudImageHandler';
  7. const CATE_ITEM_MODEL_KEY = DATA_MODEL_KEY.CART_ITEM;
  8. const HOME_SWIPER_MODEL_KEY = DATA_MODEL_KEY.HOME_SWIPER;
  9. /** 获取购物车mock数据 */
  10. function mockFetchCartGroupData(params) {
  11. const { delay } = require('../_utils/delay');
  12. const { genCartGroupData } = require('../../model/cart');
  13. return delay().then(() => genCartGroupData(params));
  14. }
  15. /**
  16. *
  17. * @param {{id: string}} param0
  18. * @returns
  19. */
  20. export async function getSwipe() {
  21. // console.log("cloudbaseTemplateConfig.useMock",cloudbaseTemplateConfig.useMock);
  22. if (cloudbaseTemplateConfig.useMock) {
  23. // 返回包含多张模拟图片的数据
  24. return {
  25. images: [
  26. 'https://qcloudimg.tencent-cloud.cn/raw/1e793c70bb4f521fe277b2c207ab81b4.png',
  27. 'https://qcloudimg.tencent-cloud.cn/raw/063123361b3a397f4ba6894591c3a006.png',
  28. 'https://qcloudimg.tencent-cloud.cn/raw/62eb1d8d8ea3b05302c199636f787438.png'
  29. ]
  30. };
  31. }
  32. // 实际环境中获取所有记录,然后提取所有图片
  33. const records = (await model()[HOME_SWIPER_MODEL_KEY].list({ select: { images: true } })).data.records;
  34. // console.log("records:",records);
  35. // console.log("records[1].images:",records[1].images);
  36. // 合并所有记录中的images数组
  37. const allImages = records[1].images; //records.flatMap(record => record.images || []);
  38. return { images: allImages.length > 0 ? allImages : [] };
  39. }
  40. export async function getCartItem({ id }) {
  41. if (cloudbaseTemplateConfig.useMock) {
  42. const cartItem = CART_ITEM.find((x) => x._id === id);
  43. cartItem.sku = SKU.find((sku) => sku._id === cartItem.sku._id);
  44. return { data: cartItem };
  45. }
  46. return model()[CATE_ITEM_MODEL_KEY].get({
  47. filter: {
  48. where: {
  49. _id: {
  50. $eq: id,
  51. },
  52. },
  53. },
  54. select: {
  55. _id: true,
  56. count: true,
  57. sku: {
  58. _id: true,
  59. count: true,
  60. description: true,
  61. },
  62. },
  63. });
  64. }
  65. export async function fetchCartItems() {
  66. if (cloudbaseTemplateConfig.useMock) {
  67. return CART_ITEM.map((cartItem) => {
  68. const sku = SKU.find((x) => x._id === cartItem.sku._id);
  69. return {
  70. ...cartItem,
  71. sku,
  72. };
  73. });
  74. }
  75. return getAll({
  76. name: CATE_ITEM_MODEL_KEY,
  77. select: {
  78. _id: true,
  79. count: true,
  80. sku: {
  81. _id: true,
  82. count: true,
  83. description: true,
  84. },
  85. },
  86. });
  87. }
  88. /**
  89. *
  90. * @param {{
  91. * skuId: String,
  92. * count: Number
  93. * }} param0
  94. */
  95. export async function createCartItem({ skuId, count }) {
  96. if (cloudbaseTemplateConfig.useMock) {
  97. CART_ITEM.push({ sku: { _id: skuId }, count, _id: createId() });
  98. return;
  99. }
  100. return await model()[CATE_ITEM_MODEL_KEY].create({
  101. data: {
  102. count,
  103. sku: { _id: skuId },
  104. },
  105. });
  106. }
  107. /**
  108. *
  109. * @param {{cartItemId: string}} param0
  110. */
  111. export async function deleteCartItem({ cartItemId }) {
  112. if (cloudbaseTemplateConfig.useMock) {
  113. CART_ITEM.splice(
  114. CART_ITEM.findIndex((cartItem) => cartItem._id === cartItemId),
  115. 1,
  116. );
  117. return;
  118. }
  119. return await model()[CATE_ITEM_MODEL_KEY].delete({
  120. filter: {
  121. where: {
  122. _id: {
  123. $eq: cartItemId,
  124. },
  125. },
  126. },
  127. });
  128. }
  129. /**
  130. *
  131. * @param {{
  132. * cartItemId: String,
  133. * count: Number
  134. * }} param0
  135. * @returns
  136. */
  137. export async function updateCartItemCount({ cartItemId, count }) {
  138. if (cloudbaseTemplateConfig.useMock) {
  139. CART_ITEM.find((x) => x._id === cartItemId).count = count;
  140. return;
  141. }
  142. return await model()[CATE_ITEM_MODEL_KEY].update({
  143. data: {
  144. count,
  145. },
  146. filter: {
  147. where: {
  148. _id: {
  149. $eq: cartItemId,
  150. },
  151. },
  152. },
  153. });
  154. }
  155. /** 获取购物车数据 */
  156. export function fetchCartGroupData(params) {
  157. if (config.useMock) {
  158. return mockFetchCartGroupData(params);
  159. }
  160. return new Promise((resolve) => {
  161. resolve('real api');
  162. });
  163. }