chore: 基线提交(重构前代码快照)
- git 初始化 + .gitignore 补全(根 .env / logs / instance / __pycache__ 等) - 修复 utils/.gitignore 误将整个 utils/ 源码层忽略的问题,补入全部工具源码(含 ip2region.xdb) - 含后端全部代码:application / extensions / utils / config / migrations - 含前端 ui/(后续整体迁走) - 不含根 .env(含密钥,本地保留) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,203 @@
|
||||
"""
|
||||
文章管理控制器模块
|
||||
=============================================================
|
||||
|
||||
提供文章(Article)相关的API接口,包括:
|
||||
- 文章分页查询
|
||||
- 文章详情查询
|
||||
- 文章添加、更新、删除
|
||||
- 文章状态设置
|
||||
- 文章点击量增加
|
||||
- 文章列表获取
|
||||
- 根据分类获取文章
|
||||
|
||||
所属包: application.views
|
||||
依赖模块: application.services.article - 文章业务逻辑层
|
||||
application.middleware.check_permission - 权限校验中间件
|
||||
"""
|
||||
|
||||
from flask import Blueprint
|
||||
|
||||
from application.middleware.check_demo import check_demo
|
||||
from application.middleware.check_permission import check_permission
|
||||
from application.services import article
|
||||
from utils.request import parse_batch_ids
|
||||
article_blue = Blueprint('article', __name__, url_prefix='/article')
|
||||
|
||||
from utils import R
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 文章分页查询
|
||||
# ============================================================
|
||||
|
||||
@article_blue.route('/page', methods=["GET"])
|
||||
@check_permission("sys:article:page")
|
||||
def page():
|
||||
"""
|
||||
查询文章分页数据
|
||||
|
||||
功能说明:
|
||||
获取文章列表的分页数据,支持关键词搜索和分类、状态筛选。
|
||||
|
||||
Query Parameters:
|
||||
pageNo: 当前页码(可选,默认1)
|
||||
pageSize: 每页记录数(可选,默认PAGE_SIZE)
|
||||
title: 文章标题(可选,模糊查询)
|
||||
category_id: 分类ID(可选,精确查询)
|
||||
status: 文章状态(可选,0-正常,1-下架)
|
||||
startTime: 开始时间(可选)
|
||||
endTime: 结束时间(可选)
|
||||
|
||||
Returns:
|
||||
JSON: 文章分页数据,包含 records(数据列表)、total(总记录数)等
|
||||
"""
|
||||
result = article.get_article_page()
|
||||
return result
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 文章详情查询
|
||||
# ============================================================
|
||||
|
||||
@article_blue.route('/detail/<int:id>', methods=["GET"])
|
||||
def detail(id):
|
||||
"""
|
||||
查询文章详情
|
||||
|
||||
功能说明:
|
||||
获取文章的详细信息,同时增加文章点击量。
|
||||
|
||||
Args:
|
||||
id: 文章ID
|
||||
|
||||
Returns:
|
||||
JSON: 文章详细信息
|
||||
"""
|
||||
data = article.get_article_detail(id)
|
||||
if data:
|
||||
return R.ok(data=data)
|
||||
return R.failed("文章不存在")
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 文章添加
|
||||
# ============================================================
|
||||
|
||||
@article_blue.route('/add', methods=["POST"])
|
||||
@check_permission("sys:article:add")
|
||||
@check_demo
|
||||
def add():
|
||||
"""
|
||||
添加文章
|
||||
|
||||
功能说明:
|
||||
创建新的文章记录。
|
||||
|
||||
Request Body:
|
||||
{
|
||||
"category_id": 1,
|
||||
"title": "文章标题",
|
||||
"cover": "封面图片URL",
|
||||
"images": ["image1.jpg", "image2.jpg"],
|
||||
"intro": "文章导读",
|
||||
"content": "文章内容",
|
||||
"author": "作者",
|
||||
"status": 0,
|
||||
"sort": 0
|
||||
}
|
||||
|
||||
Returns:
|
||||
JSON: 操作结果
|
||||
"""
|
||||
result = article.add_article()
|
||||
return result
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 文章更新
|
||||
# ============================================================
|
||||
|
||||
@article_blue.route('/update', methods=["PUT"])
|
||||
@check_permission("sys:article:update")
|
||||
@check_demo
|
||||
def update():
|
||||
"""
|
||||
更新文章
|
||||
|
||||
功能说明:
|
||||
修改已有文章的信息。
|
||||
|
||||
Returns:
|
||||
JSON: 操作结果
|
||||
"""
|
||||
result = article.update_article()
|
||||
return result
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 文章删除
|
||||
# ============================================================
|
||||
|
||||
@article_blue.route('/delete/<string:id>', methods=["DELETE"])
|
||||
@check_permission("sys:article:delete")
|
||||
@check_demo
|
||||
def delete(id):
|
||||
"""
|
||||
删除文章
|
||||
|
||||
Args:
|
||||
id: 文章ID(支持逗号分隔的多个ID)
|
||||
|
||||
Returns:
|
||||
JSON: 操作结果
|
||||
"""
|
||||
result = article.delete_articles(id)
|
||||
return result
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 文章批量删除
|
||||
# ============================================================
|
||||
|
||||
@article_blue.route('/batchDelete', methods=["DELETE"])
|
||||
@check_permission("sys:article:batch_delete")
|
||||
@check_demo
|
||||
def batch_delete():
|
||||
"""
|
||||
批量删除文章
|
||||
|
||||
功能说明:
|
||||
批量删除文章记录,支持传入ID数组。
|
||||
|
||||
Request Body:
|
||||
[1, 2, 3] # 文章ID数组
|
||||
|
||||
Returns:
|
||||
JSON: 操作结果
|
||||
"""
|
||||
id_str, err = parse_batch_ids()
|
||||
if err:
|
||||
return err
|
||||
return article.delete_articles(id_str)
|
||||
|
||||
|
||||
# ============================================================
|
||||
# 文章状态设置
|
||||
# ============================================================
|
||||
|
||||
@article_blue.route('/status', methods=["PUT"])
|
||||
@check_permission("sys:article:status")
|
||||
@check_demo
|
||||
def status():
|
||||
"""
|
||||
设置文章状态
|
||||
|
||||
功能说明:
|
||||
启用或下架文章。
|
||||
|
||||
Returns:
|
||||
JSON: 操作结果
|
||||
"""
|
||||
result = article.update_article_status()
|
||||
return result
|
||||
Reference in New Issue
Block a user