紹介コードを入力して友達がサインアップしたら、紹介した既存ユーザーにクーポンを発行する方法

みなさん、こんにちは!

いつも大変お世話になっております。

Adaloで、紹介コードを入力して友達がサインアップしたら、紹介した既存ユーザーにクーポンを発行する方法を模索しています。

現状、紹介したユーザーを管理画面で識別できずに困っています。

詳細は以下です。

もしAdaloで実装できるアプローチが思い浮かぶ方はお力添えいただけると幸いです!

よろしくお願いいたします!

サインアップ画面

・新規会員登録するときに友達紹介用の紹介コード(ランダムな数字3桁)をUserコレクションのcoupon_code(Number型)に保存します。

=>自分の紹介コードはマイページに表示させます。

・友達から紹介コードを教えてもらった人は、新規会員登録するときに、紹介コード入力欄(入力は任意)にその友達の紹介コードを入力してサインアップします。

友達を紹介したユーザーに管理画面からクーポンを発行したいです。

クーポンを発行する対象ユーザーを識別するためのInvitationsコレクションを新規会員登録時にあわせてCreateします。

Invitationsコレクションの構成要素は以下です。

code(Number型)
status(True/False)
invite_user(Many Invitations, one User)
invited_user(Many Invitations, one User)

新しいInvitationは、SignupアクションのあとにCreateするため、紹介されたユーザー(=invited_user)は、Loged in Userを設定できます。

一方、肝心の紹介したユーザー(=invite_user)は設定が上手くいきません。ここで詰まっています。。。

どういうユーザーをinvite_userに設定したいかは以下です。

紹介コード入力欄の数字3桁(Invitationのcodeにもセット)とUserのcoupon_codeが一致するユーザー

CreateアクションするときにUserの細かい絞り込みが表示されないのでどうやって実装するか考えあぐんでいます。

管理画面のクーポン発行画面

以下を一覧で表示する。

・紹介したユーザー名
・紹介されたユーザー名
・クーポン発行ボタン

クーポン発行ボタンを押したら、紹介したユーザーにクーポンを1つ付与します。
具体的には、該当ユーザーのcoupons(Number型)にプラス1します。

ちょうどこちらのアプリで作りましたね。

「いいね!」 2

まず、クーポンコード発行には、一意のコード発行のため、有料のRandomizerコンポーネントを使います。でないと、紹介者に紐づくクーポンコードを、会員登録時に当てることができませんので。
したがってコード自体はテキスト型で作る必要があります。
かなり詳細にテーブル構造を記載されていて、慣れてる方だと思いますので、一旦この情報だけでも実装に辿り着けるのではないでしょうか?
Randomizerの使い方でわからないことがあればまたご返信ください。

「いいね!」 1

yASUさま、早々のご回答・ご助言ありがとうございます!!!
Randmoizerなど使用してこの後試させていただきます。
重ねてありがとうございます!

「いいね!」 1

yASUさま、日曜日に失礼いたします!
以下で試してみましたが、失敗しました。試した内容やスクショ、失敗箇所など以下に共有いたしますので、可能であればご助言いただきたいです。。
よろしくお願いいたします!

試したこと

・Userコレクションにcoupon_code(Text型)で用意
・signup画面にRandomizerコンポーネントを設置
・Randomizerコンポーネントのアクションを設定
=>Update Loged in User。coupon_codeにRandomizer > UUIDをセットする

失敗内容

・新規会員登録ボタンを押したあと、Randomizerコンポーネントのアクションが実行されるかと思ったけど、どうやらうまくいきませんでした。
具体的に言うと、新規会員登録ボタンを押したときにサインアップ自体はできて、新しいUserが登録されましたが、肝心のcoupon_codeには何もセットされず空のママでした。

スクリーンショット


ご報告です。
RandomizerでLoged in UserにUUIDをセットすることは以下の手順で一旦できました!

マイページに「紹介コードを取得する」というリンクを用意する
押したら紹介コードを表示する画面へ遷移する
その画面にRandomizerコンポーネントを設置する
Randomizerのアクションは、Update LIUで、coupon_codeがis emptyのときにUUIDをセットする
画面内には「あなたの紹介コード:〇〇〇〇」と表示させる

「いいね!」 1

アドバイス本当にありがとうございました!
管理画面からクーポン付与する実装も実現できました:grin:
解決の糸口になるご助言本当にありがとうございました!!!

「いいね!」 1

日曜の追返信を見逃してました!!
実装できたようで何よりです!!

・紹介者がコード生成するときに、同じクーポンに対して新しいコードが発番されないようにSometimes Actionで制御する
・被紹介者が会員登録する際に、適当な文字列を何文字か入れてコードがわかっていないのにコードを当てられてしまうことを避けるためにクーポンコードリストの条件はequals toに指定する
・一度使われたクーポンコードが後勝ちで他のユーザに入力されて奪われないように、付与済フラグを設ける(紹介者が1:1でのみ紹介するとは限らない場合)

などが追加注意点です!!

「いいね!」 2

注意点補足も何から何までありがとうございます!

>・紹介者がコード生成するときに、同じクーポンに対して新しいコードが発番されないようにSometimes Actionで制御する
こちらは対応済みです!

UUIDはかなり長い文字列なのでマイページのコード表示画面にボタンを設置して、クリックしたらそのコードをコピーさせるのも実装したかったですが、Adaloでは現状、有料のコンポーネントを使わないとできなさそうですね。。

「いいね!」 1

クリックしたらそのコードをコピーさせるのも実装

そうですね!僕もこれ購入して実装しようと思ってたところなので、先に実装できたときは、使い勝手共有しますね!

「いいね!」 2

ありがとうございます!今後とも何卒よろしくお願いいたします!

ちょうど似たようなスレForumにも上がってましたね? Corpさん本人?
念の為、こちらも残しておきますね。

「いいね!」 1

tsubasaさん、ありがとうございます!
本人です!

「いいね!」 1

そうなのですねw
スレとして綺麗だったので、ここでも共有しました。ともあれ解決しそうで何よりですー。

「いいね!」 1

ありがとうございます!w
なんとか解決できて本当に助かりましたm(_ _)m

「いいね!」 1