login.js 3.77 KB
import request from './request'
import * as api from '@/common/api.js';

const accountInfo = uni.getAccountInfoSync()
const appId = accountInfo.miniProgram.appId;


function wxLogin() {
	return new Promise((resolve, reject) => {
		uni.login({
			provider: 'weixin',
			success: (res) => {
				// console.log(res.code);
				resolve(res)
			},
			fail: (res) => {
				reject(res)
			}
		})
	})
}

function pcLogin(code) {
	if (code) {
		return pcLoginByCode(code)
	} else {
		const currUser = uni.getStorageSync('currUser') || {}
		if (currUser.openId) {
			return pcLoginByOpenId(currUser.openId);
		} else {
			return wxLogin().then((loginRes) => {
				return pcLoginByCode(loginRes.code)
			})
		}
	}
}

function repeatLogin() {
	console.log('重新登录')
	return wxLogin().then((loginRes) => {
		return pcLoginByCode(loginRes.code)
	})
}

function pcLoginByOpenId(openId) {
	return request({
		url: "/system/wx/loginByOpenId",
		method: "POST",
		params: {
			appId: appId,
			openId: openId
		}
	}).then((res) => {
		let user = res.data;
		// console.log("openId " + openId, user)

		uni.setStorageSync('token', 'Bearer ' + user.token);
		uni.setStorageSync('currUser', user);
		return user;
	}).catch(() => {
		uni.removeStorageSync('currUser')
	})
}

function pcLoginByCode(code) {
	return request({
		// url: "/weixin/api/login",
		url: "/xcxLogin",
		method: "POST",
		params: {
			appId: appId,
			jsCode: code
		}
	}).then((res) => {
		uni.setStorageSync('token', 'Bearer ' + res.data.token)
		uni.setStorageSync('isRegister', res.data.isRegister)
		console.log(uni.getStorageSync('isRegister'))
	}).then(getCurrUser)
	.catch((err) => {
		uni.removeStorageSync('currUser')
	})
}

function getCurrUser(isAuto) {
	let token = uni.getStorageSync('token');
	if (token) {
		return request({
			url: "/getInfo",
			method: "GET",
			opts: {
				isAuto: isAuto
			}
		}).then((res) => {
			let user = res.data.user;
			uni.setStorageSync('currUser', user);
			uni.setStorageSync('score', res.data.score);
			return user
		})
	} else {
		return Promise.reject()
	}
}

function getWxUser() {
	return new Promise((resolve, reject) => {
		const currUser = uni.getStorageSync('currUser');
		uni.getUserProfile({
			desc: '用于完善用户信息',
			success: function(infoRes) {
				console.log(infoRes)

				request({
					url: `/system/wx/updateWxUser`,
					method: "POST",
					params: {
						appId: appId,
						userId: currUser.id,
						encryptedData: infoRes.encryptedData,
						errMsg: infoRes.errMsg,
						iv: infoRes.iv,
						rawData: infoRes.rawData,
						signature: infoRes.signature
					}
				}).then((res) => {
					let user = res.data;
					uni.setStorageSync('currUser', user);
					resolve(user);
				}).catch(() => {
					reject()
				})
			},
			fail: (res) => {
				reject(res)
			}
		});
	});
}

function getWxUserPhone(phoneRes) {
	// console.log(phoneRes)

	const currUser = uni.getStorageSync('currUser');
	return request({
		url: `/system/wx/updateMobile`,
		method: "POST",
		params: {
			appId: appId,
			userId: currUser.id,
			encryptedData: phoneRes.encryptedData,
			errMsg: phoneRes.errMsg,
			iv: phoneRes.iv,
			rawData: phoneRes.rawData,
			signature: phoneRes.signature
		}
	}).then((res) => {
		let user = res.data;
		uni.setStorageSync('currUser', user);
		return user
	})
}

function checkUserAuth(path) {
	const currUser = uni.getStorageSync('currUser')
	if (currUser.phonenumber) {
		// if (currUser.nickName) {
		return true
	} else {
		uni.navigateTo({
			url: '/pages/index/start?path=' + encodeURIComponent(path)
		})
		return false;
	}
}


export {
	wxLogin,
	pcLogin,
	getCurrUser,
	getWxUser,
	getWxUserPhone,
	checkUserAuth
}