ApiController.php 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. <?php
  2. namespace App\Distributor\Controllers;
  3. use App\Distributor\Repositories\DistProduct;
  4. use App\Distributor\Repositories\DistProductCategory;
  5. use App\Distributor\Repositories\DistVideoCategory;
  6. use App\Distributor\Repositories\SitePages;
  7. use App\Distributor\Repositories\SitePagesTag;
  8. use Illuminate\Http\Request;
  9. use Illuminate\Routing\Controller;
  10. class ApiController extends Controller
  11. {
  12. /**
  13. * 产品下接API,默认返回50个最新的产品
  14. */
  15. public function products(Request $request)
  16. {
  17. $q = $request->get('q');
  18. if ($q != null) {
  19. // 模糊搜索
  20. $obj = new DistProduct();
  21. return $obj->model()->where('title', 'like', "%$q%")->where('dist_id', getDistributorId())->paginate(null, ['id', 'title as text']);
  22. } else {
  23. // 获取最新的N个
  24. $selectOptionsNew = DistProduct::selectOptionsNew();
  25. return $this->changeOptions($selectOptionsNew);
  26. }
  27. }
  28. public function pages(Request $request)
  29. {
  30. $q = $request->get('q');
  31. if ($q != null) {
  32. // 模糊搜索
  33. $obj = new SitePages();
  34. return $obj->model()->where('title', 'like', "%$q%")->where('dist_id', getDistributorId())->where('page_type', 0)->paginate(null, ['id', 'title as text']);
  35. } else {
  36. // 获取最新的N个
  37. $selectOptionsNew = SitePages::selectOptionsNew(30,0);
  38. return $this->changeOptions($selectOptionsNew);
  39. }
  40. }
  41. public function landingPages(Request $request)
  42. {
  43. $q = $request->get('q');
  44. if ($q != null) {
  45. // 模糊搜索
  46. $obj = new SitePages();
  47. return $obj->model()->where('title', 'like', "%$q%")->where('dist_id', getDistributorId())->where('page_type', 1)->paginate(null, ['id', 'title as text']);
  48. } else {
  49. // 获取最新的N个
  50. $selectOptionsNew = SitePages::selectOptionsNew(30,1);
  51. return $this->changeOptions($selectOptionsNew);
  52. }
  53. }
  54. public function tag(Request $request)
  55. {
  56. $q = $request->get('q');
  57. if ($q != null) {
  58. // 模糊搜索
  59. $obj = new SitePagesTag();
  60. return $obj->model()->where('name', 'like', "%$q%")->where('dist_id', getDistributorId())->paginate(null, ['id', 'name as text']);
  61. } else {
  62. // 获取最新的N个
  63. $selectOptionsNew = SitePagesTag::selectOptionsNew();
  64. return $this->changeOptions($selectOptionsNew);
  65. }
  66. }
  67. public function generateSlug(Request $request)
  68. {
  69. $model = $request->get('model');
  70. $title = $request->get('title');
  71. $result = null;
  72. switch ($model) {
  73. case 'pages':
  74. $obj = new SitePages();
  75. $result = $obj->generateSlug($title);
  76. break;
  77. case 'productCategory':
  78. $obj = new DistProductCategory();
  79. $result = $obj->generateSlug($title);
  80. break;
  81. case 'videoCategory':
  82. $obj = new DistVideoCategory();
  83. $result = $obj->generateSlug($title);
  84. break;
  85. case 'pagesTag':
  86. $obj = new SitePagesTag();
  87. $result = $obj->generateSlug($title);
  88. break;
  89. }
  90. return ['slug' => $result];
  91. }
  92. /*
  93. * 把数据转换成select需要的格式
  94. */
  95. private function changeOptions($data) {
  96. // 初始化结果数组
  97. $result = [];
  98. // 遍历原始数据并转换格式
  99. foreach ($data as $id => $text) {
  100. $result[] = [
  101. 'id' => (int)$id, // 将字符串转换为整数
  102. 'text' => $text
  103. ];
  104. }
  105. return $result;
  106. }
  107. }