这里写自定义目录标题

  • 背景
    • 思路
    • 简陋的代码

背景

产品希望用户在注册的时候自动生成一个 【AB12】形式的邀请码。

思路

1.邀请码是字母加数字组合形式,并且可以看出以自增的方式创建。
2.采用ASCII码的形式处理字母部分('A-Z’的ASCII码为65-90)。
3.采用自左到右自增的方式完成。

简陋的代码

/*** 2022-06-16 获取一个新的邀请码* 唯一,且4位,[XX22]形式,可支持6w+账号,溢出为NULL* @return string|null*/public function getNewInvitationCode(): string|null{# default$arr = ['65',# ASCII 065-090'65','00'# int max 99];$release_invitation_code = User::query()->withoutGlobalScope('activeUser')->orderByDesc('invitation_code')->value('invitation_code');if (!empty($release_invitation_code)) {preg_match_all('/\w/',$release_invitation_code,$tmp);$tmp = $tmp[0];$arr = [ord($tmp[0]),ord($tmp[1]),($tmp[2].$tmp[3])];}$arr_rev = array_reverse($arr);$next_location_increase = false;$num = str_pad($arr_rev[0] + 1, 2, 0, STR_PAD_LEFT);if ($num > 99) {$num = '00';$next_location_increase = true;}else {$num = str_pad($num,2,0, STR_PAD_LEFT);}if ($next_location_increase) {$c1 = $arr_rev[1] + 1;$next_location_increase = false;if ($c1 > 90) {$next_location_increase = true;$c1 = 65;}} else {$c1 = $arr_rev[1];}if ($next_location_increase) {$c2 = $arr_rev[2] + 1;$next_location_increase = false;if ($c2 > 90) {goto SET_NULL;}} else {$c2 = $arr_rev[2];}$arr = [$c2, $c1, $num];$invitation_code_rev = [$num,chr($c1),chr($c2),];$invitation_code = implode('', array_reverse($invitation_code_rev));goto SET_CODE;SET_NULL:return null;SET_CODE:return $invitation_code;}

(业务)自动生成邀请码相关推荐

  1. php用户注册自动生成邀请码,PHP如何实现根据用户id生成一个唯一邀请码

    根据用户id生成与之对应的唯一邀请码,范围为'0-9A-Z'.这个需求的重点在于加粗的部分,也就是要能够根据邀请码反推出用户ID,这样邀请码就不用入库了,在用户量很大的情况下,性能可以得到不小的提升. ...

  2. 如何生成邀请码?让你不再为此心烦!

    类似"APP 邀请注册有奖"这类带有邀请机制的活动,是 APP 的重要推广手段之一,在百度以"APP 邀请注册有奖"为关键字搜索,可以搜索到了近 600 多万条 ...

  3. php多用户表白源码,php源码]阿狸表白自动生成源码

    这个源码是本人一直再用的一款源码,刚开始用下载的时候问题也是蛮多的,经过自己的修改也是大大改善了. 这里是使用:传送门 如需修改生成完成的php文件页面管理文件夹请修改 love.php 中的 131 ...

  4. 随机生成邀请码、随机生成10位数字、随机生成英文字母+数字

    /*** 随机字符串生成* @param int $length 生成字符串长度* @param array $str_content ['number','capital_chars','lower ...

  5. 邀请码 java_java 生成邀请码

    package com.yikangyiliao.base.utils; import java.text.SimpleDateFormat; import java.util.Calendar; i ...

  6. 生成邀请码-个人笔记

    简单生成邀请码 public static void main(String[] args) {for (int i = 0; i < 10; i++) {System.out.println( ...

  7. php邀请码插件,织梦DedeCMS的会员邀请码注册插件 后台可生成邀请码

    织梦DedeCMS的会员邀请码注册插件很早以前就在织梦官方论坛出现了,但是经过悠悠设计测试发现存在有很多问题,根本使用不了,于是悠悠设计就对插件进行了修改,对某些功能进行了修复,并编译了GBK和UTF ...

  8. mysql 生成邀请码_如何实现用户id生成一个唯一邀请码

    根据用户id生成与之对应的唯一邀请码,范围为'0-9A-Z'.这个需求的重点在于加粗的部分,也就是要能够根据邀请码反推出用户ID,这样邀请码就不用入库了,在用户量很大的情况下,性能可以得到不小的提升. ...

  9. 通过用户id生成邀请码

    已知一个用户的ID(ID是长整形)根据用户ID给用户生成一个唯一的邀请码(邀请码范围([a-z0-9])?代码实现! 字符a-z0-9刚好是36个.是否可以考虑直接将用户ID转换成一个36进制的数呢? ...

最新文章

  1. linux 命令安装redis
  2. 北京 10 年,难说再见!
  3. Java中final变量的初始化方式
  4. 面试 | 创建多少个线程合适,该怎么回答?
  5. linux 下查看帮助信息
  6. opengl坐标转换
  7. java报错symbol_为何此处会出现找不到symbol的错误呢?
  8. 论文笔记_S2D.55_2019_SLAM综述_Huang B. A Survey of Simultaneous Localization and Mapping
  9. java编程思想读后感
  10. 小超市的大梦想,京东的梦醒时分
  11. 物联网技术的基站能耗监控解决方案
  12. ubuntu下firefox浏览器不能播放视频解决方法
  13. Android如何避免抓包
  14. VMware Workstation 15 Pro 秘钥
  15. mysql漏洞如何打补丁_“永恒之黑”针对win10和服务器漏洞分析
  16. [wayfarer]PetShop的系统架构设计
  17. 用python画星空图教程水粉_怎样用水粉颜料画星空
  18. 企业级服务器固态硬盘,普通SSD与企业SSD的区别_Intel服务器CPU_企业存储技术与评测-中关村在线...
  19. 关闭 Pycharm 自动更新详细教程
  20. 一座小桥(最多只能承重两个人)横跨南北两岸,任意时刻同一方向只允许一个人过桥,南侧桥段和北侧桥段较窄只能通过一个人,桥中央一处宽敞,允许两个人通过或歇息。试用P(wait)V(signal)操作实现

热门文章

  1. 毕业设计- 基于单片机与GPS+GSM的车辆定位跟踪系统
  2. 全栈工程师必备技能栈,聊聊月薪2W以内都该会点啥?
  3. 实现一个添加标签的功能
  4. Redis客户端常用命令大全
  5. 华为系统鸿蒙的名字来源,鸿蒙系统名字含义_华为鸿蒙操作系统自己研发吗
  6. Flask框架的第一个“Hello Flask”
  7. MATLAB粒子群算法求解带充电站(桩)的电动车辆路径规划EVRP问题代码实例
  8. pfn_to_page
  9. mysql数据库idb_数据库 - MysqliDb
  10. HTML和css结合的第二种方式 head中用style语句