@conecli/cone-render 0.10.1-shop-beta.5 → 0.10.1-shop-beta.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/dist/api/index.ts +1 -1
  2. package/dist/common/const.ts +1 -1
  3. package/dist/common/index.h5.ts +1 -1
  4. package/dist/common/index.jd.ts +1 -1
  5. package/dist/common/index.ts +1 -1
  6. package/dist/common/index.weapp.ts +1 -1
  7. package/dist/common/pageType.ts +1 -1
  8. package/dist/common/sgmCustomCode.ts +1 -1
  9. package/dist/common/token/token.jd.ts +1 -1
  10. package/dist/components/base/CommonFloorHead/index.module.scss +126 -111
  11. package/dist/components/base/CommonFloorHead/index.tsx +1 -1
  12. package/dist/components/base/CountDown/index.module.scss +49 -44
  13. package/dist/components/base/CountDown/index.tsx +1 -1
  14. package/dist/components/base/CustomScrollView/index-back.tsx +1 -0
  15. package/dist/components/base/CustomScrollView/index.tsx +1 -1
  16. package/dist/components/base/CustomVideo/common.ts +1 -0
  17. package/dist/components/base/CustomVideo/index.tsx +1 -1
  18. package/dist/components/base/Dialog/index.module.scss +11 -0
  19. package/dist/components/base/ExposureSmart/index.h5.module.scss +12 -2
  20. package/dist/components/base/ExposureSmart/index.h5.tsx +1 -1
  21. package/dist/components/base/ExposureSmart/reporter.tsx +1 -1
  22. package/dist/components/base/InViewRender/index.tsx +1 -1
  23. package/dist/components/base/ItemViewExposureSmart/index.module.scss +2 -2
  24. package/dist/components/base/ItemViewExposureSmart/index.tsx +1 -1
  25. package/dist/components/base/LazyLoadImage/index.h5.module.scss +8 -4
  26. package/dist/components/base/LazyLoadImage/index.h5.tsx +1 -1
  27. package/dist/components/base/Price/Base/index.tsx +1 -1
  28. package/dist/components/base/Price/Double/index.module.scss +8 -0
  29. package/dist/components/base/Price/Double/index.tsx +1 -1
  30. package/dist/components/floorItem.tsx +1 -1
  31. package/dist/components/floorItem.weapp.tsx +1 -1
  32. package/dist/components/isv/Floor/index.tsx +1 -1
  33. package/dist/interface/common.ts +1 -1
  34. package/dist/interface/component.ts +1 -1
  35. package/dist/interface/jumpEventReport.ts +1 -1
  36. package/dist/interface/service.ts +1 -1
  37. package/dist/jumpEventReport/base.ts +1 -1
  38. package/dist/jumpEventReport/const.ts +1 -1
  39. package/dist/jumpEventReport/index.jd.ts +1 -1
  40. package/dist/jumpEventReport/index.weapp.ts +1 -1
  41. package/dist/jumpEventReport/jdJumpJdApp.ts +1 -1
  42. package/dist/jumpEventReport/jumpUrlConfig/base.ts +1 -1
  43. package/dist/jumpEventReport/logEventConfig.ts +1 -1
  44. package/dist/jumpEventReport/web/report.ts +1 -1
  45. package/dist/jumpEventReport/web.base.ts +1 -1
  46. package/dist/jumpEventReport/web.jd.ts +1 -1
  47. package/dist/jumpEventReport/web.jdb.ts +1 -1
  48. package/dist/jumpEventReport/web.jdjch.ts +1 -1
  49. package/dist/jumpEventReport/web.jxwxapp.ts +1 -1
  50. package/dist/jumpEventReport/web.pc.ts +1 -1
  51. package/dist/jumpEventReport/web.tjapp.ts +1 -1
  52. package/dist/jumpEventReport/web.tjm.ts +1 -1
  53. package/dist/jumpEventReport/web.wxapp.ts +1 -1
  54. package/dist/libs/taroAppReport.js +2 -2
  55. package/dist/modules/ContainerFloorList/index.h5.module.scss +66 -53
  56. package/dist/modules/ContainerFloorList/index.h5.tsx +1 -1
  57. package/dist/modules/ContainerFloorList/index.tsx +1 -1
  58. package/dist/open/api/shopMember.ts +1 -1
  59. package/dist/open/api/util.ts +1 -1
  60. package/dist/sass/app.h5.scss +273 -224
  61. package/dist/sass/base.scss +142 -141
  62. package/dist/service/fetchGateway.ts +1 -1
  63. package/dist/service/fetchGateway.weapp.ts +1 -0
  64. package/dist/service/http/colorSign.ts +1 -1
  65. package/dist/service/http/const.ts +1 -1
  66. package/dist/service/http/h5Http.ts +1 -0
  67. package/dist/service/http/index.h5.ts +1 -0
  68. package/dist/service/requestServer.h5.ts +1 -0
  69. package/dist/service/requestServer.ts +1 -1
  70. package/dist/service/requestServer.weapp.ts +1 -0
  71. package/dist/utils/connectNativeJsBridge.ts +1 -1
  72. package/dist/utils/h5Utils.ts +1 -1
  73. package/dist/utils/index.h5.ts +1 -1
  74. package/dist/utils/index.ts +1 -1
  75. package/dist/utils/index.weapp.ts +1 -1
  76. package/dist/utils/jumpExtMapUtil.js +1 -0
  77. package/dist/utils/sColor.js +1 -0
  78. package/dist/utils/utils.ts +1 -1
  79. package/package.json +53 -29
  80. package/dist/utils/memberFormatUtils.js +0 -1
@@ -1 +1 @@
1
- import Taro from "@tarojs/taro";
2
1
  APPID,
3
2
  JshopxColorFunctionIdList,
4
3
  PagesColorFunctionIdList,
5
4
  PAGES_DOMAIN,
6
5
  B2BColorFunctionIdList,
7
6
  MobileVerifyColorList,
8
7
  AppVerifyColorList,
9
8
  JshopxVerifyColorList,
10
9
  BMallVerifyColorList,
11
10
  shopMemberColorFunctionIdList,
12
11
  isJdApp,
13
12
  isIosDevice,
14
13
  isAndroidDevice,
15
14
  showSuccessToast,
16
15
  showFailToast,
