@conecli/cone-render 0.8.20-shop.227 → 0.8.20-shop.229

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 { JdJumpJdApp } from './jdJumpJdApp';
2
1
  routerInfo: {
3
2
  params: {},
4
3
  },
5
4
  nativeEvent: null,
6
5
  jumpConfig: {
7
6
  venderId: null,
8
7
  shopId: null,
9
8
  sourceValue: '',
10
9
  sourceType: 'App-H5',
11
10
  activityType: 'shopx',
12
11
  moduleId: 'none',
13
12
  entrance: 'none',
14
13
  },
15
14
  logPageParamStr: '',
16
15
  public logPageId: string;
17
16
  public jumpConfig: JumpEventReportInterFace.JumpH5ReportConfig;
18
17
  constructor(opt = {}) {
19
18
  super(opt);
20
19
  this.getConfig(opt);
21
20
  }
22
21
  getConfig(opt = {}) {
23
22
  return Object.assign(this, {}, defaultConfig, opt);
24
23
  }
25
24
  updateInfo(routerInfo, logPname = LogPnameInfo.HOME, pageId = LogPageIdInfo.APP) {
26
25
  this.logPageId = pageId;
27
26
  this.routerInfo = routerInfo;
28
27
  this.jumpConfig = Object.assign({}, this.jumpConfig, routerInfo.params);
29
28
  this.logPname = logPname;
30
29
  }
31
30
  reportInfoPv(
32
31
  pageId = LogPageIdInfo.APP,
33
32
  opt: {
34
33
  pageParam?: any;
35
34
  } = {},
36
35
  ) {
37
36
  const { pageParam } = opt;
38
37
  this.logPageParamStr = pageParam
39
38
  ? pageParam
40
39
  : this.creatParamToLogStr(this.jumpConfig)
41
40
  .replace(/moduleId/, 'JumpmoduleID')
42
41
  .replace(/entrance/, 'Jumpentrance');
43
42
  reportPV({
44
43
  pageId,
45
44
  pageParam: this.logPageParamStr,
46
45
  ...opt,
47
46
  });
48
47
  }
49
48
 
50
49
  jdJumpToDongDongChatGroup(groupId, source = '4') {
51
50
  this.jdNavigateToNative({
52
51
  category: 'jump',
53
52
  des: 'dongdong_group_chat',
54
53
  source: source,
55
54
  groupId: `${groupId}`,
56
55
  });
57
56
  }
58
57
 
59
58
  jdJumpToWeb(
60
59
  url,
61
60
  logEventInfo,
62
61
  successBack?: functionType | undefined,
63
62
  failBack?: functionType | undefined,
64
63
  ) {
65
64
  console.log('jd web', this.isOpenJdAppUrl(url), url);
66
65
  if (this.isOpenJdAppUrl(url)) {
67
66
  const getOpenAppParams = this.jdOpenAppParams(url);
68
67
  console.log('jd web 获取自定义openApp链接解析后的参数结果', getOpenAppParams);
69
68
  if (getOpenAppParams) {
70
69
 
71
70
  const { useEncodeParams, ...otherLogInfo } = logEventInfo || {};
72
71
  this.jdNavigateToNative(
73
72
  Object.assign({}, getOpenAppParams, {
74
73
  logEventInfo: otherLogInfo,
75
74
  useEncodeParams: Boolean(useEncodeParams),
76
75
  }),
77
76
  );
78
77
  }
79
78
  } else {
80
79
  let _getLastUrl = url;
81
80
  if (/shop\.m\.jd\.com|pages\.jd\.com/.test(_getLastUrl)) {
82
81
  const getUrlSearchParamState = _getLastUrl.indexOf('?') !== -1;
83
82
  if (!/jwebprog=0/.test(_getLastUrl)) {
84
83
  _getLastUrl = `${_getLastUrl}${getUrlSearchParamState ? '&' : '?'}jwebprog=0`;
85
84
  }
86
85
  if (global.info.sysInfo?.isJdTabletDevice && !/device=tablet/.test(_getLastUrl)) {
87
86
  _getLastUrl = `${_getLastUrl}${getUrlSearchParamState ? '&' : '?'}device=tablet`;
88
87
  }
89
88
  }
90
89
  super.jdJumpToWeb(
91
90
  _getLastUrl,
92
91
  {
93
92
  ...logEventInfo,
94
93
  },
95
94
  successBack,
96
95
  failBack,
97
96
  );
98
97
  }
99
98
  }
100
99
 
