# -*- encoding: utf-8 -*- # ----------------------------------------------------------------------------- # @File Name : curriculum_order.py # @Time : 2020/11/18 下午3:19 # @Author : X. Peng # @Email : acepengxiong@163.com # @Software : PyCharm # ----------------------------------------------------------------------------- import json from flask_restful import Resource, reqparse from flask import request, make_response from sqlalchemy.exc import InvalidRequestError from app.api import app from app.controller.errorhandler import CustomFlaskErr from app.config.errors import Errors from app.service import order_service from app.api.engine import logging class TopUpOrder(Resource): """充值订单.""" def __init__(self): """.""" self.parser = reqparse.RequestParser() def get(self): """.""" self.parser.add_argument('pageNumber', type=int, required=False) self.parser.add_argument('pageSize', type=int, required=False) args = self.parser.parse_args() if not args.get('pageNumber', ''): raise CustomFlaskErr(Errors.PARAMS_ERROR) if not args.get('pageSize', ''): raise CustomFlaskErr(Errors.PARAMS_ERROR) args['user_id'] = request.user_id data = order_service.TopUpOrderService().get_order(args) resp = request.return_success resp['attributes'] = data return resp def post(self): """.""" self.parser.add_argument('amount', type=float, required=True, help='订单总额不能为空') self.parser.add_argument('pay_method', type=int, required=True, help='支付方式不能为空') self.parser.add_argument('receipt_data', type=str, required=False) self.parser.add_argument('product_id', type=str, required=False) args = self.parser.parse_args() args['user_id'] = request.user_id args['remote_addr'] = request.remote_addr args['host_url'] = request.host_url data = order_service.TopUpOrderService().create_order(args) resp = request.return_success resp['attributes'] = data return resp def put(self, id): """.""" pass def delete(self, id): """.""" pass class ConsumeOrder(Resource): """消费订单.""" def __init__(self): """.""" self.parser = reqparse.RequestParser() def get(self): """.""" self.parser.add_argument('pageNumber', type=int, required=False) self.parser.add_argument('pageSize', type=int, required=False) args = self.parser.parse_args() if not args.get('pageNumber', ''): raise CustomFlaskErr(Errors.PARAMS_ERROR) if not args.get('pageSize', ''): raise CustomFlaskErr(Errors.PARAMS_ERROR) user_id = request.user_id args['user_id'] = request.user_id data = order_service.CurriculumOrderService().get_order(args) resp = request.return_success resp['attributes'] = data return resp def post(self): """.""" self.parser.add_argument('ab_type', type=int, required=True, help='商品类型不能为空') self.parser.add_argument('ab_proid', type=str, required=True, help='商品ID不能为空') self.parser.add_argument('prod_name', type=str, required=True, help='商品名称不能为空') self.parser.add_argument('ab_pay_mode', type=int, required=True, help='支付方式不能为空') args = self.parser.parse_args() args['user_id'] = request.user_id args['env'] = request.headers['env'] args['remote_addr'] = request.remote_addr args['host_url'] = request.host_url data = order_service.CurriculumOrderService().create_order(args) resp = request.return_success resp['attributes'] = data return resp def put(self, id): """.""" pass def delete(self, id): """.""" pass class TopUpOrderNotify(Resource): """充值订单支付通知.""" def __init__(self): """.""" self.parser = reqparse.RequestParser() def get(self): """.""" resp = request.return_success return resp def post(self): """.""" res_info = request.stream.read(request.content_length or 0).decode() logging.info('充值订单支付成功通知信息'+res_info) res = order_service.alipayWxPayCheck(res_info) if res['success']: order_service.topUpSuccessAction(res['order_no'], res['transaction_id']) resp = make_response(res['body']) resp.hearders = res['header'] return resp def put(self, id): """.""" pass def delete(self, id): """.""" pass class ConsumeOrderNotify(Resource): """消费订单支付通知.""" def __init__(self): """.""" self.parser = reqparse.RequestParser() def get(self): """.""" resp = request.return_success return resp def post(self): """.""" res_info = request.stream.read(request.content_length or 0).decode() logging.info('消费订单支付成功通知信息'+res_info) res = order_service.alipayWxPayCheck(res_info) if res['success']: order_service.consumeSucessAction(res['order_no'], res['transaction_id']) resp = make_response(res['body']) resp.hearders = res['header'] return resp def put(self, id): """.""" pass def delete(self, id): """.""" pass class AccountBalance(Resource): """""" def __init__(self): """.""" self.parser = reqparse.RequestParser() def get(self): """.""" user_id = request.user_id data = order_service.getAccountBalance(user_id) resp = request.return_success resp['attributes'] = data return resp def post(self): """.""" pass def put(self, id): """.""" pass def delete(self, id): """.""" pass class AllOrders(Resource): """""" def __init__(self): """.""" self.parser = reqparse.RequestParser() def get(self): """.""" self.parser.add_argument('pageNumber', type=int, required=False) self.parser.add_argument('pageSize', type=int, required=False) args = self.parser.parse_args() if not args.get('pageNumber', ''): raise CustomFlaskErr(Errors.PARAMS_ERROR) if not args.get('pageSize', ''): raise CustomFlaskErr(Errors.PARAMS_ERROR) args['user_id'] = request.user_id data = order_service.getAllOrders(args) resp = request.return_success resp['attributes'] = data return resp def post(self): """.""" pass def put(self, id): """.""" pass def delete(self, id): """.""" pass