AdminSearchController.php 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace App\Admin\Controllers\System;
  3. use App\Lib\Classes\AcAutomation;
  4. use App\Wen\Utils\SearchUtils;
  5. use App\Wen\Utils\Settings;
  6. use App\Wen\Utils\SiteUtils;
  7. use Dcat\Admin\Http\Controllers\AdminController;
  8. use Dcat\Admin\Http\JsonResponse;
  9. use Illuminate\Http\Request;
  10. use Illuminate\Support\Facades\Cache;
  11. use Illuminate\Support\Facades\Http;
  12. class AdminSearchController extends AdminController{
  13. public function clear(Request $request){
  14. SiteUtils::forget_config_data();
  15. if(env('APP_URL') != 'https://test.minisns.cn'){
  16. Cache::forget('__MINISNS_VERSION__');
  17. Cache::forget('total:todo:count');
  18. Cache::forget('total:tenant:todo:count');
  19. Cache::forget('system:remote:version:tip');
  20. }
  21. return JsonResponse::make()->success('清理完毕');
  22. }
  23. public function search(Request $request)
  24. {
  25. $search_content = $request->search_content;
  26. if(_empty_($search_content)){
  27. return JsonResponse::make()->html('<div class="search_items">搜索结果为空</div>')->success('搜索完毕');
  28. }
  29. $res = Http::post('https://mini.minisns.cn/api/v1/three/search_menu', ['search_content'=>$search_content]);
  30. $search_arr = null;
  31. if($res->successful()){
  32. $search_arr = $res->json();
  33. }
  34. $html = '';
  35. $actree = new AcAutomation(SearchUtils::split_keywords($search_content));
  36. $pre_tags = '<span style="color: #fc3a72;">';
  37. $end_tag = '</span>';
  38. if($search_arr && $search_arr['status']){
  39. if($search_arr['data'] && count($search_arr['data']) > 0){
  40. foreach ($search_arr['data'] as $item){
  41. if($item['menu']){
  42. $uri = admin_url(ltrim($item['menu']['uri'], '/'));
  43. if($item['menu_id'] == $item['parent_id']){
  44. $text = $item['menu']['title'] . ' - ' . $item['keyword'];
  45. }else{
  46. $text = $item['parent']['title'] . ' - ' . $item['menu']['title'] . ' - ' . $item['keyword'];
  47. }
  48. $ac_res = $actree->search($text);
  49. $tmp_text = $text;
  50. $replaced = [];
  51. if($ac_res && is_array($ac_res)){
  52. foreach ($ac_res as $pos) {
  53. $searched_part = mb_substr($tmp_text, $pos[0],$pos[1] - $pos[0],'UTF-8');
  54. if(in_array($searched_part, $replaced)){
  55. continue;
  56. }else{
  57. $replaced[] = $searched_part;
  58. }
  59. $text = str_replace($searched_part, $pre_tags.$searched_part.$end_tag, $text);
  60. // $text = str_replace($searched_part, $pre_tags.$searched_part.$end_tag, $text);
  61. }
  62. }
  63. $html .= '<div class="search_items" onclick="search_reload(\''.$uri.'\', \''.$tmp_text.'\')">'.$text.'</div>';
  64. }
  65. }
  66. }else{
  67. return JsonResponse::make()->html('<div class="search_items">搜索结果为空</div>')->success('搜索完毕');
  68. }
  69. }
  70. return JsonResponse::make()->html($html)->success('搜索完毕');
  71. }
  72. }