101
100
  jdJumpToWebInner(url, logEventInfo) {
102
101
  this.jdJumpToWeb(url, logEventInfo);
103
102
  }
104
103
 
105
104
  jdJumpConfigUrl(detail, logEventInfo = {}) {
106
105
  const { configDataType, configDataValue } = detail;
107
106
  switch (configDataType) {
108
107
  case LinkConfigType.CONFIG_TYPE_CATEGORY_PAGE:
109
108
  this.jdJumpToShopCategory({
110
109
  ...configDataValue,
111
110
  logEventInfo,
112
111
  });
113
112
  break;
114
113
  case LinkConfigType.CONFIG_TYPE_SKU_LIST:
115
114
  if (logEventInfo?.jsonParam?.logBaseInfo?.mInfo) {
116
115
  logEventInfo.jsonParam.logBaseInfo.mInfo.skuid = configDataValue.skuIds;
117
116
  }
118
117
  this.jdJumpToProduct(configDataValue.skuIds, logEventInfo);
119
118
  break;
120
119
  case LinkConfigType.CONFIG_TYPE_COUPON_LIST:
121
120
  this.jdJumpToWeb(
122
121
  `${this.jumpWebUrl.shopCoupon}?couponType=1&shopId=${global.info.queryInfo.shopId}&venderId=${global.info.queryInfo.venderId}`,
123
122
  {},
124
123
  );
125
124
  break;
126
125
  case LinkConfigType.CONFIG_TYPE_CATEGORY:
127
126
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
128
127
  const getShopSearchParams = this.jdOpenAppParams(configDataValue.clickUrl);
129
128
  console.log('jd web 获取店铺分类链接解析后的参数结果', getShopSearchParams);
130
129
  getShopSearchParams &&
131
130
  this.jdJumpToShopSearch(
132
131
  Object.assign({}, getShopSearchParams, {
133
132
  logEventInfo,
134
133
  }),
135
134
  );
136
135
  } else {
137
136
  this.jdJumpToShopSearch(
138
137
  configDataValue['cid']
139
138
  ? Object.assign(
140
139
  {},
141
140
  {
142
141
  shopId: global.info.queryInfo.shopId,
143
142
  categoryId: configDataValue.cid,
144
143
  searchType: '5',
145
144
  logEventInfo,
146
145
  },
147
146
  )
148
147
  : {
149
148
  shopId: global.info.queryInfo.shopId,
150
149
  logEventInfo,
151
150
  },
152
151
  );
153
152
  }
154
153
  break;
155
154
  case LinkConfigType.CONFIG_TYPE_MEMBER:
156
155
  if (isAppHomeForMarketPage) {
157
156
  this.jdJumpToBottomTabBrandMember({
158
157
  logEventInfo,
159
158
  });
160
159
  } else {
161
160
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
162
161
  const getShopMemberParams = this.jdOpenAppParams(configDataValue.clickUrl);
163
162
  getShopMemberParams &&
164
163
  this.jdJumpToShopMember(
165
164
  Object.assign({}, getShopMemberParams, {
166
165
  logEventInfo,
167
166
  }),
168
167
  );
169
168
  } else {
170
169
  this.jdJumpToShopMember({
171
170
  shopId: global.info.queryInfo.shopId,
172
171
  venderId: configDataValue.shopDetail,
173
172
  logEventInfo,
174
173
  });
175
174
  }
176
175
  }
177
176
  break;
178
177
  case LinkConfigType.CONFIG_TYPE_SHOP_ACTIVITY:
179
178
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
180
179
  const getShopActivityParams = this.jdOpenAppParams(configDataValue.clickUrl);
181
180
  getShopActivityParams &&
182
181
  this.jdJumpToShopActivity(
183
182
  Object.assign({}, getShopActivityParams, {
184
183
  logEventInfo,
185
184
  }),
186
185
  );
187
186
  } else if (configDataValue['projectId']) {
188
187
  this.jdJumpToShopActivity({
189
188
  projectId: configDataValue['projectId'],
190
189
  configDataValue,
191
190
  logEventInfo,
192
191
  });
193
192
  }
194
193
  break;
195
194
  case LinkConfigType.CONFIG_TYPE_CUSTOM_LINK:
