ApiController.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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%")->paginate(null, ['id', 'title as text']);
  22. } else {
  23. // 获取最新的50个
  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%")->paginate(null, ['id', 'title as text']);
  35. } else {
  36. // 获取最新的50个
  37. $selectOptionsNew = SitePages::selectOptionsNew();
  38. return $this->changeOptions($selectOptionsNew);
  39. }
  40. }
  41. public function tag(Request $request)
  42. {
  43. $q = $request->get('q');
  44. if ($q != null) {
  45. // 模糊搜索
  46. $obj = new SitePagesTag();
  47. return $obj->model()->where('name', 'like', "%$q%")->paginate(null, ['id', 'name as text']);
  48. } else {
  49. // 获取最新的50个
  50. $selectOptionsNew = SitePagesTag::selectOptionsNew();
  51. return $this->changeOptions($selectOptionsNew);
  52. }
  53. }
  54. public function generateSlug(Request $request)
  55. {
  56. $model = $request->get('model');
  57. $title = $request->get('title');
  58. $result = null;
  59. switch ($model) {
  60. case 'pages':
  61. $obj = new SitePages();
  62. $result = $obj->generateSlug($title);
  63. break;
  64. case 'productCategory':
  65. $obj = new DistProductCategory();
  66. $result = $obj->generateSlug($title);
  67. break;
  68. case 'videoCategory':
  69. $obj = new DistVideoCategory();
  70. $result = $obj->generateSlug($title);
  71. break;
  72. case 'pagesTag':
  73. $obj = new SitePagesTag();
  74. $result = $obj->generateSlug($title);
  75. break;
  76. }
  77. return ['slug' => $result];
  78. }
  79. /*
  80. * 把数据转换成select需要的格式
  81. */
  82. private function changeOptions($data) {
  83. // 初始化结果数组
  84. $result = [];
  85. // 遍历原始数据并转换格式
  86. foreach ($data as $id => $text) {
  87. $result[] = [
  88. 'id' => (int)$id, // 将字符串转换为整数
  89. 'text' => $text
  90. ];
  91. }
  92. return $result;
  93. }
  94. }