AppServiceProvider.php 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  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(
  18. config('mint.snowflake.data_center_id'),
  19. config('mint.snowflake.worker_id')
  20. ))
  21. ->setStartTimeStamp(strtotime(config('mint.snowflake.start')) * 1000)
  22. ->setSequenceResolver(
  23. new LaravelSequenceResolver(
  24. $this->app->get('cache')->store()
  25. )
  26. );
  27. });
  28. }
  29. /**
  30. * Bootstrap any application services.
  31. */
  32. public function boot(): void
  33. {
  34. //
  35. QueryBuilder::mixin($queryBuilderMacro = $this->app->make(QueryBuilderMacro::class));
  36. }
  37. }