196
195
  case LinkConfigType.CONFIG_TYPE_FINANCE_COUPON: {
197
196
  const _url = configDataValue.linkUrl;
198
197
  if (
199
198
  _url.indexOf('to=') === -1 &&
200
199
  _url.indexOf(`${domain.mshop.replace(/https?:/, '')}/?shopId=`) !== -1
201
200
  ) {
202
201
  const _shopId = _url.match(/\d+/g)[0];
203
202
  this.jdJumpToShopHome({
204
203
  shopId: `${_shopId}`,
205
204
  logEventInfo,
206
205
  });
207
206
  } else if (this.isOpenJdAppUrl(_url)) {
208
207
  const getOpenAppParams = this.jdOpenAppParams(_url);
209
208
  console.log('jd web 获取自定义链接解析后的参数结果', getOpenAppParams);
210
209
  if (getOpenAppParams) {
211
210
  let _changeOpenAppParams = getOpenAppParams;
212
211
  if (isAppHomeForMarketPage) {
213
212
  const { operation, ...otherOpenAppParams } = getOpenAppParams;
214
213
  if (operation && operation === 'jumpTabInner') {
215
214
  _changeOpenAppParams = otherOpenAppParams;
216
215
  }
217
216
  }
218
217
  this.jdNavigateToNative(
219
218
  Object.assign({}, _changeOpenAppParams, {
220
219
  logEventInfo,
221
220
  }),
222
221
  );
223
222
  }
224
223
  } else {
225
224
  this.jdJumpToWeb(_url, logEventInfo);
226
225
  }
227
226
  break;
228
227
  }
229
228
  case LinkConfigType.CONFIG_TYPE_JSHOP_DETAIL:
230
229
  this.jdJumpToShopDetail({
231
230
  venderId: global.info.queryInfo.venderId,
232
231
  shopId: global.info.queryInfo.shopId,
233
232
  logEventInfo,
234
233
  });
235
234
  break;
236
235
  case LinkConfigType.CONFIG_TYPE_SHOP_HOME:
237
236
  this.jdJumpToShopHome({
238
237
  ...configDataValue,
239
238
  logEventInfo,
240
239
  });
241
240
  break;
242
241
  case LinkConfigType.CONFIG_TYPE_ANCHOR_POINT:
243
242
  break;
244
243
  case LinkConfigType.CONFIG_TYPE_SHOPPING_GUIDE:
245
244
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
246
245
  const getShoppingGuideParams = this.jdOpenAppParams(configDataValue.clickUrl);
247
246
  getShoppingGuideParams &&
248
247
  this.jdJumpToShopActivity(
249
248
  Object.assign({}, getShoppingGuideParams, {
250
249
  logEventInfo,
251
250
  }),
252
251
  );
253
252
  }
254
253
  break;
255
254
  case LinkConfigType.CONFIG_TYPE_MINI_PROGRAM: {
256
255
  const linkUrl = decodeURIComponent(configDataValue?.linkUrl || '');
257
256
  const search = linkUrl.match(/\?.+/);
258
257
  if (search) {
259
258
  const miniQueryData: JumpEventReportInterFace.LinkMiniParams =
260
259
  parseQueryUrlString(linkUrl);
261
260
  try {
262
261
  miniQueryData.param = JSON.parse(<string>miniQueryData?.param);
263
262
  } catch (e) {
264
263
  console.warn('解析小程序 param 错误:', miniQueryData.param);
265
264
  }
266
265
  this.jdJumpToMiniProgram(miniQueryData);
267
266
  } else {
268
267
  console.warn('小程序地址错误:', linkUrl);
269
268
  }
270
269
  break;
271
270
  }
272
271
  case LinkConfigType.CONFIG_TYPE_SHOP_SEARCH: {
273
272
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
274
273
  const getShopSearchParams = this.jdOpenAppParams(configDataValue.clickUrl);
275
274
  console.log('jd web 获取店铺结果落地页链接解析后的参数结果', getShopSearchParams);
276
275
  getShopSearchParams &&
277
276
  this.jdJumpToShopSearch(
278
277
  Object.assign({}, getShopSearchParams, {
279
278
  logEventInfo,
280
279
  }),
281
280
  );
282
281
  } else {
283
282
  this.jdJumpToWeb(configDataValue.clickUrl, logEventInfo);
284
283
  }
285
284
  break;
286
285
  }
287
286
  default:
288
287
  }
289
288
  }
290
289
 
