網站需要邀請好友的功能模組,流程是這樣的:
用戶中心產生每個人(A)的邀請鏈接,然後被邀請人(B)點擊註冊之後,B的註冊字段後面插入A的ID作為標記。
目前這樣可以統計出每個人邀請的好友列表,但後續有以下問題:
被邀請人B首次下單,會獎勵A 10%的積分獎勵,非首次下單,不於獎勵
(我自己笨方法是這麼想的,每一個用戶下單時候,都先判斷是否有上級A用戶,如果沒有就直接下單,如果有上級A用戶,就要再判斷一次是否首次下單,然後再將積分增加給上級,並且同時進行B用戶的下單操作)
那麼問題就是,我自的笨方法需要對每一個用戶的每一次下單進行首次下單的判斷,感覺這樣的過於累贅,容易出現問題,不知道大神有沒有優化思路
我覺得可以這樣搞:
好友關係:可以單獨搞一個表,
好友關係表
,裡面存兩個欄位uid
(用戶ID),contact_uid
(關聯好友ID)下單是否是首次並增加推薦好友積分操作:可以在用戶相關表增加個是否下過單的字段(樓上也有提過),默認為0為沒有下過單,每次下單都會先查詢這個字段,如果是
1
則走正常下單邏輯;如果為0,表示從未下過單,然後執行你將要用到的邏輯,就是用戶是否有推薦人,給推薦人增加積分等的處理不要這樣做,會影響性能。
統計積分在每天凌晨統計。
可以提出一張表,這張表有id,B的id,C的id,以及字段buystate,buystate的值可以取1或者0,0代表不是第一次購買,1代表是第一次購買
直接加上一個字段,是否下單過,預設為0,反正下單的時候會獲取這個用戶的信息,順便判斷一下是不是等於0就知道是不是首單了。積分方面,如果擔心效能,可以考慮存到redis裡,固定一個時間修改資料庫。
我覺得思路沒問題
有一點提一下,獎勵積分應該要在訂單完成後吧,而不是下單的時候。
在使用者表加一個欄位表示歷史完結單次數就好了,後續如果需求改變為前N次返積分也很容易。而且通常下單或完成訂單的過程中本身就需要查詢使用者表,並不顯得繁雜。