Exemple #1
0
def reset_password():
    """重置密码(发送短信验证码)

    要使用本接口, 客户端必须有权以 ``user_info`` 作为 scope.

    :request: :class:`.ResetPasswordSchema`
    :response: :class:`.UserSchema`

    :reqheader X-Client-ID: OAuth 2.0 Client ID
    :reqheader X-Client-Secret: OAuth 2.0 Client Secret
    :status 403: 账号不存在
    :status 200: 已发出验证码
    """
    reset_password_schema = ResetPasswordSchema(strict=True)
    user_schema = UserSchema(strict=True)

    result = reset_password_schema.load(request.get_json(force=True))
    mobile_phone = result.data['mobile_phone']

    sms_limiter.raise_for_exceeded(
        key=mobile_phone, message='{granularity}内只能发送{amount}次验证码,请稍后再试')

    user = Account.get_by_alias(mobile_phone)
    if user:
        sms = ShortMessage.create(mobile_phone,
                                  forgot_password_sms,
                                  user_id=user.id_)
        sms.send()
        sms_limiter.hit(key=mobile_phone)
        return jsonify(success=True, data=user_schema.dump(user).data)
    else:
        abort(403, u'账号不存在')
def main():
    # 获取所有出生在当前日期的用户
    for user in get_users_by_birthday(date.today().strftime('%m%d')):
        distribute_welfare_gift(user, happy_birthday_package)

        # 向用户手机发送提醒短信
        if user.has_mobile():
            sms = ShortMessage.create(user.mobile, birthday_package_remind_sms)
            sms.send_async()
Exemple #3
0
def xm_send_exit_sms(asset_id):
    """新米转出订单发送到期短信"""
    from core.models.sms import ShortMessage
    from core.models.sms.kind import savings_order_exited_sms
    from core.models.hoard.xinmi import XMAsset

    asset = XMAsset.get(asset_id)
    sms = ShortMessage.create(
        asset.user.mobile, savings_order_exited_sms, asset.user.id_,
        order_amount=str(round_half_up(asset.create_amount, 2)),
        profit=str(round_half_up(asset.current_interest, 2)))
    sms.send_async()
Exemple #4
0
def register_with_confirm(alias, password, reg_type):
    user = _register_user(alias,
                          password,
                          reg_type,
                          status=ACCOUNT_STATUS.NEED_VERIFY)
    if not user:
        return

    if reg_type == ACCOUNT_REG_TYPE.MOBILE:
        sms = ShortMessage.create(alias, register_sms, user_id=user.id_)
        sms.send()
    else:
        return
    return user
Exemple #5
0
def request_reset_mobile_user_password_verify():
    mobile = request.form.get('mobile')

    l = Limit.get(LIMIT.MOBILE_REG % mobile, timeout=60 * 60, limit=10)
    if l.is_limited():
        return jsonify(r=False, error=u'发送短信过于频繁,请您稍后再试')
    l.touch()

    user = Account.get_by_alias(mobile)
    if not user:
        return jsonify(r=False, error=u'该手机号尚未注册好规划')

    sms = ShortMessage.create(user.mobile, forgot_password_sms, user_id=user.id_)
    sms.send()
    return jsonify(r=True)
Exemple #6
0
def send_redeem_success_sms(order):
    '''随心宝赎回申请提交成功短信'''
    from core.models.sms import ShortMessage
    from core.models.sms.kind import savings_redeem_success_sms_sxb

    str_time = order.creation_time.strftime('%Y年%m月%d日%H点%M分').decode('utf-8')
    str_amount = (u'%.2f') % (order.amount)
    bankcard = order.bankcard
    sms = ShortMessage.create(order.owner.mobile,
                              savings_redeem_success_sms_sxb,
                              order.user_id,
                              time=str_time,
                              amount=str_amount,
                              bankname=bankcard.bank.name,
                              bankno=bankcard.tail_card_number)
    sms.send()
Exemple #7
0
def xm_send_order_success_sms(order):
    '''新米转出订单发送到期短信'''
    from core.models.sms import ShortMessage
    from core.models.sms.kind import savings_order_success_sms

    user_id = order.user_id
    user = Account.get(user_id)
    mobile = user.mobile

    time = order.creation_time.strftime('%Y年%m月%d日%H点%M分').decode('utf-8')
    product_name = order.product.name
    period = order.profit_period.display_text
    amount = (u'%.2f') % (order.amount)
    rate = (u'%.2f') % (order.actual_annual_rate)

    sms = ShortMessage.create(mobile, savings_order_success_sms, user_id,
                              time=time, amount=amount, product=product_name,
                              period=period, rate=rate)
    sms.send()
Exemple #8
0
def send_order_success_sms(order):
    '''随心宝交易成功短信'''
    from core.models.sms import ShortMessage
    from core.models.sms.kind import savings_order_success_sms_sxb

    str_time = order.creation_time.strftime('%Y年%m月%d日%H点%M分').decode('utf-8')
    str_amount = (u'%.2f') % (order.amount)
    value_date = order.product.value_date
    str_value_date = value_date.strftime('%Y年%m月%d日').decode('utf-8')
    earnings_day = value_date + timedelta(days=1)
    str_earnings_day = earnings_day.strftime('%Y年%m月%d日').decode('utf-8')

    sms = ShortMessage.create(order.owner.mobile,
                              savings_order_success_sms_sxb,
                              order.user_id,
                              time=str_time,
                              amount=str_amount,
                              value_date=str_value_date,
                              earnings_day=str_earnings_day)
    sms.send()
Exemple #9
0
def zhiwang_send_exit_sms(asset_id):
    """指旺转出订单发送到期短信"""
    from core.models.sms import ShortMessage
    from core.models.sms.kind import savings_order_exited_sms, savings_first_asset_exited_sms
    from core.models.hoard.zhiwang import ZhiwangAsset

    asset = ZhiwangAsset.get(asset_id)
    first_asset = ZhiwangAsset.get_first_redeemed_asset_by_user_id(
        asset.user_id)

    sms_kind = (savings_first_asset_exited_sms if first_asset
                and first_asset.id_ == asset.id_ else savings_order_exited_sms)

    sms = ShortMessage.create(
        asset.user.mobile,
        sms_kind,
        order_amount=str(round_half_up(asset.create_amount, 2)),
        profit=str(round_half_up(asset.current_interest, 2)))

    sms.send_async()
Exemple #10
0
def hoard_yrd_sms_sender(order_id):
    """宜人贷转出订单发送到期短信"""
    from core.models.sms import ShortMessage
    from core.models.sms.kind import savings_order_exited_sms
    from core.models.hoard import HoardOrder, HoardProfile
    from core.models.hoard.profile import clear_account_info_cache

    order = HoardOrder.get(order_id)
    user = Account.get(order.user_id)
    profile = HoardProfile.get(order.user_id)
    if not user.has_mobile():
        return

    # 更新订单最新信息
    clear_account_info_cache(order.user_id)
    orders = profile.orders()
    profit = order.fetch_profit_until(datetime.date.today(), orders)

    # 发送短信
    sms = ShortMessage.create(user.mobile,
                              savings_order_exited_sms,
                              order_amount=int(order.order_amount),
                              profit=str(round_half_up(profit, 2)))
    sms.send_async()
Exemple #11
0
def request_bind(uid, mobile, is_send_sms=True):
    mc.set(MC_BIND_MOBILE_BY_USER % uid, mobile)
    if is_send_sms:
        sms = ShortMessage.create(mobile, mobile_bind_sms, user_id=uid)
        sms.send()