order.py 6.92 KB
Newer Older
1 2
# -*- encoding: utf-8 -*-
# -----------------------------------------------------------------------------
3
# @File Name  : curriculum_order.py
4 5 6 7 8
# @Time       : 2020/11/18 下午3:19
# @Author     : X. Peng
# @Email      : acepengxiong@163.com
# @Software   : PyCharm
# -----------------------------------------------------------------------------
9
import json
10
from flask_restful import Resource, reqparse
11
from flask import request, make_response
pengxiong@wealthgrow.cn's avatar
pengxiong@wealthgrow.cn committed
12
from sqlalchemy.exc import InvalidRequestError
13

14 15 16
from app.api import app
from app.controller.errorhandler import CustomFlaskErr
from app.config.errors import Errors
17
from app.service import order_service
18
from app.api.engine import logging
19

20 21 22

class TopUpOrder(Resource):
    """充值订单."""
23 24 25 26 27 28 29

    def __init__(self):
        """."""
        self.parser = reqparse.RequestParser()

    def get(self):
        """."""
pengxiong@wealthgrow.cn's avatar
pengxiong@wealthgrow.cn committed
30 31
        self.parser.add_argument('pageNumber', type=int, required=False)
        self.parser.add_argument('pageSize', type=int, required=False)
pengxiong@wealthgrow.cn's avatar
pengxiong@wealthgrow.cn committed
32
        args = self.parser.parse_args()
pengxiong@wealthgrow.cn's avatar
pengxiong@wealthgrow.cn committed
33 34 35 36
        if not args.get('pageNumber', ''):
            raise CustomFlaskErr(Errors.PARAMS_ERROR)
        if not args.get('pageSize', ''):
            raise CustomFlaskErr(Errors.PARAMS_ERROR)
pengxiong@wealthgrow.cn's avatar
pengxiong@wealthgrow.cn committed
37 38
        args['user_id'] = request.user_id
        data = order_service.TopUpOrderService().get_order(args)
39
        resp = request.return_success
40
        resp['attributes'] = data
41
        return resp
42 43 44

    def post(self):
        """."""
pengxiong@wealthgrow.cn's avatar
pengxiong@wealthgrow.cn committed
45
        self.parser.add_argument('amount', type=float, required=True, help='订单总额不能为空')
46
        self.parser.add_argument('pay_method', type=int, required=True, help='支付方式不能为空')
47
        self.parser.add_argument('receipt_data', type=str, required=False)
48
        self.parser.add_argument('product_id', type=str, required=False)
49
        args = self.parser.parse_args()
50 51
        args['user_id'] = request.user_id
        args['remote_addr'] = request.remote_addr
52
        args['host_url'] = request.host_url
53 54 55
        data = order_service.TopUpOrderService().create_order(args)
        resp = request.return_success
        resp['attributes'] = data
56
        return resp
57 58 59 60 61 62 63 64

    def put(self, id):
        """."""
        pass

    def delete(self, id):
        """."""
        pass
65 66 67 68 69 70 71 72 73 74 75


class ConsumeOrder(Resource):
    """消费订单."""

    def __init__(self):
        """."""
        self.parser = reqparse.RequestParser()

    def get(self):
        """."""
76 77
        self.parser.add_argument('pageNumber', type=int, required=False)
        self.parser.add_argument('pageSize', type=int, required=False)
pengxiong@wealthgrow.cn's avatar
pengxiong@wealthgrow.cn committed
78
        args = self.parser.parse_args()
pengxiong@wealthgrow.cn's avatar
pengxiong@wealthgrow.cn committed
79 80 81 82
        if not args.get('pageNumber', ''):
            raise CustomFlaskErr(Errors.PARAMS_ERROR)
        if not args.get('pageSize', ''):
            raise CustomFlaskErr(Errors.PARAMS_ERROR)
83
        user_id = request.user_id
pengxiong@wealthgrow.cn's avatar
pengxiong@wealthgrow.cn committed
84 85
        args['user_id'] = request.user_id
        data = order_service.CurriculumOrderService().get_order(args)
86
        resp = request.return_success
87
        resp['attributes'] = data
88
        return resp
89 90

    def post(self):
91
        """."""