17
16
  isH5,
18
17
  isWxMinAndWxapp,
19
18
  isMin,
20
19
  isPc,
21
20
  callRouterIOS,
22
21
  callRouterAndroid,
23
22
  cookiesStr: "",
24
23
  requestHeaderContentType: {
25
24
  jsonHeader: {
26
25
  "content-type": "application/json;charset=utf-8",
27
26
  },
28
27
  formDataHeader: {
29
28
  "content-type": "application/x-www-form-urlencoded",
30
29
  },
31
30
  },
32
31
  requestBaseParam: {
33
32
  data: null,
34
33
  header: {
35
34
  "content-type": "application/json;charset=utf-8",
36
35
  },
37
36
  },
38
37
  timeOut: 7000,
39
38
  apiClientParams: {
40
39
  clientVersion:
41
40
  isJdApp && jdAppVersionStr !== "" ? jdAppVersionStr : "11.0.0",
42
41
  client: isJdApp ? (isIosDevice ? "apple" : "android") : isPc ? "pc" : "wh5",
43
42
  area: "1_72_2799_0",
44
43
  screen: `${Math.ceil(window.screen?.width * devicePixelRatio)}*${Math.ceil(
45
44
  window.screen?.height * devicePixelRatio
46
45
  )}`,
47
46
  uuid: UUID,
48
47
  },
49
48
  public addressFetchInfo: {
50
49
  reqState: boolean;
51
50
  promiseInstance: null | Promise<any>;
52
51
  };
53
52
  public getPromotionConfig: {
54
53
  projectId: null | string | number;
55
54
  pageId: null | string | number;
56
55
  };
57
56
  public resInfo: ServiceInterFace.HttpRequestInfo;
58
57
  public api: ServiceInterFace.HttpApi;
59
58
  public isPageDomain: boolean;
60
59
  public verifyColorList: string[];
61
60
  constructor(opt) {
62
61
  this._init();
63
62
  this.addressFetchInfo = {
64
63
  reqState: false,
65
64
  promiseInstance: null,
66
65
  };
67
66
  this.getPromotionConfig = {
68
67
  projectId: null,
69
68
  pageId: null,
70
69
  };
71
70
  this._userAreaUpdateListen();
72
71
  this.resInfo = this._getResConfig(opt);
73
72
  this.api = api;
74
73
  this.isPageDomain = isH5
75
74
  ? window?.location?.hostname === PAGES_DOMAIN
76
75
  : false;
77
76
  this.verifyColorList = [
78
77
  ...MobileVerifyColorList,
79
78
  ...AppVerifyColorList,
80
79
  ...JshopxVerifyColorList,
81
80
  ...BMallVerifyColorList,
82
81
  ];
83
82
  }
84
83
  _init(): void {
85
84
  httpInterceptors.forEach((item) => {
86
85
  Taro.addInterceptor((chain) => item(chain));
87
86
  });
88
87
  }
89
88
  _getResConfig(opt = {}): ServiceInterFace.HttpRequestInfo {
90
89
  return Object.assign({}, DefaultConfig, opt);
91
90
  }
92
91
 
93
92
  _userAreaUpdateListen() {
94
93
  Taro.eventCenter.on(TaroEventType.USER_AREA_UPDATE, (area) => {
95
94
  this.updateApiClientParamsResInfo({
96
95
  area,
97
96
  });
98
97
  });
99
98
  }
100
99
  updateApiClientParamsResInfo(opt = {}) {
101
100
  this.resInfo.apiClientParams = {
102
101
  ...this.resInfo.apiClientParams,
103
102
  ...opt,
104
103
  };
105
104
  }
106
105
 
107
106
  checkFunctionIdToReturnAppId(functionId) {
108
107
  if (JshopxColorFunctionIdList.includes(functionId)) {
109
108
  return APPID.JSHOPX_COLOR_APPID;
110
109
  } else if (
111
110
  this.isPageDomain &&
112
111
  PagesColorFunctionIdList.includes(functionId)
113
112
  ) {
114
113
  return APPID.PAGES_COLOR_APPID;
115
114
  } else if (shopMemberColorFunctionIdList.includes(functionId)) {
116
115
  return APPID.SHOP_MEMBER_COLOR_APPID;
117
116
  } else if (B2BColorFunctionIdList.includes(functionId)) {
118
117
  return APPID.B2B_COLOR_APPID;
119
118
  } else if (isPc) {
120
119
  return APPID.MALL_COLOR_APPID;
121
120
  } else {
122
121
  return APPID.SHOP_COLOR_APPID;
123
122
  }
124
123
  }
125
124
 
