@conecli/cone-render 0.9.1-shop2.15 → 0.9.1-shop2.18

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 (40) hide show
  1. package/dist/api/index.ts +1 -1
  2. package/dist/common/const.ts +1 -1
  3. package/dist/common/environmentType.ts +1 -1
  4. package/dist/common/index.h5.ts +1 -1
  5. package/dist/common/index.jd.ts +1 -1
  6. package/dist/common/index.ts +1 -1
  7. package/dist/common/index.weapp.ts +1 -1
  8. package/dist/components/base/LazyLoadImage/index.h5.module.scss +3 -0
  9. package/dist/components/base/LazyLoadImage/index.h5.tsx +1 -1
  10. package/dist/components/decorate/DecorateFloorModule/index.module.scss +11 -0
  11. package/dist/components/decorate/DecorateFloorModule/index.tsx +1 -1
  12. package/dist/components/decorate/EmptyFloorModule/index.tsx +1 -1
  13. package/dist/components/decorate/PlaceHolder/index.tsx +1 -1
  14. package/dist/components/floorItem.tsx +1 -1
  15. package/dist/interface/common.ts +1 -1
  16. package/dist/interface/component.ts +1 -1
  17. package/dist/interface/jumpEventReport.ts +1 -1
  18. package/dist/interface/service.ts +1 -1
  19. package/dist/jumpEventReport/base.ts +1 -1
  20. package/dist/jumpEventReport/const.ts +1 -1
  21. package/dist/jumpEventReport/index.jd.ts +1 -1
  22. package/dist/jumpEventReport/index.weapp.ts +1 -1
  23. package/dist/jumpEventReport/jdJumpJdApp.ts +1 -1
  24. package/dist/jumpEventReport/jumpUrlConfig/base.ts +1 -1
  25. package/dist/jumpEventReport/logEventConfig.ts +1 -1
  26. package/dist/jumpEventReport/web.base.ts +1 -1
  27. package/dist/jumpEventReport/web.jd.ts +1 -1
  28. package/dist/jumpEventReport/web.tjm.ts +1 -1
  29. package/dist/modules/ContainerFloorList/index.h5.module.scss +1 -1
  30. package/dist/modules/ContainerFloorList/index.h5.tsx +1 -1
  31. package/dist/open/api/device.ts +1 -1
  32. package/dist/sass/base.scss +45 -0
  33. package/dist/service/requestServer.ts +1 -1
  34. package/dist/utils/connectNativeJsBridge.ts +1 -1
  35. package/dist/utils/h5Utils.ts +1 -1
  36. package/dist/utils/index.h5.ts +1 -1
  37. package/dist/utils/index.ts +1 -1
  38. package/dist/utils/index.weapp.ts +1 -1
  39. package/dist/utils/utils.ts +1 -1
  40. package/package.json +1 -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
  showToast &&
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
  callRouterAndroid({
345
344
  routerURL: `router://JDCartModule/addCartUniformWithUrl?wareList=${JSON.stringify(productsAddCartList)}&businessName=storeModel`,
346
345
  routerParam: {
347
346
  wareList: productsAddCartList,
348
347
  },
349
348
  callBackName: nativeAddCartCallBack,
350
349
  })
351
350
  } else if (isIosDevice) {
352
351
  callRouterIOS({
353
352
  routerURL: 'router://JDCartModule/batchAddService',
354
353
  routerParam: {
355
354
  sourceType: 'h5',
356
355
  sourceValue: '店铺批量加购',
357
356
  businessName: 'storeModel',
358
357
  isNewMode: '1',
359
358
  NotPassWebview: '1',
360
359
  products: productsAddCartList,
361
360
  },
362
361
  callBackName: nativeAddCartCallBack,
363
362
  })
364
363
  }
