def foodInfo(): resp = {'code': 200, 'msg': '操作成功~', 'data': {}} req = request.values id = int(req['id']) if 'id' in req else 0 food_info = Food.query.filter_by(id=id).first() if not food_info or not food_info.status: resp['code'] = -1 resp['msg'] = "美食已下架" return jsonify(resp) member_info = g.member_info cart_number = 0 if member_info: cart_number = MemberCart.query.filter_by( member_id=member_info.id).count() resp['data']['info'] = { "id": food_info.id, "name": food_info.name, "summary": food_info.summary, "total_count": food_info.total_count, "comment_count": food_info.comment_count, 'main_image': UrlManager.build_image_url(food_info.main_image), "price": str(food_info.price), "stock": food_info.stock, "pics": [UrlManager.build_image_url(food_info.main_image)] } resp['data']['cart_number'] = cart_number return jsonify(resp)
def foodInfo(): resp = {'code': 200, 'msg': "操作成功", 'data': {}} req = request.values id = int(req['id']) if 'id' in req else 0 food_info = Food.query.filter_by(id=id).first() if not food_info or not food_info.status: resp['code'] = -1 resp['msg'] = "美食已下架~" return jsonify(resp) member_info = g.member_info cart_number = 0 if member_info: cart_number = MemberCart.query.filter_by( member_id=member_info.id).count() resp['data']['info'] = { 'id': food_info.id, 'name': food_info.name, 'summary': food_info.summary, 'comment_count': food_info.comment_count, 'main_image': UrlManager.build_image_url(food_info.main_image), 'price': str(food_info.price), 'stock': food_info.stock, 'pics': [UrlManager.build_image_url(food_info.main_image)] } resp['data']['cart_number'] = cart_number return jsonify(resp)
def foodIndex(): resp = {'code': 200, 'msg': '操作成功~', 'data': {}} cat_list = FoodCat.query.filter_by(status=1).order_by( FoodCat.weight.desc()).all() data_cat_list = [] data_cat_list.append({'id': 0, 'name': "全部"}) if cat_list: for item in cat_list: tmp_data = {'id': item.id, 'name': item.name} data_cat_list.append(tmp_data) resp['data']['cat_list'] = data_cat_list food_list = Food.query.filter_by( status = 1 )\ .order_by( Food.total_count.desc(),Food.id.desc() ).limit(3).all() data_food_list = [] if food_list: for item in food_list: tmp_data = { 'id': item.id, 'pic_url': UrlManager.build_image_url(item.main_image) } data_food_list.append(tmp_data) resp['data']['banner_list'] = data_food_list return jsonify(resp)
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 = select_filter_obj(cart_list, "food_id") food_map = get_dict_filter_field(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.build_image_url(tmp_food_info.main_image), "active": True } data_cart_list.append(tmp_data) resp['data']['list'] = data_cart_list return jsonify(resp)
def cart_index(): 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 = select_filter_obj(cart_list, "food_id") food_map = get_dict_filter_field(Food, Food.id, "id", food_ids) for item in cart_list: tmp_food_info = food_map[item.food_id] tmp_data = { 'id': item.id, 'food_id': item.food_id, 'number': item.quantity, 'name': tmp_food_info.name, 'price': str(tmp_food_info.price), 'pic_url': UrlManager.build_image_url(tmp_food_info.main_image), 'active': True } data_cart_list.append(tmp_data) resp['data']['list'] = data_cart_list return jsonify(resp)
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 = select_filter_obj(pay_order_list, "id") pay_order_item_list = PayOrderItem.query.filter(PayOrderItem.pay_order_id.in_(pay_order_ids)).all() food_ids = select_filter_obj(pay_order_item_list, "food_id") food_map = get_dict_filter_field(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.build_image_url(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)
def orderInfo(): resp = {'code': 200, 'msg': '操作成功~', 'data': {}} req = request.values params_goods = req['goods'] if 'goods' in req else None member_info = g.member_info params_goods_list = [] if params_goods: params_goods_list = json.loads(params_goods) food_dic = {} for item in params_goods_list: food_dic[item['id']] = item['number'] food_ids = food_dic.keys() food_list = Food.query.filter(Food.id.in_(food_ids)).all() data_food_list = [] yun_price = pay_price = decimal.Decimal(0.00) if food_list: for item in food_list: tmp_data = { "id": item.id, "name": item.name, "price": str(item.price), 'pic_url': UrlManager.build_image_url(item.main_image), 'number': food_dic[item.id] } pay_price = pay_price + item.price * int(food_dic[item.id]) data_food_list.append(tmp_data) # 获取地址 address_info = MemberAddress.query.filter_by(is_default=1, member_id=member_info.id, status=1).first() default_address = '' if address_info: default_address = { "id": address_info.id, "name": address_info.nickname, "mobile": address_info.mobile, "address": "%s%s%s%s" % (address_info.province_str, address_info.city_str, address_info.area_str, address_info.address) } resp['data']['food_list'] = data_food_list resp['data']['pay_price'] = str(pay_price) resp['data']['yun_price'] = str(yun_price) resp['data']['total_price'] = str(pay_price + yun_price) resp['data']['default_address'] = default_address return jsonify(resp)
def uploadImage(): resp = {'state': 'SUCCESS', 'url': '', 'title': '', 'original': ''} file_target = request.files upfile = file_target['upfile'] if 'upfile' in file_target else None if upfile is None: resp['state'] = "上传失败" return jsonify(resp) ret = UploadService.upload_by_file(upfile) if ret['code'] != 200: resp['state'] = "上传失败:" + ret['msg'] return jsonify(resp) resp['url'] = UrlManager.build_image_url(ret['data']['file_key']) return jsonify(resp)
def edit(): if "login_user_id" not in session: flash("请先登录", category='err') return redirect(UrlManager.build_url_path("user_page.login")) login_user = User.query.get_or_404(int(session['login_user_id'])) form = UserEditForm(name=login_user.name, email=login_user.email, info=login_user.info) form.face.validators = [] form.face.render_kw = {"required": False} if form.validate_on_submit(): data = form.data if form.face.data: face_save_path = UrlManager.build_image_url("/") if not os.path.exists(face_save_path): os.makedirs(face_save_path) import stat os.chmod(face_save_path, stat.S_IRWXU) if form.face.data: if login_user.face and os.path.exists( os.path.join(face_save_path, login_user.face)): os.remove(os.path.join(face_save_path, login_user.face)) file_face = secure_filename(form.face.data.filename) from common.libs.utils import change_filename login_user.face = change_filename(file_face) form.face.data.save(face_save_path + login_user.face) if login_user.name != data['name'] and User.query.filter_by( name=data['name'].count) == 1: flash("账号已存在", category='err') return redirect(UrlManager.build_url_path("user_page.edit")) login_user.name = data['name'] if login_user.email != data['email'] and User.query.filter_by( email=data['email']).count() == 1: flash("邮箱已存在", category='err') return redirect(UrlManager.build_url_path("user_page.edit")) login_user.email = data['email'] login_user.info = data['info'] db.session.commit() flash("修改资料成功", category='ok') return redirect(UrlManager.build_url_path("user_page.info")) return render_template("edit.html", form=form, login_user=login_user)
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 = select_filter_obj(pay_order_items, "food_id") food_map = get_dict_filter_field(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.build_image_url(tmp_food_info.main_image), } info['goods'].append(tmp_data) resp['data']['info'] = info return jsonify(resp)
def order_info(): resp = {'code': 200, 'msg': '操作成功~', 'data': {}} req = request.values params_goods = req['goods'] if 'goods' in req else None member_info = g.member_info params_goods_list = [] if params_goods: params_goods_list = json.loads(params_goods) food_dic = {} for item in params_goods_list: food_dic[item['id']] = item['number'] food_ids = food_dic.keys() food_list = Food.query.filter(Food.id.in_(food_ids)).all() data_food_list = [] yun_price = pay_price = decimal.Decimal(0.00) if food_list: for item in food_list: tmp_data = { 'id': item.id, 'name': item.name, 'price': str(item.price), 'pic_url': UrlManager.build_image_url(item.main_image), 'number': food_dic[item.id] } pay_price = pay_price + item.price * int(food_dic[item.id]) data_food_list.append(tmp_data) # 获取地址 default_address = { "name": "编程浪子", "mobile": "17282728228", "address": "上海虹桥" } resp['data']['food_list'] = data_food_list resp['data']['pay_price'] = str(pay_price) resp['data']['yun_price'] = str(yun_price) resp['data']['total_price'] = str(pay_price + yun_price) resp['data']['default_address'] = default_address return jsonify(resp)
def food_search(): resp = {'code': 200, 'msg': "操作成功", 'data': {}} req = request.values cat_id = int(req['cat_id']) if 'cat_id' in req else 0 mix_kw = str(req['mix_kw']) if 'mix_kw' in req else '' p = int(req['p']) if 'p' in req else 1 if p < 1: p = 1 query = Food.query.filter_by(status=1) page_size = 10 offset = (p - 1) * page_size if cat_id > 0: query = query.filter(Food.cat_id == cat_id) if mix_kw: rule = or_(Food.name.ilike("%{0}%".format(mix_kw)), Food.tags.ilike("%{0}%".format(mix_kw))) query = query.filter(rule) food_list = query.order_by( Food.total_count.desc(), Food.id.desc()).offset(offset).limit(page_size).all() data_food_list = [] if food_list: for item in food_list: tmp_data = { 'id': item.id, 'name': item.name, 'price': str(item.price), 'mix_price': str(item.price), 'pic_url': UrlManager.build_image_url(item.main_image) } data_food_list.append(tmp_data) resp['data']['list'] = data_food_list resp['data']['has_more'] = 0 if len(data_food_list) < page_size else 1 return jsonify(resp)
def listImage(): resp = {'state': 'SUCCESS', 'list': [], 'start': 0, 'total': 0} req = request.values start = int(req['start']) if 'start' in req else 0 page_size = int(req['size']) if 'size' in req else 20 query = Image.query if start > 0: query = query.filter(Image.id < start) list = query.order_by(Image.id.desc()).limit(page_size).all() images = [] if list: for item in list: images.append({'url': UrlManager.build_image_url(item.file_key)}) start = item.id resp['list'] = images resp['start'] = start resp['total'] = len(images) return jsonify(resp)