|
@@ -2,12 +2,13 @@
|
|
|
import { onLaunch, onShow, onHide } from "@dcloudio/uni-app";
|
|
import { onLaunch, onShow, onHide } from "@dcloudio/uni-app";
|
|
|
import { API_CONFIG } from './utils/config';
|
|
import { API_CONFIG } from './utils/config';
|
|
|
import { handleUnauthorized, clearAuth } from './utils/auth';
|
|
import { handleUnauthorized, clearAuth } from './utils/auth';
|
|
|
|
|
+import { logger } from './utils/logger';
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 应用启动
|
|
* 应用启动
|
|
|
*/
|
|
*/
|
|
|
onLaunch((options: any) => {
|
|
onLaunch((options: any) => {
|
|
|
- console.log("App Launch, options:", JSON.stringify(options));
|
|
|
|
|
|
|
+ logger.log("App Launch, options:", JSON.stringify(options));
|
|
|
checkLoginStatus(options);
|
|
checkLoginStatus(options);
|
|
|
checkBindingCode(options);
|
|
checkBindingCode(options);
|
|
|
});
|
|
});
|
|
@@ -22,10 +23,10 @@ const checkBindingCode = (options: any) => {
|
|
|
// 检查 scene 场景值(小程序码场景)
|
|
// 检查 scene 场景值(小程序码场景)
|
|
|
if (options.scene) {
|
|
if (options.scene) {
|
|
|
const scene = decodeURIComponent(options.scene);
|
|
const scene = decodeURIComponent(options.scene);
|
|
|
- console.log('[App] 检测到场景值:', scene);
|
|
|
|
|
|
|
+ logger.log('[App] 检测到场景值:', scene);
|
|
|
// 24位大写字母数字组合为绑定码格式
|
|
// 24位大写字母数字组合为绑定码格式
|
|
|
if (/^[A-Z0-9]{24}$/.test(scene)) {
|
|
if (/^[A-Z0-9]{24}$/.test(scene)) {
|
|
|
- console.log('[App] 场景值为补货员绑定码');
|
|
|
|
|
|
|
+ logger.log('[App] 场景值为补货员绑定码');
|
|
|
uni.navigateTo({
|
|
uni.navigateTo({
|
|
|
url: '/pages/replenish/bind?code=' + scene
|
|
url: '/pages/replenish/bind?code=' + scene
|
|
|
});
|
|
});
|
|
@@ -35,7 +36,7 @@ const checkBindingCode = (options: any) => {
|
|
|
|
|
|
|
|
// 检查 query 参数中的绑定码
|
|
// 检查 query 参数中的绑定码
|
|
|
if (options.query && options.query.bindingCode) {
|
|
if (options.query && options.query.bindingCode) {
|
|
|
- console.log('[App] 检测到补货员绑定码:', options.query.bindingCode);
|
|
|
|
|
|
|
+ logger.log('[App] 检测到补货员绑定码:', options.query.bindingCode);
|
|
|
uni.navigateTo({
|
|
uni.navigateTo({
|
|
|
url: '/pages/replenish/bind?code=' + encodeURIComponent(options.query.bindingCode)
|
|
url: '/pages/replenish/bind?code=' + encodeURIComponent(options.query.bindingCode)
|
|
|
});
|
|
});
|
|
@@ -46,19 +47,19 @@ const checkBindingCode = (options: any) => {
|
|
|
* 应用显示
|
|
* 应用显示
|
|
|
*/
|
|
*/
|
|
|
onShow(() => {
|
|
onShow(() => {
|
|
|
- console.log("App Show");
|
|
|
|
|
|
|
+ logger.log("App Show");
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 应用隐藏
|
|
* 应用隐藏
|
|
|
*/
|
|
*/
|
|
|
onHide(() => {
|
|
onHide(() => {
|
|
|
- console.log("App Hide");
|
|
|
|
|
|
|
+ logger.log("App Hide");
|
|
|
|
|
|
|
|
// 当应用隐藏时,清理购物页面的轮询状态
|
|
// 当应用隐藏时,清理购物页面的轮询状态
|
|
|
const pollingActive = uni.getStorageSync('shoppingPollingActive');
|
|
const pollingActive = uni.getStorageSync('shoppingPollingActive');
|
|
|
if (pollingActive === 'true') {
|
|
if (pollingActive === 'true') {
|
|
|
- console.log('应用隐藏,清理购物页面轮询状态');
|
|
|
|
|
|
|
+ logger.log('应用隐藏,清理购物页面轮询状态');
|
|
|
uni.removeStorageSync('shoppingPollingActive');
|
|
uni.removeStorageSync('shoppingPollingActive');
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
@@ -102,22 +103,22 @@ const verifyToken = (): Promise<boolean> => {
|
|
|
resolve(true);
|
|
resolve(true);
|
|
|
} else if (data && data.code === 401) {
|
|
} else if (data && data.code === 401) {
|
|
|
// token无效或已过期
|
|
// token无效或已过期
|
|
|
- console.log('[App] token无效:', data.message);
|
|
|
|
|
|
|
+ logger.log('[App] token无效:', data.message);
|
|
|
resolve(false);
|
|
resolve(false);
|
|
|
} else {
|
|
} else {
|
|
|
// 其他业务错误,保守起见仍视为token有效
|
|
// 其他业务错误,保守起见仍视为token有效
|
|
|
- console.warn('[App] 验证token返回异常状态:', data?.code, data?.message);
|
|
|
|
|
|
|
+ logger.warn('[App] 验证token返回异常状态:', data?.code, data?.message);
|
|
|
resolve(true);
|
|
resolve(true);
|
|
|
}
|
|
}
|
|
|
} else {
|
|
} else {
|
|
|
// 网络或服务异常,不阻断用户使用,保守视为token有效
|
|
// 网络或服务异常,不阻断用户使用,保守视为token有效
|
|
|
- console.warn('[App] 验证token网络异常, statusCode:', res.statusCode);
|
|
|
|
|
|
|
+ logger.warn('[App] 验证token网络异常, statusCode:', res.statusCode);
|
|
|
resolve(true);
|
|
resolve(true);
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
fail: (err: any) => {
|
|
fail: (err: any) => {
|
|
|
// 网络请求失败,保守视为token有效,不阻断用户使用
|
|
// 网络请求失败,保守视为token有效,不阻断用户使用
|
|
|
- console.warn('[App] 验证token请求失败:', err.errMsg);
|
|
|
|
|
|
|
+ logger.warn('[App] 验证token请求失败:', err.errMsg);
|
|
|
resolve(true);
|
|
resolve(true);
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
@@ -139,33 +140,33 @@ const checkLoginStatus = async (launchOptions?: any) => {
|
|
|
currentPath = currentPage ? currentPage.route : '';
|
|
currentPath = currentPage ? currentPage.route : '';
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- console.log('[App] 检查登录状态 - token:', token ? '已存在' : '不存在', ', 目标页面:', currentPath);
|
|
|
|
|
|
|
+ logger.log('[App] 检查登录状态 - token:', token ? '已存在' : '不存在', ', 目标页面:', currentPath);
|
|
|
|
|
|
|
|
const isWhiteListed = LOGIN_WHITE_LIST.some(path => currentPath.indexOf(path) !== -1);
|
|
const isWhiteListed = LOGIN_WHITE_LIST.some(path => currentPath.indexOf(path) !== -1);
|
|
|
|
|
|
|
|
// 没有token
|
|
// 没有token
|
|
|
if (!token) {
|
|
if (!token) {
|
|
|
if (!isWhiteListed) {
|
|
if (!isWhiteListed) {
|
|
|
- console.log('[App] 未登录,跳转到登录页');
|
|
|
|
|
|
|
+ logger.log('[App] 未登录,跳转到登录页');
|
|
|
uni.reLaunch({ url: '/pages/login/login' });
|
|
uni.reLaunch({ url: '/pages/login/login' });
|
|
|
}
|
|
}
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 有token,向后端验证是否有效
|
|
// 有token,向后端验证是否有效
|
|
|
- console.log('[App] token存在,验证token有效性...');
|
|
|
|
|
|
|
+ logger.log('[App] token存在,验证token有效性...');
|
|
|
const isValid = await verifyToken();
|
|
const isValid = await verifyToken();
|
|
|
|
|
|
|
|
if (!isValid && !isWhiteListed) {
|
|
if (!isValid && !isWhiteListed) {
|
|
|
// token无效且不在白名单 -> 触发全局未授权处理
|
|
// token无效且不在白名单 -> 触发全局未授权处理
|
|
|
- console.log('[App] token无效,触发全局未授权处理');
|
|
|
|
|
|
|
+ logger.log('[App] token无效,触发全局未授权处理');
|
|
|
handleUnauthorized();
|
|
handleUnauthorized();
|
|
|
} else if (!isValid && isWhiteListed) {
|
|
} else if (!isValid && isWhiteListed) {
|
|
|
// 白名单页面只清除数据不跳转(不触发全局未授权处理的重定向)
|
|
// 白名单页面只清除数据不跳转(不触发全局未授权处理的重定向)
|
|
|
- console.log('[App] token无效,清除登录数据(当前在白名单页面)');
|
|
|
|
|
|
|
+ logger.log('[App] token无效,清除登录数据(当前在白名单页面)');
|
|
|
clearAuth();
|
|
clearAuth();
|
|
|
} else {
|
|
} else {
|
|
|
- console.log('[App] token有效');
|
|
|
|
|
|
|
+ logger.log('[App] token有效');
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
</script>
|
|
</script>
|