@conecli/cone-render 0.10.1-shop3.76 → 0.10.1-shop3.77

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
  WXAPP_LOGIN,
3
2
  WXAPP_BIZ,
4
3
  WXAPP_USER_INFO,
5
4
  WXAPP_NAVIGATOR,
6
5
  WXAPP_REPORT_GDT,
7
6
  WXAPP_PARAMS_SIGN,
8
7
  WXAPP_FINGER_REPORT,
9
8
  WXAPP_REPORT_MANAGE,
10
9
  BUSINESS_TYPE,
11
10
  SHOP_MENU_ID_TYPE,
12
11
  SHOP_MENU_ID_NAME,
13
12
  SECTION_HOME_TAB_NAME_TYPE,
14
13
  SECTION_HOME_TAB_TYPE,
15
14
  TaroEventType,
16
15
  WX_BUSINESS_TYPE,
17
16
  WXAPP_BIZ_KEY,
18
17
  getSystemInfos,
19
18
  getTaroStorageKeyValue,
20
19
  removeTaroStorageKey,
21
20
  setTaroStorage,
22
21
  getWxAppCookieStr,
23
22
  objectToUrlEncode,
24
23
  languageNowType,
25
24
  abTestLabels: {},
26
25
  nonSellableSkuids: {},
27
26
  loginState: jdUserLoginState,
28
27
  cookiesStr: '',
29
28
  userInfo: userPinKey,
30
29
  isImmersive: false,
31
30
  pageInfo: {
32
31
  wxBusinessType: WX_BUSINESS_TYPE.SHOP,
33
32
  address: '',
34
33
  addressCommaStr: '',
35
34
  un_area: '',
36
35
  userLbsAddress: '',
37
36
  vapptype: '1',
38
37
  pageType: 'home',
39
38
  dataType: BUSINESS_TYPE.ONLINE,
40
39
  floorExposureInfo: {},
41
40
  floorVideInfo: {},
42
41
  productVideInfo: {},
43
42
  tabsLoadAllDataInfo: {
44
43
  [SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_WELL_CHOSEN]]: false,
45
44
  [SHOP_MENU_ID_NAME[SHOP_MENU_ID_TYPE.CLASSIFY]]: true,
46
45
  },
47
46
  updateShopInfosAllState: false,
48
47
  isVipShop: false,
49
48
  isJdShowNativeImmersivePlayer: false,
50
49
  ...shopConfig,
51
50
  pageScrollTop: 0,
52
51
  pageIdxHeightInfo: {
53
52
  list: [],
54
53
  },
55
54
  shopNavBarHeight: 0,
56
55
  },
57
56
  defaultQueryLogInfo: {
58
57
  sourceType: 'JDshop',
59
58
  sourceValue: '',
60
59
  moduleId: 'none',
61
60
  entrance: 'none',
62
61
  },
63
62
  originQueryInfo: {},
64
63
  sysInfo: {
65
64
  windowWidth: 0,
66
65
  windowHeight: 0,
67
66
  eid: appEid,
68
67
  netWorkType: '4g',
69
68
  jdBottomBarHeight: 0,
70
69
  jdNativeHeaderHeight: 0,
71
70
  },
72
71
  queryInfo: {},
73
72
  shopInfo: {},
74
73
  openAppData: {},
75
74
  public info: CommonInterFace.BaseConfigInfo;
76
75
  public config: {
77
76
  [key: string]: any;
78
77
  };
79
78
  public lazyContainer: CommonInterFace.lazyContainer;
80
79
  public rootEleNode: HTMLElement | null;
81
80
  public miniApplogUtil: CommonInterFace.MiniApplogUtil;
82
81
  public miniAppLogInstance: CommonInterFace.MiniAppLog | null;
83
82
  public checkStatusAndLoginPromise: object | null;
84
83
  public wxAppLoginInstance: CommonInterFace.WxAppLogin;
85
84
  public wxAppBizInstance: CommonInterFace.WxAppUserInfo;
86
85
  public wxAppUserInfoInstance: CommonInterFace.WxAppUserInfo;
87
86
  public wxAppReportManageInstance: CommonInterFace.wxAppReportManage;
88
87
  public wxAppReportGDTInstance: CommonInterFace.WxAppReportGDT;
89
88
  public wxAppNavigatorInstance: CommonInterFace.WxAppNavigator;
90
89
  public wxAppParamsSignInstance: CommonInterFace.wxAppParamsSign;
91
90
  public wxAppFingerReportInstance: CommonInterFace.wxAppParamsSign;
92
91
  public wxAppSubsGuider: CommonInterFace.wxAppParamsSign;
93
92
  public loadJsSdkList: Array<any>;
94
93
  public loadJsSdkListCachePromise: any;
95
94
  public languageJsonData: any | null;
96
95
  public businessWorkerReady: boolean;
97
96
  public jdWorkerReadyPromise: any | null;
98
97
  constructor(opt) {
99
98
  this.info = this._getConfig(opt);
100
99
  this.config = {};
101
100
  this.lazyContainer = {
102
101
  [SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_WELL_CHOSEN]]: {
103
102
  appLazyContainerList: [],
104
103
  appLazyFinishContainerList: [],
105
104
  },
106
105
  [SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_PROMOTION]]: {
107
106
  appLazyContainerList: [],
108
107
  appLazyFinishContainerList: [],
109
108
  },
110
109
  };
111
110
  this.loadJsSdkList = [];