291
290
  jdNavigateToNative(
292
291
  params: object,
293
292
  url = 'openapp.jdmobile://virtual',
294
293
  successBack?: functionType | null,
295
294
  failBack?: functionType | null,
296
295
  ) {
297
296
  console.log('[降级H5] jdNavigateToNative web.jd:', params);
298
297
  const getResParams: JumpEventReportInterFace.JdMiniJumpParams = Object.assign(
299
298
  {},
300
299
  {
301
300
  sourceValue: 'sourceValue_jshopModuleWeb',
302
301
  sourceType: 'sourceType_jshopModuleWeb',
303
302
  param: {},
304
303
  },
305
304
  params,
306
305
  );
307
306
  const { logEventInfo, useEncodeParams, ...otherParams } = getResParams;
308
307
  console.log('jd web 获取open协议参数 jdNavigateToNative params: ', getResParams);
309
308
  console.log('logEventInfo params: ', logEventInfo);
310
309
  global.info.pageInfo.dataType === BUSINESS_TYPE.ONLINE &&
311
310
  this.clickEventLog(logEventInfo || getResParams)
312
311
  .then(() => {
313
312
  if (typeof successBack === 'function') {
314
313
  successBack(getResParams);
315
314
  } else {
316
315
  try {
317
316
  const paramsStr = JSON.stringify(otherParams);
318
317
  console.log('跳转web jd open协议', `${url}?params=${paramsStr}`);
319
318
  window.location.href = useEncodeParams
320
319
  ? `${url}?params=${encodeURIComponent(paramsStr)}`
321
320
  : `${url}?params=${paramsStr}`;
322
321
  } catch (e) {
323
322
  console.log('跳转异常', e);
324
323
  draBusinessCustomReport({
325
324
  type: 'jdapp_jdNavigateToNative_catch_err',
326
325
  errMsg: '跳转web jd open协议发生错误',
327
326
  originReqDataStr: JSON.stringify({
328
327
  url,
329
328
  isJdApp,
330
329
  jdAppVersion: jdAppVersionStr,
331
330
  ...otherParams,
332
331
  }),
333
332
  });
334
333
  }
335
334
  }
336
335
  })
337
336
  .catch(() => {
338
337
  typeof failBack === 'function' && failBack(getResParams);
339
338
  });
340
339
  }
341
340
 
342
341
  clickEventLog(opts: JumpEventReportInterFace.OptEventLogParams = {}, reportKey = 'click') {
343
342
  const { eventId, jsonParam, eventLevel = 3, ...otherParams } = opts;
344
343
  if (eventId && jsonParam) {
345
344
  const { etModelInfo, logBaseInfo } = jsonParam;
346
345
  let getJsonParam = {};
347
346
  if (etModelInfo && logBaseInfo) {
348
347
  getJsonParam = logBaseInfo;
349
348
  } else {
350
349
  if (Array.isArray(jsonParam)) {
351
350
  getJsonParam = jsonParam;
352
351
  } else {
353
352
  getJsonParam = Object.assign(
354
353
  {},
355
354
  {
356
355
  shopid: global.info.queryInfo?.shopId,
357
356
  },
358
357
  jsonParam,
359
358
  );
360
359
  }
361
360
  }
362
361
  if (
363
362
  reportKey === 'exposure' &&
364
363
  /^TerminatorNew/.test(eventId) &&
365
364
  !Array.isArray(getJsonParam)
366
365
  ) {
367
366
  getJsonParam = [getJsonParam];
368
367
  }
369
368
  const webLogParams = {
370
369
  isExpo: reportKey === 'exposure',
371
370
  eid: eventId,
372
371
  elevel: eventLevel,
373
372
  jsonParam: JSON.stringify(getJsonParam),
374
373
  etModel: JSON.stringify(etModelInfo || {}),
375
374
  pageId: this.logPageId,
376
375
  pageParam: this.logPageParamStr,
377
376
  ...otherParams,
378
377
  };
379
378
  return /click|exposure/.test(reportKey)
380
379
  ? reportClick(webLogParams)
381
380
  : reportToCart(opts, webLogParams);
382
381
  } else {
383
382
  console.log('暂无埋点参数eventId和eventParam');
384
383
  return Promise.resolve(false);
385
384
  }
386
385
  }
387
386
 
388
387
  exposureEventLog(opts) {
389
388
  return global.info.pageInfo.dataType === BUSINESS_TYPE.ONLINE
390
389
  ? this.clickEventLog(
391
390
  {
392
391
  ...opts,
393
392
  exposureState: true,
394
393
  },
395
394
  'exposure',
396
395
  )
397
396
  : Promise.resolve(false);
398
397
  }
398
+ import { JdJumpJdApp } from './jdJumpJdApp';
399
399
  routerInfo: {
400
400
  params: {},
401
401
  },
