功能特性: - 前端文章展示 (Markdown渲染、代码高亮) - 后台管理系统 (文章、分类、标签、作者管理) - 图片上传 (点击、拖拽、粘贴) - 网站设置 (Logo、底部宣传图片上传) - 访问统计 (IP记录、趋势图表) - 参考来源、附件支持 - 单端口部署 (16012) 技术栈: - Flask 3.0 + SQLAlchemy - SQLite数据库 - marked.js + highlight.js (Markdown渲染) - Chart.js (统计图表)
62 lines
1.6 KiB
Python
62 lines
1.6 KiB
Python
"""分类服务"""
|
|
from app import db
|
|
from app.models import Category
|
|
|
|
|
|
class CategoryService:
|
|
"""分类业务逻辑"""
|
|
|
|
@staticmethod
|
|
def get_all():
|
|
"""获取所有分类"""
|
|
return Category.query.order_by(Category.sort_order).all()
|
|
|
|
@staticmethod
|
|
def get_by_id(category_id):
|
|
"""通过ID获取分类"""
|
|
return Category.query.get(category_id)
|
|
|
|
@staticmethod
|
|
def get_by_slug(slug):
|
|
"""通过slug获取分类"""
|
|
return Category.query.filter_by(slug=slug).first()
|
|
|
|
@staticmethod
|
|
def create(name, slug=None, description=None, sort_order=0):
|
|
"""创建分类"""
|
|
from slugify import slugify
|
|
slug = slug or slugify(name)
|
|
|
|
category = Category(
|
|
name=name,
|
|
slug=slug,
|
|
description=description,
|
|
sort_order=sort_order
|
|
)
|
|
db.session.add(category)
|
|
db.session.commit()
|
|
return category
|
|
|
|
@staticmethod
|
|
def update(category_id, **kwargs):
|
|
"""更新分类"""
|
|
category = Category.query.get(category_id)
|
|
if not category:
|
|
return None
|
|
|
|
for key, value in kwargs.items():
|
|
if hasattr(category, key):
|
|
setattr(category, key, value)
|
|
|
|
db.session.commit()
|
|
return category
|
|
|
|
@staticmethod
|
|
def delete(category_id):
|
|
"""删除分类"""
|
|
category = Category.query.get(category_id)
|
|
if category:
|
|
db.session.delete(category)
|
|
db.session.commit()
|
|
return True
|
|
return False |