Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
981b3c9c5c | ||
|
|
127654a558 |
@@ -198,6 +198,14 @@ class Database:
|
|||||||
cursor.execute('DELETE FROM articles WHERE id = ?', (article_id,))
|
cursor.execute('DELETE FROM articles WHERE id = ?', (article_id,))
|
||||||
conn.commit()
|
conn.commit()
|
||||||
return cursor.rowcount > 0
|
return cursor.rowcount > 0
|
||||||
|
|
||||||
|
def get_articles_count(self):
|
||||||
|
"""获取文章总数"""
|
||||||
|
with self.get_connection() as conn:
|
||||||
|
cursor = conn.cursor()
|
||||||
|
cursor.execute('SELECT COUNT(*) as count FROM articles')
|
||||||
|
row = cursor.fetchone()
|
||||||
|
return row['count'] if row else 0
|
||||||
|
|
||||||
# ========== 待处理产品操作 ==========
|
# ========== 待处理产品操作 ==========
|
||||||
def add_pending_product(self, product_name, category=None, subcategory=None, priority=0, source='manual'):
|
def add_pending_product(self, product_name, category=None, subcategory=None, priority=0, source='manual'):
|
||||||
|
|||||||
+11
-6
@@ -14,6 +14,7 @@ def list_articles():
|
|||||||
offset = request.args.get('offset', 0, type=int)
|
offset = request.args.get('offset', 0, type=int)
|
||||||
|
|
||||||
articles = db.get_all_articles(limit=limit, offset=offset)
|
articles = db.get_all_articles(limit=limit, offset=offset)
|
||||||
|
total_count = db.get_articles_count() # 获取总数
|
||||||
|
|
||||||
# 解析JSON字段
|
# 解析JSON字段
|
||||||
for article in articles:
|
for article in articles:
|
||||||
@@ -23,7 +24,7 @@ def list_articles():
|
|||||||
return jsonify({
|
return jsonify({
|
||||||
'success': True,
|
'success': True,
|
||||||
'articles': articles,
|
'articles': articles,
|
||||||
'count': len(articles)
|
'count': total_count # 返回总数
|
||||||
})
|
})
|
||||||
|
|
||||||
@bp.route('/search', methods=['GET'])
|
@bp.route('/search', methods=['GET'])
|
||||||
@@ -31,16 +32,20 @@ def search_articles():
|
|||||||
"""搜索文章"""
|
"""搜索文章"""
|
||||||
keyword = request.args.get('q', '')
|
keyword = request.args.get('q', '')
|
||||||
category = request.args.get('category')
|
category = request.args.get('category')
|
||||||
limit = request.args.get('limit', type=int) # 支持limit参数
|
limit = request.args.get('limit', type=int)
|
||||||
|
offset = request.args.get('offset', 0, type=int)
|
||||||
|
|
||||||
if not keyword:
|
if not keyword:
|
||||||
return jsonify({'error': '请提供搜索关键词'}), 400
|
return jsonify({'error': '请提供搜索关键词'}), 400
|
||||||
|
|
||||||
articles = db.search_articles(keyword, category)
|
all_articles = db.search_articles(keyword, category)
|
||||||
|
total_count = len(all_articles)
|
||||||
|
|
||||||
# 如果有limit参数,截取
|
# 分页截取
|
||||||
if limit:
|
if limit:
|
||||||
articles = articles[:limit]
|
articles = all_articles[offset:offset + limit]
|
||||||
|
else:
|
||||||
|
articles = all_articles
|
||||||
|
|
||||||
# 解析JSON字段
|
# 解析JSON字段
|
||||||
for article in articles:
|
for article in articles:
|
||||||
@@ -50,7 +55,7 @@ def search_articles():
|
|||||||
return jsonify({
|
return jsonify({
|
||||||
'success': True,
|
'success': True,
|
||||||
'articles': articles,
|
'articles': articles,
|
||||||
'count': len(articles)
|
'count': total_count # 返回总数,用于分页
|
||||||
})
|
})
|
||||||
|
|
||||||
@bp.route('/<int:article_id>', methods=['GET'])
|
@bp.route('/<int:article_id>', methods=['GET'])
|
||||||
|
|||||||
@@ -49,10 +49,10 @@ async function loadArticles() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (keyword) {
|
if (keyword) {
|
||||||
// 搜索时也传递 limit 参数
|
// 搜索时也传递 limit 和 offset 参数
|
||||||
let searchUrl = `${API_BASE}/api/articles/search?q=${encodeURIComponent(keyword)}`;
|
let searchUrl = `${API_BASE}/api/articles/search?q=${encodeURIComponent(keyword)}`;
|
||||||
if (category) searchUrl += `&category=${encodeURIComponent(category)}`;
|
if (category) searchUrl += `&category=${encodeURIComponent(category)}`;
|
||||||
searchUrl += `&limit=${pageSize}`;
|
searchUrl += `&limit=${pageSize}&offset=${(currentPage - 1) * pageSize}`;
|
||||||
|
|
||||||
const response = await fetch(searchUrl);
|
const response = await fetch(searchUrl);
|
||||||
const data = await response.json();
|
const data = await response.json();
|
||||||
|
|||||||
Reference in New Issue
Block a user