|
@@ -1,39 +1,8 @@
|
|
|
import { getUserInfo, setWxAuthUserInfo, getThirdInfo, createAccount, changePhone } from '@/api/user.js';
|
|
|
import store from '@/store';
|
|
|
import config from '@/config';
|
|
|
-import { login } from '@/api/user.js';
|
|
|
-import { getAppId } from '@/utils/index';
|
|
|
-
|
|
|
-// 获取用户数据
|
|
|
-function getUserData() {
|
|
|
- return new Promise((resolve, reject) => {
|
|
|
- Promise.all([getUserInfo(), getThirdInfo()]).then(([userInfoRes, thirdInfores]) => {
|
|
|
- let userInfo = userInfoRes.data || {};
|
|
|
- let thirdInfo = thirdInfores.data || {};
|
|
|
- let cachedInfo = wx.getStorageSync('UserInfo');
|
|
|
- userInfo = { ...cachedInfo, ...userInfo, ...thirdInfo };
|
|
|
- userInfo.userName = userInfo.userName || '';
|
|
|
- // test 用户身份
|
|
|
- // userInfo.roles = ['tenant.admin', 'operator', 'owner'];
|
|
|
- // userInfo.phone = '';wxLogin
|
|
|
- // userInfo.nickName = '';
|
|
|
- // userInfo.userName = ''
|
|
|
- userInfo = addRolesInfoToUserInfo(userInfo);
|
|
|
- if (!userInfo.userName) {
|
|
|
- userInfo.defaultUserName = 'Hello';
|
|
|
- }
|
|
|
- // todo 模拟银泰配置 接口增加buildingLogo
|
|
|
- if (config.projectName === 'yintai') {
|
|
|
- userInfo.buildingLogo = `${config.h5StaticPath}/page-yintai/project-logo.png`;
|
|
|
- }
|
|
|
- // userInfo.companyId = 'c68dcccd57984277ab7736f2d257cd0c'
|
|
|
- store.commit('setUserInfo', userInfo);
|
|
|
- resolve(userInfo);
|
|
|
- }).catch((res) => {
|
|
|
- reject(res);
|
|
|
- })
|
|
|
- })
|
|
|
-}
|
|
|
+import { login, getCompanyByPhone, refreshToken } from '@/api/user.js';
|
|
|
+import { getAppId, getTimeStamp } from '@/utils/index';
|
|
|
|
|
|
// 检查登录
|
|
|
function checkLogin(needGetetUserInfo = true) {
|
|
@@ -51,9 +20,10 @@ function checkHasUserInfo() {
|
|
|
if (userInfo && JSON.stringify(userInfo) !== '{}') {
|
|
|
return Promise.resolve(userInfo);
|
|
|
} else {
|
|
|
- return checkLogin(false).then(() => {
|
|
|
- return getUserData();
|
|
|
- })
|
|
|
+ // return checkLogin(false).then(() => {
|
|
|
+ // return getUserData();
|
|
|
+ // })
|
|
|
+ wxLogin();
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -119,8 +89,9 @@ function setUserInfoByAuth() {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
-// 检查用户是否注册过小程序及绑定过租户
|
|
|
-function checkRegist() {
|
|
|
+// 登录
|
|
|
+function wxLogin(type) {
|
|
|
+ // type=1 如果type未激活和作废不需要跳转到登录页面
|
|
|
return new Promise((resolve, reject) => {
|
|
|
wx.login({
|
|
|
success(wxLoginRes) {
|
|
@@ -134,6 +105,24 @@ function checkRegist() {
|
|
|
login(params).then(res => {
|
|
|
if (res.result == 'success') {
|
|
|
let data = res.data || []
|
|
|
+ let tokenInfo = {
|
|
|
+ expireTime: data.expireTime,
|
|
|
+ startTime: data.startTime,
|
|
|
+ refreshTokenExpireTime: data.refreshTokenExpireTime,
|
|
|
+ refreshToken: data.refreshToken
|
|
|
+ };
|
|
|
+ store.commit('setToken', data.token);
|
|
|
+ store.commit('setActivated', data.isActivated);
|
|
|
+ store.commit('setTokenInfo', tokenInfo);
|
|
|
+ if (data.isActivated && data.isActivated == 1) {
|
|
|
+ store.commit('setUserInfo', data.tokenUser);
|
|
|
+ store.commit('setProjectId', data.tokenUser.projectId);
|
|
|
+ } else {
|
|
|
+ if (!type) {
|
|
|
+ wx.redirectTo({ url: '/pages/index' });
|
|
|
+ }
|
|
|
+ store.commit('setUserInfo', {});
|
|
|
+ }
|
|
|
resolve(data)
|
|
|
} else {
|
|
|
reject('login接口返回fail');
|
|
@@ -160,55 +149,117 @@ function checkRegist() {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
-// 登录
|
|
|
-function wxLogin() {
|
|
|
- store.commit('setTokenIsValid', false);
|
|
|
- store.commit('setToken', '');
|
|
|
+// 获取租户信息
|
|
|
+function getCompanyDataByPhone() {
|
|
|
return new Promise((resolve, reject) => {
|
|
|
- wx.login({
|
|
|
- success(wxLoginRes) {
|
|
|
- const jsCode = wxLoginRes.code;
|
|
|
- const appId = wx.getAccountInfoSync().miniProgram.appId;
|
|
|
- if (jsCode) {
|
|
|
- let params = {
|
|
|
- "appId": appId,
|
|
|
- "wxCode": jsCode
|
|
|
- }
|
|
|
- } else {
|
|
|
- wx.hideLoading();
|
|
|
- wx.showToast({
|
|
|
- title: `网络异常, 请稍后重试`,
|
|
|
- icon: 'none',
|
|
|
- duration: 5e3
|
|
|
- });
|
|
|
- reject('wx.login接口返回code为空');
|
|
|
- }
|
|
|
- },
|
|
|
- fail(res) {
|
|
|
- reject(res);
|
|
|
- wx.showToast({
|
|
|
- title: `网络异常, 请稍后重试`,
|
|
|
- icon: 'none',
|
|
|
- duration: 5e3
|
|
|
- });
|
|
|
- }
|
|
|
- });
|
|
|
+ let userPhone = wx.getStorageSync('userPhone');
|
|
|
+ let params = {
|
|
|
+ phone: userPhone
|
|
|
+ }
|
|
|
+ if (userPhone) {
|
|
|
+ getCompanyByPhone(params).then(res => {
|
|
|
+ let data = res.data || []
|
|
|
+ resolve(data)
|
|
|
+ }).catch(() => {
|
|
|
+ reject({
|
|
|
+ mesg: '获取租户数据异常'
|
|
|
+ })
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ reject({
|
|
|
+ mesg: '无法获取手机号信息,跳转到首页'
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+// 登录续约
|
|
|
+function refreshTokenPage() {
|
|
|
+ refreshToken().then(res => {
|
|
|
+ if (res.result == 'success') {
|
|
|
+ let data = res.data || []
|
|
|
+ let tokenInfo = {
|
|
|
+ expireTime: data.expireTime,
|
|
|
+ startTime: data.startTime,
|
|
|
+ refreshTokenExpireTime: data.refreshTokenExpireTime,
|
|
|
+ refreshToken: data.refreshToken
|
|
|
+ };
|
|
|
+ store.commit('setToken', data.token);
|
|
|
+ store.commit('setActivated', data.isActivated);
|
|
|
+ store.commit('setTokenInfo', tokenInfo);
|
|
|
+ if (data.isActivated && data.isActivated == 1) {
|
|
|
+ store.commit('setUserInfo', data.tokenUser);
|
|
|
+ } else {
|
|
|
+ wx.redirectTo({ url: '/pages/index' });
|
|
|
+ store.commit('setUserInfo', {});
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }).catch(() => {
|
|
|
+ wxLogin()
|
|
|
+ })
|
|
|
+}
|
|
|
+// 检查是否登录过以及过期
|
|
|
+function checkLoginNew() {
|
|
|
+ let token = store.state.user.token;
|
|
|
+ if (!token) {
|
|
|
+ return wxLogin();
|
|
|
+ } else {
|
|
|
+ let flag = checkTokenIsValid()
|
|
|
+ if (flag == 1) {
|
|
|
+ refreshTokenPage(); // 续约
|
|
|
+ } else if (flag == 2) { // 重新登录
|
|
|
+ wxLogin();
|
|
|
+ } else if (flag == 3) { // 后续补定时器定时续约逻辑
|
|
|
+
|
|
|
+ }
|
|
|
+ return Promise.resolve();
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// 判断token是否过期
|
|
|
+function checkTokenIsValid() {
|
|
|
+ let flag = 1
|
|
|
+ let tokenInfo = store.state.user.tokenInfo;
|
|
|
+ let expireTime = tokenInfo.expireTime;
|
|
|
+ let refreshToken = tokenInfo.refreshToken;
|
|
|
+ let nowtime = getTimeStamp();
|
|
|
+ if (expireTime && expireTime < nowtime && refreshToken >= nowtime) { // 过期可续约
|
|
|
+ flag = 1
|
|
|
+ } else if (expireTime && expireTime >= nowtime) { // 没过期
|
|
|
+ flag = 3
|
|
|
+ }
|
|
|
+ else { // 需要重新登录
|
|
|
+ flag = 2
|
|
|
+ }
|
|
|
+ return flag;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
// 本地保存用户头像
|
|
|
function setAvatar(avatar) {
|
|
|
wx.setStorageSync('avatarBase64', avatar);
|
|
|
}
|
|
|
+// 获取头像
|
|
|
function getAvatar() {
|
|
|
- wx.getStorageSync('avatarBase64');
|
|
|
+ return wx.getStorageSync('avatarBase64');
|
|
|
+}
|
|
|
+
|
|
|
+// 清楚数据
|
|
|
+function clearAvatar() {
|
|
|
+ wx.removeStorage('avatarBase64');
|
|
|
}
|
|
|
|
|
|
|
|
|
export {
|
|
|
checkHasUserInfo,
|
|
|
- checkRegist,
|
|
|
+ wxLogin,
|
|
|
setAvatar,
|
|
|
getAvatar,
|
|
|
+ checkLoginNew,
|
|
|
+ checkTokenIsValid,
|
|
|
+ getCompanyDataByPhone,
|
|
|
setUserInfoByAuth
|
|
|
}
|