/**
 * 用户认证相关工具函数
 */

// 检查用户是否已登录
export function isLoggedIn() {
	const token = uni.getStorageSync('userToken')
	const loginTime = uni.getStorageSync('loginTime')
	
	if (!token || !loginTime) {
		return false
	}
	
	// 检查登录是否过期（7天）
	const now = Date.now()
	const expired = now - loginTime > 7 * 24 * 60 * 60 * 1000
	
	if (expired) {
		clearUserData()
		return false
	}
	
	return true
}

// 获取用户信息
export function getUserInfo() {
	if (!isLoggedIn()) {
		return null
	}
	
	const userInfo = uni.getStorageSync('userInfo')
	if (userInfo) {
		return userInfo
	}
	
	// 兼容老版本数据
	return {
		token: uni.getStorageSync('userToken'),
		phone: uni.getStorageSync('userPhone'),
		loginTime: uni.getStorageSync('loginTime')
	}
}

// 清除用户数据
export function clearUserData() {
	uni.removeStorageSync('userToken')
	uni.removeStorageSync('userInfo')
	uni.removeStorageSync('userPhone') // 兼容老版本
	uni.removeStorageSync('loginTime')
	
	// 更新全局状态
	try {
		const app = getApp()
		if (app && app.globalData) {
			app.globalData.isLoggedIn = false
			app.globalData.userInfo = null
		}
	} catch (error) {
		console.log('更新全局状态失败，可能App还未初始化完成')
	}
}

// 需要登录权限的操作类型
export const PROTECTED_ACTIONS = {
	ADD_TO_CART: 'add_to_cart',           // 加入购物车
	BUY_NOW: 'buy_now',                   // 立即购买
	VIEW_MY_PAGE: 'view_my_page',         // 点击"我的"
	VIEW_LEGOU: 'view_legou'              // 点击"乐购"
}

// 需要登录权限的页面列表（已废弃，仅保留4个动作的权限控制）
export const PROTECTED_PAGES = []

// 检查页面是否需要登录权限
export function isProtectedPage(url) {
	return PROTECTED_PAGES.some(page => url.includes(page))
}

// 跳转到登录页面
export function navigateToLogin(returnUrl = '') {
	const loginUrl = '/pages/auth/login'
	
	if (returnUrl) {
		uni.setStorageSync('returnUrl', returnUrl)
	}
	
	uni.navigateTo({
		url: loginUrl,
		fail() {
			// 如果是tabBar页面，使用reLaunch
			uni.reLaunch({
				url: loginUrl
			})
		}
	})
}

// 登录后返回原页面
export function navigateBack() {
	const returnUrl = uni.getStorageSync('returnUrl')
	
	// tabBar页面列表
	const tabBarPages = [
		'/pages/index/index',
		'/pages/community/index',
		'/pages/legou/index',
		'/pages/cart/index',
		'/pages/user/index'
	]
	
	if (returnUrl) {
		uni.removeStorageSync('returnUrl')
		console.log('导航返回原页面:', returnUrl)
		
		if (tabBarPages.includes(returnUrl)) {
			uni.switchTab({
				url: returnUrl
			})
		} else {
			uni.reLaunch({
				url: returnUrl
			})
		}
	} else {
		console.log('导航到首页')
		// 使用switchTab跳转到tabBar页面
		uni.switchTab({
			url: '/pages/index/index'
		})
	}
}

// 权限拦截器 - 在需要权限的操作前调用
export function requireAuth(callback, options = {}) {
	if (isLoggedIn()) {
		// 已登录，执行回调
		if (typeof callback === 'function') {
			callback()
		}
		return true
	} else {
		// 未登录，显示提示并跳转登录
		const actionMessages = {
			[PROTECTED_ACTIONS.ADD_TO_CART]: '加入购物车需要先登录',
			[PROTECTED_ACTIONS.BUY_NOW]: '立即购买需要先登录',
			[PROTECTED_ACTIONS.VIEW_MY_PAGE]: '访问"我的"页面需要先登录',
			[PROTECTED_ACTIONS.VIEW_LEGOU]: '访问"乐购"页面需要先登录'
		}
		
		const message = options.message || actionMessages[options.action] || '请先登录后再进行此操作'
		
		uni.showModal({
			title: '提示',
			content: message,
			confirmText: '去登录',
			cancelText: '暂不登录',
			success(res) {
				if (res.confirm) {
					navigateToLogin(options.returnUrl)
				}
			}
		})
		return false
	}
}

// 静默权限检查（不显示弹窗）
export function checkAuth() {
	return isLoggedIn()
}

// 手机号格式验证
export function validatePhoneNumber(phone) {
	const phoneRegex = /^1[3-9]\d{9}$/
	return phoneRegex.test(phone)
}

// 验证码格式验证
export function validateSmsCode(code) {
	const codeRegex = /^\d{6}$/
	return codeRegex.test(code)
}

// 用户权限级别（已废弃，仅保留4个动作的权限控制）
export const USER_LEVELS = {
	GUEST: 0,      // 游客
	NORMAL: 1      // 普通用户
}

// 获取用户权限级别（已废弃）
export function getUserLevel() {
	const userInfo = getUserInfo()
	return userInfo?.level || USER_LEVELS.GUEST
}

// 检查用户是否有特定权限（已废弃）
export function hasPermission(requiredLevel) {
	const userLevel = getUserLevel()
	return userLevel >= requiredLevel
}
