99 lines
3.3 KiB
Python
99 lines
3.3 KiB
Python
# -*- coding: utf-8 -*-
|
|
from web.controllers.api import route_api
|
|
from flask import request,jsonify,g
|
|
from common.models.food.Food import Food
|
|
from common.models.member.MemberCart import MemberCart
|
|
from common.libs.member.CartService import CartService
|
|
from common.libs.Helper import selectFilterObj,getDictFilterField
|
|
from common.libs.UrlManager import UrlManager
|
|
from application import app,db
|
|
import json
|
|
|
|
@route_api.route("/cart/index")
|
|
def cartIndex():
|
|
resp = {'code': 200, 'msg': '添加购物车成功~', 'data': {}}
|
|
member_info = g.member_info
|
|
if not member_info:
|
|
resp['code'] = -1
|
|
resp['msg'] = "获取失败,伪登录~~"
|
|
return jsonify(resp)
|
|
cart_list = MemberCart.query.filter_by( member_id=member_info.id).all()
|
|
data_cart_list = []
|
|
if cart_list:
|
|
food_ids = selectFilterObj( cart_list,"food_id" )
|
|
food_map = getDictFilterField( Food,Food.id,"id",food_ids )
|
|
for item in cart_list:
|
|
tmp_food_info = food_map[ item.food_id ]
|
|
tmp_data = {
|
|
"id":item.id,
|
|
"number":item.quantity,
|
|
"food_id": item.food_id,
|
|
"name":tmp_food_info.name,
|
|
"price":str( tmp_food_info.price ),
|
|
"pic_url": UrlManager.buildImageUrl( tmp_food_info.main_image ),
|
|
"active":True
|
|
}
|
|
data_cart_list.append( tmp_data )
|
|
|
|
resp['data']['list'] = data_cart_list
|
|
return jsonify(resp)
|
|
|
|
@route_api.route("/cart/set", methods=["POST"])
|
|
def setCart():
|
|
resp = {'code': 200, 'msg': '添加购物车成功~', 'data': {}}
|
|
req = request.values
|
|
food_id = int(req['id']) if 'id' in req else 0
|
|
number = int(req['number']) if 'number' in req else 0
|
|
if food_id < 1 or number < 1:
|
|
resp['code'] = -1
|
|
resp['msg'] = "添加购物车失败-1~~"
|
|
return jsonify(resp)
|
|
|
|
member_info = g.member_info
|
|
if not member_info:
|
|
resp['code'] = -1
|
|
resp['msg'] = "添加购物车失败-2~~"
|
|
return jsonify(resp)
|
|
|
|
food_info = Food.query.filter_by( id = food_id ).first()
|
|
if not food_info:
|
|
resp['code'] = -1
|
|
resp['msg'] = "添加购物车失败-3~~"
|
|
return jsonify(resp)
|
|
|
|
if food_info.stock < number:
|
|
resp['code'] = -1
|
|
resp['msg'] = "添加购物车失败,库存不足~~"
|
|
return jsonify(resp)
|
|
|
|
ret = CartService.setItems( member_id=member_info.id,food_id = food_info.id,number = number )
|
|
if not ret:
|
|
resp['code'] = -1
|
|
resp['msg'] = "添加购物车失败-4~~"
|
|
return jsonify(resp)
|
|
return jsonify(resp)
|
|
|
|
@route_api.route("/cart/del", methods=["POST"])
|
|
def delCart():
|
|
resp = {'code': 200, 'msg': '添加购物车成功~', 'data': {}}
|
|
req = request.values
|
|
params_goods = req['goods'] if 'goods' in req else None
|
|
|
|
items = []
|
|
if params_goods:
|
|
items = json.loads(params_goods)
|
|
if not items or len( items ) < 1:
|
|
return jsonify(resp)
|
|
|
|
member_info = g.member_info
|
|
if not member_info:
|
|
resp['code'] = -1
|
|
resp['msg'] = "删除购物车失败-1~~"
|
|
return jsonify(resp)
|
|
|
|
ret = CartService.deleteItem( member_id = member_info.id, items = items )
|
|
if not ret:
|
|
resp['code'] = -1
|
|
resp['msg'] = "删除购物车失败-2~~"
|
|
return jsonify(resp)
|
|
return jsonify(resp) |