Пример #1
0
def on_create_order(order):
    """
    买家创建了订单
    :param order: 订单对象
                  (参考:https://doc.lvxingpai.com/pages/viewpage.action?pageId=12451934#id-订单相关接口-SimpleOrder简单)
    :return:
    """
    consumer_id = order['consumerId']
    # 订单信息
    order = get_order(order['orderId'], consumer_id)
    # 买家信息
    consumer = get_user_info(consumer_id)

    _log_order(order, 'onCreateOrder')

    # 是否为开发环境
    is_dev = _is_developer(consumer_id)

    # 设置超时任务
    now = long(time.time() * 1000)
    payment_expire = now + settings.EVENT_PAYMENT_EXPIRE_TIMEOUT * 1000 \
        if hasattr(settings, 'EVENT_PAYMENT_EXPIRE_TIMEOUT') and is_dev else order['expireTime']
    # 过期前半小时
    payment_will_expire = now + settings.EVENT_PAYMENT_WILL_EXPIRE_TIMEOUT * 1000 \
        if hasattr(settings, 'EVENT_PAYMENT_WILL_EXPIRE_TIMEOUT') and is_dev else order['expireTime'] - 1800 * 1000

    # 支付即将超时提醒
    handler_url = urljoin(VIAE_GATEWAY_BASE_URL, '/tasks')
    requests.post(handler_url, json={
        'task': 'viae.event.marketplace.onPaymentWillExpire',
        'kwargs': {
            'order': order
        },
        'countdown': (payment_will_expire - now) / 1000
    })
    requests.post(handler_url, json={
        'task': 'viae.event.marketplace.onPaymentExpire',
        'kwargs': {
            'order': order
        },
        'countdown': (payment_expire - now) / 1000
    })

    # 发送邮件提醒
    commodity = order['commodity']
    seller = commodity['seller']
    send_email_to_group.apply_async(kwargs={
        'groups': 'MARKETPLACE',
        'subject': u'用户已创建新订单',
        'body': u'订单号: #%d, 订单金额: %.2f, 商品: %d / %s, 商家: %d / %s, 买家: %d / %s' % (
            order['orderId'], order['totalPrice'] - order.get('discount', 0),
            commodity['commodityId'], commodity['title'],
            seller['sellerId'], seller['name'],
            consumer_id, consumer['nickName']
        )})
Пример #2
0
def on_pay_order(order):
    """
    买家支付了订单
    :param order: 订单对象
    :return:
    """
    consumer_id = order['consumerId']
    # 订单信息
    order = get_order(order['orderId'], consumer_id)
    # 买家信息
    consumer = get_user_info(consumer_id)
    # 卖家信息
    seller_id = order['commodity']['seller']['sellerId']
    # 金额
    amount = order['totalPrice'] - order['discount']

    _log_order(order, 'onPayOrder')

    # 是否为开发环境
    is_dev = _is_developer(consumer_id)

    # 给商家发送通知
    send_order_message.apply_async(kwargs={
        'sender': 10002,
        'receiver': seller_id,
        'order_id': order['orderId'],
        'title': u'买家已付款:¥%.2f' % amount,
        'commodity': order['commodity']['title'],
        'message': u'买家已支付%s元。请于%s前确认订单,超过确认期限系统将自动退款给买家。' %
                   (amount, datetime_format(order['expireTime']))
    })

    # 设置超时任务
    now = long(time.time() * 1000)
    committing_expire = now + settings.EVENT_PAYMENT_EXPIRE_TIMEOUT * 1000 \
        if hasattr(settings, 'EVENT_PAYMENT_EXPIRE_TIMEOUT') and is_dev else order['expireTime']
    # 4小时
    committing_will_expire = now + settings.EVENT_PAYMENT_WILL_EXPIRE_TIMEOUT * 1000 \
        if hasattr(settings, 'EVENT_PAYMENT_WILL_EXPIRE_TIMEOUT') and is_dev else order['expireTime'] - 4 * 3600 * 1000

    # 支付即将超时提醒
    handler_url = urljoin(VIAE_GATEWAY_BASE_URL, '/tasks')
    requests.post(handler_url, json={
        'task': 'viae.event.marketplace.onCommittingWillExpire',
        'kwargs': {
            'order': order,
        },
        'countdown': (committing_will_expire - now) / 1000
    })
    requests.post(handler_url, json={
        'task': 'viae.event.marketplace.onCommittingExpire',
        'kwargs': {
            'order': order
        },
        'countdown': (committing_expire - now) / 1000
    })

    # 发送邮件提醒
    commodity = order['commodity']
    seller = commodity['seller']
    send_email_to_group.apply_async(kwargs={
        'groups': 'MARKETPLACE',
        'subject': u'用户已支付订单',
        'body': u'订单号: #%d, 订单金额: %.2f, 商品: %d / %s, 商家: %d / %s, 买家: %d / %s' % (
            order['orderId'], order['totalPrice'] - order.get('discount', 0),
            commodity['commodityId'], commodity['title'],
            seller['sellerId'], seller['name'],
            consumer_id, consumer['nickName']
        )})