| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223 | 
							- import { isEmpty } from 'lodash';
 
- import third from '@/sheep/api/third';
 
- import $store from '@/sheep/store';
 
- let sessionId = uni.getStorageSync('sessionId');
 
- let subscribeEventList = [];
 
- // 加载微信小程序
 
- function load() {
 
-   checkUpdate();
 
-   // const sessionStatus = await checkSession();
 
-   // 小程序的接口改动太频繁了 强制每次进入都重新获取
 
-   const sessionStatus = false;
 
-   if (!sessionStatus) {
 
-     getSessionId();
 
-   }
 
-   getSubscribeTemplate();
 
- }
 
- // 微信小程序授权登陆
 
- const login = async (e) => {
 
-   return new Promise(async (resolve, reject) => {
 
-     if (e.errMsg !== 'getPhoneNumber:ok') {
 
-       resolve(false);
 
-       return;
 
-     }
 
-     const { error } = await third.wechat.login({
 
-       platform: 'miniProgram',
 
-       shareInfo: uni.getStorageSync('shareLog') || {},
 
-       payload: encodeURIComponent(
 
-         JSON.stringify({
 
-           sessionId: uni.getStorageSync('sessionId'),
 
-           code: e.code,
 
-           iv: e.iv,
 
-           encryptedData: e.encryptedData,
 
-         }),
 
-       ),
 
-     });
 
-     if (error === 0) {
 
-       resolve(true);
 
-     }
 
-     if (error === -1) {
 
-       getSessionId();
 
-     }
 
-     resolve(false);
 
-   });
 
- };
 
- // 微信小程序绑定
 
- const bind = () => {
 
-   return new Promise(async (resolve, reject) => {
 
-     const loginRes = await third.wechat.bind({
 
-       platform: 'miniProgram',
 
-       payload: encodeURIComponent(
 
-         JSON.stringify({
 
-           sessionId: uni.getStorageSync('sessionId'),
 
-         }),
 
-       ),
 
-     });
 
-     if (loginRes.error === -1) {
 
-       getSessionId();
 
-     } else if (loginRes.error === 0) {
 
-       resolve(true);
 
-     } else {
 
-       reject(false);
 
-     }
 
-   });
 
- };
 
- // 微信小程序解除绑定
 
- const unbind = async () => {
 
-   const { error } = await third.wechat.unbind({
 
-     platform: 'miniProgram',
 
-   });
 
-   return Promise.resolve(!error);
 
- };
 
- // 获取最新sessionId
 
- const getSessionId = async () => {
 
-   // 获取code
 
-   let code = '';
 
-   const loginResult = await uni.login();
 
-   if (loginResult.errMsg === 'login:ok') {
 
-     code = loginResult.code;
 
-   } else {
 
-     getSessionId();
 
-     return false;
 
-   }
 
-   const { error, data } = await third.wechat.getSessionId({
 
-     platform: 'miniProgram',
 
-     payload: encodeURIComponent(
 
-       JSON.stringify({
 
-         code,
 
-         auto_login: !!($store('app').platform.auto_login && !$store('user').isLogin),
 
-       }),
 
-     ),
 
-   });
 
-   if (error === 0) {
 
-     uni.setStorageSync('sessionId', data.session_id);
 
-     return true;
 
-   }
 
-   return false;
 
- };
 
- // 检查sessionId是否可用
 
- const checkSession = () => {
 
-   return new Promise((resolve, reject) => {
 
-     if (!sessionId) {
 
-       return resolve(false);
 
-     }
 
-     uni.checkSession({
 
-       success() {
 
-         return resolve(true);
 
-       },
 
-       fail() {
 
-         uni.removeStorageSync('sessionId');
 
-         return resolve(false);
 
-       },
 
-     });
 
-   });
 
- };
 
- // 小程序更新
 
- const checkUpdate = async (silence = true) => {
 
-   if (uni.canIUse('getUpdateManager')) {
 
-     const updateManager = uni.getUpdateManager();
 
-     updateManager.onCheckForUpdate(function (res) {
 
-       // 请求完新版本信息的回调
 
-       if (res.hasUpdate) {
 
-         updateManager.onUpdateReady(function () {
 
-           uni.showModal({
 
-             title: '更新提示',
 
-             content: '新版本已经准备好,是否重启应用?',
 
-             success: function (res) {
 
-               if (res.confirm) {
 
-                 // 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
 
-                 updateManager.applyUpdate();
 
-               }
 
-             },
 
-           });
 
-         });
 
-         updateManager.onUpdateFailed(function () {
 
-           // 新的版本下载失败
 
-           // uni.showModal({
 
-           //   title: '已经有新版本了哟~',
 
-           //   content: '新版本已经上线啦,请您删除当前小程序,重新搜索打开~',
 
-           // });
 
-         });
 
-       } else {
 
-         if (!silence) {
 
-           uni.showModal({
 
-             title: '当前为最新版本',
 
-             showCancel: false,
 
-           });
 
-         }
 
-       }
 
-     });
 
-   }
 
- };
 
- // 绑定用户手机号
 
- const bindUserPhoneNumber = (e) => {
 
-   return new Promise(async (resolve, reject) => {
 
-     const { error } = await third.wechat.bindUserPhoneNumber({
 
-       platform: 'miniProgram',
 
-       payload: encodeURIComponent(
 
-         JSON.stringify({
 
-           code: e.code,
 
-           iv: e.iv,
 
-           encryptedData: e.encryptedData,
 
-         }),
 
-       ),
 
-     });
 
-     if (error === 0) {
 
-       resolve(true);
 
-     }
 
-     resolve(false);
 
-   });
 
- };
 
- // 获取订阅消息模板
 
- async function getSubscribeTemplate() {
 
-   const { error, data } = await third.wechat.subscribeTemplate();
 
-   if (error === 0) {
 
-     subscribeEventList = data;
 
-   }
 
- }
 
- // 订阅消息
 
- function subscribeMessage(event) {
 
-   let tmplIds = [];
 
-   if (typeof event === 'string') {
 
-     tmplIds.push(subscribeEventList[event]);
 
-   }
 
-   if (typeof event === 'object') {
 
-     event.forEach((item) => {
 
-       if (typeof subscribeEventList[item] !== 'undefined') tmplIds.push(subscribeEventList[item]);
 
-     });
 
-   }
 
-   if (tmplIds.length === 0) return;
 
-   uni.requestSubscribeMessage({
 
-     tmplIds,
 
-     fail: (err) => {
 
-       console.log(err);
 
-     },
 
-   });
 
- }
 
- export default {
 
-   load,
 
-   login,
 
-   bind,
 
-   unbind,
 
-   checkUpdate,
 
-   bindUserPhoneNumber,
 
-   subscribeMessage,
 
- };
 
 
  |