PageService.php 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace App\Modules\Mini\Services;
  3. use App\Base\BaseService;
  4. use App\Models\Goods\Category;
  5. use App\Models\Goods\Goods;
  6. use App\Models\Setting;
  7. use Illuminate\Support\Facades\DB;
  8. class PageService extends BaseService
  9. {
  10. public function banner()
  11. {
  12. $banner = Setting::query()->where("type", Setting::TYPE_BANNER)->get();
  13. return $banner->filter(function (Setting $setting) {
  14. return $setting->value['is_use'];
  15. })->sortByDesc(function (Setting $setting) {
  16. return $setting->value['sort'];
  17. })->map(function (Setting $setting) {
  18. return [
  19. "id" => $setting->id,
  20. "imageUrl" => $setting->value['imageUrl'],
  21. ];
  22. })->values();
  23. }
  24. public function categoryTree()
  25. {
  26. $categoryS = Category::with("childS")->where("parent_id", 0)->where("index_weight", ">", 0)->get(["id", "name", "thumb", "parent_id", "level", "weight"]);
  27. return $categoryS->map(function (Category $category) {
  28. return [
  29. "id" => $category->id,
  30. "name" => $category->name,
  31. "thumb" => $category->thumb,
  32. "child" => $this->childTree($category),
  33. ];
  34. });
  35. }
  36. protected function childTree(Category $category)
  37. {
  38. if ($category->childS->isEmpty()) {
  39. return [];
  40. }
  41. return $category->childS->map(function (Category $category) {
  42. return [
  43. "id" => $category->id,
  44. "name" => $category->name,
  45. "thumb" => $category->thumb,
  46. "child" => $this->childTree($category),
  47. ];
  48. });
  49. }
  50. public function hotGoods($num = 10)
  51. {
  52. $goods = Goods::orderByDesc("view_total")->limit($num)->get();
  53. return $goods->map(function (Goods $g) {
  54. return [
  55. "id" => $g->id,
  56. "name" => $g->name,
  57. "thumb" => $g->thumb,
  58. "view_total" => $g->view_total,
  59. ];
  60. });
  61. }
  62. public function recommendedGoods($num = 10)
  63. {
  64. $goods = Goods::orderBy(DB::raw("rand() "))->limit($num)->get();
  65. return $goods->map(function (Goods $g) {
  66. return [
  67. "id" => $g->id,
  68. "name" => $g->name,
  69. "thumb" => $g->thumb,
  70. ];
  71. });
  72. }
  73. }