126
125
  gatewayReq(
127
126
  functionId: string,
128
127
  bodyParams = {},
129
128
  clientParams = {}
130
129
  ): Promise<any> {
131
130
  if (
132
131
  functionId === "receiveShopCoupon" &&
133
132
  ((isH5 &&
134
133
  (window?.isJingGouMiniViewState || window?.isJingxiMiniViewState)) ||
135
134
  isWxMinAndWxapp)
136
135
  ) {
137
136
  clientParams = Object.assign(
138
137
  {},
139
138
  {
140
139
  loginType: "1",
141
140
  loginWQBiz: WXAPP_BIZ_KEY,
142
141
  },
143
142
  clientParams
144
143
  );
145
144
  }
146
145
  const apiClientParams = Object.assign(
147
146
  {},
148
147
  this.resInfo.apiClientParams,
149
148
  clientParams
150
149
  );
151
150
  typeof apiClientParams.appid === "undefined" &&
152
151
  (apiClientParams.appid = this.checkFunctionIdToReturnAppId(functionId));
153
152
  const isColorVerify = this.verifyColorList.includes(functionId);
154
153
  const getReqData = {
155
154
  functionId: functionId,
156
155
  body: JSON.stringify(bodyParams),
157
156
  t: Date.now(),
158
157
  ...apiClientParams,
159
158
  };
160
159
  return http
161
160
  .request({
162
161
  url: this.api.apiFunc,
163
162
  data: getReqData,
164
163
  isColorVerify,
165
164
  })
166
165
  .then((res: ServiceInterFace.RequestPromiseRes) => {
167
166
  const { statusCode, data } = res;
168
167
  let changeRes: ServiceInterFace.RequestResponseFormatRes = {
169
168
  ok: true,
170
169
  };
171
170
  if (statusCode === 200 && data) {
172
171
  const resCode = Object.prototype.hasOwnProperty.call(res.data, "code")
173
172
  ? Number(res.data.code)
174
173
  : -1;
175
174
  const subCode = Object.prototype.hasOwnProperty.call(
176
175
  res.data,
177
176
  "subCode"
178
177
  )
179
178
  ? Number(res.data.subCode)
180
179
  : -1;
181
180
  if (
182
181
  data.success === true ||
183
182
  data.isSuccess ||
184
183
  resCode === 0 ||
185
184
  resCode === 200 ||
186
185
  subCode === 0
187
186
  ) {
188
187
  changeRes = {
189
188
  result: Object.prototype.hasOwnProperty.call(data, "result")
190
189
  ? data.result
191
190
  : Object.prototype.hasOwnProperty.call(data, "data")
192
191
  ? data.data
193
192
  : data,
194
193
  code: data.code || 200,
195
194
  ok: true,
196
195
  source: data,
197
196
  };
198
197
  return changeRes;
199
198
  } else {
200
199
  changeRes = {
201
200
  ...data,
202
201
  ok: false,
203
202
  statusCode: res.statusCode,
204
203
  };
205
204
  return changeRes;
206
205
  }
207
206
  } else {
208
207
  changeRes = {
209
208
  ...data,
210
209
  ok: false,
211
210
  statusCode: res.statusCode,
212
211
  };
213
212
  return changeRes;
214
213
  }
215
214
  })
216
215
  .catch((res) => {
217
216
  return {
218
217
  ...res,
219
218
  ok: false,
220
219
  } as ServiceInterFace.RequestResponseFormatRes;
221
220
  });
222
221
  }
223
222
 
224
223
  async receiveCoupon(param = {}, clientParams) {
225
224
  const loginType = isPc ? { loginType: 3 } : {};
226
225
  return await this.gatewayReq(
227
226
  "receiveShopCoupon",
228
227
  {
229
228
  operation: "3",
230
229
  ...param,
231
230
  },
232
231
  { ...loginType, ...clientParams }
233
232
  );
234
233
  }
235
234
 
236
235
  getCustomerCenterDispatch(params = {}) {
237
236
  return this.gatewayReq("customerCenterDispatch", params, {
238
237
  clientVersion: "9.2.0",
239
238
  client: "H5",
240
239
  uuid: 88888,
241
240
  appid: "shopmember_m_jd_com",
242
241
  });
243
242
  }
244
243
 
245
244
  batchAddCart(skuIdsStr, num = 1, showToast = true) {
246
245
  if (skuIdsStr) {
247
246
  return this._addShopGoodCart(`${skuIdsStr}`, `${num}`)
248
247
  .then((res: ServiceInterFace.SkuToCartDataRes) => {
249
248
  if (res?.ok) {
250
249
  if (showToast && !res?.isOpenApp)
251
250
  showSuccessToast({
252
251
  title: "加入购物车成功",
253
252
  });
254
253
  } else {
255
254
  showToast &&
256
255
  showFailToast({
257
256
  title: res?.errMsg || "加入购物车失败,请稍后重试!",
258
257
  });
259
258
  }
260
259
  return Promise.resolve(res);
261
260
  })
262
261
  .catch((e) => {
263
262
  console.log("调用加购方法异常=======>", e);
264
263
  return Promise.resolve({
265
264
  ok: false,
266
265
  msg: "加入购物车失败,请稍后重试!",
267
266
  });
268
267
  });
269
268
  } else {
270
269
  return Promise.resolve({
271
270
  ok: false,
272
271
  msg: "加入购物车失败,请稍后重试!",
273
272
  });
274
273
  }
275
274
  }
276
275
 