365
364
  } else if (isMin) {
366
365
  console.log('==========>', '京购批量加车!')
367
366
  const productsAddCartList = productIdsArr.map(skuItem => {
368
367
  return {
369
368
  skuId: skuItem,
370
369
  buyNum: addCardNum,
371
370
  }
372
371
  })
373
372
  global.wxAppBizInstance
374
373
  .addCart({ commAr: productsAddCartList })
375
374
  .then(res => {
376
375
  console.log('dealCartSuccess: ', res)
377
376
  resolve({
378
377
  ok: true,
379
378
  msg: '已加入购物车!',
380
379
  data: res,
381
380
  })
382
381
  })
383
382
  .catch(e => {
384
383
  console.log('京购小程序批量加车失败dealCartFail: ', e)
385
384
  resolve({
386
385
  ok: false,
387
386
  msg: '加购失败,请稍后重试',
388
387
  })
389
388
  })
390
389
  } else {
391
390
  console.log('==========>', 'M站批量加车!')
392
391
  return this.productAddToCart(skuIdsStr, addCardNum).then(res =>
393
392
  resolve(res),
394
393
  )
395
394
  }
396
395
  } else {
397
396
  resolve({
398
397
  ok: false,
399
398
  msg: '加购sku不能为空',
400
399
  })
401
400
  }
402
401
  })
403
402
  }
404
403
 
405
404
  productAddToCart(skuIdsStr, num) {
406
405
  return new Promise(resolve => {
407
406
  if (window.AddcartToolObj) {
408
407
  window.AddcartToolObj.addCart({
409
408
  skuId: skuIdsStr,
410
409
  num,
411
410
  source: 'sjdpyw',
412
411
  actId: '1',
413
412
  loginType: window?.isJingGouMiniViewState ? '11' : '2',
414
413
  sucFun(res) {
415
414
  console.log(
416
415
  'ok,接口请求成功,不一定指的加车成功,加车成功需要看返回码errId为0',
417
416
  res,
418
417
  )
419
418
  if (res.errId === '0' && res.cartJson) {
420
419
  resolve({
421
420
  ok: true,
422
421
  msg: '已加入购物车!',
423
422
  ...res,
424
423
  })
425
424
  } else {
426
425
  if (res.errId === '13') {
427
426
  global.doLogin()
428
427
  } else {
429
428
  resolve({
430
429
  ok: false,
431
430
  msg: '加购失败,请稍后重试',
432
431
  ...res,
433
432
  })
434
433
  }
435
434
  }
436
435
  },
437
436
  failFun(err) {
438
437
  console.log('fail', err)
439
438
  resolve({
440
439
  ok: false,
441
440
  msg: '加购失败,请稍后重试',
442
441
  ...err,
443
442
  })
444
443
  },
445
444
  })
446
445
  } else {
447
446
  resolve({
448
447
  ok: false,
449
448
  msg: '购物车方法检查异常',
450
449
  })
451
450
  }
452
451
  })
453
452
  }
454
453
  bMallGetUserInfo = () => {
455
454
  return getBMallUserInfo()
456
455
  }
457
456
  async bMallAddCart(params = {}) {
458
457
  return await this.gatewayReq('bmall_cartAdd', params, {
459
458
  client: 'H5',
460
459
  clientVersion: '5.5.0',
461
460
  })
462
461
  }
463
462
  async bMallChangeCart(params = {}) {
464
463
  return await this.gatewayReq('bmall_cartChange', params, {
465
464
  client: 'H5',
466
465
  clientVersion: '5.5.0',
467
466
  })
468
467
  }
469
468
  async bMallRemoveCart(params = {}) {
470
469
  return await this.gatewayReq(
471
470
  'bmall_cartRemove',
472
471
  params,
473
472
  {
474
473
  client: 'H5',
475
474
  clientVersion: '5.5.0',
476
475
  },
477
476
  )
478
477
  }
479
478
  async bMallGetOmittedProduct(params = {}) {
480
479
  return await this.gatewayReq('bmall_getOmittedProduct', params, {
481
480
  client: 'H5',
482
481
  clientVersion: '5.5.0',
483
482
  })
484
483
  }
485
484
  async bMallAddCartService({ skuId, bMallTag, num, data = {} }) {
486
485
  const params = await getParams({ ...data, skuId, bMallTag, num })
487
486
  return await this.bMallAddCart(params)
488
487
  }
489
488
  async bMallGetSkuNumService(bMallTag = 1) {
490
489
  const params = await getParams({ bMallTag })
491
490
  delete params.operations
492
491
  return await this.bMallGetOmittedProduct(params)
493
492
  }
