@conecli/cone-render 0.9.1-shop2.19 → 0.9.1-shop2.20

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