112
111
  this.loadJsSdkListCachePromise = {};
113
112
  this.rootEleNode = null;
114
113
  this.miniApplogUtil = MiniAppLogUtil;
115
114
  this.miniAppLogInstance = null;
116
115
  this.checkStatusAndLoginPromise = null;
117
116
  this.wxAppLoginInstance = WXAPP_LOGIN;
118
117
  this.wxAppBizInstance = WXAPP_BIZ;
119
118
  this.wxAppUserInfoInstance = WXAPP_USER_INFO;
120
119
  this.wxAppReportManageInstance = WXAPP_REPORT_MANAGE;
121
120
  this.wxAppReportGDTInstance = WXAPP_REPORT_GDT;
122
121
  this.wxAppNavigatorInstance = WXAPP_NAVIGATOR;
123
122
  this.wxAppParamsSignInstance = WXAPP_PARAMS_SIGN;
124
123
  this.wxAppFingerReportInstance = WXAPP_FINGER_REPORT ? new WXAPP_FINGER_REPORT() : {};
125
124
  this.wxAppSubsGuider = null;
126
125
  this.languageJsonData = langeJsonDataForCn;
127
126
  this.businessWorkerReady = false;
128
127
  this.jdWorkerReadyPromise = Promise.resolve(false);
129
128
  }
130
129
  _getConfig(opt) {
131
130
  return Object.assign({}, DefaultConfig, opt);
132
131
  }
133
132
 
134
133
  jmfeReayPromise(): Promise<any> {
135
134
  return Promise.reject(false);
136
135
  }
137
136
 
138
137
  taskTimeoutPromise(callBack, timeout = 2000) {
139
138
  return new Promise((resolve) => {
140
139
  setTimeout(() => {
141
140
  const getCallBackRes = typeof callBack === 'function' && callBack();
142
141
  return resolve(getCallBackRes || false);
143
142
  }, timeout);
144
143
  });
145
144
  }
146
145
 
147
146
  updateBusinessDomainAndApi(domain, api) {
148
147
  }
149
148
 
150
149
  getFullScreenHeight(systemInfo) {
151
150
  const { screenHeight, statusBarHeight, isAndroid } = systemInfo;
152
151
  let result = screenHeight;
153
152
  if (statusBarHeight > 20 && isAndroid) {
154
153
  result = screenHeight + statusBarHeight;
155
154
  }
156
155
  return result;
157
156
  }
158
157
 
159
158
  getTabBarHeight(systemInfo) {
160
159
  const { statusBarHeight, isAndroid, isIOS } = systemInfo;
161
160
  let result = 50;
162
161
  if (statusBarHeight > 20) {
163
162
  if (isIOS) {
164
163
  result = 84;
165
164
  } else if (isAndroid) {
166
165
  result = 53;
167
166
  }
168
167
  }
169
168
  return result;
170
169
  }
171
170
 
172
171
  getSystemInfo() {
173
172
  const info: UtilsInterFace.taroGetSystemInfoSyncRes = getSystemInfos() || {};
174
173
  const actualNavBarHeight = (info?.navBarHeight || 0) + (info?.navBarExtendHeight || 0);
175
174
  const headerHeight = actualNavBarHeight + (info?.statusBarHeight || 0);
176
175
  const fullScreenHeight = this.getFullScreenHeight(info);
177
176
  const tabBarHeight = this.getTabBarHeight(info);
178
177
  const safeContentHeight = fullScreenHeight - headerHeight;
179
178
  this.info.sysInfo = {
180
179
  ...this.info.sysInfo,
181
180
  ...info,
182
181
  actualNavBarHeight,
183
182
  headerHeight,
184
183
  fullScreenHeight,
185
184
  tabBarHeight,
186
185
  safeContentHeight,
187
186
  languageType: languageNowType,
188
187
  };
189
188
  this.getEid().then((res: { eid: string }) => {
190
189
  res && res.eid && (this.info.sysInfo['eid'] = res.eid);
191
190
  });
192
191
  if (this.info.sysInfo['hostVersionName']) {
193
192
  this.info.sysInfo['hostAppVersion'] = Number(
194
193
  this.info.sysInfo['hostVersionName'].replace(/\./g, ''),
195
194
  );
196
195
  }
197
196
  this.info.sysInfo['wifiVideoAutoPlay'] = false;
198
197
  this.getNetWorkType();
199
198
  }
200
199
  async updateMPaasConfig() {}
201
200
 
202
201
  getNetWorkType() {
203
202
  Taro.getNetworkType().then((getRes) => {
204
203
  getRes && getRes.networkType && (this.info.sysInfo['netWorkType'] = getRes.networkType);
205
204
  });
206
205
  }
207
206
  getAPPUseStraightCorner() {
208
207
  return Promise.resolve(false);
209
208
  }
210
209
 