402
402
  nativeEvent: null,
403
403
  jumpConfig: {
404
404
  venderId: null,
405
405
  shopId: null,
406
406
  sourceValue: '',
407
407
  sourceType: 'App-H5',
408
408
  activityType: 'shopx',
409
409
  moduleId: 'none',
410
410
  entrance: 'none',
411
411
  },
412
412
  logPageParamStr: '',
413
413
  public logPageId: string;
414
414
  public jumpConfig: JumpEventReportInterFace.JumpH5ReportConfig;
415
415
  constructor(opt = {}) {
416
416
  super(opt);
417
417
  this.getConfig(opt);
418
418
  }
419
419
  getConfig(opt = {}) {
420
420
  return Object.assign(this, {}, defaultConfig, opt);
421
421
  }
422
422
  updateInfo(routerInfo, logPname = LogPnameInfo.HOME, pageId = LogPageIdInfo.APP) {
423
423
  this.logPageId = pageId;
424
424
  this.routerInfo = routerInfo;
425
425
  this.jumpConfig = Object.assign({}, this.jumpConfig, routerInfo.params);
426
426
  this.logPname = logPname;
427
427
  }
428
428
  reportInfoPv(
429
429
  pageId = LogPageIdInfo.APP,
430
430
  opt: {
431
431
  pageParam?: any;
432
432
  } = {},
433
433
  ) {
434
434
  const { pageParam } = opt;
435
435
  this.logPageParamStr = pageParam
436
436
  ? pageParam
437
437
  : this.creatParamToLogStr(this.jumpConfig)
438
438
  .replace(/moduleId/, 'JumpmoduleID')
439
439
  .replace(/entrance/, 'Jumpentrance');
440
440
  reportPV({
441
441
  pageId,
442
442
  pageParam: this.logPageParamStr,
443
443
  ...opt,
444
444
  });
445
445
  }
446
446
 
447
447
  jdJumpToDongDongChatGroup(groupId, source = '4') {
448
448
  this.jdNavigateToNative({
449
449
  category: 'jump',
450
450
  des: 'dongdong_group_chat',
451
451
  source: source,
452
452
  groupId: `${groupId}`,
453
453
  });
454
454
  }
455
455
 
456
456
  jdJumpToWeb(
457
457
  url,
458
458
  logEventInfo,
459
459
  successBack?: functionType | undefined,
460
460
  failBack?: functionType | undefined,
461
461
  ) {
462
462
  console.log('jd web', this.isOpenJdAppUrl(url), url);
463
463
  if (this.isOpenJdAppUrl(url)) {
464
464
  const getOpenAppParams = this.jdOpenAppParams(url);
465
465
  console.log('jd web 获取自定义openApp链接解析后的参数结果', getOpenAppParams);
466
466
  if (getOpenAppParams) {
467
467
 
468
468
  const { useEncodeParams, ...otherLogInfo } = logEventInfo || {};
469
469
  this.jdNavigateToNative(
470
470
  Object.assign({}, getOpenAppParams, {
471
471
  logEventInfo: otherLogInfo,
472
472
  useEncodeParams: Boolean(useEncodeParams),
473
473
  }),
474
474
  );
475
475
  }
476
476
  } else {
477
477
  let _getLastUrl = url;
478
478
  if (/shop\.m\.jd\.com|pages\.jd\.com/.test(_getLastUrl)) {
479
479
  const getUrlSearchParamState = _getLastUrl.indexOf('?') !== -1;
480
480
  if (!/jwebprog=0/.test(_getLastUrl)) {
481
481
  _getLastUrl = `${_getLastUrl}${getUrlSearchParamState ? '&' : '?'}jwebprog=0`;
482
482
  }
483
483
  if (global.info.sysInfo?.isJdTabletDevice && !/device=tablet/.test(_getLastUrl)) {
484
484
  _getLastUrl = `${_getLastUrl}${getUrlSearchParamState ? '&' : '?'}device=tablet`;
485
485
  }
486
486
  }
487
487
  super.jdJumpToWeb(
488
488
  _getLastUrl,
489
489
  {
490
490
  ...logEventInfo,
491
491
  },
492
492
  successBack,
493
493
  failBack,
494
494
  );
495
495
  }
496
496
  }
497
497
 
498
498
  jdJumpToWebInner(url, logEventInfo) {
499
499
  this.jdJumpToWeb(url, logEventInfo);
500
500
  }
