import store from '../store';
|
import {
|
checkLogin
|
} from './login';
|
import {
|
login,
|
thirdLogin,
|
thirdUpdate
|
} from '../api/public';
|
import {
|
getUserInfo,
|
getUserBean
|
} from '../api/user';
|
import Cache from '../utils/cache';
|
import {
|
STATE_R_KEY,
|
USER_INFO,
|
EXPIRES_TIME,
|
LOGIN_STATUS
|
} from './../config/cache';
|
class Routine {
|
|
constructor() {
|
this.scopeUserInfo = 'scope.userInfo';
|
}
|
|
async getUserCode() {
|
let isAuth = await this.isAuth(),
|
code = '';
|
if (isAuth)
|
code = await this.getCode();
|
return code;
|
}
|
|
/**
|
* 获取用户信息
|
*/
|
getUserProfile() {
|
let that = this,
|
code = this.getUserCode();
|
return new Promise((resolve, reject) => {
|
uni.getUserProfile({
|
lang: 'zh_CN',
|
desc: '用于完善会员资料', // 声明获取用户个人信息后的用途,后续会展示在弹窗中,请谨慎填写
|
success(user) {
|
if (code) user.code = code;
|
resolve({
|
userInfo: user,
|
islogin: false
|
});
|
},
|
fail(res) {
|
reject(res);
|
}
|
})
|
})
|
}
|
|
/**
|
* 获取用户信息
|
*/
|
authorize() {
|
let that = this;
|
return new Promise((resolve, reject) => {
|
if (checkLogin())
|
return resolve({
|
userInfo: Cache.get(USER_INFO, true),
|
islogin: true,
|
});
|
uni.authorize({
|
scope: that.scopeUserInfo,
|
success() {
|
resolve({
|
islogin: false
|
});
|
},
|
fail(res) {
|
reject(res);
|
}
|
})
|
})
|
}
|
|
async getCode() {
|
let provider = await this.getProvider();
|
return new Promise((resolve, reject) => {
|
uni.login({
|
provider: provider,
|
success(res) {
|
if (res.code) Cache.set(STATE_R_KEY, res.code, 10800);
|
return resolve(res.code);
|
},
|
fail(res) {
|
return reject(res);
|
}
|
})
|
})
|
}
|
|
/**
|
* 获取服务供应商
|
*/
|
getProvider() {
|
return new Promise((resolve, reject) => {
|
uni.getProvider({
|
service: 'oauth',
|
success(res) {
|
resolve(res.provider);
|
},
|
fail() {
|
resolve(false);
|
}
|
});
|
});
|
}
|
|
/**
|
* 是否授权
|
*/
|
isAuth() {
|
let that = this;
|
return new Promise((resolve, reject) => {
|
uni.getSetting({
|
success(res) {
|
if (!res.authSetting[that.scopeUserInfo]) {
|
resolve(true)
|
} else {
|
resolve(true);
|
}
|
},
|
fail() {
|
resolve(false);
|
}
|
});
|
});
|
}
|
/**
|
* 小程序登录
|
*/
|
authThirdUserInfo(data) {
|
let that = this;
|
return new Promise((resolve, reject) => {
|
thirdLogin(data).then(res => {
|
store.commit('UPDATE_LOGINSTATUS', res.data);
|
return resolve(res);
|
}).catch(res => {
|
return reject(res);
|
})
|
})
|
}
|
authThirdUpdate(data) {
|
let that = this;
|
return new Promise((resolve, reject) => {
|
thirdUpdate(data).then(res => {
|
return resolve(res);
|
}).catch(res => {
|
return reject(res);
|
})
|
})
|
}
|
authUserInfo(code, data) {
|
let that = this;
|
return new Promise((resolve, reject) => {
|
login(code, data).then(res => {
|
store.commit('UPDATE_LOGINSTATUS', res.data);
|
return resolve(res);
|
}).catch(res => {
|
return reject(res);
|
})
|
})
|
}
|
async getLastUserInfo() {
|
try {
|
const res = await getUserInfo();
|
const userInfo = res.data;
|
userInfo.isReady = true;
|
|
store.commit("UPDATE_USERINFO", userInfo);
|
uni.$emit('updateUserInfo', {});
|
console.log("User info updated:", userInfo);
|
return userInfo;
|
} catch (error) {
|
let app=getApp();
|
if (app) {
|
uni.$emit("showTips", {
|
'title': error,
|
'icon': 'none'
|
});
|
} else {
|
uni.showToast({
|
'title': error,
|
'icon': 'none'
|
})
|
}
|
console.error("获取用户信息失败:", error); // 添加详细错误日志
|
throw error; // 重新抛出错误供调用方处理
|
}
|
}
|
}
|
|
export default new Routine();
|