494
493
  async bMallRemoveCartService({ skuId, bMallTag, num, skuUuid, data = {} }) {
495
494
  let params = await getParams({ ...data, skuId, bMallTag, num, skuUuid })
496
495
  return await this.bMallRemoveCart(params)
497
496
  }
498
497
  async bMallChangeCartService({ skuId, bMallTag, num, skuUuid, data = {} }) {
499
498
  let params = await getParams({ ...data, skuId, bMallTag, num, skuUuid })
500
499
  return await this.bMallChangeCart(params)
501
500
  }
502
501
 
503
502
  async bMallGetSkuNumApi(needRequest = false, bMallTag = 1) {
504
503
  if (!needRequest && isH5 && window?.bMallCartData) {
505
504
  return window?.bMallCartData
506
505
  }
507
506
  const cartData = await this.bMallGetSkuNumService(bMallTag)
508
507
  let items
509
508
  if (cartData.ok && cartData.result) {
510
509
  items = cartData?.result?.items || {}
511
510
  }
512
511
  if (isH5) {
513
512
  window.bMallCartData = items
514
513
  }
515
514
  return items
516
515
  }
517
516
 
518
517
  async bMallCartHandle(goodItem, num) {
519
518
  try {
520
519
  const {
521
520
  skuUuid,
522
521
  limitUpper,
523
522
  limitLower,
524
523
  } = goodItem
525
524
  let cartNum = Number(num)
526
525
  if (limitLower && cartNum && cartNum < limitLower) {
527
526
  cartNum = limitLower
528
527
  } else if (limitUpper && cartNum && cartNum > limitUpper) {
529
528
  cartNum = limitUpper
530
529
  }
531
530
  if (skuUuid && cartNum > 0) {
532
531
  return this.bMallChangeCartService({
533
532
  ...goodItem,
534
533
  skuUuid,
535
534
  num: cartNum,
536
535
  })
537
536
  } else if (!skuUuid && cartNum > 0) {
538
537
  return this.bMallAddCartService({ ...goodItem, num: cartNum })
539
538
  } else if (skuUuid && !cartNum) {
540
539
  return this.bMallRemoveCartService({
541
540
  ...goodItem,
542
541
  skuUuid,
543
542
  num: cartNum,
544
543
  })
545
544
  } else {
546
545
  console.error('参数不全')
547
546
  return false
548
547
  }
549
548
  } catch (e) {
550
549
  console.error(e)
551
550
  }
552
551
  }
552
+ import Taro from '@tarojs/taro'
553
553
  APPID,
554
554
  JshopxColorFunctionIdList,
555
555
  PagesColorFunctionIdList,
556
556
  PAGES_DOMAIN,
557
557
  B2BColorFunctionIdList,
558
558
  MobileVerifyColorList,
559
559
  AppVerifyColorList,
560
560
  JshopxVerifyColorList,
561
561
  BMallVerifyColorList,
562
562
  shopMemberColorFunctionIdList,
563
563
  isJdApp,
564
564
  isIosDevice,
565
565
  isAndroidDevice,
566
566
  showSuccessToast,
567
567
  showFailToast,
568
568
  isH5,
569
569
  isWxMinAndWxapp,
570
570
  isMin,
571
571
  isPc,
572
572
  callRouterIOS,
573
573
  callRouterAndroid,
574
574
  cookiesStr: '',
575
575
  requestHeaderContentType: {
576
576
  jsonHeader: {
577
577
  'content-type': 'application/json;charset=utf-8',
578
578
  },
579
579
  formDataHeader: {
580
580
  'content-type': 'application/x-www-form-urlencoded',
581
581
  },
582
582
  },
583
583
  requestBaseParam: {
584
584
  data: null,
585
585
  header: {
586
586
  'content-type': 'application/json;charset=utf-8',
587
587
  },
588
588
  },
589
589
  timeOut: 7000,
590
590
  apiClientParams: {
591
591
  clientVersion:
592
592
  isJdApp && jdAppVersionStr !== '' ? jdAppVersionStr : '11.0.0',
593
593
  client: isJdApp ? (isIosDevice ? 'apple' : 'android') : isPc ? 'pc' : 'wh5',
594
594
  area: '1_72_2799_0',
595
595
  screen: `${Math.ceil(window.screen?.width * devicePixelRatio)}*${Math.ceil(
596
596
  window.screen?.height * devicePixelRatio,
597
597
  )}`,
598
598
  uuid: UUID,
599
599
  },