92
        self.parser.add_argument('ab_type', type=int, required=True, help='商品类型不能为空')
93
        self.parser.add_argument('ab_proid', type=str, required=True, help='商品ID不能为空')
94
        self.parser.add_argument('prod_name', type=str, required=True, help='商品名称不能为空')
95
        self.parser.add_argument('ab_pay_mode', type=int, required=True, help='支付方式不能为空')
96
        args = self.parser.parse_args()
97
        args['user_id'] = request.user_id
98 99
        args['env'] = request.headers['env']
        args['remote_addr'] = request.remote_addr
100
        args['host_url'] = request.host_url
101 102 103 104
        data = order_service.CurriculumOrderService().create_order(args)
        resp = request.return_success
        resp['attributes'] = data
        return resp
105 106

    def put(self, id):
107 108 109
        """."""
        pass

110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128
    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):
        """."""
129
        res_info = request.stream.read(request.content_length or 0).decode()
pengxiong@wealthgrow.cn's avatar
pengxiong@wealthgrow.cn committed
130
        logging.info('支付成功通知信息', res_info)
131
        res = order_service.alipayWxPayCheck(res_info)
132
        if res['success']:
133
            order_service.topUpSuccessAction(res['order_no'], res['transaction_id'])
134
            resp = make_response(res['body'])
135
            resp.hearders = res['header']
136
        return resp
137

138 139 140 141 142 143
    def put(self, id):
        """."""
        pass

    def delete(self, id):
        """."""
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
        pass


class ConsumeOrderNotify(Resource):
    """消费订单支付通知."""

    def __init__(self):
        """."""
        self.parser = reqparse.RequestParser()

    def get(self):
        """."""
        resp = request.return_success
        return resp

    def post(self):
        """."""
161
        res_info = request.stream.read(request.content_length or 0).decode()
pengxiong@wealthgrow.cn's avatar
pengxiong@wealthgrow.cn committed
162
        print('消费订单支付成功通知信息', res_info)
pengxiong@wealthgrow.cn's avatar
pengxiong@wealthgrow.cn committed
163
        logging.info('支付成功通知信息', res_info)
164 165
        res = order_service.alipayWxPayCheck(res_info)
        if res['success']:
166
            order_service.consumeSucessAction(res['order_no'], res['transaction_id'])
167
            resp = make_response(res['body'])
168
            resp.hearders = res['header']
169
        return resp
170 171 172 173 174 175 176 177

    def put(self, id):
        """."""
        pass

    def delete(self, id):
        """."""
        pass
178 179 180 181 182 183 184 185 186 187


class AccountBalance(Resource):
    """"""
    def __init__(self):
        """."""
        self.parser = reqparse.RequestParser()

    def get(self):
        """."""
188 189
        user_id = request.user_id
        data = order_service.getAccountBalance(user_id)
190 191 192 193 194 195 196 197 198 199 200 201
        resp = request.return_success
        resp['attributes'] = data
        return resp

    def post(self):
        """."""
        pass

    def put(self, id):
        """."""
        pass

202 203 204 205 206 207 208 209 210 211 212 213 214
    def delete(self, id):
        """."""
        pass


class AllOrders(Resource):
    """"""
    def __init__(self):
        """."""
        self.parser = reqparse.RequestParser()

    def get(self):
        """."""
215 216
        self.parser.add_argument('pageNumber', type=int, required=False)
        self.parser.add_argument('pageSize', type=int, required=False)
217
        args = self.parser.parse_args()
pengxiong@wealthgrow.cn's avatar
pengxiong@wealthgrow.cn committed
218 219 220 221
        if not args.get('pageNumber', ''):
            raise CustomFlaskErr(Errors.PARAMS_ERROR)
        if not args.get('pageSize', ''):
            raise CustomFlaskErr(Errors.PARAMS_ERROR)
222
        args['user_id'] = request.user_id
223
        data = order_service.getAllOrders(args)
224
        resp = request.return_success
225
        resp['attributes'] = data
226 227 228 229 230 231 232 233 234 235
        return resp

    def post(self):
        """."""
        pass

    def put(self, id):
        """."""
        pass

236 237 238
    def delete(self, id):
        """."""
        pass