211
210
  checkStatusAndLogin(options = {}) {
212
211
  this.checkStatusAndLoginPromise = new Promise((resolve, reject) => {
213
212
  console.log('微信小程序登录状态及获取cookie状态的promise,之前登录状态', this.info.loginState);
214
213
  this.toLogin(options)
215
214
  .then((res) => {
216
215
  console.log('微信小程序登录状态结果,成功', res);
217
216
  this.info.loginState = true;
218
217
  resolve(res);
219
218
  })
220
219
  .catch((err) => {
221
220
  console.log('微信小程序登录异常状态结果', err);
222
221
  this.doLogin(options)
223
222
  .then((res2) => {
224
223
  console.log('微信小程序wxDoLogin强制登陆成功:', res2);
225
224
  this.info.loginState = true;
226
225
  resolve(res2);
227
226
  })
228
227
  .catch((err2) => {
229
228
  console.log('微信小程序wxDoLogin强制登陆失败:', err2);
230
229
  this.checkStatusAndLoginPromise = null;
231
230
  reject(err2);
232
231
  });
233
232
  });
234
233
  });
235
234
  return this.checkStatusAndLoginPromise;
236
235
  }
237
236
 
238
237
  checkJdStatusAndLogin(options) {
239
238
  return this.checkStatusAndLogin(options);
240
239
  }
241
240
 
242
241
 
243
242
  doLoginForJdPin(options = {}) {
244
243
  return this.doLogin(options);
245
244
  }
246
245
 
247
246
  getEid() {
248
247
  if (typeof jd !== 'undefined' && jd.getEid) {
249
248
  return new Promise((resolve, reject) => {
250
249
  jd.getEid({
251
250
  success: (res: { eid: string }) => {
252
251
  resolve(res);
253
252
  },
254
253
  fail: (err: any) => {
255
254
  reject(err);
256
255
  },
257
256
  });
258
257
  });
259
258
  } else {
260
259
  return Promise.resolve(false);
261
260
  }
262
261
  }
263
262
 
264
263
  toLogin(options = {}): Promise<any> {
265
264
  return this.wxAppLoginInstance
266
265
  .getLoginPromise({
267
266
  mode: 'silent',
268
267
  loginColor: {
269
268
  biz: WXAPP_BIZ_KEY,
270
269
  dpin: 0,
271
270
  },
272
271
  ...options,
273
272
  })
274
273
  .then((res) => {
275
274
  console.log('微信app登录返回信息,微信侧返回code为0表示成功', res);
276
275
  setTimeout(() => {
277
276
  console.log(
278
277
  '微信app登录返回成功后,后台会写入cookie,有延迟,这里延迟500ms去获取最新cookie',
279
278
  );
280
279
  this.getLoginCookie(`${Date.now()}`);
281
280
  }, 500);
282
281
  })
283
282
  .catch((err) => {
284
283
  console.log('微信app登录异常返回信息,也获取cookie', err);
285
284
  this.getLoginCookie(`${Date.now()}`);
286
285
  });
287
286
  }
288
287
 
289
288
  doLogin(options) {
290
289
  console.log('触发松果小程序 doLogin() new new');
291
290
  return new Promise((resolve, reject) => {
292
291
  jd.login({
293
292
  success: (res) => {
294
293
  if (res.code) {
295
294
  console.log('[common]松果小程序登录成功', res.code);
296
295
  jd.redirectTo({
297
296
  url: `/pages/shopx/pages/index/index?${objectToUrlEncode({
298
297
  ...this.info.originQueryInfo,
299
298
  })}`,
300
299
  });
301
300
  resolve(res);
302
301
  } else {
303
302
  console.error('[common]松果小程序登录失败', res.errMsg);
304
303
  reject();
305
304
  }
306
305
  },
307
306
  fail: (res) => {
308
307
  console.error('[common]松果小程序登录失败', res.errMsg);
309
308
  reject();
310
309
  },
311
310
  });
312
311
  });
313
312
  }
314
313
 
315
314
  getLoginCookie(updateKey = 'wxapp') {
316
315
  return new Promise((resolve) => {
317
316
  console.log('开始获取更新wxapp中的cookie信息', updateKey);
318
317
  if (
319
318
  this.config.wqCookie &&
320
319
  this.config.wqCookieStr &&
321
320
  this.config.getWqCookieKey === updateKey
322
321
  ) {
323
322
  console.log('已有存储wxapp中的cookie信息,直接返回', this.config);
324
323
  resolve({
325
324
  wqCookie: this.config.wqCookie,
326
325
  wqCookieStr: this.config.wqCookieStr,
327
326
  });
328
327
  } else {
329
328
  if (isPublishToWxapp) {
330
329
  const getWxappCookieObj = getTaroStorageKeyValue('cookies') || null;
331
330
  if (getWxappCookieObj) {
332
331
  const getCookieObj = getWxappCookieObj['_data'];
333
332
  const { wqCookie, wqCookieStr } = getWxAppCookieStr(getCookieObj);
334
333
  const { pin = '', visitkey = '-1', wq_unionid = '', wxapp_openid = '' } = wqCookie;
335
334
  this.info.loginState = true;
336
335
  this.info.userInfo.wqCookie = wqCookieStr;
337
336
  this.info.userInfo.wqVisitkey = visitkey;
338
337
  console.log('获取用户完整cookie信息', getCookieObj);
339
338
  const getUserAddress = this.wxAppUserInfoInstance.getAddress();
340
339
  console.log('获取微信用户地址信息', getUserAddress);
341
340
  if (getUserAddress) {
342
341
  this.info.pageInfo.address = getUserAddress?.areaId;
343
342
  this.info.pageInfo.addressCommaStr = this.info.pageInfo.address
344
343
  ? this.info.pageInfo.address.replace(/_/g, ',')
345
344
  : '';
346
345
  this.info.pageInfo.un_area = this.info.pageInfo.address;
347
346
  Taro.eventCenter.trigger(TaroEventType.USER_AREA_UPDATE, {
348
347
  area: this.info.pageInfo.address,
349
348
  });
350
349
  }
351
350
  if (this.miniAppLogInstance) {
352
351
  this.miniAppLogInstance.set({
353
352
  account: pin,
354
353
  unionid: wq_unionid,
355
354
  openid: wxapp_openid,
356
355
  });
357
356
  }
358
357
  this.config.wqCookie = wqCookie;
359
358
  this.config.wqCookieStr = wqCookieStr;
360
359
  this.config.getWqCookieKey = updateKey;
361
360
  console.log('解析wxapp中的cookie信息成功,返回后存储', this.config);
362
361
  resolve({
363
362
  wqCookie,
364
363
  wqCookieStr,
365
364
  });
366
365
  } else {
367
366
  console.log('解析wxapp中的cookie信息异常,返回异常结果', this.config);
368
367
  resolve({
369
368
  wqCookie: false,
370
369
  wqCookieStr: false,
371
370
  });
372
371
  }
373
372
  } else {
374
373
  resolve({
375
374
  wqCookie: false,
376
375
  wqCookieStr: false,
377
376
  });
378
377
  }
379
378
  }
380
379
  });
381
380
  }