277
276
  _addShopGoodCart(skuIdsStr, addCardNum = "1") {
278
277
  return new Promise((resolve) => {
279
278
  const productIdsArr = skuIdsStr ? `${skuIdsStr}`.split(",") : [];
280
279
  if (productIdsArr.length > 0) {
281
280
  if (isJdApp) {
282
281
  console.log("==========>", "原生批量加车!");
283
282
  const nativeAddCartCallBack = `nativeBatchAddCart${Date.now()}`;
284
283
  if (!window[nativeAddCartCallBack]) {
285
284
  window[nativeAddCartCallBack] = (res) => {
286
285
  const getMessageJsonData =
287
286
  typeof res === "string" ? JSON.parse(res) : res;
288
287
  console.info(
289
288
  "获取批量加车原始数据",
290
289
  res,
291
290
  "====转换后的json数据为===",
292
291
  getMessageJsonData
293
292
  );
294
293
  try {
295
294
  if (isAndroidDevice) {
296
295
  getMessageJsonData?.status === "0"
297
296
  ? resolve({
298
297
  ok: true,
299
298
  msg: "已加入购物车!",
300
299
  })
301
300
  : resolve({
302
301
  ok: false,
303
302
  msg: "加购失败,请稍后重试",
304
303
  });
305
304
  } else if (isIosDevice) {
306
305
  getMessageJsonData?.status === "0" &&
307
306
  getMessageJsonData?.data?.code === 0
308
307
  ? resolve({
309
308
  ok: true,
310
309
  msg: "已加入购物车!",
311
310
  })
312
311
  : resolve({
313
312
  ok: false,
314
313
  msg: "批量加车失败,请稍后重试",
315
314
  });
316
315
  } else {
317
316
  resolve({
318
317
  ok: false,
319
318
  msg: "加购失败,请稍后重试",
320
319
  });
321
320
  }
322
321
  } catch (e) {
323
322
  resolve({
324
323
  ok: false,
325
324
  msg: "加购失败,请稍后重试",
326
325
  });
327
326
  console.warn("批量加车转换数据异常", e);
328
327
  }
329
328
  window[nativeAddCartCallBack] = null;
330
329
  };
331
330
  }
332
331
  const productsAddCartList = productIdsArr.map((skuItem) => {
333
332
  return isAndroidDevice
334
333
  ? {
335
334
  sku: skuItem,
336
335
  num: addCardNum,
337
336
  }
338
337
  : {
339
338
  productCode: skuItem,
340
339
  buyCount: addCardNum,
341
340
  };
342
341
  });
343
342
  if (isAndroidDevice) {
344
343
  const androidProductsStr = JSON.stringify(productsAddCartList);
345
344
  callRouterAndroid({
346
345
  routerURL: `router://JDCartModule/addCartUniformWithUrl?wareList=${androidProductsStr}&businessName=storeModel`,
347
346
  routerParam: {
348
347
  wareList: productsAddCartList,
349
348
  },
350
349
  callBackName: nativeAddCartCallBack,
351
350
  });
352
351
  } else if (isIosDevice) {
353
352
  if (isLowAppVer) {
354
353
  const lowVersionAppList = productIdsArr.map((skuItem) => {
355
354
  return {
356
355
  sku: skuItem,
357
356
  num: addCardNum,
358
357
  };
359
358
  });
360
359
  const lowVersionAppListStr = JSON.stringify(lowVersionAppList);
361
360
  const url = `openApp.jdMobile://virtual?params={"category":"jump","des":"updateCartNum","sourceValue":"店铺批量加购","sourceType":"h5","businessName":"storeModel","wareList":${lowVersionAppListStr}}`;
362
361
  jump.side.jdJumpToWeb(url, {});
363
362
  resolve({
364
363
  ok: true,
365
364
  isOpenApp: true,
366
365
  msg: "加购完成, 加购结果请点击购物车确认",
367
366
  });
368
367
  } else {
369
368
  callRouterIOS({
370
369
  routerURL: "router://JDCartModule/batchAddService",
371
370
  routerParam: {
372
371
  sourceType: "h5",
373
372
  sourceValue: "店铺批量加购",
374
373
  businessName: "storeModel",
375
374
  isNewMode: "1",
376
375
  NotPassWebview: "1",
377
376
  products: productsAddCartList,
378
377
  },
379
378
  callBackName: nativeAddCartCallBack,
380
379
  });
381
380
  }
382
381
  }
383
382
  } else if (isMin) {
384
383
  console.log("==========>", "京购批量加车!");
385
384
  const productsAddCartList = productIdsArr.map((skuItem) => {
386
385
  return {
387
386
  skuId: skuItem,
388
387
  buyNum: addCardNum,
389
388
  };
390
389
  });
391
390
  global.wxAppBizInstance
392
391
  .addCart({ commAr: productsAddCartList })
393
392
  .then((res) => {
394
393
  console.log("dealCartSuccess: ", res);
395
394
  resolve({
396
395
  ok: true,
397
396
  msg: "已加入购物车!",
398
397
  data: res,
399
398
  });
400
399
  })
401
400
  .catch((e) => {
402
401
  console.log("京购小程序批量加车失败dealCartFail: ", e);
403
402
  resolve({
404
403
  ok: false,
405
404
  msg: "加购失败,请稍后重试",
406
405
  });
407
406
  });
408
407
  } else {
409
408
  console.log("==========>", "M站批量加车!");
410
409
  return this.productAddToCart(skuIdsStr, addCardNum).then((res) =>
411
410
  resolve(res)
412
411
  );
413
412
  }
414
413
  } else {
415
414
  resolve({
416
415
  ok: false,
417
416
  msg: "加购sku不能为空",
418
417
  });
419
418
  }
420
419
  });
421
420
  }
422
421
 
423
422
  productAddToCart(skuIdsStr, num) {
424
423
  return new Promise((resolve) => {
425
424
  if (window.AddcartToolObj) {
426
425
  window.AddcartToolObj.addCart({
427
426
  skuId: skuIdsStr,
428
427
  num,
429
428
  source: "sjdpyw",
430
429
  actId: "1",
431
430
  loginType: window?.isJingGouMiniViewState ? "11" : "2",
432
431
  sucFun(res) {
433
432
  console.log(
434
433
  "ok,接口请求成功,不一定指的加车成功,加车成功需要看返回码errId为0",
435
434
  res
436
435
  );
437
436
  if (res.errId === "0" && res.cartJson) {
438
437
  resolve({
439
438
  ok: true,
440
439
  msg: "已加入购物车!",
441
440
  ...res,
442
441
  });
443
442
  } else {
444
443
  if (res.errId === "13") {
445
444
  global.doLogin();
446
445
  } else {
447
446
  resolve({
448
447
  ok: false,
449
448
  msg: "加购失败,请稍后重试",
450
449
  ...res,
451
450
  });
452
451
  }
453
452
  }
454
453
  },
455
454
  failFun(err) {
456
455
  console.log("fail", err);
457
456
  resolve({
458
457
  ok: false,
459
458
  msg: "加购失败,请稍后重试",
460
459
  ...err,
461
460
  });
462
461
  },
463
462
  });
464
463
  } else {
465
464
  resolve({
466
465
  ok: false,
467
466
  msg: "购物车方法检查异常",
468
467
  });
469
468
  }
470
469
  });
471
470
  }
472
471
  bMallGetUserInfo = () => {
473
472
  return getBMallUserInfo();
474
473
  };
475
474
  async bMallAddCart(params = {}) {
476
475
  return await this.gatewayReq("bmall_cartAdd", params, {
477
476
  client: "H5",
478
477
  clientVersion: "5.5.0",
479
478
  });
480
479
  }
481
480
  async bMallChangeCart(params = {}) {
482
481
  return await this.gatewayReq("bmall_cartChange", params, {
483
482
  client: "H5",
484
483
  clientVersion: "5.5.0",
485
484
  });
486
485
  }
487
486
  async bMallRemoveCart(params = {}) {
488
487
  return await this.gatewayReq(
489
488
  "bmall_cartRemove",
490
489
  params,
491
490
  {
492
491
  client: "H5",
493
492
  clientVersion: "5.5.0",
494
493
  }
495
494
  );
496
495
  }
497
496
  async bMallGetOmittedProduct(params = {}) {
498
497
  return await this.gatewayReq("bmall_getOmittedProduct", params, {
499
498
  client: "H5",
500
499
  clientVersion: "5.5.0",
501
500
  });
502
501
  }
503
502
  async bMallAddCartService({ skuId, bMallTag, num, data = {} }) {
504
503
  const params = await getParams({ ...data, skuId, bMallTag, num });
505
504
  return await this.bMallAddCart(params);
506
505
  }
