import BaseStore from '@src/stores/base'; // import * as querystring from 'querystring'; export default class UserStore extends BaseStore { initState() { // const { code } = querystring.parse(window.location.search.replace('?', '')); // if (code) { // this.loginWechat(code); // } return { login: false }; } initAfter() { if (this.state.login) { this.refreshToken().then(() => { if (this.adminLogin) { window.location.href = window.location.href.replace(`token=${this.adminLogin}`, '').replace('&&', '&'); } }) .catch(() => { this.setState({ login: false }); }); } } infoHandle(result) { if (result.token) this.setToken(result.token); this.setState({ login: result.id, needLogin: false, info: result, username: result.username }); } originInviteCode(inviteCode) { this.setState({ inviteCode, }); } /** * 验证token */ refreshToken() { return this.apiPost('/auth/token') .then(result => { this.infoHandle(result); }) .catch(() => { this.logout(false); }); } /** * 登陆 * @param {*} area 区域码 * @param {*} mobile 手机号 * @param {*} mobileVerifyCode 手机验证码 * @param {*} inviteCode 邀请人手机/邀请码 * @param {*} email 绑定邮箱 */ login(area, mobile, mobileVerifyCode, inviteCode, email) { if (!inviteCode) { ({ inviteCode } = this.state); } return this.apiPost('/auth/login', { area, mobile, mobileVerifyCode, inviteCode, email }).then(result => { this.infoHandle(result); return result; }); } loginWechat(code, userInfo) { return this.apiGet('/auth/wechat', { code, userInfo }).then((result) => { this.infoHandle(result); return result; }); } /** * 登出 */ logout(login = true) { return Promise.resolve() .then(() => { if (login) { return this.apiPost('/auth/logout', {}); } return true; }) .then(() => { this.setState({ login: false, info: {}, username: '' }); }) .then(() => { linkTo(this.project.loginPath); }); } /** * 绑定手机 * @param {*} area 区域码 * @param {*} mobile 手机号 * @param {*} mobileVerifyCode 手机验证码 * @param {*} email 绑定邮箱 * @param {*} inviteCode 邀请人手机/邀请码 */ bind(area, mobile, mobileVerifyCode, email, inviteCode) { if (!inviteCode) { ({ inviteCode } = this.state); } return this.apiPost('/auth/bind', { area, mobile, mobileVerifyCode, inviteCode, email }).then(result => { this.infoHandle(result); return result; }); } /** * 查询邀请码对应账号 * @param {*} code 邀请码 */ validInviteCode(code) { return this.apiGet('/auth/valid/invite_code', { code }); } /** * 查询手机对应账号 */ validMobile(area, mobile) { return this.apiGet('/auth/valid/mobile', { area, mobile }); } /** * 查询邮箱对应账号 */ validEmail(email) { return this.apiGet('/auth/valid/email', { email }); } /** * 查询手机是否绑定微信 */ validWechat(area, mobile) { return this.apiGet('/auth/valid/wechat', { area, mobile }); } } export const User = new UserStore({ key: 'user', local: true });