Laravel 结合 Redis 生成订单号 (年月日+6 位自增)

话不多说 直接撸代码#

<?php
namespace App\Services;
use Predis\Client;

class UtilService
{

  /**
 * UtilService constructor
 * @param Client $redis
 */
     public function __construct(Client $redis)
     {
          $this->redis = $redis;
     }
      /**
     * 生成唯一单据号
      * @param String $key 单号KEY
      * @return string
      */
     public function generateReceiptCode(string $key)
     { 
         return $key . date('Ymd') . sprintf("%06d",$this->redis->incr($key));
     }
 }
本作品采用《CC 协议》,转载必须注明作者和本文链接
有梦想的人睡不着,没有梦想的人睡不醒。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 4

为何不用雪花算法?

6年前 评论

@00x00
我试试雪花算法
2219944901359
2220004015923
2220062766757
2220119764908
这些数据不符合我的业务场景,

我的是 20190509000003
20190509000004
20190509000005

6年前 评论
  1. $this->redis ??? 不先定义一下吗?
  2. 失效的单号 有做 处理吗,如果有人恶意访问,单号会一直递增
6年前 评论

我认为欠缺之处,当 redis 意外宕机的时候,缓存的自增数量就会丢失了,这时候就可能导致重复,要考虑一下宕机后如何恢复正常

2年前 评论

文章
88
粉丝
23
喜欢
134
收藏
270
排名:227
访问:4.2 万
私信
所有博文
博客标签
展开
社区赞助商