const db = require('../plugin/DataBase/db') function nowMs() { return Date.now() } function isVipByUser(user) { const expire = Number(user?.vip_expire_time || 0) if (expire > nowMs()) return true return Number(user?.vip || 0) === 1 && expire === 0 } async function getUserVipInfo(uuid, executor = db) { const rows = await executor.query( 'SELECT vip, vip_expire_time FROM users WHERE uuid = ? LIMIT 1', [uuid] ) const user = rows?.[0] || {} const vipExpireTime = Number(user.vip_expire_time || 0) return { vip: isVipByUser(user), vip_expire_time: vipExpireTime, legacy_vip: Number(user.vip || 0) } } function calculateNextVipExpire({ currentExpireTime = 0, payTime = nowMs(), validityType, validDays = 0, fixedExpireTime = 0 }) { const current = Number(currentExpireTime || 0) const paidAt = Number(payTime || nowMs()) const type = String(validityType || 'none') if (type === 'days') { const days = Math.max(0, Number(validDays || 0)) if (days <= 0) return current const base = current > paidAt ? current : paidAt return base + days * 24 * 60 * 60 * 1000 } if (type === 'fixed') { return Math.max(current, Number(fixedExpireTime || 0)) } return current } module.exports = { isVipByUser, getUserVipInfo, calculateNextVipExpire }