login.js 4.56 KB
import {
	useUserStore
} from '../store/modules/user'
import request from './request'

function pcLogin(data) {
	return request({
		url: '/login',
		method: 'post',
		params: data
	}).then((res) => {
		uni.setStorageSync('token', 'Bearer ' + res.data.token)
	}).then(getInfo)
}

function h5Login(userName) {
	return request({
		url: `/h5Login`,
		method: 'post',
		params: {
			username: userName
		}
	}).then((res) => {
		uni.setStorageSync('token', 'Bearer ' + res.data.token)
	}).then(getInfo)
}

function h5LoginAuto() {
	const userName = uni.getStorageSync('userName')
	if (userName) {
		return h5Login(userName)
	} else {
		uni.redirectTo({
			url: '/login/login'
		})
	}
}

function logout() {
	return request({
		url: '/logout',
		method: 'post'
	}).then(() => {
		const userStore = useUserStore()
		const app = getApp()

		uni.removeStorageSync('token')
		uni.removeStorageSync('userName')
		uni.removeStorageSync('webUserName')
		uni.removeStorageSync('openId')

		userStore.setUser(null)
		app.globalData.isLogin = false
	})
}

function getCodeImg() {
	return request({
		url: '/captchaImage',
		method: 'get'
	})
}

// 代退图形认证的获取手机验证码
function getSmsCode(data) {
	return request({
		// url: '/captchaSmsWithCaptchaImage',
		url: '/captchaSmsWithCaptchaImageForMiniApp',
		method: 'post',
		params: data
	})
}

function loginByPhone(phonenumber, code) {
	const data = {
		phonenumber,
		code
	}
	return request({
		url: '/userLoginByPhone',
		method: 'post',
		params: data
	}).then((res) => {
		uni.showToast({
			title: res.msg,
			icon: 'none'
		})
		uni.setStorageSync('token', 'Bearer ' + res.data.token)
	}).then(getInfo)
}

// 获取用户详细信息
function getInfo() {
	return request({
		url: '/getInfo',
		method: 'get'
	}).then(res => {
		const userStore = useUserStore()
		const app = getApp()
		const user = res.data.user

		uni.setStorageSync('userName', user.userName)
		uni.removeStorageSync('webUserName')
		userStore.setUser(user)

		app.globalData.deptType = user.dept.deptType
		app.globalData.genFlag = user.dept.genFlag
		app.globalData.changePassFlag = user.changePassFlag
		switch (user.dept.deptType) {
			case '1': // 中跆协
				app.globalData.userType = '1'
				break
			case '2': // 省
			case '3':
				app.globalData.userType = '2'
				break
			case '6': // 道馆
				app.globalData.userType = '4'
				break
			default: // 市、区
				app.globalData.userType = '3'
				break
		}
	})
}

function getWebInfo() {
	return request({
		url: '/person/info/getInfo',
		method: 'get'
	}).then(res => {
		const userStore = useUserStore()
		const user = res.data.user

		delete res.data.user
		const perInfo = res.data

		uni.setStorageSync('webUserName', user.userName)
		uni.removeStorageSync('userName')
		userStore.setUser(user)
		userStore.setPerInfo(perInfo)
	})
}

// 团队会员用户注册接口
function groupMemberRegister(data) {
	return request({
		url: '/groupMemberRegister',
		method: 'post',
		params: data
	})
}
// 获取道馆信息
function getMyOwnMemberInfo() {
	return request({
		url: '/member/info/getMyOwnMemberInfo',
		method: 'get'
	}).then(res => {
		const app = getApp()
		app.globalData.authenticationStatus = res.data.authenticationStatus
		app.globalData.memberInfo = res.data.memberInfo
		app.globalData.isExam = res.data?.memberInfo?.isPoints
	})
}


function wxLogin() {
	const openId = uni.getStorageSync('openId')
	if (openId) {
		return pcLoginByOpenId(openId)
	} else {
		return new Promise((resolve, reject) => {
			uni.login({
				provider: 'weixin',
				success: (res) => {
					resolve(res)
				},
				fail: (res) => {
					uni.showToast({
						title: '获取用户信息失败',
						icon: 'none',
						duration: 2000
					})
					reject(res)
				}
			})
		}).then(res => {
			return pcLoginByCode(res.code)
		})
	}
}

function pcLoginByCode(code) {
	return request({
		url: `/loginByJsCode?jsCode=${code}`,
		method: "POST"
	}).then((res) => {
		uni.setStorageSync('token', 'Bearer ' + res.data.token);
		uni.setStorageSync('openId', res.data.openId);
	})
}

function pcLoginByOpenId(openId) {
	return request({
		url: `/loginByOpenId?openId=${openId}`,
		method: "POST"
	}).then((res) => {
		uni.setStorageSync('token', 'Bearer ' + res.data.token);
	})
}

export {
	pcLogin,
	getCodeImg,
	getSmsCode,
	h5Login,
	h5LoginAuto,
	loginByPhone,
	groupMemberRegister,
	getMyOwnMemberInfo,
	logout,
	getInfo,
	getWebInfo,
	wxLogin
}