382
381
 
383
382
 
384
383
  checkLoginStatus() {
385
384
  return this.getLoginCookie();
386
385
  }
387
386
 
388
387
  getAddressCachePromise() {
389
388
  return Promise.reject('该方法只在APP内适用');
390
389
  }
391
390
 
392
391
  getLbsAddressCachePromise() {
393
392
  return Promise.resolve({
394
393
  status: '-1005',
395
394
  msg: '暂未实现,获取失败',
396
395
  });
397
396
  }
398
397
 
399
398
  getDynamicConfig(key: string) {
400
399
  console.warn('调用松果小程序的 getDynamicConfig(),注意,此方法还未实现!');
401
400
  return null;
402
401
  }
403
402
 
404
403
  updatePageAndLogInfo(updateQuery = {}) {
405
404
  const createUpdateQueryInfo: {
406
405
  query: {
407
406
  shopId?: string | number;
408
407
  venderId?: string | number;
409
408
  };
410
409
  updateShopInfoState: boolean;
411
410
  } = Object.assign(
412
411
  {},
413
412
  {
414
413
  query: {},
415
414
  updateShopInfoState: false,
416
415
  },
417
416
  updateQuery,
418
417
  );
419
418
  console.log(
420
419
  '获取当前下发的店铺查询参数',
421
420
  updateQuery,
422
421
  '获取之前保存的shopInfo店铺查询参数',
423
422
  this.info?.shopInfo,
424
423
  );
425
424
  const { query, updateShopInfoState } = createUpdateQueryInfo;
426
425
  const { shopId, venderId } = query;
427
426
  if (updateShopInfoState) {
428
427
  this.info.queryInfo = {
429
428
  ...this.info.queryInfo,
430
429
  ...query,
431
430
  };
432
431
  if (shopId && venderId) {
433
432
  this.info.shopInfo = {
434
433
  shopId: `${shopId}`,
435
434
  venderId: `${venderId}`,
436
435
  };
437
436
  }
438
437
  } else {
439
438
  this.info.queryInfo = {
440
439
  ...query,
441
440
  };
442
441
  this.info.originQueryInfo = {
443
442
  ...query,
444
443
  };
445
444
  if (
446
445
  this.info.shopInfo?.shopId &&
447
446
  this.info.shopInfo?.venderId &&
448
447
  (this.info.shopInfo.shopId == shopId || this.info.shopInfo.venderId == venderId)
449
448
  ) {
450
449
  this.info.queryInfo.shopId = this.info.shopInfo.shopId;
451
450
  this.info.queryInfo.venderId = this.info.shopInfo.venderId;
452
451
  console.log(
453
452
  '当前存储的店铺shopId和venderId与下发的店铺信息shopId或者venderId为同一个,补充shopId或者venderId查询参数',
454
453
  this.info.queryInfo,
455
454
  );
456
455
  }
457
456
  }
458
457
  this.info.queryInfo['shopId'] &&
459
458
  (this.info.queryInfo['shopId'] = `${this.info.queryInfo['shopId']}`);
460
459
  this.info.queryInfo['venderId'] &&
461
460
  (this.info.queryInfo['venderId'] = `${this.info.queryInfo['venderId']}`);
462
461
  console.log(
463
462
  'weapp===获取店铺下发查询参数\n',
464
463
  query,
465
464
  '\n获取店铺最后查询参数\n',
466
465
  this.info.queryInfo,
467
466
  '\n是否为更新店铺状态\n',
468
467
  updateShopInfoState,
469
468
  );
470
469
  }
471
470
  renderNextTickLoadSdk() {
472
471
  console.warn('暂未实现 index.jd.ts');
473
472
  }
474
473
  loadOtherSdk() {
475
474
  console.warn('暂未实现 index.jd.ts');
476
475
  }
477
476
  loadItemSdkPromise(jsInfo = {}) {
478
477
  console.warn('暂未实现 index.jd.ts');
479
478
  }
480
479
  createLanguageProimse() {
481
480
  return Promise.reject({
482
481
  msg: '暂未实现',
483
482
  });
484
483
  }
484
+ import Taro from '@tarojs/taro';
485
485
  WXAPP_LOGIN,
486
486
  WXAPP_BIZ,
