diff --git a/routers/blogmanage.py b/routers/blogmanage.py index bff4e0a..bc0c5e2 100644 --- a/routers/blogmanage.py +++ b/routers/blogmanage.py @@ -185,3 +185,28 @@ async def get_id_blog(request: Request, id: str = Path(description="博客id")): except json.JSONDecodeError: blog_list['labelnames'] = [] return response_success(data=blog_list, message="blog search success") + +# 根据博客标签查询 +@router.get("/search/label/") +# @limiter.limit("5/minute") +async def get_label_blog(request: Request, labelname: str = Query(description="博客标签")): + select_query = """ + SELECT blogs.id,blogs.blogtitle,blogs.blogcontent,blogs.readnum, + blogs.create_at,blogs.imglink,blogs.wordcount,blogtypes.typename, + JSON_ARRAYAGG(labels.labelname) AS labelnames FROM blogs + LEFT JOIN blog_label ON blog_label.blogid = blogs.id + LEFT JOIN labels ON labels.id = blog_label.labelid + LEFT JOIN blogtypes ON blogtypes.id = blogs.typeid + WHERE blogs.id IN ( + SELECT blogs.id FROM blogs + LEFT JOIN blog_label ON blog_label.blogid = blogs.id + LEFT JOIN labels ON labels.id = blog_label.labelid + WHERE labels.labelname = %s + ) + GROUP BY blogs.id, blogs.blogtitle, blogs.blogcontent, blogs.create_at, blogs.imglink,blogs.wordcount, blogtypes.typename + ORDER BY blogs.create_at DESC; + """ + label_blog_list = fetch_all(select_query, (labelname,)) + + return response_success(data=label_blog_list, message="blog search success") +