600
600
  public addressFetchInfo: {
601
601
  reqState: boolean
602
602
  promiseInstance: null | Promise<any>
603
603
  }
604
604
  public getPromotionConfig: {
605
605
  projectId: null | string | number
606
606
  pageId: null | string | number
607
607
  }
608
608
  public resInfo: ServiceInterFace.HttpRequestInfo
609
609
  public api: ServiceInterFace.HttpApi
610
610
  public isPageDomain: boolean
611
611
  public verifyColorList: string[]
612
612
  constructor(opt) {
613
613
  this._init()
614
614
  this.addressFetchInfo = {
615
615
  reqState: false,
616
616
  promiseInstance: null,
617
617
  }
618
618
  this.getPromotionConfig = {
619
619
  projectId: null,
620
620
  pageId: null,
621
621
  }
622
622
  this._userAreaUpdateListen()
623
623
  this.resInfo = this._getResConfig(opt)
624
624
  this.api = api
625
625
  this.isPageDomain = isH5
626
626
  ? window?.location?.hostname === PAGES_DOMAIN
627
627
  : false
628
628
  this.verifyColorList = [
629
629
  ...MobileVerifyColorList,
630
630
  ...AppVerifyColorList,
631
631
  ...JshopxVerifyColorList,
632
632
  ...BMallVerifyColorList,
633
633
  ]
634
634
  }
635
635
  _init(): void {
636
636
  httpInterceptors.forEach(item => {
637
637
  Taro.addInterceptor(chain => item(chain))
638
638
  })
639
639
  }
640
640
  _getResConfig(opt = {}): ServiceInterFace.HttpRequestInfo {
641
641
  return Object.assign({}, DefaultConfig, opt)
642
642
  }
643
643
 
644
644
  _userAreaUpdateListen() {
645
645
  Taro.eventCenter.on(TaroEventType.USER_AREA_UPDATE, area => {
646
646
  this.updateApiClientParamsResInfo({
647
647
  area,
648
648
  })
649
649
  })
650
650
  }
651
651
  updateApiClientParamsResInfo(opt = {}) {
652
652
  this.resInfo.apiClientParams = {
653
653
  ...this.resInfo.apiClientParams,
654
654
  ...opt,
655
655
  }
656
656
  }
657
657
 
658
658
  checkFunctionIdToReturnAppId(functionId) {
659
659
  if (JshopxColorFunctionIdList.includes(functionId)) {
660
660
  return APPID.JSHOPX_COLOR_APPID
661
661
  } else if (
662
662
  this.isPageDomain &&
663
663
  PagesColorFunctionIdList.includes(functionId)
664
664
  ) {
665
665
  return APPID.PAGES_COLOR_APPID
666
666
  } else if (shopMemberColorFunctionIdList.includes(functionId)) {
667
667
  return APPID.SHOP_MEMBER_COLOR_APPID
668
668
  } else if (B2BColorFunctionIdList.includes(functionId)) {
669
669
  return APPID.B2B_COLOR_APPID
670
670
  } else if (isPc) {
671
671
  return APPID.MALL_COLOR_APPID
672
672
  } else {
673
673
  return APPID.SHOP_COLOR_APPID
674
674
  }
675
675
  }
676
676
 