487
487
  WXAPP_USER_INFO,
488
488
  WXAPP_NAVIGATOR,
489
489
  WXAPP_REPORT_GDT,
490
490
  WXAPP_PARAMS_SIGN,
491
491
  WXAPP_FINGER_REPORT,
492
492
  WXAPP_REPORT_MANAGE,
493
493
  BUSINESS_TYPE,
494
494
  SHOP_MENU_ID_TYPE,
495
495
  SHOP_MENU_ID_NAME,
496
496
  SECTION_HOME_TAB_NAME_TYPE,
497
497
  SECTION_HOME_TAB_TYPE,
498
498
  TaroEventType,
499
499
  WX_BUSINESS_TYPE,
500
500
  WXAPP_BIZ_KEY,
501
501
  getSystemInfos,
502
502
  getTaroStorageKeyValue,
503
503
  removeTaroStorageKey,
504
504
  setTaroStorage,
505
505
  getWxAppCookieStr,
506
506
  objectToUrlEncode,
507
507
  languageNowType,
508
508
  abTestLabels: {},
509
509
  nonSellableSkuids: {},
510
510
  loginState: jdUserLoginState,
511
511
  cookiesStr: '',
512
512
  userInfo: userPinKey,
513
513
  isImmersive: false,
514
514
  pageInfo: {
515
515
  wxBusinessType: WX_BUSINESS_TYPE.SHOP,
516
516
  address: '',
517
517
  addressCommaStr: '',
518
518
  un_area: '',
519
519
  userLbsAddress: '',
520
520
  vapptype: '1',
521
521
  pageType: 'home',
522
522
  dataType: BUSINESS_TYPE.ONLINE,
523
523
  floorExposureInfo: {},
524
524
  floorVideInfo: {},
525
525
  productVideInfo: {},
526
526
  tabsLoadAllDataInfo: {
527
527
  [SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_WELL_CHOSEN]]: false,
528
528
  [SHOP_MENU_ID_NAME[SHOP_MENU_ID_TYPE.CLASSIFY]]: true,
529
529
  },
530
530
  updateShopInfosAllState: false,
531
531
  isVipShop: false,
532
532
  isJdShowNativeImmersivePlayer: false,
533
533
  ...shopConfig,
534
534
  pageScrollTop: 0,
535
535
  pageIdxHeightInfo: {
536
536
  list: [],
537
537
  },
538
538
  shopNavBarHeight: 0,
539
539
  },
540
540
  defaultQueryLogInfo: {
541
541
  sourceType: 'JDshop',
542
542
  sourceValue: '',
543
543
  moduleId: 'none',
544
544
  entrance: 'none',
545
545
  },
546
546
  originQueryInfo: {},
547
547
  sysInfo: {
548
548
  windowWidth: 0,
549
549
  windowHeight: 0,
550
550
  eid: appEid,
551
551
  netWorkType: '4g',
552
552
  jdBottomBarHeight: 0,
553
553
  jdNativeHeaderHeight: 0,
554
554
  },
555
555
  queryInfo: {},
556
556
  shopInfo: {},
557
557
  openAppData: {},
558
558
  public info: CommonInterFace.BaseConfigInfo;
559
559
  public config: {
560
560
  [key: string]: any;
561
561
  };
562
562
  public lazyContainer: CommonInterFace.lazyContainer;
563
563
  public rootEleNode: HTMLElement | null;
564
564
  public miniApplogUtil: CommonInterFace.MiniApplogUtil;
565
565
  public miniAppLogInstance: CommonInterFace.MiniAppLog | null;
566
566
  public checkStatusAndLoginPromise: object | null;
567
567
  public wxAppLoginInstance: CommonInterFace.WxAppLogin;
568
568
  public wxAppBizInstance: CommonInterFace.WxAppUserInfo;
569
569
  public wxAppUserInfoInstance: CommonInterFace.WxAppUserInfo;
570
570
  public wxAppReportManageInstance: CommonInterFace.wxAppReportManage;
571
571
  public wxAppReportGDTInstance: CommonInterFace.WxAppReportGDT;
572
572
  public wxAppNavigatorInstance: CommonInterFace.WxAppNavigator;
573
573
  public wxAppParamsSignInstance: CommonInterFace.wxAppParamsSign;
574
574
  public wxAppFingerReportInstance: CommonInterFace.wxAppParamsSign;
575
575
  public wxAppSubsGuider: CommonInterFace.wxAppParamsSign;
576
576
  public loadJsSdkList: Array<any>;
577
577
  public loadJsSdkListCachePromise: any;
578
578
  public languageJsonData: any | null;
579
579
  public businessWorkerReady: boolean;
580
580
  public jdWorkerReadyPromise: any | null;
581
581
  constructor(opt) {
582
582
  this.info = this._getConfig(opt);
583
583
  this.config = {};
584
584
  this.lazyContainer = {
585
585
  [SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_WELL_CHOSEN]]: {
586
586
  appLazyContainerList: [],
587
587
  appLazyFinishContainerList: [],
588
588
  },
589
589
  [SECTION_HOME_TAB_NAME_TYPE[SECTION_HOME_TAB_TYPE.HOME_PROMOTION]]: {
590
590
  appLazyContainerList: [],
591
591
  appLazyFinishContainerList: [],
592
592
  },
593
593
  };
594
594
  this.loadJsSdkList = [];
595
595
  this.loadJsSdkListCachePromise = {};
