fix: 修复寻配号两个问题

1. matched_count为0:添加match_collections_count计算
2. 留言功能失效:迁移到/api/seek/comment和/api/seek/comments/

News.jsx: 0.0.4 → 0.0.5
seek.py: 0.0.5 → 0.0.6
This commit is contained in:
甲辰生产 2026-04-24 13:52:10 +08:00
parent c326d184f9
commit 877f314617
2 changed files with 79 additions and 7 deletions

View File

@ -1,6 +1,6 @@
# seek - 寻配号路由
# Version: 0.0.5 (2026-04-24)
# 更新:路由顺序调整,将/{seek_id}移到具体路由之后
# Version: 0.0.6 (2026-04-24)
# 更新:添加matched_count计算留言功能迁移到seek.py
from fastapi import APIRouter, Depends, Query, HTTPException
from sqlalchemy.orm import Session
@ -11,6 +11,7 @@ from app.core.database import get_db
from app.core.auth import get_current_user
from app.models.seek_info import SeekInfo
from app.models.models import User, Collection
from app.routers.information import match_collections_count
from app.utils.coolbot_matcher import (
match_pattern,
match_self_collections_count,
@ -103,6 +104,12 @@ def get_seek_list(
user_name = user.f01_01_name if user else '匿名用户'
# 构建响应(不实时计算网络匹配,网络匹配在点击时再查)
# 计算自有匹配数量
matched_count = 0
if item.expect_number and len(item.expect_number) == 10:
if current_user and current_user.f99_90_id:
matched_count = match_collections_count(db, current_user.f99_90_id, item.expect_number)
result.append(SeekInfoResponse(
id=item.id,
user_id=item.user_id,
@ -123,7 +130,7 @@ def get_seek_list(
created_at=item.created_at,
updated_at=item.updated_at,
user_name=user_name,
matched_count=0,
matched_count=matched_count,
network_matched_count=0
))
@ -404,3 +411,68 @@ def delete_seek(
seek.status = "deleted"
db.commit()
return {"message": "删除成功"}
# ============ 留言功能从information.py迁移============
from pydantic import BaseModel
class CommentRequest(BaseModel):
information_id: str
content: str
@router.post("/comment")
def add_comment(
request: CommentRequest,
current_user = Depends(get_current_user),
db: Session = Depends(get_db)
):
"""添加留言 - 支持seek_info表"""
if not current_user:
raise HTTPException(status_code=401, detail="请先登录")
# 查询seek_info表
info = db.query(SeekInfo).filter(SeekInfo.id == request.information_id).first()
if not info:
raise HTTPException(status_code=404, detail="寻配号不存在")
# 创建留言
from app.models.models import InformationComment
comment = InformationComment(
information_id=request.information_id,
user_id=current_user.f99_90_id,
content=request.content
)
db.add(comment)
db.commit()
return {
"message": "留言成功",
"comment": {
"id": comment.id,
"content": comment.content,
"user_name": current_user.f01_01_name,
"user_avatar": current_user.avatar,
"created_at": comment.created_at
}
}
@router.get("/comments/{information_id}")
def get_comments(
information_id: str,
db: Session = Depends(get_db)
):
"""获取寻配号的评论列表"""
from app.models.models import InformationComment
comments = db.query(InformationComment).filter(
InformationComment.information_id == information_id
).order_by(InformationComment.created_at.desc()).all()
return [
{
"id": c.id,
"content": c.content,
"user_name": c.user.f01_01_name if c.user else '匿名用户',
"user_avatar": c.user.avatar if c.user else None,
"created_at": c.created_at
}
for c in comments
]

View File

@ -1,7 +1,7 @@
/**
* News - 资讯列表页面
* Version: 0.0.4 (2026-04-24)
* 更新API统一到/api/seek/*移除列表实时网络匹配计算留言时间显示
* Version: 0.0.5 (2026-04-24)
* 更新API统一到/api/seek/*留言功能迁移
*/
import React, { useState, useEffect } from 'react'
@ -145,7 +145,7 @@ export default function News() {
const fetchComments = async (infoId) => {
//
try {
const res = await fetch(`${API_BASE}/api/information/comments/${infoId}`)
const res = await fetch(`${API_BASE}/api/seek/comments/${infoId}`)
const data = await res.json()
setComments(prev => ({...prev, [infoId]: data || []}))
} catch (e) {
@ -159,7 +159,7 @@ export default function News() {
const token = localStorage.getItem('token')
if (!token) { alert('请先登录'); return }
try {
const res = await fetch(`${API_BASE}/api/information/comment`, {
const res = await fetch(`${API_BASE}/api/seek/comment`, {
method: 'POST',
headers: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application/json' },
body: JSON.stringify({ information_id: infoId, content: commentText })