image.png
需求
用戶在某個(gè)活動(dòng)中最多領(lǐng)取N張優(yōu)惠券渐逃。
每個(gè)活動(dòng)中最多領(lǐng)取M張(優(yōu)惠券發(fā)放總量)伐谈。
分析
當(dāng)每一個(gè)用戶領(lǐng)券時(shí)烂完,實(shí)時(shí)計(jì)算當(dāng)前用戶可以領(lǐng)取的數(shù)量,查詢量大诵棵。
如果提前計(jì)算好抠蚣,每個(gè)用戶當(dāng)前優(yōu)惠券數(shù)量。就可以在邏輯層判斷出履澳,用戶是否可以領(lǐng)券嘶窄。
解決方法
增加「領(lǐng)券記錄表」缓屠,主要字段有:
字段 | 描述 |
---|---|
receive_code | 領(lǐng)券碼。 receive_code = user_id + activity_id 或者 = user_id 或者 activity_id |
activity_id | 活動(dòng)ID |
receive_count | 領(lǐng)券總數(shù)量 |
當(dāng)每成功領(lǐng)取一張护侮,receive_count 加 1敌完。
其中 receive_code 是重點(diǎn),根據(jù)不同情況設(shè)計(jì)不同的 receive_code羊初。
- 記錄每個(gè)用戶在某個(gè)活動(dòng)領(lǐng)券了多少?gòu)垉?yōu)惠券滨溉。 receive_code = user_id:activity_id
- 記錄每個(gè)活動(dòng)最多領(lǐng)取M張, receive_code = activity_id
若需求长赞,同時(shí)對(duì)用戶優(yōu)惠券總量上限和活動(dòng)上限晦攒,則領(lǐng)券是同時(shí)更新兩條記錄。
INSERT ON DUPLICATE KEY UPDATE