596
596
  this.rootEleNode = null;
597
597
  this.miniApplogUtil = MiniAppLogUtil;
598
598
  this.miniAppLogInstance = null;
599
599
  this.checkStatusAndLoginPromise = null;
600
600
  this.wxAppLoginInstance = WXAPP_LOGIN;
601
601
  this.wxAppBizInstance = WXAPP_BIZ;
602
602
  this.wxAppUserInfoInstance = WXAPP_USER_INFO;
603
603
  this.wxAppReportManageInstance = WXAPP_REPORT_MANAGE;
604
604
  this.wxAppReportGDTInstance = WXAPP_REPORT_GDT;
605
605
  this.wxAppNavigatorInstance = WXAPP_NAVIGATOR;
606
606
  this.wxAppParamsSignInstance = WXAPP_PARAMS_SIGN;
607
607
  this.wxAppFingerReportInstance = WXAPP_FINGER_REPORT ? new WXAPP_FINGER_REPORT() : {};
608
608
  this.wxAppSubsGuider = null;
609
609
  this.languageJsonData = langeJsonDataForCn;
610
610
  this.businessWorkerReady = false;
611
611
  this.jdWorkerReadyPromise = Promise.resolve(false);
612
612
  }
613
613
  _getConfig(opt) {
614
614
  return Object.assign({}, DefaultConfig, opt);
615
615
  }
616
616
  loadApiSafeSteadyReayPromise() {
617
617
  return Promise.resolve(true);
618
618
  }
619
619
  loadH5tagReayPromise() {
620
620
  return Promise.resolve(true);
621
621
  }
622
622
 
623
623
  jmfeReayPromise(): Promise<any> {
624
624
  return Promise.reject(false);
625
625
  }
626
626
 
627
627
  taskTimeoutPromise(callBack, timeout = 2000) {
628
628
  return new Promise((resolve) => {
629
629
  setTimeout(() => {
630
630
  const getCallBackRes = typeof callBack === 'function' && callBack();
631
631
  return resolve(getCallBackRes || false);
632
632
  }, timeout);
633
633
  });
634
634
  }
635
635
 
636
636
  updateBusinessDomainAndApi(domain, api) {
637
637
  }
638
638
 
639
639
  getFullScreenHeight(systemInfo) {
640
640
  const { screenHeight, statusBarHeight, isAndroid } = systemInfo;
641
641
  let result = screenHeight;
642
642
  if (statusBarHeight > 20 && isAndroid) {
643
643
  result = screenHeight + statusBarHeight;
644
644
  }
645
645
  return result;
646
646
  }
647
647
 
648
648
  getTabBarHeight(systemInfo) {
649
649
  const { statusBarHeight, isAndroid, isIOS } = systemInfo;
650
650
  let result = 50;
651
651
  if (statusBarHeight > 20) {
652
652
  if (isIOS) {
653
653
  result = 84;
654
654
  } else if (isAndroid) {
655
655
  result = 53;
656
656
  }
657
657
  }
658
658
  return result;
659
659
  }
660
660
 
661
661
  getSystemInfo() {
662
662
  const info: UtilsInterFace.taroGetSystemInfoSyncRes = getSystemInfos() || {};
663
663
  const actualNavBarHeight = (info?.navBarHeight || 0) + (info?.navBarExtendHeight || 0);
664
664
  const headerHeight = actualNavBarHeight + (info?.statusBarHeight || 0);
665
665
  const fullScreenHeight = this.getFullScreenHeight(info);
666
666
  const tabBarHeight = this.getTabBarHeight(info);
667
667
  const safeContentHeight = fullScreenHeight - headerHeight;
668
668
  this.info.sysInfo = {
669
669
  ...this.info.sysInfo,
670
670
  ...info,
671
671
  actualNavBarHeight,
672
672
  headerHeight,
673
673
  fullScreenHeight,
674
674
  tabBarHeight,
675
675
  safeContentHeight,
676
676
  languageType: languageNowType,
677
677
  };
678
678
  this.getEid().then((res: { eid: string }) => {
679
679
  res && res.eid && (this.info.sysInfo['eid'] = res.eid);
680
680
  });
681
681
  if (this.info.sysInfo['hostVersionName']) {
682
682
  this.info.sysInfo['hostAppVersion'] = Number(
683
683
  this.info.sysInfo['hostVersionName'].replace(/\./g, ''),
684
684
  );
685
685
  }
686
686
  this.info.sysInfo['wifiVideoAutoPlay'] = false;
687
687
  this.getNetWorkType();
688
688
  }
689
689
  async updateMPaasConfig() {}
690
690
 
691
691
  getNetWorkType() {
692
692
  Taro.getNetworkType().then((getRes) => {
693
693
  getRes && getRes.networkType && (this.info.sysInfo['netWorkType'] = getRes.networkType);
694
694
  });
695
695
  }
696
696
  getAPPUseStraightCorner() {
697
697
  return Promise.resolve(false);
698
698
  }
699
699
 
