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()
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()
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
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)
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()
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()
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()
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()
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()
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()