501
501
 
502
502
  jdJumpConfigUrl(detail, logEventInfo = {}) {
503
503
  const { configDataType, configDataValue } = detail;
504
504
  switch (configDataType) {
505
505
  case LinkConfigType.CONFIG_TYPE_CATEGORY_PAGE:
506
506
  this.jdJumpToShopCategory({
507
507
  ...configDataValue,
508
508
  logEventInfo,
509
509
  });
510
510
  break;
511
511
  case LinkConfigType.CONFIG_TYPE_SKU_LIST:
512
512
  if (logEventInfo?.jsonParam?.logBaseInfo?.mInfo) {
513
513
  logEventInfo.jsonParam.logBaseInfo.mInfo.skuid = configDataValue.skuIds;
514
514
  }
515
515
  this.jdJumpToProduct(configDataValue.skuIds, logEventInfo);
516
516
  break;
517
517
  case LinkConfigType.CONFIG_TYPE_COUPON_LIST:
518
518
  this.jdJumpToWeb(
519
519
  `${this.jumpWebUrl.shopCoupon}?couponType=1&shopId=${global.info.queryInfo.shopId}&venderId=${global.info.queryInfo.venderId}`,
520
520
  {},
521
521
  );
522
522
  break;
523
523
  case LinkConfigType.CONFIG_TYPE_CATEGORY:
524
524
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
525
525
  const getShopSearchParams = this.jdOpenAppParams(configDataValue.clickUrl);
526
526
  console.log('jd web 获取店铺分类链接解析后的参数结果', getShopSearchParams);
527
527
  getShopSearchParams &&
528
528
  this.jdJumpToShopSearch(
529
529
  Object.assign({}, getShopSearchParams, {
530
530
  logEventInfo,
531
531
  }),
532
532
  );
533
533
  } else {
534
534
  const extraParam = configDataValue?.pageId ? { pageId: configDataValue.pageId } : {};
535
535
  this.jdJumpToShopSearch(
536
536
  configDataValue['cid']
537
537
  ? Object.assign(
538
538
  {},
539
539
  {
540
540
  shopId: global.info.queryInfo.shopId,
541
541
  categoryId: configDataValue.cid,
542
542
  searchType: '5',
543
543
  ...extraParam,
544
544
  logEventInfo,
545
545
  },
546
546
  )
547
547
  : {
548
548
  shopId: global.info.queryInfo.shopId,
549
549
  ...extraParam,
550
550
  logEventInfo,
551
551
  },
552
552
  );
553
553
  }
554
554
  break;
555
555
  case LinkConfigType.CONFIG_TYPE_MEMBER:
556
556
  if (isAppHomeForMarketPage) {
557
557
  this.jdJumpToBottomTabBrandMember({
558
558
  logEventInfo,
559
559
  });
560
560
  } else {
561
561
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
562
562
  const getShopMemberParams = this.jdOpenAppParams(configDataValue.clickUrl);
563
563
  getShopMemberParams &&
564
564
  this.jdJumpToShopMember(
565
565
  Object.assign({}, getShopMemberParams, {
566
566
  logEventInfo,
567
567
  }),
568
568
  );
569
569
  } else {
570
570
  this.jdJumpToShopMember({
571
571
  shopId: global.info.queryInfo.shopId,
572
572
  venderId: configDataValue.shopDetail,
573
573
  logEventInfo,
574
574
  });
575
575
  }
576
576
  }
577
577
  break;
578
578
  case LinkConfigType.CONFIG_TYPE_SHOP_ACTIVITY:
579
579
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
580
580
  const getShopActivityParams = this.jdOpenAppParams(configDataValue.clickUrl);
581
581
  getShopActivityParams &&
582
582
  this.jdJumpToShopActivity(
583
583
  Object.assign({}, getShopActivityParams, {
584
584
  logEventInfo,
585
585
  }),
586
586
  );
587
587
  } else if (configDataValue['projectId']) {
588
588
  this.jdJumpToShopActivity({
589
589
  projectId: configDataValue['projectId'],
590
590
  configDataValue,
591
591
  logEventInfo,
592
592
  });
593
593
  }
594
594
  break;
595
595
  case LinkConfigType.CONFIG_TYPE_CUSTOM_LINK:
