refactor: P3d 视图层迁入 src/modules/ → router.py(26 视图)——P3 全部完成

- 17 个单视图 + 4 组合并(login+index→auth、config+config_item→configuration、
  dict+dict_item→dictionary、login_log+operation_log→log)
- 重写:服务引用→src.modules(module 别名保留)、models/forms→src.modules
- 中间件引用保持 application.middleware(P5 迁移)
- application/views/__init__.py 蓝图注册加去重(合并模块 shim 重复导出)
- application/views/ 全部替换为 shim

【修复】index.py 组合导入 menu,user 被单名替换先命中残留 user,已修复

【验收】25 蓝图无重复注册;应用启动;pytest 5 passed;接口冒烟(登录校验、
鉴权 401)正常。P3 四层(models/forms/services/views)全部迁入 src/modules/

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
DjangoAdmin Dev
2026-08-07 14:23:53 +08:00
co-authored by Claude
parent 87aec4e26e
commit d33dc1fc34
47 changed files with 4320 additions and 4478 deletions
+4 -199
View File
@@ -1,203 +1,8 @@
"""
文章管理控制器模块
兼容 shim(绞杀者迁移期间保留)
=============================================================
提供文章(Article)相关的API接口,包括:
- 文章分页查询
- 文章详情查询
- 文章添加、更新、删除
- 文章状态设置
- 文章点击量增加
- 文章列表获取
- 根据分类获取文章
所属包: application.views
依赖模块: application.services.article - 文章业务逻辑层
application.middleware.check_permission - 权限校验中间件
路由已迁移至 src.modules.cms.article.router。
本文件仅作兼容转发,最终在 P7(切尾)阶段删除。
"""
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
from src.modules.cms.article.router import * # noqa: F401,F403