""" 文章管理控制器模块 ============================================================= 提供文章(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/', 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/', 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