def mutate(cls, root, info, **kwargs): request = info.context phone = kwargs.get("phone") auth_code = kwargs.get("auth_code") provider = kwargs.get("provider") if phone: try: has_verified_phone(request, phone) except exceptions.InvalidPhone as e: return Result(success=False, message=e.message) except exceptions.WrongVerifyCode as e: return Result(success=False, message=e.message) try: shop_user = ShopUser.objects.get(phone=phone) except ShopUser.DoesNotExist: return Result(success=False, message="not_exist_user_with_phone") elif auth_code and provider: try: shop_user = ShopUser.objects.get_user_by_auth_code( provider, auth_code) except ShopUser.DoesNotExist: return Result(success=False, message="not_exist_user_with_auth_code") request.user = shop_user.user token = get_token(shop_user.user) return cls(me=shop_user, token=token)
def mutate(self, info, phone, code): request = info.context try: verify_code(request, phone, code) except exceptions.InvalidPhone as e: return Result(success=False, message=e.message) except exceptions.WrongVerifyCode as e: return Result(success=False, message=e.message) return Result(success=True)
def wrapper(root, info, *args, **kwargs): request = info.context phone = kwargs.get("username", kwargs.get("phone")) if phone is None: raise ValueError("Cannot get phone number") try: has_verified_phone(request, phone) except exceptions.InvalidPhone as e: return Result(success=False, message=e.message) except exceptions.WrongVerifyCode as e: return Result(success=False, message=e.message) return fn(root, info, *args, **kwargs)
def mutate(self, info, phone): request = info.context try: request_verify_code(request, phone) except exceptions.InvalidPhone as e: return Result(success=False, message=e.message) except exceptions.VerifyCodeError as e: return Result(success=False, message=e.message) except Exception as e: logger.error(e, exc_info=True) return Result(success=False, message="system_error") return Result(success=True)
def mutate(self, info, params): shop_user = info.context.user.shop_user for k, v in params.items(): setattr(shop_user, k, v) # TODO: merge one sql shop_user.save(update_fields=[k]) return Result(success=True, message="")
def mutate(self, info, old_password, new_password, **kw): shop_user = info.context.user.shop_user if shop_user.has_payment_password: if not shop_user.check_payemnt_password(old_password): raise exceptions.GQLError("wrong_old_password") shop_user.set_payment_password(new_password) return Result(success=True)
def mutate(self, info, password, **kw): shop_user = info.context.user.shop_user if shop_user.has_payment_password: raise exceptions.GQLError("already_exist_payment_password") shop_user.set_payment_password(password) return Result(success=True)
def mutate(self, info, provider, auth_code, **kw): shop_user = info.context.user.shop_user try: shop_user.bind_third_account(provider, auth_code) except ( exceptions.AlreadyBinded, exceptions.DoNotSupportBindType, exceptions.CodeBeUsed, ) as e: raise exceptions.GQLError(e.message) return Result(success=True)
def mutate(self, info, params): shop_user = info.context.user.shop_user avoid_resubmit = AvoidResubmit("withdraw") try: avoid_resubmit(params.request_id, shop_user.id) except avoid_resubmit.ResubmittedError as e: raise exceptions.GQLError(e.message) try: cls = get_provider_cls(params.provider) obj = cls() openid = obj.get_openid(shop_user=shop_user) except exceptions.DoNotSupportBindType: raise exceptions.GQLError(f"Does not support {params.provider}") note = settings.LOGO_NAME + "-提现" with transaction.atomic(): try: transfer = do_withdraw(shop_user, params.amount, note="提现到零钱") except exceptions.NotEnoughBalance as e: raise exceptions.GQLError(e.message) try: res = obj.withdraw(openid, params.amount, note) except exceptions.WithdrawError as e: # FIXME: revert do_withdraw? # 提现进行中,可能会有一定延时,需要人工处理 # 提现排队中.... logger.exception(str(e)) raise exceptions.GQLError(e.message) transfer.extra_info = dict(res) transfer.order_id = res["payment_no"] transfer.save() return Result(success=True)
def mutate(self, info, params): # 1. avoid resubmit shop_user = info.context.user.shop_user avoid_resubmit = AvoidResubmit("transferPay") try: avoid_resubmit(params.request_id, shop_user.id) except avoid_resubmit.ResubmittedError as e: raise exceptions.GQLError(e.message) # 2. check payment password try: if not shop_user.has_payment_password: raise exceptions.NeedSetPaymentPassword if not shop_user.check_payemnt_password(params.payment_password): raise exceptions.WrongPassword except exceptions.ErrorResultException as e: raise exceptions.GQLError(e.message) # TODO: # 3. do transfer try: to_user = ShopUser.objects.get(uuid=params.to) except ShopUser.DoesNotExist: raise exceptions.GQLError("no_exist_user") try: do_transfer( from_user=shop_user, to_user=to_user, amount=params.amount, note=params.note, ) except exceptions.NotEnoughBalance as e: raise exceptions.GQLError(e.message) return Result(success=True)