Files
tech-blog/app/services/admin_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

48 lines
1.4 KiB
Python

"""管理员服务"""
from datetime import datetime
from app import db
from app.models import Admin
class AdminService:
"""管理员业务逻辑"""
@staticmethod
def authenticate(username, password):
"""验证管理员登录"""
admin = Admin.query.filter_by(username=username).first()
if admin and admin.is_active and admin.check_password(password):
# 更新最后登录时间
admin.last_login = datetime.utcnow()
db.session.commit()
return admin
return None
@staticmethod
def get_by_id(admin_id):
"""通过ID获取管理员"""
return Admin.query.get(admin_id)
@staticmethod
def get_by_username(username):
"""通过用户名获取管理员"""
return Admin.query.filter_by(username=username).first()
@staticmethod
def create(username, password, email=None):
"""创建管理员"""
admin = Admin(username=username, email=email)
admin.set_password(password)
db.session.add(admin)
db.session.commit()
return admin
@staticmethod
def update_password(admin_id, old_password, new_password):
"""更新密码"""
admin = Admin.query.get(admin_id)
if admin and admin.check_password(old_password):
admin.set_password(new_password)
db.session.commit()
return True
return False