677
677
  gatewayReq(
678
678
  functionId: string,
679
679
  bodyParams = {},
680
680
  clientParams = {},
681
681
  ): Promise<any> {
682
682
  if (
683
683
  functionId === 'receiveShopCoupon' &&
684
684
  ((isH5 &&
685
685
  (window?.isJingGouMiniViewState || window?.isJingxiMiniViewState)) ||
686
686
  isWxMinAndWxapp)
687
687
  ) {
688
688
  clientParams = Object.assign(
689
689
  {},
690
690
  {
691
691
  loginType: '1',
692
692
  loginWQBiz: WXAPP_BIZ_KEY,
693
693
  },
694
694
  clientParams,
695
695
  )
696
696
  }
697
697
  const apiClientParams = Object.assign(
698
698
  {},
699
699
  this.resInfo.apiClientParams,
700
700
  clientParams,
701
701
  )
702
702
  typeof apiClientParams.appid === 'undefined' &&
703
703
  (apiClientParams.appid = this.checkFunctionIdToReturnAppId(functionId))
704
704
  const isColorVerify = this.verifyColorList.includes(functionId)
705
705
  const getReqData = {
706
706
  functionId: functionId,
707
707
  body: JSON.stringify(bodyParams),
708
708
  t: Date.now(),
709
709
  ...apiClientParams,
710
710
  }
711
711
  return http
712
712
  .request({
713
713
  url: this.api.apiFunc,
714
714
  data: getReqData,
715
715
  isColorVerify,
716
716
  })
717
717
  .then((res: ServiceInterFace.RequestPromiseRes) => {
718
718
  const { statusCode, data } = res
719
719
  let changeRes: ServiceInterFace.RequestResponseFormatRes = {
720
720
  ok: true,
721
721
  }
722
722
  if (statusCode === 200 && data) {
723
723
  const resCode = Object.prototype.hasOwnProperty.call(res.data, 'code')
724
724
  ? Number(res.data.code)
725
725
  : -1
726
726
  const subCode = Object.prototype.hasOwnProperty.call(
727
727
  res.data,
728
728
  'subCode',
729
729
  )
730
730
  ? Number(res.data.subCode)
731
731
  : -1
732
732
  if (
733
733
  data.success === true ||
734
734
  data.isSuccess ||
735
735
  resCode === 0 ||
736
736
  resCode === 200 ||
737
737
  subCode === 0
738
738
  ) {
739
739
  changeRes = {
740
740
  result: Object.prototype.hasOwnProperty.call(data, 'result')
741
741
  ? data.result
742
742
  : Object.prototype.hasOwnProperty.call(data, 'data')
743
743
  ? data.data
744
744
  : data,
745
745
  code: data.code || 200,
746
746
  ok: true,
747
747
  source: data,
748
748
  }
749
749
  return changeRes
750
750
  } else {
751
751
  changeRes = {
752
752
  ...data,
753
753
  ok: false,
754
754
  statusCode: res.statusCode,
755
755
  }
756
756
  return changeRes
757
757
  }
758
758
  } else {
759
759
  changeRes = {
760
760
  ...data,
761
761
  ok: false,
762
762
  statusCode: res.statusCode,
763
763
  }
764
764
  return changeRes
765
765
  }
766
766
  })
767
767
  .catch(res => {
768
768
  return {
769
769
  ...res,
770
770
  ok: false,
771
771
  } as ServiceInterFace.RequestResponseFormatRes
772
772
  })
773
773
  }
774
774
 
775
775
  async receiveCoupon(param = {}, clientParams) {
776
776
  const loginType = isPc ? { loginType: 3 } : {}
777
777
  return await this.gatewayReq(
778
778
  'receiveShopCoupon',
779
779
  {
780
780
  operation: '3',
781
781
  ...param,
782
782
  },
783
783
  { ...loginType, ...clientParams },
784
784
  )
785
785
  }
786
786
 
787
787
  getCustomerCenterDispatch(params = {}) {
788
788
  return this.gatewayReq('customerCenterDispatch', params, {
789
789
  clientVersion: '9.2.0',
790
790
  client: 'H5',
791
791
  uuid: 88888,
792
792
  appid: 'shopmember_m_jd_com',
793
793
  })
794
794
  }
795
795
 
796
796
  batchAddCart(skuIdsStr, num = 1, showToast = true) {
797
797
  if (skuIdsStr) {
798
798
  return this._addShopGoodCart(`${skuIdsStr}`, `${num}`)
799
799
  .then((res: ServiceInterFace.SkuToCartDataRes) => {
800
800
  if (res?.ok) {
801
801
  if(showToast && !(res?.isOpenApp))
802
802
  showSuccessToast({
803
803
  title: '加入购物车成功',
804
804
  })
805
805
  } else {
806
806
  showToast &&
807
807
  showFailToast({
808
808
  title: res?.errMsg || '加入购物车失败,请稍后重试!',
809
809
  })
810
810
  }
811
811
  return Promise.resolve(res)
812
812
  })
813
813
  .catch(e => {
814
814
  console.log('调用加购方法异常=======>', e)
815
815
  return Promise.resolve({
816
816
  ok: false,
817
817
  msg: '加入购物车失败,请稍后重试!',
818
818
  })
819
819
  })
820
820
  } else {
821
821
  return Promise.resolve({
822
822
  ok: false,
823
823
  msg: '加入购物车失败,请稍后重试!',
824
824
  })
825
825
  }
826
826
  }
