From 90ce5a031f46e84ffda29cb32a1cad2c2286edda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=94=B2=E8=BE=B0=E7=94=9F=E4=BA=A7?= Date: Wed, 8 Apr 2026 15:27:52 +0800 Subject: [PATCH] =?UTF-8?q?v1.2.64=20-=20=E4=BF=AE=E5=A4=8D=E9=BE=99?= =?UTF-8?q?=E9=92=9E=E7=BB=9F=E8=AE=A1=E6=95=B0=E6=8D=AEAPI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/app/routers/yichens.py | 119 +++++++++++++++++++-------------- 1 file changed, 67 insertions(+), 52 deletions(-) diff --git a/backend/app/routers/yichens.py b/backend/app/routers/yichens.py index b230fc1..695b672 100644 --- a/backend/app/routers/yichens.py +++ b/backend/app/routers/yichens.py @@ -259,64 +259,79 @@ def get_dragons_stats_today( """获取今日龙钞详细统计数据(按号码分类)""" from sqlalchemy import text - # 查询今日龙钞数据,按分类统计 - result = db.execute(text(""" + # 带4龙钞(包含"龙"且包含"4") + dai4 = db.execute(text(""" SELECT - category, COUNT(*) as total, - SUM(CASE WHEN content LIKE '%带4%' OR title LIKE '%带4%' THEN 1 ELSE 0 END) as dai4, - SUM(CASE WHEN content NOT LIKE '%带4%' AND title NOT LIKE '%带4%' AND (content LIKE '%无4%' OR title LIKE '%无4%') THEN 1 ELSE 0 END) as wu4, - SUM(CASE WHEN (content LIKE '%无47%' OR title LIKE '%无47%') AND (content NOT LIKE '%无247%' AND title NOT LIKE '%无247%') THEN 1 ELSE 0 END) as wu47, - SUM(CASE WHEN (content LIKE '%无247%' OR title LIKE '%无247%') AND (content NOT LIKE '%无347%' AND title NOT LIKE '%无347%') THEN 1 ELSE 0 END) as wu247, - SUM(CASE WHEN content LIKE '%无347%' OR title LIKE '%无347%' THEN 1 ELSE 0 END) as wu347 - FROM yichen_posts - WHERE created_at >= CURRENT_DATE - AND (category LIKE '%龙%' OR category LIKE '%龙钞%') - GROUP BY category - """)) + SUM(CASE WHEN post_type = 'deal' THEN 1 ELSE 0 END) as deals, + SUM(CASE WHEN post_type = 'want' THEN 1 ELSE 0 END) as wants + FROM yichens_posts + WHERE post_time >= CURRENT_DATE + AND category LIKE '%龙%' + AND (content LIKE '%带4%' OR title LIKE '%带4%') + """)).fetchone() - rows = result.fetchall() - - # 汇总统计 - dai4_count = sum(r[2] or 0 for r in rows) - wu4_count = sum(r[3] or 0 for r in rows) - wu47_count = sum(r[4] or 0 for r in rows) - wu247_count = sum(r[5] or 0 for r in rows) - wu347_count = sum(r[6] or 0 for r in rows) - - # 查询出售和求购分类 - deals_result = db.execute(text(""" + # 无4龙钞(包含"龙"且包含"无4"但不包含"无47") + wu4 = db.execute(text(""" SELECT - SUM(CASE WHEN content LIKE '%带4%' OR title LIKE '%带4%' THEN 1 ELSE 0 END) as dai4_deals, - SUM(CASE WHEN (content NOT LIKE '%带4%' AND title NOT LIKE '%带4%') AND (content LIKE '%无4%' OR title LIKE '%无4%') THEN 1 ELSE 0 END) as wu4_deals, - SUM(CASE WHEN (content LIKE '%无47%' OR title LIKE '%无47%') AND (content NOT LIKE '%无247%' AND title NOT LIKE '%无247%') THEN 1 ELSE 0 END) as wu47_deals, - SUM(CASE WHEN (content LIKE '%无247%' OR title LIKE '%无247%') AND (content NOT LIKE '%无347%' AND title NOT LIKE '%无347%') THEN 1 ELSE 0 END) as wu247_deals, - SUM(CASE WHEN content LIKE '%无347%' OR title LIKE '%无347%' THEN 1 ELSE 0 END) as wu347_deals - FROM yichen_posts - WHERE created_at >= CURRENT_DATE - AND (category LIKE '%龙%' OR category LIKE '%龙钞%') - AND category NOT LIKE '%求购%' - """)) - deals_row = deals_result.fetchone() + COUNT(*) as total, + SUM(CASE WHEN post_type = 'deal' THEN 1 ELSE 0 END) as deals, + SUM(CASE WHEN post_type = 'want' THEN 1 ELSE 0 END) as wants + FROM yichens_posts + WHERE post_time >= CURRENT_DATE + AND category LIKE '%龙%' + AND (content LIKE '%无4%' OR title LIKE '%无4%') + AND content NOT LIKE '%无47%' + AND title NOT LIKE '%无47%' + AND content NOT LIKE '%无247%' + AND title NOT LIKE '%无247%' + """)).fetchone() - wants_result = db.execute(text(""" + # 无47龙钞(包含"龙"且包含"无47"但不包含"无247") + wu47 = db.execute(text(""" SELECT - SUM(CASE WHEN content LIKE '%带4%' OR title LIKE '%带4%' THEN 1 ELSE 0 END) as dai4_wants, - SUM(CASE WHEN (content NOT LIKE '%带4%' AND title NOT LIKE '%带4%') AND (content LIKE '%无4%' OR title LIKE '%无4%') THEN 1 ELSE 0 END) as wu4_wants, - SUM(CASE WHEN (content LIKE '%无47%' OR title LIKE '%无47%') AND (content NOT LIKE '%无247%' AND title NOT LIKE '%无247%') THEN 1 ELSE 0 END) as wu47_wants, - SUM(CASE WHEN (content LIKE '%无247%' OR title LIKE '%无247%') AND (content NOT LIKE '%无347%' AND title NOT LIKE '%无347%') THEN 1 ELSE 0 END) as wu247_wants, - SUM(CASE WHEN content LIKE '%无347%' OR title LIKE '%无347%' THEN 1 ELSE 0 END) as wu347_wants - FROM yichen_posts - WHERE created_at >= CURRENT_DATE - AND (category LIKE '%龙%' OR category LIKE '%龙钞%') - AND category LIKE '%求购%' - """)) - wants_row = wants_result.fetchone() + COUNT(*) as total, + SUM(CASE WHEN post_type = 'deal' THEN 1 ELSE 0 END) as deals, + SUM(CASE WHEN post_type = 'want' THEN 1 ELSE 0 END) as wants + FROM yichens_posts + WHERE post_time >= CURRENT_DATE + AND category LIKE '%龙%' + AND (content LIKE '%无47%' OR title LIKE '%无47%') + AND content NOT LIKE '%无247%' + AND title NOT LIKE '%无247%' + """)).fetchone() + + # 无247龙钞(包含"龙"且包含"无247"但不包含"无347") + wu247 = db.execute(text(""" + SELECT + COUNT(*) as total, + SUM(CASE WHEN post_type = 'deal' THEN 1 ELSE 0 END) as deals, + SUM(CASE WHEN post_type = 'want' THEN 1 ELSE 0 END) as wants + FROM yichens_posts + WHERE post_time >= CURRENT_DATE + AND category LIKE '%龙%' + AND (content LIKE '%无247%' OR title LIKE '%无247%') + AND content NOT LIKE '%无347%' + AND title NOT LIKE '%无347%' + """)).fetchone() + + # 无347龙钞(包含"龙"且包含"无347") + wu347 = db.execute(text(""" + SELECT + COUNT(*) as total, + SUM(CASE WHEN post_type = 'deal' THEN 1 ELSE 0 END) as deals, + SUM(CASE WHEN post_type = 'want' THEN 1 ELSE 0 END) as wants + FROM yichens_posts + WHERE post_time >= CURRENT_DATE + AND category LIKE '%龙%' + AND (content LIKE '%无347%' OR title LIKE '%无347%') + """)).fetchone() return { - "dai4": {"total": dai4_count, "deals": deals_row[0] or 0, "wants": wants_row[0] or 0}, - "wu4": {"total": wu4_count, "deals": deals_row[1] or 0, "wants": wants_row[1] or 0}, - "wu47": {"total": wu47_count, "deals": deals_row[2] or 0, "wants": wants_row[2] or 0}, - "wu247": {"total": wu247_count, "deals": deals_row[3] or 0, "wants": wants_row[3] or 0}, - "wu347": {"total": wu347_count, "deals": deals_row[4] or 0, "wants": wants_row[4] or 0} + "dai4": {"total": dai4[0] or 0, "deals": dai4[1] or 0, "wants": dai4[2] or 0}, + "wu4": {"total": wu4[0] or 0, "deals": wu4[1] or 0, "wants": wu4[2] or 0}, + "wu47": {"total": wu47[0] or 0, "deals": wu47[1] or 0, "wants": wu47[2] or 0}, + "wu247": {"total": wu247[0] or 0, "deals": wu247[1] or 0, "wants": wu247[2] or 0}, + "wu347": {"total": wu347[0] or 0, "deals": wu347[1] or 0, "wants": wu347[2] or 0} } +