diff --git a/app_vx.py b/app_vx.py index 9685449b..89688688 100644 --- a/app_vx.py +++ b/app_vx.py @@ -6353,24 +6353,42 @@ def api_membership_status(): try: user = request.user - # TODO: 根据实际业务逻辑判断会员状态 - # 这里假设用户表中有会员相关字段 - is_member = getattr(user, 'is_member', False) - member_expire_date = getattr(user, 'member_expire_date', None) + # 获取用户订阅信息 + subscription = get_user_subscription_safe(user.id) + subscription_type = subscription.subscription_type # free/pro/max + is_active = subscription.is_active() + + # is_member: pro或max且未过期为True(兼容旧逻辑) + is_member = is_active and subscription_type in ('pro', 'max') + + # 手机绑定状态 + phone_bindcd = bool(user.phone and user.phone_confirmed) return jsonify({ 'code': 200, 'message': 'success', 'data': { 'user_id': user.id, - 'is_member': is_member, - 'member_expire_date': member_expire_date.isoformat() if member_expire_date else None, + # 会员信息 + 'subscription_type': subscription_type, # free/pro/max + 'subscription_status': subscription.subscription_status, # active/expired/cancelled + 'is_member': is_member, # 兼容旧逻辑 + 'is_active': is_active, + 'start_date': subscription.start_date.isoformat() if subscription.start_date else None, + 'end_date': subscription.end_date.isoformat() if subscription.end_date else None, + 'days_left': subscription.days_left(), + 'auto_renewal': subscription.auto_renewal, + # 手机绑定状态 + 'phone_bindcd': phone_bindcd, + 'phone': user.phone if phone_bindcd else None, + # 兼容旧字段 'user_level': user.user_level, 'benefits': { 'unlimited_access': is_member, - 'priority_support': is_member, + 'priority_support': subscription_type == 'max', 'advanced_analytics': is_member, - 'custom_alerts': is_member + 'custom_alerts': is_member, + 'max_exclusive': subscription_type == 'max' # max专属功能 } } })