feat: cleanly add user preferences api and rollback wrong auth routes

This commit is contained in:
DXC
2026-03-24 11:01:39 +08:00
parent 5fe645dc0b
commit 4d821f2de7
3 changed files with 48 additions and 1 deletions

View File

@ -42,6 +42,16 @@ def create_app():
except ImportError as e:
print(f"❌ 错误: Auth 模块导入失败: {e}")
# -----------------------------------------------------
# 2.0.1 注册用户偏好模块 (User Preferences)
# -----------------------------------------------------
try:
from app.api.v1.user import user_prefs_bp
app.register_blueprint(user_prefs_bp, url_prefix='/api/v1/user')
print("✅ User Preferences 模块注册成功")
except ImportError as e:
print(f"❌ 错误: User Preferences 模块导入失败: {e}")
# -----------------------------------------------------
# 2.1 注册入库聚合模块 (Inbound)
# -----------------------------------------------------

View File

@ -0,0 +1,35 @@
from flask import Blueprint, jsonify, request, current_app
from flask_jwt_extended import jwt_required, get_jwt_identity
from app.models.system import SysUser
from app.extensions import db
user_prefs_bp = Blueprint('user_preferences', __name__)
@user_prefs_bp.route('/preferences', methods=['GET'])
@jwt_required()
def get_prefs():
identity = get_jwt_identity()
user_id = identity.get('id') if isinstance(identity, dict) else identity
if not user_id:
return jsonify({'code': 401, 'msg': '无效身份'}), 401
user = SysUser.query.get(user_id)
if not user:
return jsonify({'code': 404, 'msg': '用户不存在'}), 404
return jsonify({'code': 200, 'msg': 'success', 'data': user.preferences or {}})
@user_prefs_bp.route('/preferences', methods=['PUT'])
@jwt_required()
def update_prefs():
identity = get_jwt_identity()
user_id = identity.get('id') if isinstance(identity, dict) else identity
if not user_id:
return jsonify({'code': 401, 'msg': '无效身份'}), 401
user = SysUser.query.get(user_id)
if not user:
return jsonify({'code': 404, 'msg': '用户不存在'}), 404
data = request.get_json() or {}
user.preferences = data
db.session.commit()
return jsonify({'code': 200, 'msg': 'success', 'data': user.preferences})

View File

@ -23,6 +23,7 @@ class SysUser(db.Model):
status = db.Column(db.String(20), default='active')
password_hash = db.Column(db.Text)
created_at = db.Column(db.DateTime, default=beijing_time)
preferences = db.Column(db.JSON, nullable=True)
def set_password(self, password):
"""生成加密密码"""
@ -61,7 +62,8 @@ class SysUser(db.Model):
'department': self.department,
'role': self.role,
'status': self.status,
'created_at': self.created_at.isoformat() if self.created_at else None
'created_at': self.created_at.isoformat() if self.created_at else None,
'preferences': self.preferences or {}
}