827
827
 
828
828
  _addShopGoodCart(skuIdsStr, addCardNum = '1') {
829
829
  return new Promise(resolve => {
830
830
  const productIdsArr = skuIdsStr ? `${skuIdsStr}`.split(',') : []
831
831
  if (productIdsArr.length > 0) {
832
832
  if (isJdApp) {
833
833
  console.log('==========>', '原生批量加车!')
834
834
  const nativeAddCartCallBack = `nativeBatchAddCart${Date.now()}`
835
835
  if (!window[nativeAddCartCallBack]) {
836
836
  window[nativeAddCartCallBack] = res => {
837
837
  const getMessageJsonData =
838
838
  typeof res === 'string' ? JSON.parse(res) : res
839
839
  console.info(
840
840
  '获取批量加车原始数据',
841
841
  res,
842
842
  '====转换后的json数据为===',
843
843
  getMessageJsonData,
844
844
  )
845
845
  try {
846
846
  if (isAndroidDevice) {
847
847
  getMessageJsonData?.status === '0'
848
848
  ? resolve({
849
849
  ok: true,
850
850
  msg: '已加入购物车!',
851
851
  })
852
852
  : resolve({
853
853
  ok: false,
854
854
  msg: '加购失败,请稍后重试',
855
855
  })
856
856
  } else if (isIosDevice) {
857
857
  getMessageJsonData?.status === '0' &&
858
858
  getMessageJsonData?.data?.code === 0
859
859
  ? resolve({
860
860
  ok: true,
861
861
  msg: '已加入购物车!',
862
862
  })
863
863
  : resolve({
864
864
  ok: false,
865
865
  msg: '批量加车失败,请稍后重试',
866
866
  })
867
867
  } else {
868
868
  resolve({
869
869
  ok: false,
870
870
  msg: '加购失败,请稍后重试',
871
871
  })
872
872
  }
873
873
  } catch (e) {
874
874
  resolve({
875
875
  ok: false,
876
876
  msg: '加购失败,请稍后重试',
877
877
  })
878
878
  console.warn('批量加车转换数据异常', e)
879
879
  }
880
880
  window[nativeAddCartCallBack] = null
881
881
  }
882
882
  }
883
883
  const productsAddCartList = productIdsArr.map(skuItem => {
884
884
  return isAndroidDevice
885
885
  ? {
886
886
  sku: skuItem,
887
887
  num: addCardNum,
888
888
  }
889
889
  : {
890
890
  productCode: skuItem,
891
891
  buyCount: addCardNum,
892
892
  }
893
893
  })
894
894
  if (isAndroidDevice) {
895
895
  callRouterAndroid({
896
896
  routerURL: `router://JDCartModule/addCartUniformWithUrl?wareList=${JSON.stringify(productsAddCartList)}&businessName=storeModel`,
897
897
  routerParam: {
898
898
  wareList: productsAddCartList,
899
899
  },
900
900
  callBackName: nativeAddCartCallBack,
901
901
  })
902
902
  } else if (isIosDevice) {
903
903
  if( jdAppVersionCompare('12.4.0') === -1 ){
904
904
  const lowVersionAppList = productIdsArr.map(skuItem => {
905
905
  return {
906
906
  sku: skuItem,
907
907
  num: addCardNum,
908
908
  }
909
909
  })
910
910
  const url = `openApp.jdMobile://virtual?params={"category":"jump","des":"updateCartNum","sourceValue":"店铺批量加购","sourceType":"h5","businessName":"storeModel","wareList":${JSON.stringify(lowVersionAppList)}}`
911
911
  jump.side.jdJumpToWeb(
912
912
  url,
913
913
  {}
914
914
  )
915
915
  resolve({
916
916
  ok: true,
917
917
  isOpenApp: true,
918
918
  msg: '加购完成, 加购结果请点击购物车确认',
919
919
  })
920
920
  }else{
921
921
  callRouterIOS({
922
922
  routerURL: 'router://JDCartModule/batchAddService',
923
923
  routerParam: {
924
924
  sourceType: 'h5',
925
925
  sourceValue: '店铺批量加购',
926
926
  businessName: 'storeModel',
927
927
  isNewMode: '1',
928
928
  NotPassWebview: '1',
929
929
  products: productsAddCartList,
930
930
  },
931
931
  callBackName: nativeAddCartCallBack,
932
932
  })
933
933
  }
934
934
  }
935
935
  } else if (isMin) {
936
936
  console.log('==========>', '京购批量加车!')
937
937
  const productsAddCartList = productIdsArr.map(skuItem => {
938
938
  return {
939
939
  skuId: skuItem,
940
940
  buyNum: addCardNum,
941
941
  }
942
942
  })
943
943
  global.wxAppBizInstance
944
944
  .addCart({ commAr: productsAddCartList })
945
945
  .then(res => {
946
946
  console.log('dealCartSuccess: ', res)
947
947
  resolve({
948
948
  ok: true,
949
949
  msg: '已加入购物车!',
950
950
  data: res,
951
951
  })
952
952
  })
953
953
  .catch(e => {
954
954
  console.log('京购小程序批量加车失败dealCartFail: ', e)
955
955
  resolve({
956
956
  ok: false,
957
957
  msg: '加购失败,请稍后重试',
958
958
  })
959
959
  })
960
960
  } else {
961
961
  console.log('==========>', 'M站批量加车!')
962
962
  return this.productAddToCart(skuIdsStr, addCardNum).then(res =>
963
963
  resolve(res),
964
964
  )
965
965
  }
966
966
  } else {
967
967
  resolve({
968
968
  ok: false,
969
969
  msg: '加购sku不能为空',
970
970
  })
971
971
  }
972
972
  })
973
973
  }
