Skip to content

Commit 6e523a7

Browse files
committed
feat: add dislike count and reply statistics to user profile
1 parent 8c9ce08 commit 6e523a7

2 files changed

Lines changed: 100 additions & 9 deletions

File tree

src/data/query.php

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,16 @@ function query_danke_one($sql)
236236
LIMIT 1;"
237237
);
238238

239+
$total_dislike_others = query_one(
240+
"SELECT count(like_data) AS dislikes
241+
FROM floor_like
242+
JOIN floor ON floor_like.floor_id = floor.id
243+
WHERE floor_like.user_id = ?
244+
AND like_data = -1
245+
AND DATE(floor.created_at) BETWEEN '2024-6-30' AND '2025-01-04'
246+
LIMIT 1;"
247+
);
248+
239249
$total_like = query_one(
240250
"SELECT COUNT(like_data) AS likes
241251
FROM floor_like
@@ -256,6 +266,31 @@ function query_danke_one($sql)
256266
AND DATE(created_at) BETWEEN '2024-6-30' AND '2025-01-04' LIMIT 1;"
257267
);
258268

269+
$avg_reply_length = query_one(
270+
"SELECT AVG(LENGTH(content)) AS avg_length
271+
FROM floor
272+
WHERE user_id = ?
273+
AND DATE(created_at) BETWEEN '2024-6-30' AND '2025-01-04'
274+
LIMIT 1;"
275+
);
276+
277+
$avg_replies_per_post = query_one(
278+
"SELECT AVG(reply_count) AS avg_replies
279+
FROM (
280+
SELECT hole_id, COUNT(*) - 1 AS reply_count
281+
FROM floor
282+
WHERE hole_id IN (
283+
SELECT id
284+
FROM hole
285+
WHERE user_id = ?
286+
AND deleted_at IS NULL
287+
AND DATE(created_at) BETWEEN '2024-06-30' AND '2025-01-04'
288+
)
289+
GROUP BY hole_id
290+
) AS hole_replies
291+
LIMIT 1;"
292+
);
293+
259294
$most_mentioned = query_one(
260295
"SELECT new_floor.id, content, COUNT(floor_mention.floor_id) AS count
261296
FROM floor_mention

src/index.php

Lines changed: 65 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -496,6 +496,15 @@
496496
<p>本学期你还没给其他人点过赞……</p>
497497
<p>答应我,下次一定!</p>
498498
<?php endif; ?>
499+
500+
<?php if ($total_dislike_others['dislikes'] > 0): ?>
501+
<p>
502+
你给他人点了
503+
<strong class="keyword"><?php echo $total_dislike_others['dislikes'] ?></strong>
504+
个踩
505+
</p>
506+
<p>看来你也有自己的态度呢</p>
507+
<?php endif; ?>
499508
</div>
500509

501510
<div class="segment">
@@ -517,6 +526,50 @@
517526
</span>
518527
</section>
519528

529+
<!-- 回复统计 -->
530+
<?php if ($total_reply_num['total'] > 0): ?>
531+
<section class="swiper-slide">
532+
<div class="segment">
533+
<p>
534+
你的平均回复长度是
535+
<strong class="keyword">
536+
<?php echo $avg_reply_length['avg_length'] ? round($avg_reply_length['avg_length'], 1) : 0 ?>
537+
</strong>
538+
个字符
539+
</p>
540+
<?php if ($avg_reply_length['avg_length'] > 200): ?>
541+
<p>看来你是一个善于表达的人,每次回复都很详细呢!</p>
542+
<?php elseif ($avg_reply_length['avg_length'] > 50): ?>
543+
<p>不长不短,恰到好处~</p>
544+
<?php else: ?>
545+
<p>言简意赅,这也是一种风格!</p>
546+
<?php endif; ?>
547+
</div>
548+
549+
<?php if ($total_hole_num['total'] > 0 && $avg_replies_per_post['avg_replies'] !== null): ?>
550+
<div class="segment">
551+
<p>
552+
你的每个帖子平均能收到
553+
<strong class="keyword">
554+
<?php echo round($avg_replies_per_post['avg_replies'], 1) ?>
555+
</strong>
556+
条回复
557+
</p>
558+
<?php if ($avg_replies_per_post['avg_replies'] > 10): ?>
559+
<p>你的帖子总能引发热烈的讨论!</p>
560+
<?php elseif ($avg_replies_per_post['avg_replies'] > 3): ?>
561+
<p>你的话题总有人愿意回应</p>
562+
<?php else: ?>
563+
<p>每一次互动都很珍贵</p>
564+
<?php endif; ?>
565+
</div>
566+
<?php endif; ?>
567+
<span class="material-symbols-outlined" id="indicator">
568+
chevron_left
569+
</span>
570+
</section>
571+
<?php endif; ?>
572+
520573
<?php if ($most_mentioned and $most_mentioned['count'] > 0): ?>
521574
<!-- 被引用最多的帖子 -->
522575
<section class="swiper-slide">
@@ -636,16 +689,19 @@
636689
</p>
637690

638691
<ul>
639-
<li>发帖:<?php echo $total_hole_num['total'] ?></li>
640-
<li>回复:<?php echo $total_reply_num['total'] ?></li>
641-
<li>点赞:<?php echo $total_like_others['likes'] ?></li>
642-
<li>被赞:<?php echo $total_like['likes'] ?></li>
643-
<li>收藏:<?php echo $my_favorites_count['total'] ?></li>
644-
<li>被收藏:<?php echo $my_posts_favorited_count['total'] ?></li>
645-
<li>订阅:<?php echo $my_subscription_count['total'] ?></li>
646-
<li>被订阅:<?php echo $my_posts_subscribed_count['total'] ?></li>
692+
<li>发帖:<?php echo $total_hole_num['total'] ?></li>
693+
<li>回复:<?php echo $total_reply_num['total'] ?></li>
694+
<li>点赞:<?php echo $total_like_others['likes'] ?></li>
695+
<li>点踩:<?php echo $total_dislike_others['dislikes'] ?></li>
696+
<li>被赞:<?php echo $total_like['likes'] ?></li>
697+
<li>收藏:<?php echo $my_favorites_count['total'] ?></li>
698+
<li>被收藏:<?php echo $my_posts_favorited_count['total'] ?></li>
699+
<li>订阅:<?php echo $my_subscription_count['total'] ?></li>
700+
<li>被订阅:<?php echo $my_posts_subscribed_count['total'] ?></li>
701+
<li>平均回复长度:<?php echo $avg_reply_length['avg_length'] ? round($avg_reply_length['avg_length'], 1) : 0 ?> 字</li>
702+
<li>每贴平均被回复数:<?php echo $avg_replies_per_post['avg_replies'] ? round($avg_replies_per_post['avg_replies'], 1) : 0 ?> 条</li>
647703
<?php if ($most_reply_day['date']): ?>
648-
<li>回帖最多的日子<?php echo $most_reply_day['date'] ?></li>
704+
<li>回帖最多的日子:<?php echo $most_reply_day['date'] ?></li>
649705
<?php endif; ?>
650706
</ul>
651707

0 commit comments

Comments
 (0)