python-flask和Vue两种模式初模板

This commit is contained in:
dxc
2026-01-26 17:00:12 +08:00
parent ee9f4aed3e
commit 2f8a5c55b1
36 changed files with 943 additions and 126 deletions

View File

@ -1,34 +1,57 @@
from flask import Blueprint, request, jsonify
from app.services.stock_service import create_inbound_stock
from app.schemas.stock_schema import StockBuySchema
from app.services.stock_service import StockService
from app.schemas.stock_schema import stock_buy_schema
stock_bp = Blueprint('stocks', __name__)
stocks_bp = Blueprint('stocks', __name__)
@stock_bp.route('/buy-inbound', methods=['POST'])
def buy_inbound():
"""
采购入库接口
POST /api/v1/buy-inbound
Body: { "material_id": 1, "qty_inbound": 100, "price_unit": 10.5 ... }
"""
# 1. 接收 JSON 数据
@stocks_bp.route('/inbound', methods=['GET'])
def get_inbound_list():
page = request.args.get('page', 1, type=int)
limit = request.args.get('pageSize', 10, type=int)
result = StockService.get_list(page, limit)
return jsonify({
'code': 200,
'msg': 'success',
'data': result
})
@stocks_bp.route('/inbound', methods=['POST'])
def create_inbound():
json_data = request.get_json()
if not json_data:
return jsonify({"message": "No input data provided"}), 400
# 2. 数据校验
schema = StockBuySchema()
try:
# 这一步只做校验,不直接生成对象,因为我们要在 Service 里手动处理逻辑
data = schema.load(json_data, partial=True)
# 1. 参数校验
data = stock_buy_schema.load(json_data)
# 2. 调用业务逻辑
new_stock = StockService.create_inbound(data)
# 3. 返回成功
return jsonify({
'code': 200,
'msg': '入库成功',
'data': new_stock.to_dict()
}), 201
except Exception as e:
return jsonify({"message": "Validation error", "errors": e.messages}), 422
# 捕获 ValueError 或 SQLAlchemyError
return jsonify({'code': 400, 'msg': str(e)}), 400
# 3. 调用业务逻辑
@stocks_bp.route('/inbound/<int:id>', methods=['PUT'])
def update_inbound(id):
json_data = request.get_json()
try:
new_stock = create_inbound_stock(data)
# 4. 返回成功结果
result = schema.dump(new_stock)
return jsonify({"message": "Inbound successful", "data": result}), 201
StockService.update_inbound(id, json_data)
return jsonify({'code': 200, 'msg': '更新成功'})
except Exception as e:
return jsonify({"message": "Internal Server Error", "error": str(e)}), 500
return jsonify({'code': 400, 'msg': str(e)}), 400
@stocks_bp.route('/inbound/<int:id>', methods=['DELETE'])
def delete_inbound(id):
try:
StockService.delete_inbound(id)
return jsonify({'code': 200, 'msg': '删除成功'})
except Exception as e:
return jsonify({'code': 400, 'msg': str(e)}), 400