507
506
  async bMallGetSkuNumService(bMallTag = 1) {
508
507
  const params = await getParams({ bMallTag });
509
508
  delete params.operations;
510
509
  return await this.bMallGetOmittedProduct(params);
511
510
  }
512
511
  async bMallRemoveCartService({ skuId, bMallTag, num, skuUuid, data = {} }) {
513
512
  let params = await getParams({ ...data, skuId, bMallTag, num, skuUuid });
514
513
  return await this.bMallRemoveCart(params);
515
514
  }
516
515
  async bMallChangeCartService({ skuId, bMallTag, num, skuUuid, data = {} }) {
517
516
  let params = await getParams({ ...data, skuId, bMallTag, num, skuUuid });
518
517
  return await this.bMallChangeCart(params);
519
518
  }
520
519
 
521
520
  async bMallGetSkuNumApi(needRequest = false, bMallTag = 1) {
522
521
  if (!needRequest && isH5 && window?.bMallCartData) {
523
522
  return window?.bMallCartData;
524
523
  }
525
524
  const cartData = await this.bMallGetSkuNumService(bMallTag);
526
525
  let items;
527
526
  if (cartData.ok && cartData.result) {
528
527
  items = cartData?.result?.items || {};
529
528
  }
530
529
  if (isH5) {
531
530
  window.bMallCartData = items;
532
531
  }
533
532
  return items;
534
533
  }
535
534
 
536
535
  async bMallCartHandle(goodItem, num) {
537
536
  try {
538
537
  const {
539
538
  skuUuid,
540
539
  limitUpper,
541
540
  limitLower,
542
541
  } = goodItem;
543
542
  let cartNum = Number(num);
544
543
  if (limitLower && cartNum && cartNum < limitLower) {
545
544
  cartNum = limitLower;
546
545
  } else if (limitUpper && cartNum && cartNum > limitUpper) {
547
546
  cartNum = limitUpper;
548
547
  }
549
548
  if (skuUuid && cartNum > 0) {
550
549
  return this.bMallChangeCartService({
551
550
  ...goodItem,
552
551
  skuUuid,
553
552
  num: cartNum,
554
553
  });
555
554
  } else if (!skuUuid && cartNum > 0) {
556
555
  return this.bMallAddCartService({ ...goodItem, num: cartNum });
557
556
  } else if (skuUuid && !cartNum) {
558
557
  return this.bMallRemoveCartService({
559
558
  ...goodItem,
560
559
  skuUuid,
561
560
  num: cartNum,
562
561
  });
563
562
  } else {
564
563
  console.error("参数不全");
565
564
  return false;
566
565
  }
567
566
  } catch (e) {
568
567
  console.error(e);
569
568
  }
570
569
  }
570
+ import Taro from '@tarojs/taro';
571
571
  APPID,
572
572
  JshopxColorFunctionIdList,
573
573
  PagesColorFunctionIdList,
574
574
  PAGES_DOMAIN,
575
575
  B2BColorFunctionIdList,
576
576
  MobileVerifyColorList,
577
577
  AppVerifyColorList,
578
578
  JshopxVerifyColorList,
579
579
  BMallVerifyColorList,
580
580
  shopMemberColorFunctionIdList,
581
581
  isLanguageForEn,
582
582
  isJdApp,
583
583
  isIosDevice,
584
584
  isAndroidDevice,
585
585
  showSuccessToast,
586
586
  showFailToast,
587
587
  isH5,
588
588
  isWxMinAndWxapp,
589
589
  isMin,
590
590
  isPc,
591
591
  cookiesStr: '',
592
592
  requestHeaderContentType: {
593
593
  jsonHeader: {
594
594
  'content-type': 'application/json;charset=utf-8',
595
595
  },
596
596
  formDataHeader: {
597
597
  'content-type': 'application/x-www-form-urlencoded',
598
598
  },
599
599
  },
600
600
  requestBaseParam: {
601
601
  data: null,
602
602
  header: {
603
603
  'content-type': 'application/json;charset=utf-8',
604
604
  },
605
605
  },
606
606
  timeOut: 7000,
607
607
  apiClientParams: {
608
608
  appid: 'wx_mini_app',
609
609
  clientVersion: '11.0.0',
610
610
  client: 'wh5',
611
611
  area: '1_72_2799_0',
612
612
  screen: `${Math.ceil(
613
613
  getSystemInfo?.screenWidth * devicePixelRatio,
614
614
  )}*${Math.ceil(getSystemInfo?.screenHeight * devicePixelRatio)}`,
615
615
  uuid: UUID,
616
616
  loginType: '11',
617
617
  },
618
618
  public addressFetchInfo: {
619
619
  reqState: boolean
620
620
  promiseInstance: null | Promise<any>
621
621
  }
622
622
  public getPromotionConfig: {
623
623
  projectId: null | string | number
624
624
  pageId: null | string | number
625
625
  }
626
626
  public resInfo: ServiceInterFace.HttpRequestInfo
627
627
  public api: ServiceInterFace.HttpApi
628
628
  public isPageDomain: boolean
629
629
  public verifyColorList: string[]
630
630
  constructor(opt) {
631
631
  this._init()
632
632
  this.addressFetchInfo = {
633
633
  reqState: false,
634
634
  promiseInstance: null,
635
635
  }
636
636
  this.getPromotionConfig = {
637
637
  projectId: null,
638
638
  pageId: null,
639
639
  }
640
640
  this._userAreaUpdateListen()
641
641
  this.resInfo = this._getResConfig(opt)
642
642
  this.api = api
643
643
  this.isPageDomain = isH5
644
644
  ? window?.location?.hostname === PAGES_DOMAIN
645
645
  : false
646
646
  this.verifyColorList = [
647
647
  ...MobileVerifyColorList,
648
648
  ...AppVerifyColorList,
649
649
  ...JshopxVerifyColorList,
650
650
  ...BMallVerifyColorList,
651
651
  ]
652
652
  }
653
653
  _init(): void {
654
654
  httpInterceptors.forEach((item) => {
655
655
  Taro.addInterceptor((chain) => item(chain))
656
656
  })
657
657
  }
658
658
  _getResConfig(opt = {}): ServiceInterFace.HttpRequestInfo {
659
659
  return Object.assign({}, DefaultConfig, opt)
660
660
  }
661
661
 
