Exemplo n.º 1
0
def remove_address_info(address_id):
    user_id = current_user.id

    address_info_service = AddressInfoService()
    rvs = address_info_service.address_remove(address_id)

    if not rvs:
        return make_api_response(statusCode=500)

    return make_api_response(500)
Exemplo n.º 2
0
def add_address_info():
    """
    @api {POST} /address/add 增加收货地址信息
    @apiGroup Address
    @apiVersion 0.0.1
    @apiDescription 新增用户收货地址
    @apiParam {String} name 收货人姓名
    @apiParam {String} address 收货人地址
    @apiParam {int} post_code 邮编
    @apiParam {int} phone 联系电话
    @apiParamExample {json} 请求样例:
                    {
                        "name": "张三",
                        "address": "收货人地址",
                        "post_code": "邮编",
                        "phone": "联系电话"
                    }
    @apiSuccess (200) {String} msg 信息
    """
    user_id = current_user.id
    name = request.json['name']
    address = request.json['address']
    post_code = request.json['post_code']
    phone = request.json['phone']

    address_info_service = AddressInfoService()
    # 判断是否为第一条记录
    is_default = 0
    infos = address_info_service.address_info_query(user_id)
    if not infos:
        is_default = 1

    address_info = {
        'user_id': user_id,
        'name': name,
        'address': address,
        'post_code': post_code,
        'phone': phone,
        'is_default': is_default
    }

    rvs = address_info_service.address_add(address_info)

    return make_api_response()
Exemplo n.º 3
0
def set_default_address_info(address_id):
    """
    @api {GET} /address/setdefault/<address_id> 设置默认收货地址
    @apiGroup Address
    @apiVersion 0.0.1
    @apiDescription 设置默认收货地址信息
    @apiParam {int} id 收货信息的编号
    @apiSuccess (200) {String} msg 信息
    @apiError (400) {String} msg 信息
    @apiErrorExample {json} 返回样例:
                   {"status": "fail", "message": "用户不存在"}
    """
    user_id = current_user.id
    address_info_service = AddressInfoService()
    rvs = address_info_service.address_set_default(user_id, address_id)

    if not rvs:
        return make_api_response(statusCode=400)

    return make_api_response()
Exemplo n.º 4
0
def query_address_info():
    """
    @api {GET} /address/query 查询用户账户信息
    @apiGroup Users
    @apiVersion 0.0.1
    @apiDescription 用于查询用户全部收货地址信息
    @apiSuccess (200) {String} msg 信息
    @apiSuccess (200) {int} code 0 代表无错误 1代表有错误
    @apiSuccessExample {json} 返回样例:
                   {
                        "status": "ok",
                        "payload":{
                            [
                                {
                                    'id': 123,
                                    'user_id': 1234,
                                    'name': 'name',
                                    'address': 'XX市XX区XX街道'
                                    'post_code': '100100',
                                    'phone': 123123124,
                                    'is_default': 0
                                },
                                {},
                                ...
                            ]
                        }
                    }
    @apiError (400) {String} msg 信息
    @apiErrorExample {json} 返回样例:
                   {"status": "fail", "message": "用户不存在"}
    """
    user_id = current_user.id
    app.logger.info(user_id)
    address_info_service = AddressInfoService()
    address_info_list = address_info_service.address_info_query(user_id=user_id)

    if address_info_list:
        return make_api_response(payload=address_info_list)
    else:
        return make_api_response(message="用户不存在", statusCode=400)
Exemplo n.º 5
0
def update_address_info():
    """
    @api {POST} /address/update 修改收货地址信息
    @apiGroup Address
    @apiVersion 0.0.1
    @apiDescription 修改用户收货地址信息
    @apiParam {int} id 收货信息的编号
    @apiParam {String} name 收货人姓名
    @apiParam {String} address 收货人地址
    @apiParam {int} post_code 邮编
    @apiParam {int} phone 联系电话
    @apiParamExample {json} 请求样例:
                    {
                        "id": '123',
                        "name": "张三",
                        "address": "收货人地址",
                        "post_code": "邮编",
                        "phone": "联系电话"
                    }
    @apiSuccess (200) {String} msg 信息
    """
    user_id = current_user.id
    address_id = request.json['id']
    name = request.json['name']
    address = request.json['address']
    post_code = request.json['post_code']
    phone = request.json['phone']

    address_info = {
        'id': address_id,
        'user_id': user_id,
        'name': name,
        'address': address,
        'post_code': post_code,
        'phone': phone
    }
    address_info_service = AddressInfoService()
    rvs = address_info_service.address_update(address_info)

    return make_api_response()
