Files
tech-blog/app/services/category_service.py
hz4th_coder e689fed71e 初始化技术博客项目
功能特性:
- 前端文章展示 (Markdown渲染、代码高亮)
- 后台管理系统 (文章、分类、标签、作者管理)
- 图片上传 (点击、拖拽、粘贴)
- 网站设置 (Logo、底部宣传图片上传)
- 访问统计 (IP记录、趋势图表)
- 参考来源、附件支持
- 单端口部署 (16012)

技术栈:
- Flask 3.0 + SQLAlchemy
- SQLite数据库
- marked.js + highlight.js (Markdown渲染)
- Chart.js (统计图表)
2026-06-04 23:12:34 +08:00

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