Le site Web a besoin d'un module fonctionnel pour inviter des amis. Le processus est le suivant :
Le centre utilisateur génère un lien d'invitation pour chaque personne (A), puis après que l'invité (B) ait cliqué pour s'inscrire, l'identifiant de A est inséré sous forme de balise après le champ d'inscription de B.
Actuellement, cette méthode permet de compter la liste des amis invités par chaque personne, mais il y aura les problèmes suivants à l'avenir :
Lorsque l'invité B passe une commande pour la première fois, A recevra 10 % de la récompense en points. S'il ne s'agit pas de la première commande, il n'y aura pas de récompense
(C'est ce que je pense à ma manière stupide. Quand. chaque utilisateur passe une commande, il doit d'abord déterminer s'il existe un utilisateur supérieur A, s'il n'y a personne, passer la commande directement. S'il y a un utilisateur supérieur A, il doit juger à nouveau s'il doit passer une commande pour la première fois. , puis ajoutez des points au supérieur, et en même temps passez une commande pour l'utilisateur B)
Ensuite, le problème est que ma méthode stupide doit juger la première commande pour chaque commande passée par chaque utilisateur. Je pense que c'est trop lourd et sujet à des problèmes. Je me demande si le maître a des idées d'optimisation
.
Je pense que cela peut être fait comme ceci :
Relation amicale : Vous pouvez créer une table séparée,
Table des relations amicales
, qui stocke deux champsuid
(ID utilisateur),contact_uid
(ID d'ami associé)好友关系表
,里面存两个字段uid
(用户ID),contact_uid
(关联好友ID)下单是否是首次并增加推荐好友积分操作:可以在用户相关表增加个是否下过单的字段(楼上也有提过),默认为0为没有下过单,每次下单都会先查询这个字段,如果是
1
1
, la logique de commande normale sera suivie. S'il est 0, cela signifie que la commande est passée. n'a jamais été placé, puis la logique que vous utiliserez sera exécutée, c'est-à-dire si l'utilisateur a des recommandateurs. Traitement des points croissants pour les recommandateurs🎜🎜. 🎜Ne faites pas cela, cela affectera les performances.
Les points statistiques sont calculés chaque matin.
Vous pouvez proposer une table. Cette table a l'identifiant, l'identifiant de B, l'identifiant de C et le champ buystate. La valeur de buystate peut être 1 ou 0. 0 signifie que ce n'est pas le premier achat, et 1 signifie que c'est le premier achat.
Ajoutez un champ directement, que vous ayez déjà passé une commande, la valeur par défaut est 0. Quoi qu'il en soit, les informations de l'utilisateur seront obtenues lors de la passation d'une commande. D'ailleurs, vous pouvez juger si elle est égale à 0 pour savoir si c'est le cas. la première commande. Au niveau des points, si vous êtes soucieux des performances, vous pouvez envisager de les sauvegarder dans redis et de modifier la base de données à heure fixe.
Je pense que l'idée est bonne
Une chose à mentionner, les points de récompense devraient être attribués une fois la commande terminée, et non lorsque la commande est passée.
Ajoutez simplement un champ au tableau utilisateur pour indiquer le nombre de commandes historiques terminées. Si la demande change plus tard, il sera facile de restituer des points les N premières fois. Et généralement, le processus de passation ou de finalisation d'une commande nécessite d'interroger la table utilisateur, ce qui n'est pas compliqué.