180 lines
6.4 KiB
Python
180 lines
6.4 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 application import app,db
|
|
from common.models.pay.PayOrder import PayOrder
|
|
from common.models.pay.PayOrderItem import PayOrderItem
|
|
from common.libs.UrlManager import UrlManager
|
|
from common.libs.Helper import selectFilterObj,getDictFilterField,getCurrentDate
|
|
from common.models.member.MemberComments import MemberComments
|
|
import json,datetime
|
|
|
|
@route_api.route("/my/order")
|
|
def myOrderList():
|
|
resp = {'code': 200, 'msg': '操作成功~', 'data': {}}
|
|
member_info = g.member_info
|
|
req = request.values
|
|
status = int( req['status'] ) if 'status' in req else 0
|
|
query = PayOrder.query.filter_by( member_id = member_info.id )
|
|
if status == -8 :#等待付款
|
|
query = query.filter( PayOrder.status == -8 )
|
|
elif status == -7:#待发货
|
|
query = query.filter( PayOrder.status == 1,PayOrder.express_status == -7,PayOrder.comment_status == 0 )
|
|
elif status == -6:#待确认
|
|
query = query.filter(PayOrder.status == 1, PayOrder.express_status == -6,PayOrder.comment_status == 0)
|
|
elif status == -5:#待评价
|
|
query = query.filter(PayOrder.status == 1, PayOrder.express_status == 1,PayOrder.comment_status == 0)
|
|
elif status == 1:#已完成
|
|
query = query.filter(PayOrder.status == 1, PayOrder.express_status == 1,PayOrder.comment_status == 1 )
|
|
else:
|
|
query = query.filter( PayOrder.status == 0 )
|
|
|
|
pay_order_list = query.order_by( PayOrder.id.desc() ).all()
|
|
data_pay_order_list = []
|
|
if pay_order_list:
|
|
pay_order_ids = selectFilterObj( pay_order_list,"id" )
|
|
pay_order_item_list = PayOrderItem.query.filter( PayOrderItem.pay_order_id.in_( pay_order_ids ) ).all()
|
|
food_ids = selectFilterObj( pay_order_item_list,"food_id" )
|
|
food_map = getDictFilterField( Food,Food.id,"id",food_ids )
|
|
pay_order_item_map = {}
|
|
if pay_order_item_list:
|
|
for item in pay_order_item_list:
|
|
if item.pay_order_id not in pay_order_item_map:
|
|
pay_order_item_map[ item.pay_order_id ] = []
|
|
|
|
tmp_food_info = food_map[ item.food_id ]
|
|
pay_order_item_map[item.pay_order_id].append({
|
|
'id':item.id,
|
|
'food_id':item.food_id,
|
|
'quantity':item.quantity,
|
|
'price':str( item.price ),
|
|
'pic_url':UrlManager.buildImageUrl( tmp_food_info.main_image ),
|
|
'name':tmp_food_info.name
|
|
})
|
|
|
|
|
|
for item in pay_order_list:
|
|
tmp_data = {
|
|
'status':item.pay_status,
|
|
'status_desc':item.status_desc,
|
|
'date':item.created_time.strftime("%Y-%m-%d %H:%M:%S"),
|
|
'order_number':item.order_number,
|
|
'order_sn':item.order_sn,
|
|
'note':item.note,
|
|
'total_price':str( item.total_price ),
|
|
'goods_list':pay_order_item_map[ item.id ]
|
|
}
|
|
|
|
data_pay_order_list.append( tmp_data )
|
|
resp['data']['pay_order_list'] = data_pay_order_list
|
|
return jsonify(resp)
|
|
|
|
@route_api.route("/my/order/info")
|
|
def myOrderInfo():
|
|
resp = {'code': 200, 'msg': '操作成功~', 'data': {}}
|
|
member_info = g.member_info
|
|
req = request.values
|
|
order_sn = req['order_sn'] if 'order_sn' in req else ''
|
|
pay_order_info = PayOrder.query.filter_by( member_id=member_info.id ,order_sn = order_sn).first()
|
|
if not pay_order_info:
|
|
resp['code'] = -1
|
|
resp['msg'] = "系统繁忙,请稍后再试~~"
|
|
return jsonify(resp)
|
|
|
|
express_info = {}
|
|
if pay_order_info.express_info:
|
|
express_info = json.loads( pay_order_info.express_info )
|
|
|
|
tmp_deadline = pay_order_info.created_time + datetime.timedelta(minutes=30)
|
|
info = {
|
|
"order_sn":pay_order_info.order_sn,
|
|
"status":pay_order_info.pay_status,
|
|
"status_desc":pay_order_info.status_desc,
|
|
"pay_price":str( pay_order_info.pay_price),
|
|
"yun_price":str( pay_order_info.yun_price),
|
|
"total_price":str( pay_order_info.total_price),
|
|
"address":express_info,
|
|
"goods": [],
|
|
"deadline":tmp_deadline.strftime("%Y-%m-%d %H:%M")
|
|
}
|
|
|
|
pay_order_items = PayOrderItem.query.filter_by( pay_order_id = pay_order_info.id ).all()
|
|
if pay_order_items:
|
|
food_ids = selectFilterObj( pay_order_items , "food_id")
|
|
food_map = getDictFilterField(Food, Food.id, "id", food_ids)
|
|
for item in pay_order_items:
|
|
tmp_food_info = food_map[item.food_id]
|
|
tmp_data = {
|
|
"name": tmp_food_info.name,
|
|
"price": str( item.price ),
|
|
"unit": item.quantity,
|
|
"pic_url": UrlManager.buildImageUrl( tmp_food_info.main_image ),
|
|
}
|
|
info['goods'].append( tmp_data )
|
|
resp['data']['info'] = info
|
|
return jsonify(resp)
|
|
|
|
|
|
@route_api.route("/my/comment/add",methods = [ "POST" ])
|
|
def myCommentAdd():
|
|
resp = {'code': 200, 'msg': '操作成功~', 'data': {}}
|
|
member_info = g.member_info
|
|
req = request.values
|
|
order_sn = req['order_sn'] if 'order_sn' in req else ''
|
|
score = req['score'] if 'score' in req else 10
|
|
content = req['content'] if 'content' in req else ''
|
|
|
|
pay_order_info = PayOrder.query.filter_by( member_id=member_info.id ,order_sn = order_sn).first()
|
|
if not pay_order_info:
|
|
resp['code'] = -1
|
|
resp['msg'] = "系统繁忙,请稍后再试~~"
|
|
return jsonify(resp)
|
|
|
|
if pay_order_info.comment_status:
|
|
resp['code'] = -1
|
|
resp['msg'] = "已经评价过了~~"
|
|
return jsonify(resp)
|
|
|
|
pay_order_items = PayOrderItem.query.filter_by( pay_order_id = pay_order_info.id ).all()
|
|
food_ids = selectFilterObj( pay_order_items,"food_id" )
|
|
tmp_food_ids_str = '_'.join(str(s) for s in food_ids if s not in [None])
|
|
model_comment = MemberComments()
|
|
model_comment.food_ids = "_%s_"%tmp_food_ids_str
|
|
model_comment.member_id = member_info.id
|
|
model_comment.pay_order_id = pay_order_info.id
|
|
model_comment.score = score
|
|
model_comment.content = content
|
|
db.session.add( model_comment )
|
|
|
|
pay_order_info.comment_status = 1
|
|
pay_order_info.updated_time = getCurrentDate()
|
|
db.session.add( pay_order_info )
|
|
|
|
db.session.commit()
|
|
return jsonify(resp)
|
|
|
|
@route_api.route("/my/comment/list" )
|
|
def myCommentList():
|
|
resp = {'code': 200, 'msg': '操作成功~', 'data': {}}
|
|
member_info = g.member_info
|
|
comment_list = MemberComments.query.filter_by( member_id=member_info.id )\
|
|
.order_by(MemberComments.id.desc()).all()
|
|
data_comment_list = []
|
|
if comment_list:
|
|
pay_order_ids = selectFilterObj( comment_list,"pay_order_id" )
|
|
pay_order_map = getDictFilterField( PayOrder,PayOrder.id,"id",pay_order_ids )
|
|
for item in comment_list:
|
|
tmp_pay_order_info = pay_order_map[ item.pay_order_id ]
|
|
tmp_data = {
|
|
"date":item.created_time.strftime("%Y-%m-%d %H:%M:%S"),
|
|
"content":item.content,
|
|
"order_number":tmp_pay_order_info.order_number
|
|
}
|
|
data_comment_list.append( tmp_data )
|
|
resp['data']['list'] = data_comment_list
|
|
return jsonify(resp)
|
|
|
|
|
|
|