Forráskód Böngészése

从未登录状态切换登录时,更新本地用户信息

john.hong 2 éve
szülő
commit
b3a81a95b6
2 módosított fájl, 148 hozzáadás és 157 törlés
  1. 13 154
      src/App.vue
  2. 135 3
      src/utils/index.js

+ 13 - 154
src/App.vue

@@ -23,23 +23,17 @@
   </div>
 </template>
 <script>
-import { createAxiosByinterceptors } from '@/api/request';
-// import Stomp from '@stomp/stompjs';
-import Stomp from '@stomp/stompjs';
 import loginMinix from '@/mixins/login';
-import { Decrypt, Encrypt } from '@/utils/crypto';
-import { getIsMin, getIsWxh5, getUrlParams } from '@/utils/index.js';
-import { Client } from "@stomp/stompjs/esm6/client";
-// import SockJS from '@/utils/sockjs';
-import SockJS from 'sockjs-client';
+import { getIsMin,getIsWxh5,getUrlParams,initEnv,requestInit,wssInit } from '@/utils/index.js';
 import uni from '@/utils/uniHooks';
 import { getAppIdByGroupIdAndMallId } from '@/utils/index.js';
-import sensorsFn from '@/plugins/sensors'
+import sensorsFn from '@/plugins/sensors';
+
 export default {
   mixins: [loginMinix],
   async created() {
-    await this.initEnv();
-    await this.requestInit();
+    await initEnv();
+    await requestInit();
     await this.init();
     // await sensorsFn(); // 埋点初始化
     // 初始化环境变量
@@ -87,11 +81,10 @@ export default {
         if (carList) {
           uni.setStorageSync('carList', JSON.parse(carList));
         }
-
         this.$store.commit('SET_IS_INIT', false);
         window.token = `${window.location.href}`.replace(/.*wx\/(.*)\/.*/g, '$1');
         try {
-          const options = await this.wss();
+          const options = await wssInit();
           this.$store.dispatch('baseInit', {
             options,
             callback: () => {
@@ -110,143 +103,10 @@ export default {
         this.micromessengerInit();
       }
     },
-    wss() {
-      return new Promise((resolve, reject) => {
-        try {
-          // Typical usage with SockJS
-         Stomp.Client.webSocketFactory = function () {
-           return new SockJS(`${this.getUrl()}/hafengWebsocket?token=${window.token}`);
-         };
-          // const socket = new SockJS(`${this.getUrl()}/hafengWebsocket?token=${window.token}`);
-          // window.stompClient = Stomp.over(socket);
-          window.stompClient = Stomp.Client;
-          window.stompClient.debug = null;
-          this.windowSendInit();
-          window.stompClient.connect({}, (frame) => {
-            // 请求 projectId
-            window.toWXSendMsg({
-              type: 'getProjectId',
-              options: {},
-            });
-            window.subscribe('projectId', (options) => {
-              resolve(options);
-            });
-          });
-        } catch (err) {
-          // console.log(err);
-          reject(err);
-          // callback && callback();
-        }
-      });
-    },
-    windowSendInit() {
-      const token = window.token;
-      // console.log(118, token);
-      window.toWXSendMsg = function ({ type = '', funcName = '', options = {} }) {
-        /**
-         * 向小程序端发送消息
-         */
-        if (!type) return;
-        // console.log(259, '微信支付的options', options);
-        window.stompClient.publish(
-          {
-            destination: '/sendToWechat',
-            body: JSON.stringify({
-              token,
-              data: Encrypt(
-                JSON.stringify({
-                  type: type,
-                  funcName,
-                  options,
-                })
-              ),
-            })
-          }
-        );
-      };
-
-      // 主动订阅事件回调
-      window.subscribe = function (type, callback) {
-        const subscribeId = window.stompClient.subscribe('/user/' + token + '/toH5', function (response) {
-          try {
-            let res = {
-              token: '', // 微信小程序端 页面的传递过来的token
-              data: '', // 微信小程序端 页面的传递过来的信息(已加密)
-            };
-            if (response.body) {
-              res = JSON.parse(response.body);
-            }
-            // 检查 微信小程序端 发送过来的信息和token是否与当前页面的 token一致。并且 res.data 携带信息,在解密之后是 json 格式
-            if (res.token && res.token === token && res.data) {
-              const msgJson = JSON.parse(Decrypt(res.data));
-              const reg = new RegExp(type);
-              // 获取 projectId
-              if (reg.test(msgJson.type)) {
-                callback(msgJson.options, subscribeId);
-                subscribeId.unsubscribe();
-                return;
-              }
-            }
-          } catch (err) {
-            console.log('stomp error', err);
-          }
-        });
-      };
-    },
-    initEnv() {
-      const href = window.location.href;
-      console.log('当前页面的url地址  ', href);
-      if (/dev-|8080/.test(href)) {
-        // window.env = 'qa';
-        // window.profileApi = 'https://qa-apim.kerryplus.com/c/api';
-        // window.api = 'qaApi';
-        window.env = 'dev';
-        window.profileApi = 'https://dev-gateway-kip.kerryonvip.com/api';
-        window.api = 'devApi';
-        return;
-      }
-      if (/qa-/.test(href)) {
-        window.env = 'qa';
-        window.api = 'qaApi';
-        window.profileApi = 'https://qa-apim.kerryplus.com/c/api';
-        return;
-      }
-      window.env = 'prod';
-      window.profileApi = 'https://apim.kerryplus.com/c/api';
-      window.api = 'api';
-    },
-    requestInit() {
-      let baseURL = window.profileApi + '/temporary-parking/v1';
-      if (window.location.href.indexOf('tparking.') < 0 ) {
-        baseURL = '/msApi'
-      }
-      window.requestms = createAxiosByinterceptors({
-        // baseURL: `https://dev-kip-service-internal.kerryonvip.com/`,
-        // baseURL: `http://tp.hht.test/`,
-        // baseURL: window.profileApi, // TODO: 微服务发布到DEV环境之后取消注释
-        baseURL
-        // baseURL: `/msApi`,
-      });
-    },
-    // websocket 链接
-    getUrl() {
-      return `https://crm.kerryplus.com/xcrm-api`; // TODO: 临时更改websocket域名为prod
-      // 如果 kerry+ 这边的访问环境是 sl 或者 lt,需要把 wss 指向 qa 环境。
-      const href = `${window.location.href}`;
-      if (/dev-|8080/.test(href)) {
-        return 'https://qa-crm-kpl.kerryprops.com.cn/xcrm-api';
-      }
-      if (/qa-/.test(href)) {
-        return 'https://qa-crm-kpl.kerryprops.com.cn/xcrm-api';
-      }
-      // return 'https://qa-crm-kpl.kerryprops.com.cn/xcrm-api';
-      return `https://crm.kerryplus.com/xcrm-api`;
-    },
     micromessengerInit() {
       this.$store.commit('SET_IS_INIT', false);
       let path = '';
       let [groupId, mallId] = window.location.pathname.split('/').filter((elm) => elm);
-      console.log(265, groupId, mallId);
       // return;
       // 如果groupId 是 tparking
       if (groupId === 'tparking') {
@@ -270,7 +130,6 @@ export default {
       const openid = uni.getStorageSync('openid');
 
       const query = getUrlParams();
-      console.log(284, query, groupId, mallId);
       // return;
       // 设置openid
       this.$nextTick(() => {
@@ -311,16 +170,16 @@ export default {
     },
     // 无感积分相关
     async wxEasyPointsCommitStatusInit() {
-      return
+      return;
       this.$refs.wxPointsCommit.open();
       // 判断用户是否登陆
       if (uni.getStorageSync('openid') && uni.getStorageSync('member') && uni.getStorageSync('member') !== {}) {
-				const easyPointsCommitStatus = await getWxEasyPointsCommitStatus()
-				if (easyPointsCommitStatus) {
-					this.$refs.wxPointsCommit.open();
-				}
-			}
-    }
+        const easyPointsCommitStatus = await getWxEasyPointsCommitStatus();
+        if (easyPointsCommitStatus) {
+          this.$refs.wxPointsCommit.open();
+        }
+      }
+    },
   },
 };
 </script>

+ 135 - 3
src/utils/index.js

@@ -1,6 +1,10 @@
+import { createAxiosByinterceptors } from '@/api/request';
+import Stomp from "@/lib/stompjs";
+import { Decrypt,Encrypt } from "@/utils/crypto";
+import SockJS from "@/utils/sockjs";
 import qs from 'qs';
 import { lbsDictionary } from '@/common/js/BaseDictionary';
-import uni from './uniHooks'
+import uni from './uniHooks';
 
 export function getMobileOperatingSystem() {
   // #ifdef H5
@@ -158,6 +162,134 @@ export function wxToLoginCallback(path, callback) {
   }
   // 如果是在微信公众号环境运行的话
   /*if ( getIsWxh5() ) {
-    return
-  }*/
+   return
+   }*/
+}
+
+export function initEnv() {
+  const href = window.location.href;
+  console.log('当前页面的url地址  ', href);
+  if (/dev-|8080/.test(href)) {
+    // window.env = 'qa';
+    // window.profileApi = 'https://qa-apim.kerryplus.com/c/api';
+    // window.api = 'qaApi';
+    window.env = 'dev';
+    window.profileApi = 'https://dev-gateway-kip.kerryonvip.com/api';
+    window.api = 'devApi';
+    return;
+  }
+  if (/qa-/.test(href)) {
+    window.env = 'qa';
+    window.api = 'qaApi';
+    window.profileApi = 'https://qa-apim.kerryplus.com/c/api';
+    return;
+  }
+  window.env = 'prod';
+  window.profileApi = 'https://apim.kerryplus.com/c/api';
+  window.api = 'api';
+}
+
+export function requestInit() {
+  let baseURL = window.profileApi + '/temporary-parking/v1';
+  if (window.location.href.indexOf('tparking.') < 0) {
+    baseURL = '/msApi';
+  }
+  window.requestms = createAxiosByinterceptors({
+    // baseURL: `https://dev-kip-service-internal.kerryonvip.com/`,
+    // baseURL: `http://tp.hht.test/`,
+    // baseURL: window.profileApi, // TODO: 微服务发布到DEV环境之后取消注释
+    baseURL,
+    // baseURL: `/msApi`,
+  });
+}
+
+// websocket 链接
+export function getUrl() {
+  return `https://crm.kerryplus.com/xcrm-api`; // TODO: 临时更改websocket域名为prod
+  // 如果 kerry+ 这边的访问环境是 sl 或者 lt,需要把 wss 指向 qa 环境。
+  const href = `${window.location.href}`;
+  if (/dev-|8080/.test(href)) {
+    return 'https://qa-crm-kpl.kerryprops.com.cn/xcrm-api';
+  }
+  if (/qa-/.test(href)) {
+    return 'https://qa-crm-kpl.kerryprops.com.cn/xcrm-api';
+  }
+  // return 'https://qa-crm-kpl.kerryprops.com.cn/xcrm-api';
+  return `https://crm.kerryplus.com/xcrm-api`;
+}
+
+export function windowSendInit() {
+  const token = window.token;
+  window.toWXSendMsg = function ({ type = '', funcName = '', options = {} }) {
+    /**
+     * 向小程序端发送消息
+     */
+    if (!type) return;
+    window.stompClient.send(
+      '/sendToWechat',
+      {},
+      JSON.stringify({
+        token,
+        data: Encrypt(
+          JSON.stringify({
+            type: type,
+            funcName,
+            options,
+          })
+        ),
+      })
+    );
+  };
+
+  // 主动订阅事件回调
+  window.subscribe = function (type, callback) {
+    const subscribeId = window.stompClient.subscribe('/user/' + token + '/toH5', function (response) {
+      try {
+        let res = {
+          token: '', // 微信小程序端 页面的传递过来的token
+          data: '', // 微信小程序端 页面的传递过来的信息(已加密)
+        };
+        if (response.body) {
+          res = JSON.parse(response.body);
+        }
+        // 检查 微信小程序端 发送过来的信息和token是否与当前页面的 token一致。并且 res.data 携带信息,在解密之后是 json 格式
+        if (res.token && res.token === token && res.data) {
+          const msgJson = JSON.parse(Decrypt(res.data));
+          const reg = new RegExp(type);
+          // 获取 projectId
+          if (reg.test(msgJson.type)) {
+            callback(msgJson.options, subscribeId);
+            subscribeId.unsubscribe();
+            return;
+          }
+        }
+      } catch (err) {
+        console.log('stomp error', err);
+      }
+    });
+  };
+}
+
+
+export function wssInit() {
+  return new Promise((resolve, reject) => {
+    try {
+      const socket = new SockJS(`${getUrl()}/hafengWebsocket?token=${window.token}`);
+      window.stompClient = Stomp.over(socket);
+      window.stompClient.debug = null;
+      windowSendInit();
+      window.stompClient.connect({}, (frame) => {
+        // 请求 projectId
+        window.toWXSendMsg({
+          type: 'getProjectId',
+          options: {},
+        });
+        window.subscribe('projectId', (options) => {
+          resolve(options);
+        });
+      });
+    } catch (err) {
+      reject(err);
+    }
+  });
 }