AppServiceProvider.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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. use App\Services\RomanizeService;
  9. class AppServiceProvider extends ServiceProvider
  10. {
  11. /**
  12. * Register any application services.
  13. */
  14. public function register(): void
  15. {
  16. //雪花算法
  17. $this->app->singleton('snowflake', function () {
  18. return (new Snowflake(
  19. config('mint.snowflake.data_center_id'),
  20. config('mint.snowflake.worker_id')
  21. ))
  22. ->setStartTimeStamp(strtotime(config('mint.snowflake.start')) * 1000)
  23. ->setSequenceResolver(
  24. new LaravelSequenceResolver(
  25. $this->app->get('cache')->store()
  26. )
  27. );
  28. });
  29. $this->app->singleton(RomanizeService::class);
  30. }
  31. /**
  32. * Bootstrap any application services.
  33. */
  34. public function boot(): void
  35. {
  36. //
  37. QueryBuilder::mixin($queryBuilderMacro = $this->app->make(QueryBuilderMacro::class));
  38. }
  39. }