AppServiceProvider.php 1.4 KB

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