@conecli/cone-render 0.10.1-shop3.21 → 0.10.1-shop3.23

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