662
662
  _userAreaUpdateListen() {
663
663
  Taro.eventCenter.on(TaroEventType.USER_AREA_UPDATE, (area) => {
664
664
  this.updateApiClientParamsResInfo({
665
665
  area,
666
666
  })
667
667
  })
668
668
  }
669
669
  updateApiClientParamsResInfo(opt = {}) {
670
670
  this.resInfo.apiClientParams = {
671
671
  ...this.resInfo.apiClientParams,
672
672
  ...opt,
673
673
  }
674
674
  }
675
675
 
676
676
  checkFunctionIdToReturnAppId(functionId) {
677
677
  if (JshopxColorFunctionIdList.includes(functionId)) {
678
678
  return APPID.JSHOPX_COLOR_APPID
679
679
  } else if (
680
680
  this.isPageDomain &&
681
681
  PagesColorFunctionIdList.includes(functionId)
682
682
  ) {
683
683
  return APPID.PAGES_COLOR_APPID
684
684
  } else if (shopMemberColorFunctionIdList.includes(functionId)) {
685
685
  return APPID.SHOP_MEMBER_COLOR_APPID
686
686
  } else if (B2BColorFunctionIdList.includes(functionId)) {
687
687
  return APPID.B2B_COLOR_APPID
688
688
  } else if (isPc) {
689
689
  return APPID.MALL_COLOR_APPID
690
690
  } else {
691
691
  return APPID.SHOP_COLOR_APPID
692
692
  }
693
693
  }
694
694
 
695
695
  gatewayReq(functionId: string, bodyParams = {}, clientParams = {}): Promise<any> {
696
696
  if (functionId === 'receiveShopCoupon') {
697
697
  clientParams = Object.assign(
698
698
  {},
699
699
  {
700
700
  loginType: '1',
701
701
  loginWQBiz: WXAPP_BIZ_KEY,
702
702
  },
703
703
  clientParams,
704
704
  )
705
705
  }
706
706
  const apiClientParams = Object.assign(
707
707
  {},
708
708
  this.resInfo.apiClientParams,
709
709
  clientParams,
710
710
  )
711
711
  const isColorVerify = this.verifyColorList.includes(functionId);
712
712
  const getReqData = {
713
713
  functionId: functionId,
714
714
  body: JSON.stringify(bodyParams),
715
715
  t: Date.now(),
716
716
  ...apiClientParams,
717
717
  }
718
718
  const requestParams = {
719
719
  functionId: getReqData?.functionId,
720
720
  body: getReqData?.body,
721
721
  appid: getReqData?.appid,
722
722
  client: getReqData?.client,
723
723
  clientVersion: getReqData?.clientVersion,
724
724
  area: getReqData?.area,
725
725
  requestTimeStamp: getReqData?.t,
726
726
  }
727
727
  return http
728
728
  .request({
729
729
  url: this.api.apiFunc,
730
730
  data: getReqData,
731
731
  isColorVerify,
732
732
  })
733
733
  .then((res: ServiceInterFace.RequestPromiseRes) => {
734
734
  const { statusCode, data, status, msg } = res
735
735
  let changeRes: ServiceInterFace.RequestResponseFormatRes = {
736
736
  ok: true,
737
737
  }
738
738
  if ((statusCode === 200 || status === '0') && data) {
739
739
  changeRes = this.dealResponseFormatRes(data, getReqData)
740
740
  return changeRes
741
741
  } else {
742
742
  sgmCustomReport({
743
743
  code: getSgmCustomCode('interface_data_error'),
744
744
  msg: {
745
745
  subMsg: '接口请求异常',
746
746
  functionId,
747
747
  statusCode,
748
748
  source: 'remote',
749
749
  status,
750
750
  msg,
751
751
  requestParams,
752
752
  },
753
753
  })
754
754
  draInterfaceCustomReport({
755
755
  ...getReqData,
756
756
  ...res,
757
757
  source: 'remote',
758
758
  })
759
759
  changeRes = {
760
760
  ...data,
761
761
  statusCode,
762
762
  status,
763
763
  msg,
764
764
  ok: false,
765
765
  }
766
766
  return changeRes
767
767
  }
768
768
  })
769
769
  .catch((res) => {
770
770
  const propertyNames = Object.getOwnPropertyNames(res)
771
771
  const resObject = {}
772
772
  propertyNames.forEach((propertyName) => {
773
773
  resObject[propertyName] = res[propertyName]
774
774
  })
775
775
  sgmCustomReport({
776
776
  code: getSgmCustomCode('interface_data_error'),
777
777
  msg: {
778
778
  subMsg: '接口请求错误',
779
779
  functionId,
780
780
  source: 'remote',
781
781
  requestParams,
782
782
  catchError: resObject,
783
783
  },
784
784
  })
785
785
  draInterfaceCustomReport({
786
786
  ...getReqData,
787
787
  ...resObject,
788
788
  source: 'remote',
789
789
  })
790
790
  return {
791
791
  ...resObject,
792
792
  ok: false,
793
793
  } as ServiceInterFace.RequestResponseFormatRes
794
794
  })
795
795
  }
796
796
 
