feat: restructure basic info menu, add kitting monitor table, and implement user preferences api

This commit is contained in:
DXC
2026-03-24 09:29:20 +08:00
parent 706d7e551c
commit b5610de1f1
9 changed files with 775 additions and 457 deletions

View File

@ -0,0 +1,65 @@
from flask import Blueprint, request, jsonify, current_app
from app.models.system import SysUser
from app.extensions import db
from flask_jwt_extended import jwt_required, get_jwt_identity
from app.utils.decorators import audit_log
user_bp = Blueprint('user', __name__)
# ==============================================================================
# 用户偏好配置 API
# ==============================================================================
@user_bp.route('/preferences', methods=['GET'])
@jwt_required()
def get_preferences():
"""
读取当前用户的 preferences 字段
GET /api/v1/user/preferences
"""
try:
user_id = get_jwt_identity()
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 {}
})
except Exception as e:
current_app.logger.error(f'读取用户偏好失败: {str(e)}')
return jsonify({'code': 500, 'msg': f'读取失败: {str(e)}'}), 500
@user_bp.route('/preferences', methods=['PUT'])
@jwt_required()
@audit_log(module_name='系统', action_type='修改偏好配置')
def save_preferences():
"""
保存/更新当前用户的 preferences 字段
PUT /api/v1/user/preferences
入参: 任意 JSON 字典
"""
try:
user_id = get_jwt_identity()
user = SysUser.query.get(user_id)
if not user:
return jsonify({'code': 404, 'msg': '用户不存在'}), 404
new_prefs = request.get_json()
if new_prefs is None or not isinstance(new_prefs, dict):
return jsonify({'code': 400, 'msg': '参数必须是 JSON 对象'}), 400
user.preferences = new_prefs
db.session.commit()
return jsonify({
'code': 200,
'msg': '保存成功',
'data': user.preferences
})
except Exception as e:
db.session.rollback()
current_app.logger.error(f'保存用户偏好失败: {str(e)}')
return jsonify({'code': 500, 'msg': f'保存失败: {str(e)}'}), 500