6位邀请码生成

2019-10-15  本文已影响0人  葫芦葫芦快显灵

背景:
邀请是一种常见的裂变方式,这里生成全局唯一的6位邀请码。
思路:
由 0-9 加上24个大写字母(去掉容易混淆的IO)组成的6位邀请码最多可以6^34种组合, 大概在15亿。

  1. 对34重复取余,将余数作为字符数组的下标追加到邀请码的最后
  2. 超过6位去除多余的部分, 不足6位用字符数组的某一位补充
class InvitationCodeService

  CODE_SIZE = 6

  # num一般为member_user_id
  def self.generate num
    str = "0123456789ABCDEFGHJKLMNPQRSTUVWXYZ"
    res = ""

    while num > 0
      tmp = num % 34
      num = num / 34
      res << str[tmp]
    end

    if res.size > CODE_SIZE
      res[0..5]
    elsif res.size == CODE_SIZE
      res
    else
      str[0] * (CODE_SIZE - res.size) << res
    end
  end

end
上一篇下一篇

猜你喜欢

热点阅读