974
974
 
975
975
  productAddToCart(skuIdsStr, num) {
976
976
  return new Promise(resolve => {
977
977
  if (window.AddcartToolObj) {
978
978
  window.AddcartToolObj.addCart({
979
979
  skuId: skuIdsStr,
980
980
  num,
981
981
  source: 'sjdpyw',
982
982
  actId: '1',
983
983
  loginType: window?.isJingGouMiniViewState ? '11' : '2',
984
984
  sucFun(res) {
985
985
  console.log(
986
986
  'ok,接口请求成功,不一定指的加车成功,加车成功需要看返回码errId为0',
987
987
  res,
988
988
  )
989
989
  if (res.errId === '0' && res.cartJson) {
990
990
  resolve({
991
991
  ok: true,
992
992
  msg: '已加入购物车!',
993
993
  ...res,
994
994
  })
995
995
  } else {
996
996
  if (res.errId === '13') {
997
997
  global.doLogin()
998
998
  } else {
999
999
  resolve({
1000
1000
  ok: false,
1001
1001
  msg: '加购失败,请稍后重试',
1002
1002
  ...res,
1003
1003
  })
1004
1004
  }
1005
1005
  }
1006
1006
  },
1007
1007
  failFun(err) {
1008
1008
  console.log('fail', err)
1009
1009
  resolve({
1010
1010
  ok: false,
1011
1011
  msg: '加购失败,请稍后重试',
1012
1012
  ...err,
1013
1013
  })
1014
1014
  },
1015
1015
  })
1016
1016
  } else {
1017
1017
  resolve({
1018
1018
  ok: false,
1019
1019
  msg: '购物车方法检查异常',
1020
1020
  })
1021
1021
  }
1022
1022
  })
1023
1023
  }
1024
1024
  bMallGetUserInfo = () => {
1025
1025
  return getBMallUserInfo()
1026
1026
  }
1027
1027
  async bMallAddCart(params = {}) {
1028
1028
  return await this.gatewayReq('bmall_cartAdd', params, {
1029
1029
  client: 'H5',
1030
1030
  clientVersion: '5.5.0',
1031
1031
  })
1032
1032
  }
