@conecli/cone-render 0.9.1-shop2.38 → 0.9.1-shop2.39

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