596
596
  case LinkConfigType.CONFIG_TYPE_FINANCE_COUPON: {
597
597
  const _url = configDataValue.linkUrl;
598
598
  if (
599
599
  _url.indexOf('to=') === -1 &&
600
600
  _url.indexOf(`${domain.mshop.replace(/https?:/, '')}/?shopId=`) !== -1
601
601
  ) {
602
602
  const _shopId = _url.match(/\d+/g)[0];
603
603
  this.jdJumpToShopHome({
604
604
  shopId: `${_shopId}`,
605
605
  logEventInfo,
606
606
  });
607
607
  } else if (this.isOpenJdAppUrl(_url)) {
608
608
  const getOpenAppParams = this.jdOpenAppParams(_url);
609
609
  console.log('jd web 获取自定义链接解析后的参数结果', getOpenAppParams);
610
610
  if (getOpenAppParams) {
611
611
  let _changeOpenAppParams = getOpenAppParams;
612
612
  if (isAppHomeForMarketPage) {
613
613
  const { operation, ...otherOpenAppParams } = getOpenAppParams;
614
614
  if (operation && operation === 'jumpTabInner') {
615
615
  _changeOpenAppParams = otherOpenAppParams;
616
616
  }
617
617
  }
618
618
  this.jdNavigateToNative(
619
619
  Object.assign({}, _changeOpenAppParams, {
620
620
  logEventInfo,
621
621
  }),
622
622
  );
623
623
  }
624
624
  } else {
625
625
  this.jdJumpToWeb(_url, logEventInfo);
626
626
  }
627
627
  break;
628
628
  }
629
629
  case LinkConfigType.CONFIG_TYPE_JSHOP_DETAIL:
630
630
  this.jdJumpToShopDetail({
631
631
  venderId: global.info.queryInfo.venderId,
632
632
  shopId: global.info.queryInfo.shopId,
633
633
  logEventInfo,
634
634
  });
635
635
  break;
636
636
  case LinkConfigType.CONFIG_TYPE_SHOP_HOME:
637
637
  this.jdJumpToShopHome({
638
638
  ...configDataValue,
639
639
  logEventInfo,
640
640
  });
641
641
  break;
642
642
  case LinkConfigType.CONFIG_TYPE_ANCHOR_POINT:
643
643
  break;
644
644
  case LinkConfigType.CONFIG_TYPE_SHOPPING_GUIDE:
645
645
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
646
646
  const getShoppingGuideParams = this.jdOpenAppParams(configDataValue.clickUrl);
647
647
  getShoppingGuideParams &&
648
648
  this.jdJumpToShopActivity(
649
649
  Object.assign({}, getShoppingGuideParams, {
650
650
  logEventInfo,
651
651
  }),
652
652
  );
653
653
  }
654
654
  break;
655
655
  case LinkConfigType.CONFIG_TYPE_MINI_PROGRAM: {
656
656
  const linkUrl = decodeURIComponent(configDataValue?.linkUrl || '');
657
657
  const search = linkUrl.match(/\?.+/);
658
658
  if (search) {
659
659
  const miniQueryData: JumpEventReportInterFace.LinkMiniParams =
660
660
  parseQueryUrlString(linkUrl);
661
661
  try {
662
662
  miniQueryData.param = JSON.parse(<string>miniQueryData?.param);
663
663
  } catch (e) {
664
664
  console.warn('解析小程序 param 错误:', miniQueryData.param);
665
665
  }
666
666
  this.jdJumpToMiniProgram(miniQueryData);
667
667
  } else {
668
668
  console.warn('小程序地址错误:', linkUrl);
669
669
  }
670
670
  break;
671
671
  }
672
672
  case LinkConfigType.CONFIG_TYPE_SHOP_SEARCH: {
673
673
  if (this.isOpenJdAppUrl(configDataValue.clickUrl)) {
674
674
  const getShopSearchParams = this.jdOpenAppParams(configDataValue.clickUrl);
675
675
  console.log('jd web 获取店铺结果落地页链接解析后的参数结果', getShopSearchParams);
676
676
  getShopSearchParams &&
677
677
  this.jdJumpToShopSearch(
678
678
  Object.assign({}, getShopSearchParams, {
679
679
  logEventInfo,
680
680
  }),
681
681
  );
682
682
  } else {
683
683
  this.jdJumpToWeb(configDataValue.clickUrl, logEventInfo);
684
684
  }
685
685
  break;
686
686
  }
687
687
  default:
688
688
  }
689
689
  }
690
690
 
