NavsModel.php 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <?php
  2. namespace App\Models;
  3. use App\Http\Controllers\Admin\AdminRoleController;
  4. use Illuminate\Database\Eloquent\Model;
  5. class NavsModel extends BaseModel
  6. {
  7. protected $table='dc_navs';
  8. protected function getTopMenu(){
  9. return $this->_get_menu(array(1));
  10. }
  11. protected function getLeftMenu()
  12. {
  13. return $this->_get_menu(array(0));
  14. }
  15. protected function getQuickMenu()
  16. {
  17. return $this->_get_menu(array(2));
  18. }
  19. private function _get_menu($types){
  20. $data=$this->whereIn('type',$types)->select('name as text','icon','href','id','parent_id','target','type','sort')->orderBy('sort','desc')->get();
  21. if(!$data){
  22. return -3001;
  23. }
  24. // dump(trans('menu.menu_navs'));
  25. $controller=new AdminRoleController;
  26. $code=$controller->getRoot();
  27. $allcode=S('ROLE_CODES');
  28. $status=intval(S("ENABLED_PRIVCHECK"))?intval(S("ENABLED_PRIVCHECK")):0;
  29. $data=$data->toArray();
  30. if(is_array($data) && count($data)>0){
  31. $navs=array();
  32. foreach($data as $k=>$v){
  33. $v['text']=trans('menu.'.trim($v['text']))=='menu.'.trim($v['text'])?trim($v['text']):trans('menu.'.trim($v['text']));
  34. if(intval($v['parent_id'])>0){
  35. if(!isset($navs[$v['parent_id']]['subset'])){
  36. $navs[$v['parent_id']]['subset']=array();
  37. }
  38. if($code==1||in_array(trim($v['href']),$code)||$status<1||(!in_array(trim($v['href']),$allcode))){
  39. $tmp=$v;
  40. unset($tmp['id']);
  41. unset($tmp['parent_id']);
  42. $navs[$v['parent_id']]['subset'][]=$tmp;
  43. }
  44. }else{
  45. if(isset($navs[$v['id']])){
  46. if($code==1||in_array(trim($v['href']),$code)||$status<1||(!in_array(trim($v['href']),$allcode))) {
  47. $navs[$v['id']] = array_merge($navs[$v['id']], $v);
  48. }
  49. }else{
  50. if($code==1||in_array(trim($v['href']),$code)||$status<1||(!in_array(trim($v['href']),$allcode))) {
  51. $navs[$v['id']] = $v;
  52. }
  53. }
  54. unset($navs[$v['id']]['id']);
  55. unset($navs[$v['id']]['parent_id']);
  56. }
  57. }
  58. $item=array();
  59. foreach($navs as $v1){
  60. if(isset($v1['subset'])){
  61. if(count($v1['subset'])>0&&isset($v1['text'])){
  62. $item[]=$v1;
  63. }
  64. }else{
  65. $item[]=$v1;
  66. }
  67. }
  68. // print_r($navs);
  69. // uasort($item, 'sortBySort');
  70. array_multisort(array_column($item,'sort'),SORT_DESC,$item);
  71. // print_r($item);
  72. return $item;
  73. }else{
  74. return -3002;
  75. }
  76. }
  77. function sortBySort($x, $y){
  78. return $x['sort'] > $y['sort'];
  79. }
  80. }