spu.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import { model } from '../_utils/model';
  2. import { getCloudImageTempUrl } from '../../utils/cloudImageHandler';
  3. import { SPU_SELLING_STATUS } from '../../utils/spuStatus';
  4. import { DATA_MODEL_KEY } from '../../config/model';
  5. import { cloudbaseTemplateConfig } from '../../config/index';
  6. import { SPU, SKU } from '../cloudbaseMock/index';
  7. const SPU_MODEL_KEY = DATA_MODEL_KEY.SPU;
  8. const SKU_MODEL_KEY = DATA_MODEL_KEY.SKU;
  9. /**
  10. *
  11. * @param {{
  12. * pageSize: Number,
  13. * pageNumber: Number,
  14. * cateId: String,
  15. * search: String
  16. * }}} param0
  17. * @returns
  18. */
  19. export async function listGood({ pageSize, pageNumber, search }) {
  20. if (cloudbaseTemplateConfig.useMock) {
  21. const records = search ? SPU.filter((x) => x.name.includes(search)) : SPU;
  22. const startIndex = (pageNumber - 1) * pageSize;
  23. const endIndex = startIndex + pageSize;
  24. return {
  25. records: records.slice(startIndex, endIndex),
  26. total: records.length,
  27. };
  28. }
  29. const filter = {
  30. where: {
  31. status: { $eq: SPU_SELLING_STATUS },
  32. },
  33. };
  34. if (search) {
  35. filter.where.name = { $search: search };
  36. }
  37. return (
  38. await model()[SPU_MODEL_KEY].list({
  39. filter,
  40. pageSize,
  41. pageNumber,
  42. getCount: true,
  43. orderBy: [{ priority: 'desc' }],
  44. })
  45. ).data;
  46. }
  47. export async function getPrice(spuId) {
  48. if (cloudbaseTemplateConfig.useMock) {
  49. return SKU.find((x) => x.spu._id === spuId).price;
  50. }
  51. const {
  52. data: { records },
  53. } = await model()[SKU_MODEL_KEY].list({
  54. filter: {
  55. where: {
  56. spu: {
  57. $eq: spuId,
  58. },
  59. },
  60. },
  61. select: {
  62. $master: true,
  63. spu: {
  64. _id: true,
  65. },
  66. },
  67. });
  68. return records[0].price;
  69. }
  70. export async function handleSpuCloudImage(spu) {
  71. if (spu == null) {
  72. return;
  73. }
  74. const handledImages = await getCloudImageTempUrl([spu.cover_image, ...spu.swiper_images]);
  75. handledImages.forEach((image, index) => {
  76. if (index === 0) {
  77. spu.cover_image = image;
  78. return;
  79. }
  80. spu.swiper_images[index - 1] = image;
  81. });
  82. }
  83. export async function getSpu(spuId) {
  84. if (cloudbaseTemplateConfig.useMock) {
  85. return SPU.find((x) => x._id === spuId);
  86. }
  87. return (
  88. await model()[SPU_MODEL_KEY].get({
  89. filter: {
  90. where: { _id: { $eq: spuId } },
  91. },
  92. })
  93. ).data;
  94. }