691
691
  jdNavigateToNative(
692
692
  params: object,
693
693
  url = 'openapp.jdmobile://virtual',
694
694
  successBack?: functionType | null,
695
695
  failBack?: functionType | null,
696
696
  ) {
697
697
  console.log('[降级H5] jdNavigateToNative web.jd:', params);
698
698
  const getResParams: JumpEventReportInterFace.JdMiniJumpParams = Object.assign(
699
699
  {},
700
700
  {
701
701
  sourceValue: 'sourceValue_jshopModuleWeb',
702
702
  sourceType: 'sourceType_jshopModuleWeb',
703
703
  param: {},
704
704
  },
705
705
  params,
706
706
  );
707
707
  const { logEventInfo, useEncodeParams, ...otherParams } = getResParams;
708
708
  console.log('jd web 获取open协议参数 jdNavigateToNative params: ', getResParams);
709
709
  console.log('logEventInfo params: ', logEventInfo);
710
710
  global.info.pageInfo.dataType === BUSINESS_TYPE.ONLINE &&
711
711
  this.clickEventLog(logEventInfo || getResParams)
712
712
  .then(() => {
713
713
  if (typeof successBack === 'function') {
714
714
  successBack(getResParams);
715
715
  } else {
716
716
  try {
717
717
  const paramsStr = JSON.stringify(otherParams);
718
718
  console.log('跳转web jd open协议', `${url}?params=${paramsStr}`);
719
719
  window.location.href = useEncodeParams
720
720
  ? `${url}?params=${encodeURIComponent(paramsStr)}`
721
721
  : `${url}?params=${paramsStr}`;
722
722
  } catch (e) {
723
723
  console.log('跳转异常', e);
724
724
  draBusinessCustomReport({
725
725
  type: 'jdapp_jdNavigateToNative_catch_err',
726
726
  errMsg: '跳转web jd open协议发生错误',
727
727
  originReqDataStr: JSON.stringify({
728
728
  url,
729
729
  isJdApp,
730
730
  jdAppVersion: jdAppVersionStr,
731
731
  ...otherParams,
732
732
  }),
733
733
  });
734
734
  }
735
735
  }
736
736
  })
737
737
  .catch(() => {
738
738
  typeof failBack === 'function' && failBack(getResParams);
739
739
  });
740
740
  }
741
741
 
742
742
  clickEventLog(opts: JumpEventReportInterFace.OptEventLogParams = {}, reportKey = 'click') {
743
743
  const { eventId, jsonParam, eventLevel = 3, ...otherParams } = opts;
744
744
  if (eventId && jsonParam) {
745
745
  const { etModelInfo, logBaseInfo } = jsonParam;
746
746
  let getJsonParam = {};
747
747
  if (etModelInfo && logBaseInfo) {
748
748
  getJsonParam = logBaseInfo;
749
749
  } else {
750
750
  if (Array.isArray(jsonParam)) {
751
751
  getJsonParam = jsonParam;
752
752
  } else {
753
753
  getJsonParam = Object.assign(
754
754
  {},
755
755
  {
756
756
  shopid: global.info.queryInfo?.shopId,
757
757
  },
758
758
  jsonParam,
759
759
  );
760
760
  }
761
761
  }
762
762
  if (
763
763
  reportKey === 'exposure' &&
764
764
  /^TerminatorNew/.test(eventId) &&
765
765
  !Array.isArray(getJsonParam)
766
766
  ) {
767
767
  getJsonParam = [getJsonParam];
768
768
  }
769
769
  const webLogParams = {
770
770
  isExpo: reportKey === 'exposure',
771
771
  eid: eventId,
772
772
  elevel: eventLevel,
773
773
  jsonParam: JSON.stringify(getJsonParam),
774
774
  etModel: JSON.stringify(etModelInfo || {}),
775
775
  pageId: this.logPageId,
776
776
  pageParam: this.logPageParamStr,
777
777
  ...otherParams,
778
778
  };
779
779
  return /click|exposure/.test(reportKey)
780
780
  ? reportClick(webLogParams)
781
781
  : reportToCart(opts, webLogParams);
782
782
  } else {
783
783
  console.log('暂无埋点参数eventId和eventParam');
784
784
  return Promise.resolve(false);
785
785
  }
786
786
  }
787
787
 
788
788
  exposureEventLog(opts) {
789
789
  return global.info.pageInfo.dataType === BUSINESS_TYPE.ONLINE
790
790
  ? this.clickEventLog(
791
791
  {
792
792
  ...opts,
793
793
  exposureState: true,
794
794
  },
795
795
  'exposure',
796
796
  )
797
797
  : Promise.resolve(false);
798
798
  }