700
700
  checkStatusAndLogin(options = {}) {
701
701
  this.checkStatusAndLoginPromise = new Promise((resolve, reject) => {
702
702
  console.log('微信小程序登录状态及获取cookie状态的promise,之前登录状态', this.info.loginState);
703
703
  this.toLogin(options)
704
704
  .then((res) => {
705
705
  console.log('微信小程序登录状态结果,成功', res);
706
706
  this.info.loginState = true;
707
707
  resolve(res);
708
708
  })
709
709
  .catch((err) => {
710
710
  console.log('微信小程序登录异常状态结果', err);
711
711
  this.doLogin(options)
712
712
  .then((res2) => {
713
713
  console.log('微信小程序wxDoLogin强制登陆成功:', res2);
714
714
  this.info.loginState = true;
715
715
  resolve(res2);
716
716
  })
717
717
  .catch((err2) => {
718
718
  console.log('微信小程序wxDoLogin强制登陆失败:', err2);
719
719
  this.checkStatusAndLoginPromise = null;
720
720
  reject(err2);
721
721
  });
722
722
  });
723
723
  });
724
724
  return this.checkStatusAndLoginPromise;
725
725
  }
726
726
 
727
727
  checkJdStatusAndLogin(options) {
728
728
  return this.checkStatusAndLogin(options);
729
729
  }
730
730
 
731
731
 
732
732
  doLoginForJdPin(options = {}) {
733
733
  return this.doLogin(options);
734
734
  }
735
735
 
736
736
  getEid() {
737
737
  if (typeof jd !== 'undefined' && jd.getEid) {
738
738
  return new Promise((resolve, reject) => {
739
739
  jd.getEid({
740
740
  success: (res: { eid: string }) => {
741
741
  resolve(res);
742
742
  },
743
743
  fail: (err: any) => {
744
744
  reject(err);
745
745
  },
746
746
  });
747
747
  });
748
748
  } else {
749
749
  return Promise.resolve(false);
750
750
  }
751
751
  }
752
752
 
753
753
  toLogin(options = {}): Promise<any> {
754
754
  return this.wxAppLoginInstance
755
755
  .getLoginPromise({
756
756
  mode: 'silent',
757
757
  loginColor: {
758
758
  biz: WXAPP_BIZ_KEY,
759
759
  dpin: 0,
760
760
  },
761
761
  ...options,
762
762
  })
763
763
  .then((res) => {
764
764
  console.log('微信app登录返回信息,微信侧返回code为0表示成功', res);
765
765
  setTimeout(() => {
766
766
  console.log(
767
767
  '微信app登录返回成功后,后台会写入cookie,有延迟,这里延迟500ms去获取最新cookie',
768
768
  );
769
769
  this.getLoginCookie(`${Date.now()}`);
770
770
  }, 500);
771
771
  })
772
772
  .catch((err) => {
773
773
  console.log('微信app登录异常返回信息,也获取cookie', err);
774
774
  this.getLoginCookie(`${Date.now()}`);
775
775
  });
776
776
  }
777
777
 
778
778
  doLogin(options) {
779
779
  console.log('触发松果小程序 doLogin() new new');
780
780
  return new Promise((resolve, reject) => {
781
781
  jd.login({
782
782
  success: (res) => {
783
783
  if (res.code) {
784
784
  console.log('[common]松果小程序登录成功', res.code);
785
785
  jd.redirectTo({
786
786
  url: `/pages/shopx/pages/index/index?${objectToUrlEncode({
787
787
  ...this.info.originQueryInfo,
788
788
  })}`,
789
789
  });
790
790
  resolve(res);
791
791
  } else {
792
792
  console.error('[common]松果小程序登录失败', res.errMsg);
793
793
  reject();
794
794
  }
795
795
  },
796
796
  fail: (res) => {
797
797
  console.error('[common]松果小程序登录失败', res.errMsg);
798
798
  reject();
799
799
  },
800
800
  });
801
801
  });
802
802
  }
803
803
 
804
804
  getLoginCookie(updateKey = 'wxapp') {
805
805
  return new Promise((resolve) => {
806
806
  console.log('开始获取更新wxapp中的cookie信息', updateKey);
807
807
  if (
808
808
  this.config.wqCookie &&
809
809
  this.config.wqCookieStr &&
810
810
  this.config.getWqCookieKey === updateKey
811
811
  ) {
812
812
  console.log('已有存储wxapp中的cookie信息,直接返回', this.config);
813
813
  resolve({
814
814
  wqCookie: this.config.wqCookie,
815
815
  wqCookieStr: this.config.wqCookieStr,
816
816
  });
817
817
  } else {
818
818
  if (isPublishToWxapp) {
819
819
  const getWxappCookieObj = getTaroStorageKeyValue('cookies') || null;
820
820
  if (getWxappCookieObj) {
821
821
  const getCookieObj = getWxappCookieObj['_data'];
822
822
  const { wqCookie, wqCookieStr } = getWxAppCookieStr(getCookieObj);
823
823
  const { pin = '', visitkey = '-1', wq_unionid = '', wxapp_openid = '' } = wqCookie;
824
824
  this.info.loginState = true;
825
825
  this.info.userInfo.wqCookie = wqCookieStr;
826
826
  this.info.userInfo.wqVisitkey = visitkey;
827
827
  console.log('获取用户完整cookie信息', getCookieObj);
828
828
  const getUserAddress = this.wxAppUserInfoInstance.getAddress();
829
829
  console.log('获取微信用户地址信息', getUserAddress);
830
830
  if (getUserAddress) {
831
831
  this.info.pageInfo.address = getUserAddress?.areaId;
832
832
  this.info.pageInfo.addressCommaStr = this.info.pageInfo.address
833
833
  ? this.info.pageInfo.address.replace(/_/g, ',')
834
834
  : '';
835
835
  this.info.pageInfo.un_area = this.info.pageInfo.address;
836
836
  Taro.eventCenter.trigger(TaroEventType.USER_AREA_UPDATE, {
837
837
  area: this.info.pageInfo.address,
838
838
  });
839
839
  }
840
840
  if (this.miniAppLogInstance) {
841
841
  this.miniAppLogInstance.set({
842
842
  account: pin,
843
843
  unionid: wq_unionid,
844
844
  openid: wxapp_openid,
845
845
  });
846
846
  }
847
847
  this.config.wqCookie = wqCookie;
848
848
  this.config.wqCookieStr = wqCookieStr;
849
849
  this.config.getWqCookieKey = updateKey;
850
850
  console.log('解析wxapp中的cookie信息成功,返回后存储', this.config);
851
851
  resolve({
852
852
  wqCookie,
853
853
  wqCookieStr,
854
854
  });
855
855
  } else {
856
856
  console.log('解析wxapp中的cookie信息异常,返回异常结果', this.config);
857
857
  resolve({
858
858
  wqCookie: false,
859
859
  wqCookieStr: false,
860
860
  });
861
861
  }
862
862
  } else {
863
863
  resolve({
864
864
  wqCookie: false,
865
865
  wqCookieStr: false,
866
866
  });
867
867
  }
868
868
  }
869
869
  });
870
870
  }
