CreateRandomNumber.php 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * Name: 芸众商城系统
  5. * Author: 广州市芸众信息科技有限公司
  6. * Profile: 广州市芸众信息科技有限公司位于国际商贸中心的广州,专注于移动电子商务生态系统打造,拥有芸众社交电商系统、区块链数字资产管理系统、供应链管理系统、电子合同等产品/服务。官网 :www.yunzmall.com www.yunzshop.com
  7. * Date: 2021/7/2
  8. * Time: 11:51
  9. */
  10. namespace app\common\services;
  11. use Illuminate\Support\Facades\Redis;
  12. class CreateRandomNumber
  13. {
  14. /**
  15. * @param $prefix
  16. * @return string
  17. */
  18. public static function sn($prefix)
  19. {
  20. return self::redisCache($prefix);
  21. $unique = substr(uniqid(), 7, 13);
  22. return $prefix . date('ymdHi') .strtoupper($unique);
  23. }
  24. public static function redisCache($prefix)
  25. {
  26. $redis = new Redis();
  27. $sn = CreateRandomNumber::randomNumber($prefix);
  28. //没有60秒redis缓存直接返回订单号
  29. if (!$redis::exists('random_sn')) {
  30. $redis::sAdd('random_sn', $sn);
  31. $redis::expire('random_sn', 60);
  32. return $sn;
  33. }
  34. while (1) {
  35. //集合中是否存在该值
  36. $bool = $redis::sIsMember('random_sn', $sn);
  37. if (!$bool) {
  38. $redis::sAdd('random_sn', $sn);
  39. break;
  40. }
  41. $sn = CreateRandomNumber::randomNumber($prefix);
  42. }
  43. return $sn;
  44. }
  45. public static function randomNumber($prefix)
  46. {
  47. $unique = substr(uniqid(), 7, 13);
  48. return $prefix . date('ymdHi') .strtoupper($unique);
  49. }
  50. }