797
797
  dealResponseFormatRes(data, reqData) {
798
798
  let changeRes: ServiceInterFace.RequestResponseFormatRes = {
799
799
  ok: true,
800
800
  }
801
801
  const resCode = Object.prototype.hasOwnProperty.call(data, 'code')
802
802
  ? Number(data.code)
803
803
  : -1
804
804
  const subCode = Object.prototype.hasOwnProperty.call(data, 'subCode')
805
805
  ? Number(data.subCode)
806
806
  : -1
807
807
  if (
808
808
  data.success === true ||
809
809
  data.isSuccess ||
810
810
  resCode === 0 ||
811
811
  resCode === 200 ||
812
812
  subCode === 0
813
813
  ) {
814
814
  changeRes = {
815
815
  result: Object.prototype.hasOwnProperty.call(data, 'result')
816
816
  ? data.result
817
817
  : Object.prototype.hasOwnProperty.call(data, 'data')
818
818
  ? data.data
819
819
  : data,
820
820
  code: data.code ?? 200,
821
821
  ok: true,
822
822
  source: data,
823
823
  }
824
824
  return changeRes
825
825
  } else {
826
826
  changeRes = {
827
827
  ...data,
828
828
  ok: false,
829
829
  }
830
830
  if (reqData && resCode !== 3) {
831
831
  const getReportMsgData = reqData['hybridId']
832
832
  ? {
833
833
  subMsg: '预加载接口请求数据异常',
834
834
  hybridId: reqData?.hybridId,
835
835
  requestId: reqData?.requestId,
836
836
  param: reqData?.param,
837
837
  source: 'remote',
838
838
  }
839
839
  : {
840
840
  subMsg: '接口请求返回数据异常',
841
841
  functionId: reqData?.functionId,
842
842
  code: resCode,
843
843
  source: 'remote',
844
844
  requestParams: {
845
845
  functionId: reqData?.functionId,
846
846
  body: reqData?.body,
847
847
  appid: reqData?.appid,
848
848
  client: reqData?.client,
849
849
  clientVersion: reqData?.clientVersion,
850
850
  area: reqData?.area,
851
851
  requestTimeStamp: reqData?.t,
852
852
  },
853
853
  resData: data,
854
854
  }
855
855
  sgmCustomReport({
856
856
  code: getSgmCustomCode('interface_data_error'),
857
857
  msg: getReportMsgData,
858
858
  })
859
859
  draInterfaceCustomReport({
860
860
  ...reqData,
861
861
  ...data,
862
862
  source: 'remote',
863
863
  })
864
864
  }
865
865
  return changeRes
866
866
  }
867
867
  }
868
868
 
869
869
  async receiveCoupon(param = {}, clientParams) {
870
870
  console.warn('receiveCoupon 方法在微信京购小程序环境未经验证,请不要使用!');
871
871
  return await this.gatewayReq(
872
872
  'receiveShopCoupon',
873
873
  {
874
874
  operation: '3',
875
875
  ...param,
876
876
  },
877
877
  { ...clientParams },
878
878
  );
879
879
  }
880
880
 
881
881
  getCustomerCenterDispatch(params = {}) {
882
882
  return this.gatewayReq('customerCenterDispatch', params, {
883
883
  clientVersion: '9.2.0',
884
884
  client: 'H5',
885
885
  uuid: 88888,
886
886
  appid: 'shopmember_m_jd_com',
887
887
  })
888
888
  }
889
889
 
890
890
  batchAddCart(...args) {
891
891
  let skuIds, num, showToast, giftCard;
892
892
  if (['number', 'string'].includes(typeof args[0])) {
893
893
  [skuIds, num = 1, showToast = true, giftCard = false] = args;
894
894
  } else if (typeof args[0] === 'object' && args[0] !== null) {
895
895
  const params = args[0];
896
896
  skuIds = params.skuIds;
897
897
  num = params.num || 1;
898
898
  showToast = params.showToast !== undefined ? params.showToast : true;
899
899
  giftCard = params.giftCard !== undefined ? params.giftCard : false;
900
900
  } else {
901
901
  console.error('batchAddCart() Invalid arguments!', args);
902
902
  const msg = isLanguageForEn ? 'Please retry later' : '加入购物车失败,请稍后重试!';
903
903
  showFailToast({
904
904
  title: msg,
905
905
  });
906
906
  return Promise.resolve({
907
907
  ok: false,
908
908
  msg,
909
909
  });
910
910
  }
911
911
  const addToWhereText = giftCard ? '购物清单' : '购物车';
912
912
  const successMsg = isLanguageForEn ? 'Success' : `加入${addToWhereText}成功`;
913
913
  const failMsg = isLanguageForEn
914
914
  ? 'Please retry later'
915
915
  : `加入${addToWhereText}失败,请稍后重试!`;
916
916
  if (skuIds) {
917
917
  return this._addShopGoodCart(`${skuIds}`, `${num}`, { giftCard })
918
918
  .then((res: ServiceInterFace.SkuToCartDataRes) => {
919
919
  if (res?.ok) {
920
920
  if (showToast && !res?.isOpenApp)
921
921
  showSuccessToast({
922
922
  title: successMsg,
923
923
  })
924
924
  } else {
925
925
  showToast &&
926
926
  showFailToast({
927
927
  title: res?.errMsg || failMsg,
928
928
  })
929
929
  }
930
930
  return Promise.resolve(res)
931
931
  })
932
932
  .catch((e) => {
933
933
  console.log('调用加购方法异常=======>', e)
934
934
  return Promise.resolve({
935
935
  ok: false,
936
936
  msg: failMsg,
937
937
  })
938
938
  })
939
939
  } else {
940
940
  return Promise.resolve({
941
941
  ok: false,
942
942
  msg: failMsg,
943
943
  })
944
944
  }
945
945
  }
946
946
 
947
947
  async giftCardAddCart(skuList, num) {
948
948
  return this.gatewayReq('giftCardAddCart', {
949
949
  skuList,
950
950
  num: Number(num),
951
951
  });
952
952
  }
953
953
 
954
954
  _addShopGoodCart(skuIdsStr, addCardNum = '1', { giftCard }) {
955
955
  return new Promise((resolve) => {
956
956
  const productIdsArr = skuIdsStr ? `${skuIdsStr}`.split(',') : []
957
957
  if (productIdsArr.length > 0) {
958
958
  if (giftCard) {
959
959
  this.giftCardAddCart(productIdsArr, addCardNum)
960
960
  .then((res) => {
961
961
  if (res?.code === '0' && res?.result?.value) {
962
962
  resolve({
963
963
  ok: true,
964
964
  })
965
965
  } else {
966
966
  resolve({
967
967
  ok: false,
968
968
  msg: '加购失败,请稍后重试',
969
969
  })
970
970
  }
971
971
  })
972
972
  .catch((e) => {
973
973
  console.error('礼品卡加车失败: ', e)
974
974
  resolve({
975
975
  ok: false,
976
976
  msg: '加购失败,请稍后重试',
977
977
  });
978
978
  });
979
979
  } else if (isJdApp) {
980
980
  console.log('==========>', 'app原生批量加车!,小程序端暂不涉及');
981
981
  } else if (isMin) {
982
982
  console.log('==========>', '京购批量加车!')
983
983
  const productsAddCartList = productIdsArr.map((skuItem) => {
984
984
  return {
985
985
  skuId: skuItem,
986
986
  buyNum: addCardNum,
987
987
  }
988
988
  })
989
989
  global.wxAppBizInstance
990
990
  .addCart({ commArr: productsAddCartList })
991
991
  .then((res) => {
992
992
  console.log('dealCartSuccess: ', res)
993
993
  resolve({
994
994
  ok: true,
995
995
  msg: '已加入购物车!',
996
996
  data: res,
997
997
  })
998
998
  })
999
999
  .catch((e) => {
1000
1000
  console.log('京购小程序批量加车失败dealCartFail: ', e)
1001
1001
  resolve({
1002
1002
  ok: false,
1003
1003
  msg: '加购失败,请稍后重试',
1004
1004
  })
1005
1005
  })
1006
1006
  } else {
1007
1007
  console.log('==========>', 'M站批量加车!')
1008
1008
  return this.productAddToCart(skuIdsStr, addCardNum).then((res) =>
1009
1009
  resolve(res),
1010
1010
  )
1011
1011
  }
1012
1012
  } else {
1013
1013
  resolve({
1014
1014
  ok: false,
1015
1015
  msg: '加购sku不能为空',
1016
1016
  })
1017
1017
  }
1018
1018
  })
1019
1019
  }
