feat: restructure basic info menu, add kitting monitor table, and implement user preferences api
This commit is contained in:
@ -1,7 +1,9 @@
|
||||
from flask import Blueprint
|
||||
from .inbound import inbound_bp
|
||||
from .bom import bom_bp
|
||||
from .user import user_bp
|
||||
|
||||
v1_bp = Blueprint('v1', __name__)
|
||||
v1_bp.register_blueprint(inbound_bp, url_prefix='/inbound')
|
||||
v1_bp.register_blueprint(bom_bp, url_prefix='/bom')
|
||||
v1_bp.register_blueprint(user_bp, url_prefix='/user')
|
||||
|
||||
@ -375,11 +375,11 @@ def calculate_kitting():
|
||||
if not entries or not isinstance(entries, list):
|
||||
return jsonify({'code': 400, 'msg': '参数格式错误,需要数组'}), 400
|
||||
|
||||
results = BomService.calculate_kitting(entries)
|
||||
result = BomService.calculate_kitting(entries)
|
||||
return jsonify({
|
||||
'code': 200,
|
||||
'msg': '计算成功',
|
||||
'data': results
|
||||
'data': result
|
||||
})
|
||||
except Exception as e:
|
||||
current_app.logger.error(f'MRP齐套计算失败: {str(e)}')
|
||||
|
||||
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