guava / laravel-sequence

资助包维护!
GuavaCZ

1.0.1 2024-09-05 17:40 UTC

This package is auto-updated.

Last update: 2024-09-05 17:40:56 UTC


README

使用模式生成序列号(例如,用于发票号码)

特性

  • 易于集成
  • 支持多个模式占位符
  • 支持三种最常见的重置频率
  • 根据重置频率自动创建新的序号

安装

composer require nextgen-tech/laravel-sequence

使用方法

use Carbon\Carbon;
use Guava\Sequence\Enums\ResetFrequency;
use Guava\Sequence\Models\SequenceRule;
use Guava\Sequence\SequenceFactory;

/**
 * Create new sequence rule. It needs to be done only once.
 */
SequenceRule::create([
    'type'            => 'invoice',
    'pattern'         => '{number}/COMPANY/{year}',
    'reset_frequency' => ResetFrequency::YEARLY,
]);

/**
 * Make sequence factory via container or DI.
 */
$factory = app(SequenceFactory::class);

/**
 * Create sequence by passing sequence type and date (e.g. issue date of invoice).
 */
$sequence = $factory->create(
    'invoice',
    Carbon::createFromFormat('Y-m-d', '2021-06-01')
);

/**
 * Public methods of sequence.
 */
$ordinal = $sequence->getOrdinalNumber(); // e.g. 21
$number  = $sequence->getNumber();        // e.g. 21/COMPANY/2021
$pattern = $sequence->getPattern();       // e.g. {number}/COMPANY/{year}

/**
 * After use of generated number, manual increment of ordinal number is required.
 */
$sequence->increment();

重置频率

Sequences 支持 three 种最常用的重置频率。创建新的序列规则时,应使用 \Guava\Sequence\Enums\ResetFrequency 类。

  • ResetFrequency::YEARLY - 在新年的开始重置序号
  • ResetFrequency::MONTHLY - 在新月的开始重置序号
  • ResetFrequency::DAILY - 在新日的开始重置序号

模式占位符

致谢

本包是基于 nextgen-tech/laravel-sequence 的分支。