1020
1020
 
1021
1021
  productAddToCart() {
1022
1022
  return Promise.resolve({
1023
1023
  ok: false,
1024
1024
  msg: 'productAddToCart暂不支持小程序',
1025
1025
  });
1026
1026
  }
1027
1027
  bMallGetUserInfo = () => {
1028
1028
  return getBMallUserInfo()
1029
1029
  }
1030
1030
  async bMallAddCart(params = {}) {
1031
1031
  console.warn('bMallAddCart 方法在微信京购小程序环境未经验证,请不要使用!');
1032
1032
  return await this.gatewayReq('bmall_cartAdd', params, {
1033
1033
  client: 'H5',
1034
1034
  clientVersion: '5.5.0',
1035
1035
  })
1036
1036
  }
1037
1037
  async bMallChangeCart(params = {}) {
1038
1038
  console.warn('bMallChangeCart 方法在微信京购小程序环境未经验证,请不要使用!');
1039
1039
  return await this.gatewayReq('bmall_cartChange', params, {
1040
1040
  client: 'H5',
1041
1041
  clientVersion: '5.5.0',
1042
1042
  })
1043
1043
  }
1044
1044
  async bMallRemoveCart(params = {}) {
1045
1045
  console.warn('bMallRemoveCart 方法在微信京购小程序环境未经验证,请不要使用!');
1046
1046
  return await this.gatewayReq(
1047
1047
  'bmall_cartRemove',
1048
1048
  params,
1049
1049
  {
1050
1050
  client: 'H5',
1051
1051
  clientVersion: '5.5.0',
1052
1052
  },
1053
1053
  )
1054
1054
  }
1055
1055
  async bMallGetOmittedProduct(params = {}) {
1056
1056
  return await this.gatewayReq('bmall_getOmittedProduct', params, {
1057
1057
  client: 'H5',
1058
1058
  clientVersion: '5.5.0',
1059
1059
  })
1060
1060
  }
1061
1061
  async bMallAddCartService({ skuId, bMallTag, num, data = {} }) {
1062
1062
  const params = await getParams({ ...data, skuId, bMallTag, num })
1063
1063
  return await this.bMallAddCart(params)
1064
1064
  }
1065
1065
  async bMallGetSkuNumService(bMallTag = 1) {
1066
1066
  const params = await getParams({ bMallTag })
1067
1067
  delete params.operations
1068
1068
  return await this.bMallGetOmittedProduct(params)
1069
1069
  }
1070
1070
  async bMallRemoveCartService({ skuId, bMallTag, num, skuUuid, data = {} }) {
1071
1071
  let params = await getParams({ ...data, skuId, bMallTag, num, skuUuid })
1072
1072
  return await this.bMallRemoveCart(params)
1073
1073
  }
1074
1074
  async bMallChangeCartService({ skuId, bMallTag, num, skuUuid, data = {} }) {
1075
1075
  let params = await getParams({ ...data, skuId, bMallTag, num, skuUuid })
1076
1076
  return await this.bMallChangeCart(params)
1077
1077
  }
1078
1078
 
1079
1079
  async bMallGetSkuNumApi(needRequest = false, bMallTag = 1) {
1080
1080
  if (!needRequest && isH5 && window?.bMallCartData) {
1081
1081
  return window?.bMallCartData
1082
1082
  }
1083
1083
  const cartData = await this.bMallGetSkuNumService(bMallTag)
1084
1084
  let items
1085
1085
  if (cartData.ok && cartData.result) {
1086
1086
  items = cartData?.result?.items || {}
1087
1087
  }
1088
1088
  if (isH5) {
1089
1089
  window.bMallCartData = items
1090
1090
  }
1091
1091
  return items
1092
1092
  }
1093
1093
 
1094
1094
  async bMallCartHandle(goodItem, num) {
1095
1095
  try {
1096
1096
  const {
1097
1097
  skuUuid,
1098
1098
  limitUpper,
1099
1099
  limitLower,
1100
1100
  } = goodItem
1101
1101
  let cartNum = Number(num)
1102
1102
  if (limitLower && cartNum && cartNum < limitLower) {
1103
1103
  cartNum = limitLower
1104
1104
  } else if (limitUpper && cartNum && cartNum > limitUpper) {
1105
1105
  cartNum = limitUpper
1106
1106
  }
1107
1107
  if (skuUuid && cartNum > 0) {
1108
1108
  return this.bMallChangeCartService({
1109
1109
  ...goodItem,
1110
1110
  skuUuid,
1111
1111
  num: cartNum,
1112
1112
  })
1113
1113
  } else if (!skuUuid && cartNum > 0) {
1114
1114
  return this.bMallAddCartService({ ...goodItem, num: cartNum })
1115
1115
  } else if (skuUuid && !cartNum) {
1116
1116
  return this.bMallRemoveCartService({
1117
1117
  ...goodItem,
1118
1118
  skuUuid,
1119
1119
  num: cartNum,
1120
1120
  })
1121
1121
  } else {
1122
1122
  console.error('参数不全')
1123
1123
  return false
1124
1124
  }
1125
1125
  } catch (e) {
1126
1126
  console.error(e)
1127
1127
  }
1128
1128
  }