feat: restructure basic info menu, add kitting monitor table, and implement user preferences api
This commit is contained in:
65
inventory-backend/app/api/v1/user.py
Normal file
65
inventory-backend/app/api/v1/user.py
Normal 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
|
||||
Reference in New Issue
Block a user