871
871
 
872
872
 
873
873
  checkLoginStatus() {
874
874
  return this.getLoginCookie();
875
875
  }
876
876
 
877
877
  getAddressCachePromise() {
878
878
  return Promise.reject('该方法只在APP内适用');
879
879
  }
880
880
 
881
881
  getLbsAddressCachePromise() {
882
882
  return Promise.resolve({
883
883
  status: '-1005',
884
884
  msg: '暂未实现,获取失败',
885
885
  });
886
886
  }
887
887
 
888
888
  getDynamicConfig(key: string) {
889
889
  console.warn('调用松果小程序的 getDynamicConfig(),注意,此方法还未实现!');
890
890
  return null;
891
891
  }
892
892
 
893
893
  updatePageAndLogInfo(updateQuery = {}) {
894
894
  const createUpdateQueryInfo: {
895
895
  query: {
896
896
  shopId?: string | number;
897
897
  venderId?: string | number;
898
898
  };
899
899
  updateShopInfoState: boolean;
900
900
  } = Object.assign(
901
901
  {},
902
902
  {
903
903
  query: {},
904
904
  updateShopInfoState: false,
905
905
  },
906
906
  updateQuery,
907
907
  );
908
908
  console.log(
909
909
  '获取当前下发的店铺查询参数',
910
910
  updateQuery,
911
911
  '获取之前保存的shopInfo店铺查询参数',
912
912
  this.info?.shopInfo,
913
913
  );
914
914
  const { query, updateShopInfoState } = createUpdateQueryInfo;
915
915
  const { shopId, venderId } = query;
916
916
  if (updateShopInfoState) {
917
917
  this.info.queryInfo = {
918
918
  ...this.info.queryInfo,
919
919
  ...query,
920
920
  };
921
921
  if (shopId && venderId) {
922
922
  this.info.shopInfo = {
923
923
  shopId: `${shopId}`,
924
924
  venderId: `${venderId}`,
925
925
  };
926
926
  }
927
927
  } else {
928
928
  this.info.queryInfo = {
929
929
  ...query,
930
930
  };
931
931
  this.info.originQueryInfo = {
932
932
  ...query,
933
933
  };
934
934
  if (
935
935
  this.info.shopInfo?.shopId &&
936
936
  this.info.shopInfo?.venderId &&
937
937
  (this.info.shopInfo.shopId == shopId || this.info.shopInfo.venderId == venderId)
938
938
  ) {
939
939
  this.info.queryInfo.shopId = this.info.shopInfo.shopId;
940
940
  this.info.queryInfo.venderId = this.info.shopInfo.venderId;
941
941
  console.log(
942
942
  '当前存储的店铺shopId和venderId与下发的店铺信息shopId或者venderId为同一个,补充shopId或者venderId查询参数',
943
943
  this.info.queryInfo,
944
944
  );
945
945
  }
946
946
  }
947
947
  this.info.queryInfo['shopId'] &&
948
948
  (this.info.queryInfo['shopId'] = `${this.info.queryInfo['shopId']}`);
949
949
  this.info.queryInfo['venderId'] &&
950
950
  (this.info.queryInfo['venderId'] = `${this.info.queryInfo['venderId']}`);
951
951
  console.log(
952
952
  'weapp===获取店铺下发查询参数\n',
953
953
  query,
954
954
  '\n获取店铺最后查询参数\n',
955
955
  this.info.queryInfo,
956
956
  '\n是否为更新店铺状态\n',
957
957
  updateShopInfoState,
958
958
  );
959
959
  }
960
960
  renderNextTickLoadSdk() {
961
961
  console.warn('暂未实现 index.jd.ts');
962
962
  }
963
963
  loadOtherSdk() {
964
964
  console.warn('暂未实现 index.jd.ts');
965
965
  }
966
966
  loadItemSdkPromise(jsInfo = {}) {
967
967
  console.warn('暂未实现 index.jd.ts');
968
968
  }
969
969
  createLanguageProimse() {
970
970
  return Promise.reject({
971
971
  msg: '暂未实现',
972
972
  });
973
973
  }