diff --git a/app_vx.py b/app_vx.py index 4a3c89d8..4be364c1 100644 --- a/app_vx.py +++ b/app_vx.py @@ -4394,9 +4394,8 @@ def api_login_email(): # 5. 事件详情-相关标的接口 @app.route('/api/event//related-stocks-detail', methods=['GET']) @token_required -@pro_or_max_required def api_event_related_stocks(event_id): - """事件相关标的详情接口 - 仅限 Pro/Max 会员""" + """事件相关标的详情接口 - Pro/Max 会员可查看完整数据,免费用户可查看基本信息""" try: from datetime import datetime, timedelta, time as dt_time from sqlalchemy import text @@ -4407,6 +4406,44 @@ def api_event_related_stocks(event_id): event.view_count = (event.view_count or 0) + 1 db.session.commit() + # 检查用户权限 + is_pro_or_max = _has_required_level('pro') + + # 非会员:返回基本事件信息,股票列表返回一个提示升级的占位项 + if not is_pro_or_max: + return jsonify({ + 'code': 200, + 'message': 'success', + 'data': { + 'event_id': event_id, + 'event_title': event.title, + 'event_desc': event.description, + 'event_type': event.event_type, + 'event_importance': event.importance, + 'event_status': event.status, + 'event_created_at': event.created_at.strftime("%Y-%m-%d %H:%M:%S"), + 'event_start_time': event.start_time.isoformat() if event.start_time else None, + 'event_end_time': event.end_time.isoformat() if event.end_time else None, + 'keywords': event.keywords, + 'view_count': event.view_count, + 'post_count': event.post_count, + 'follower_count': event.follower_count, + 'related_stocks': [ + { + 'stock_name': '升级Pro/Max会员', + 'stock_code': '查看相关标的', + 'relation_desc': '相关标的数据为Pro/Max会员专属功能,升级会员即可查看事件关联的股票、分时图、涨跌幅等详细数据。', + 'correlation': 0, + 'trade_data': None, + 'minute_chart_data': [], + 'is_upgrade_hint': True # 标记这是升级提示 + } + ], + 'total_count': 1, + 'require_upgrade': True + } + }) + related_stocks = event.related_stocks.order_by(RelatedStock.correlation.desc()).all() # 获取ClickHouse客户端用于分时数据查询