搜尋

首頁  >  問答  >  主體

java - 怎么批量生成优惠券的编码

1.后台管理系统中批量生成优惠券的编码
2.优惠券编码不能太长,否则用户领取优惠券时不方便输入编码
3.优惠券编码也不能太短,同时编码还不能有规律,否则会被猜出来
4.所有的优惠券编码不能重复

各位大神有不有什么好的方案

伊谢尔伦伊谢尔伦2771 天前1144

全部回覆(4)我來回復

  • PHP中文网

    PHP中文网2017-04-17 17:57:26

    1. 淘寶訂單號碼

    2016-04-28 訂單號碼: 1846204025999235

    2016-04-28 訂單號碼: 1846669615349235

    2016-04-27 訂單號碼: 1846164650079235

    2016-04-27 訂單號碼: 1845531842409235

    2016-04-26 訂單號碼: 1840290749419235

    2012-07-29 訂單號碼: 148557304839235

    優惠券的碼命名的幾種規則:
    1、不重複。
    2、安全性。
    你的訂單編號不能透露你公司的真實運營信息,比如你的訂單就是流水號的話,那麼別人就可以從訂單號推測出你公司的整體運營概括了。所以訂單編碼必須是除了你們公司一小部分人外,其他人基本上看不懂的。參考京東和淘寶的編碼規則,基本別人是搞不清楚是什麼意思的。其實最好的防洩漏編碼規則就是在編碼中不要加入任何和公司營運的資料。
    3、不能使用大規模隨機碼。
    很多人分析訂單編碼規則的時候,第一個念頭肯定是不重複唯一性,那麼第二個念頭可能就是安全性,那麼同時滿足前兩者的第三個念頭就是隨機碼了。因為大規模的隨機碼隨機生成,因為本身就沒有意義所以無所謂洩密了。但是事實上這種編碼規則在實作上會有很大的問題。
    隨機碼滿足第二點安全性要求,為了滿足第一點不重複特性,那就得在生成隨機碼的時候對比歷史數據是否有重複,如果你的訂單數量到達了十萬次,你每次產生訂單編碼時就得比較十萬個歷史數據,你可想而知會造成什麼巨大問題。
    但是難道隨機碼就不能在編碼中使用了嗎?小規模的隨機碼是可以使用的,例如2~3位,這種隨機碼一般都是和流水號等結合使用,主要作用是為了隱藏流水號的真實數據而進行使用的。
    4、防止併發。
    這條規則主要針對編碼中有時間的設定。
    5、控制位數。
    這點很好理解,訂單號碼的功能就是方便查詢。
    一般正常使用場景應該是訂單出異狀或退貨的時候,用戶將訂單號碼報給客服,由客服進行查詢。
    所以一般在10~15位為好。
    京東10位,淘寶15位。

    回覆
    0
  • 阿神

    阿神2017-04-17 17:57:26

    產生16位的UUID

    回覆
    0
  • 大家讲道理

    大家讲道理2017-04-17 17:57:26


    目前是這樣做的,但是總感覺不大方便,這個優惠券是要打印出來的,可能需要用戶手動輸入@ jiangxiao

    回覆
    0
  • PHP中文网

    PHP中文网2017-04-17 17:57:26

    https://www.zhihu.com/question/19805896


    時間 + 用戶id + 優惠券所屬商品/店鋪id + 隨機碼

    敏感資訊可以md5或其他演算法

    回覆
    0
  • 取消回覆