1033
1033
  async bMallChangeCart(params = {}) {
1034
1034
  return await this.gatewayReq('bmall_cartChange', params, {
1035
1035
  client: 'H5',
1036
1036
  clientVersion: '5.5.0',
1037
1037
  })
1038
1038
  }
1039
1039
  async bMallRemoveCart(params = {}) {
1040
1040
  return await this.gatewayReq(
1041
1041
  'bmall_cartRemove',
1042
1042
  params,
1043
1043
  {
1044
1044
  client: 'H5',
1045
1045
  clientVersion: '5.5.0',
1046
1046
  },
1047
1047
  )
1048
1048
  }
1049
1049
  async bMallGetOmittedProduct(params = {}) {
1050
1050
  return await this.gatewayReq('bmall_getOmittedProduct', params, {
1051
1051
  client: 'H5',
1052
1052
  clientVersion: '5.5.0',
1053
1053
  })
1054
1054
  }
1055
1055
  async bMallAddCartService({ skuId, bMallTag, num, data = {} }) {
1056
1056
  const params = await getParams({ ...data, skuId, bMallTag, num })
1057
1057
  return await this.bMallAddCart(params)
1058
1058
  }
1059
1059
  async bMallGetSkuNumService(bMallTag = 1) {
1060
1060
  const params = await getParams({ bMallTag })
1061
1061
  delete params.operations
1062
1062
  return await this.bMallGetOmittedProduct(params)
1063
1063
  }
1064
1064
  async bMallRemoveCartService({ skuId, bMallTag, num, skuUuid, data = {} }) {
1065
1065
  let params = await getParams({ ...data, skuId, bMallTag, num, skuUuid })
1066
1066
  return await this.bMallRemoveCart(params)
1067
1067
  }
1068
1068
  async bMallChangeCartService({ skuId, bMallTag, num, skuUuid, data = {} }) {
1069
1069
  let params = await getParams({ ...data, skuId, bMallTag, num, skuUuid })
1070
1070
  return await this.bMallChangeCart(params)
1071
1071
  }
1072
1072
 
1073
1073
  async bMallGetSkuNumApi(needRequest = false, bMallTag = 1) {
1074
1074
  if (!needRequest && isH5 && window?.bMallCartData) {
1075
1075
  return window?.bMallCartData
1076
1076
  }
1077
1077
  const cartData = await this.bMallGetSkuNumService(bMallTag)
1078
1078
  let items
1079
1079
  if (cartData.ok && cartData.result) {
1080
1080
  items = cartData?.result?.items || {}
1081
1081
  }
1082
1082
  if (isH5) {
1083
1083
  window.bMallCartData = items
1084
1084
  }
1085
1085
  return items
1086
1086
  }
1087
1087
 
1088
1088
  async bMallCartHandle(goodItem, num) {
1089
1089
  try {
1090
1090
  const {
1091
1091
  skuUuid,
1092
1092
  limitUpper,
1093
1093
  limitLower,
1094
1094
  } = goodItem
1095
1095
  let cartNum = Number(num)
1096
1096
  if (limitLower && cartNum && cartNum < limitLower) {
1097
1097
  cartNum = limitLower
1098
1098
  } else if (limitUpper && cartNum && cartNum > limitUpper) {
1099
1099
  cartNum = limitUpper
1100
1100
  }
1101
1101
  if (skuUuid && cartNum > 0) {
1102
1102
  return this.bMallChangeCartService({
1103
1103
  ...goodItem,
1104
1104
  skuUuid,
1105
1105
  num: cartNum,
1106
1106
  })
1107
1107
  } else if (!skuUuid && cartNum > 0) {
1108
1108
  return this.bMallAddCartService({ ...goodItem, num: cartNum })
1109
1109
  } else if (skuUuid && !cartNum) {
1110
1110
  return this.bMallRemoveCartService({
1111
1111
  ...goodItem,
1112
1112
  skuUuid,
1113
1113
  num: cartNum,
1114
1114
  })
1115
1115
  } else {
1116
1116
  console.error('参数不全')
1117
1117
  return false
1118
1118
  }
1119
1119
  } catch (e) {
1120
1120
  console.error(e)
1121
1121
  }
1122
1122
  }