功能特性: - 前端文章展示 (Markdown渲染、代码高亮) - 后台管理系统 (文章、分类、标签、作者管理) - 图片上传 (点击、拖拽、粘贴) - 网站设置 (Logo、底部宣传图片上传) - 访问统计 (IP记录、趋势图表) - 参考来源、附件支持 - 单端口部署 (16012) 技术栈: - Flask 3.0 + SQLAlchemy - SQLite数据库 - marked.js + highlight.js (Markdown渲染) - Chart.js (统计图表)
48 lines
1.4 KiB
Python
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 |