Exemplo n.º 6
0
def update_address_info():
    user_id = current_user.id

    user_id = request.json['user_id']
    name = request.json['name']
    address = request.json['address']
    post_code = request.json['post_code']
    phone = request.json['phone']

    address_info = {
        'user_id': user_id,
        'name': name,
        'address': address,
        'post_code': post_code,
        'phone': phone
    }
    address_info_service = AddressInfoService()
    rvs = address_info_service.address_update(address_info)
    if not rvs:
        return make_api_response(statusCode=500)

    return make_api_response()
Exemplo n.º 7
0
def remove_address_info(address_id):
    """
    @api {GET} /address/remove/<address_id> 删除某条收货地址信息
    @apiGroup Address
    @apiVersion 0.0.1
    @apiDescription 删除某条收货地址信息
    @apiParam {int} id 收货信息的编号
    @apiSuccess (200) {String} msg 信息
    @apiError (400) {String} msg 信息
    @apiErrorExample {json} 返回样例:
                   {"status": "fail", "message": "用户不存在"}
    """
    user_id = current_user.id
    address_info_service = AddressInfoService()
    # 删除指定的收货地址记录
    rvs = address_info_service.address_remove(user_id, address_id)

    if not rvs:
        return make_api_response(statusCode=400)

    # 检查是否还有默认收货地址记录
    return make_api_response()
Exemplo n.º 8
0
    def order_create(user_id, address_id):
        """
        新建订单
        """
        account_info = AccountService.account_query(user_id)
        cart = CartService()
        total_info = cart.cart_total(user_id)
        if account_info['balance'] < float(total_info['actual_cost']):
            return False, "余额不足"

        # 查询购物车
        books = cart.cart_info_query(user_id)
        if not books:
            return False, "购物车为空"

        # order 表
        order = Order()
        order_id = OrderService.generate_order_id()
        order.order_id = order_id
        order.user_id = user_id
        order.quantity = total_info['total_quantity']
        order.origin_cost = total_info['origin_cost']
        order.actual_cost = total_info['actual_cost']
        order.order_status = 1
        order.delivery_status = 0
        order.pay_status = 1

        db.session.add(order)
        db.session.flush()

        for book in books.values():
            # order_detail 表
            order_detail = OrderDetail()
            order_detail.order_id = order_id
            order_detail.book_id = book['book_id']
            order_detail.book_name = book['book_name']
            order_detail.isbn = book['isbn']
            order_detail.origin_price = book['origin_price'] * \
                book['order_quantity']
            order_detail.actual_price = book['actual_price'] * \
                book['order_quantity']
            order_detail.supplier_id = book['supplier_id']
            order_detail.warehouse = book['supplier']
            order_detail.discount = book['discount']
            order_detail.order_quantity = book['order_quantity']
            order_detail.deliveried_quantity = 0

            db.session.add(order_detail)
            db.session.flush()

            # book 表修改库存书
            book_service = BookService()
            rowcount = book_service.book_quantity_update(
                book['book_id'], -book['order_quantity'])

            if rowcount is False:
                db.session.rollback()
                return False, "book_id : %s 库存不足,下单失败" % book['book_id']

        # order_info 表
        if not address_id:
            return False, "缺少收货地址id"

        address_service = AddressInfoService()
        address = address_service.address_query_by_id(user_id, address_id)
        order_info = OrderInfo()
        order_info.order_id = order_id
        order_info.consignee = address.name
        order_info.address = address.address
        order_info.post_code = address.post_code
        order_info.phone = address.phone
        db.session.add(order_info)
        db.session.flush()

        # account 表
        account_service = AccountService()
        change = -total_info['actual_cost']
        account_service.account_change(user_id, change)

        # account_consume 表
        balance = account_info['balance'] - float(total_info['actual_cost'])
        account_service.account_consume_add(user_id, total_info['actual_cost'],
                                            balance)

        # 清空购物车
        cart.cart_remove_all(user_id)

        return True, '操作成功'