首次
This commit is contained in:
@@ -48,10 +48,10 @@ export const useUserStore = defineStore('user', () => {
|
||||
|
||||
// 4. 保存用户信息
|
||||
setUserInfo({
|
||||
token: loginData.token,
|
||||
token: loginData.data.token,
|
||||
nickName: userProfileRes.userInfo.nickName,
|
||||
avatarUrl: userProfileRes.userInfo.avatarUrl,
|
||||
openid: loginData.openid
|
||||
openid: loginData.data.openid
|
||||
});
|
||||
|
||||
return Promise.resolve(loginData);
|
||||
@@ -63,20 +63,6 @@ export const useUserStore = defineStore('user', () => {
|
||||
|
||||
// 获取用户信息
|
||||
function getUserProfile() {
|
||||
// H5环境下模拟用户信息
|
||||
// #ifdef H5
|
||||
return new Promise((resolve) => {
|
||||
resolve({
|
||||
userInfo: {
|
||||
nickName: 'H5测试用户',
|
||||
avatarUrl: '/static/default-avatar.png'
|
||||
}
|
||||
});
|
||||
});
|
||||
// #endif
|
||||
|
||||
// 非H5环境下获取真实用户信息
|
||||
// #ifndef H5
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.getUserProfile({
|
||||
desc: '用于完善用户资料',
|
||||
@@ -84,77 +70,61 @@ export const useUserStore = defineStore('user', () => {
|
||||
resolve(res);
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('获取用户信息失败:', err);
|
||||
reject(err);
|
||||
}
|
||||
});
|
||||
});
|
||||
// #endif
|
||||
}
|
||||
|
||||
// 获取微信登录凭证
|
||||
function getWxLogin() {
|
||||
// H5环境下模拟登录凭证
|
||||
// #ifdef H5
|
||||
return new Promise((resolve) => {
|
||||
resolve({ code: 'mock-code-for-h5' });
|
||||
});
|
||||
// #endif
|
||||
|
||||
// 非H5环境下获取真实登录凭证
|
||||
// #ifndef H5
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.login({
|
||||
provider: 'weixin',
|
||||
success: (res) => {
|
||||
resolve(res);
|
||||
if (res.code) {
|
||||
resolve(res);
|
||||
} else {
|
||||
reject(new Error('获取登录凭证失败'));
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('微信登录失败:', err);
|
||||
reject(err);
|
||||
}
|
||||
});
|
||||
});
|
||||
// #endif
|
||||
}
|
||||
|
||||
// 调用后端登录接口
|
||||
function wxLogin(code, userInfo) {
|
||||
// H5环境下模拟登录,避免API超时
|
||||
// #ifdef H5
|
||||
return new Promise((resolve) => {
|
||||
setTimeout(() => {
|
||||
resolve({
|
||||
token: 'mock-token-for-h5',
|
||||
openid: 'mock-openid-for-h5'
|
||||
});
|
||||
}, 300);
|
||||
});
|
||||
// #endif
|
||||
|
||||
// 非H5环境下调用实际接口
|
||||
// #ifndef H5
|
||||
return new Promise((resolve, reject) => {
|
||||
uni.request({
|
||||
url: 'https://your-api.com/api/login/wechat',
|
||||
url: 'http://8.145.52.111:8091/app/login',
|
||||
method: 'POST',
|
||||
data: {
|
||||
code,
|
||||
userInfo
|
||||
code
|
||||
},
|
||||
header: {
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
success: (res) => {
|
||||
if (res.statusCode === 200 && res.data.token) {
|
||||
resolve(res.data);
|
||||
console.log('登录响应:', res);
|
||||
const resData = res.data;
|
||||
if (resData.code === 200 && resData.data && resData.data.token) {
|
||||
resolve(resData);
|
||||
} else {
|
||||
reject(new Error('Login failed: ' + JSON.stringify(res.data)));
|
||||
reject(new Error('登录失败: ' + (resData.message || JSON.stringify(resData))));
|
||||
}
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('登录请求失败:', err);
|
||||
reject(err);
|
||||
},
|
||||
// 设置超时时间
|
||||
timeout: 5000
|
||||
timeout: 10000 // 增加超时时间到10秒
|
||||
});
|
||||
});
|
||||
// #endif
|
||||
}
|
||||
|
||||
// 保存用户信息
|
||||
@@ -171,6 +141,53 @@ export const useUserStore = defineStore('user', () => {
|
||||
|
||||
// 退出登录
|
||||
function logout() {
|
||||
return new Promise((resolve, reject) => {
|
||||
try {
|
||||
// 获取token
|
||||
const currentToken = token.value;
|
||||
|
||||
// 尝试调用登出接口
|
||||
uni.request({
|
||||
url: 'http://8.145.52.111:8091/app/logout',
|
||||
method: 'POST',
|
||||
header: {
|
||||
'Content-Type': 'application/json',
|
||||
'Authorization': currentToken || ''
|
||||
},
|
||||
data: {
|
||||
token: currentToken || ''
|
||||
},
|
||||
success: (res) => {
|
||||
console.log('登出成功:', res);
|
||||
uni.showToast({
|
||||
title: '登出成功',
|
||||
icon: 'success'
|
||||
});
|
||||
},
|
||||
fail: (err) => {
|
||||
console.error('登出失败:', err);
|
||||
uni.showToast({
|
||||
title: '登出接口调用失败',
|
||||
icon: 'none'
|
||||
});
|
||||
},
|
||||
complete: () => {
|
||||
// 无论成功失败,都清除本地数据
|
||||
clearUserData();
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('登出过程发生异常:', error);
|
||||
// 发生异常时也要清除本地数据
|
||||
clearUserData();
|
||||
resolve(); // 用resolve而不是reject,确保登出操作总是成功
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 清除用户数据的辅助函数
|
||||
function clearUserData() {
|
||||
token.value = '';
|
||||
nickName.value = '';
|
||||
avatarUrl.value = '';
|
||||
@@ -179,6 +196,43 @@ export const useUserStore = defineStore('user', () => {
|
||||
|
||||
// 清除本地存储
|
||||
uni.removeStorageSync('userInfo');
|
||||
uni.removeStorageSync('custom_token');
|
||||
uni.removeStorageSync('user_token');
|
||||
}
|
||||
|
||||
// 清理假登录数据
|
||||
function clearFakeLoginData() {
|
||||
console.log('清理假登录数据...');
|
||||
|
||||
// 检查是否有无效的登录数据
|
||||
const userInfo = uni.getStorageSync('userInfo');
|
||||
if (userInfo) {
|
||||
try {
|
||||
const parsedInfo = JSON.parse(userInfo);
|
||||
// 如果没有token或token为空,清除数据
|
||||
if (!parsedInfo.token || parsedInfo.token.trim() === '') {
|
||||
console.log('发现无效的userInfo,清除中...');
|
||||
uni.removeStorageSync('userInfo');
|
||||
}
|
||||
} catch (e) {
|
||||
console.log('userInfo格式错误,清除中...');
|
||||
uni.removeStorageSync('userInfo');
|
||||
}
|
||||
}
|
||||
|
||||
// 清除其他可能的假token
|
||||
const customToken = uni.getStorageSync('custom_token');
|
||||
if (customToken && customToken.trim() === '') {
|
||||
uni.removeStorageSync('custom_token');
|
||||
}
|
||||
|
||||
const userToken = uni.getStorageSync('user_token');
|
||||
if (userToken && userToken.trim() === '') {
|
||||
uni.removeStorageSync('user_token');
|
||||
}
|
||||
|
||||
// 重新初始化状态
|
||||
init();
|
||||
}
|
||||
|
||||
// 新增:设置用户同意须知状态
|
||||
@@ -209,6 +263,7 @@ export const useUserStore = defineStore('user', () => {
|
||||
setUserInfo,
|
||||
logout,
|
||||
setAgreedToTerms,
|
||||
setVisitedMinePage
|
||||
setVisitedMinePage,
|
||||
clearFakeLoginData
|
||||
};
|
||||
});
|
||||
Reference in New Issue
Block a user