diff --git a/__pycache__/app_vx.cpython-310.pyc b/__pycache__/app_vx.cpython-310.pyc index 3a07ba65..59b31b8a 100644 Binary files a/__pycache__/app_vx.cpython-310.pyc and b/__pycache__/app_vx.cpython-310.pyc differ diff --git a/app_vx.py b/app_vx.py index ba4d3c42..9429a92a 100644 --- a/app_vx.py +++ b/app_vx.py @@ -2463,16 +2463,16 @@ def api_get_events(): order_func = desc if order.lower() == 'desc' else asc if sort_by == 'hot': - query = query.order_by(order_func(Event.hot_score)) + query = query.order_by(order_func(Event.hot_score), desc(Event.created_at)) elif sort_by == 'new': query = query.order_by(order_func(Event.created_at)) elif sort_by == 'returns': if return_type == 'avg': - query = query.order_by(order_func(Event.related_avg_chg)) + query = query.order_by(order_func(Event.related_avg_chg), desc(Event.created_at)) elif return_type == 'max': - query = query.order_by(order_func(Event.related_max_chg)) + query = query.order_by(order_func(Event.related_max_chg), desc(Event.created_at)) elif return_type == 'week': - query = query.order_by(order_func(Event.related_week_chg)) + query = query.order_by(order_func(Event.related_week_chg), desc(Event.created_at)) elif sort_by == 'importance': importance_order = case( (Event.importance == 'S', 1), @@ -2482,16 +2482,19 @@ def api_get_events(): else_=5 ) if order.lower() == 'desc': - query = query.order_by(importance_order) + query = query.order_by(importance_order, desc(Event.created_at)) else: - query = query.order_by(desc(importance_order)) + query = query.order_by(desc(importance_order), desc(Event.created_at)) elif sort_by == 'view_count': - query = query.order_by(order_func(Event.view_count)) + query = query.order_by(order_func(Event.view_count), desc(Event.created_at)) elif sort_by == 'follow' and hasattr(request, 'user') and request.user.is_authenticated: # 关注的事件排序 query = query.join(EventFollow).filter( EventFollow.user_id == request.user.id ).order_by(order_func(Event.created_at)) + else: + # 兜底排序:始终按时间倒序 + query = query.order_by(desc(Event.created_at)) # ==================== 分页查询 ==================== @@ -2716,13 +2719,12 @@ def get_calendar_event_counts(): # 修改查询以仅统计type为event的事件数量 query = """ - SELECT DATE (calendar_time) as date, COUNT (*) as count - FROM future_events - WHERE calendar_time BETWEEN :start_date \ - AND :end_date - AND type = 'event' - GROUP BY DATE (calendar_time) \ - """ + SELECT DATE(calendar_time) as date, COUNT(*) as count + FROM future_events + WHERE calendar_time BETWEEN :start_date AND :end_date + AND type = 'event' + GROUP BY DATE(calendar_time) + """ result = db.session.execute(text(query), { 'start_date': start_date, @@ -2739,7 +2741,8 @@ def get_calendar_event_counts(): return jsonify(events) except Exception as e: - return jsonify({'error': str(e)}), 500 + app.logger.error(f"获取日历事件统计出错: {str(e)}", exc_info=True) + return jsonify({'error': str(e), 'error_type': type(e).__name__}), 500 def get_full_avatar_url(avatar_url):