AppServiceProvider.php 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. namespace App\Providers;
  3. use Illuminate\Support\ServiceProvider;
  4. use Godruoyi\Snowflake\Snowflake;
  5. use Godruoyi\Snowflake\LaravelSequenceResolver;
  6. use App\Tools\QueryBuilderMacro;
  7. use Illuminate\Database\Query\Builder as QueryBuilder;
  8. class AppServiceProvider extends ServiceProvider
  9. {
  10. /**
  11. * Register any application services.
  12. */
  13. public function register(): void
  14. {
  15. //雪花算法
  16. $this->app->singleton('snowflake', function () {
  17. return (new Snowflake(config('mint.snowflake_data_center_id'), config('mint.snowflake.worker_id')))
  18. ->setStartTimeStamp(strtotime(config('mint.snowflake.start')) * 1000)
  19. ->setSequenceResolver(
  20. new LaravelSequenceResolver(
  21. $this->app->get('cache')->store()
  22. )
  23. );
  24. });
  25. }
  26. /**
  27. * Bootstrap any application services.
  28. */
  29. public function boot(): void
  30. {
  31. //
  32. QueryBuilder::mixin($queryBuilderMacro = $this->app->make(QueryBuilderMacro::class));
  33. }
  34. }