Controller.php 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Models\AdminAccessModel;
  4. use App\Models\AdminMenusModel;
  5. use Illuminate\Routing\Controller as BaseController;
  6. use Request,Auth;
  7. use App\Services\Admin\Menus;
  8. use App\Services\Admin\Acl;
  9. /**
  10. * 父控制类类
  11. *
  12. * @author wangzhoudong <m@9026.com>
  13. */
  14. abstract class Controller extends BaseController
  15. {
  16. protected $_user;
  17. protected $_serviceAdminRole;
  18. public function __construct() {
  19. $this->middleware(function ($request, $next) {
  20. $this->_user = Auth::guard('admin')->user();
  21. view()->share('_user',$this->_user);
  22. return $next($request);
  23. });
  24. }
  25. public function getMenus()
  26. {
  27. // if($this->_user['is_root']) {
  28. // $obj = new Menus();
  29. // $menus = $obj->search(array('level'=>2,'display'=>1),$orderby=array('sort'=>'desc'),$pagesize = 100000);
  30. // $menus = $menus->toArray();
  31. // $menus = list_to_tree($menus['data']);
  32. // }else{
  33. // $obj = new Acl();
  34. // $data = $obj->getRoleMenu($this->_user['admin_role_id']);
  35. // $menus = list_to_tree($data);
  36. // }
  37. if ($this->_user['admin_role_id'] == 1)
  38. {
  39. $obj = new Menus();
  40. $menus = $obj->search(array('level'=>2,'display'=>1),$orderby=array('sort'=>'desc'),$pagesize = 100000);
  41. $menus = $menus->toArray();
  42. $menus = list_to_tree($menus['data']);
  43. }else{
  44. $admin_role_id = $this->_user['admin_role_id'];
  45. $menus_arr = AdminAccessModel::where('role_id',$admin_role_id)->pluck('menu_id');
  46. $data = [];
  47. foreach ($menus_arr as $value)
  48. {
  49. $arr = AdminMenusModel::where('id',$value)->first()->toArray();
  50. array_push($data,$arr);
  51. }
  52. $menus = list_to_tree($data);
  53. }
  54. return $menus;
  55. }
  56. /**
  57. * 检测表单篡改
  58. *
  59. * @return true|exception
  60. */
  61. protected function checkFormHash()
  62. {
  63. return (new Formhash())->checkFormHash();
  64. }
  65. /**
  66. * 启用操作日志记录
  67. */
  68. protected function setActionLog($extDatas = [])
  69. {
  70. return app()->make(Mark::BIND_NAME)->setMarkYes()->setExtDatas($extDatas);
  71. }
  72. /**
  73. * 显示提示消息
  74. */
  75. public function showMessage($msg, $links = NULL, $data = NULL, $redirect = true)
  76. {
  77. $this->_showMessage($msg, $links, $data, SUCESS_CODE, $redirect);
  78. }
  79. /**
  80. * 显示错误消息
  81. */
  82. public function showWarning($msg, $links = NULL, $data = NULL, $redirect = true)
  83. {
  84. $this->_showMessage($msg, $links, $data, FAILURE_CODE, $redirect);
  85. }
  86. /**
  87. * 显示消息
  88. */
  89. public function _showMessage($msgs, $links, $data, $code, $redirect)
  90. {
  91. header("Content-type:text/html;charset=utf-8");
  92. if(!is_array($msgs)) {
  93. $msgs = array($msgs);
  94. }
  95. $urls = $links;
  96. if(!is_array($links)) {
  97. $urls = array();
  98. if($links) {
  99. $urls[0]['url'] = $links;
  100. }elseif(isset($_SERVER['HTTP_REFERER'])) {
  101. $urls[0]['url'] = $_SERVER['HTTP_REFERER'];
  102. }else{
  103. $urls[0]['url'] = 'javascript:history.back();';
  104. }
  105. $urls[0]['title'] = '点击立即跳转';
  106. }
  107. if($redirect) {
  108. $redirect = $urls[0]['url'];
  109. $redirect = (strstr($redirect, 'javascript:') !== false) ? $redirect : "location.href='{$redirect}'";
  110. } else {
  111. $redirect = '';
  112. }
  113. if(Request::ajax()){
  114. $retval['msg'] = $msgs;
  115. $retval['redirect'] = $redirect;
  116. $retval['data'] = $data;
  117. $retval['status'] = $code;
  118. echo json_encode($retval);exit;
  119. return ;
  120. }
  121. if($links=="refresh") {
  122. echo "<script>alert('{$msgs[0]}');</script>";
  123. echo "<script>window.close();</script>";
  124. echo "<script>opener.location.reload();</script>";
  125. exit;
  126. }
  127. if($code==SUCESS_CODE) {
  128. $ico = '<i class="fa fa-check"></i>';
  129. $titleHtml = '信息提示';
  130. }else{
  131. $ico = '<i class="fa fa-warning"></i>';
  132. $titleHtml = '错误警告';
  133. }
  134. $msgHtml = '';
  135. foreach ($msgs as $msg) {
  136. $msgHtml .= "<li>$msg</li>";
  137. }
  138. $urlHtml = '';
  139. foreach ($urls as $url) {
  140. if($url['url'] == 'history_back'){
  141. $u = "javascript:history.back();";
  142. }else{
  143. $u = $url['url'];
  144. }
  145. $urlHtml .= '&nbsp;<a class="btn btn-primary" href="' . $u . '" >' . $url['title'] . '</a>';
  146. }
  147. $html ='<!DOCTYPE html>
  148. <html>
  149. <head>
  150. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  151. <meta name="renderer" content="webkit">
  152. <title>' . $titleHtml .'</title>
  153. <link href="/base/css/bootstrap.min.css?v=3.4.0.css" rel="stylesheet">
  154. <link href="/base/css/font-awesome.min.css?v=4.3.0.css" rel="stylesheet">
  155. <link href="/base/css/style.min.css?v=3.0.0.css" rel="stylesheet">
  156. <script type="text/javascript">
  157. setTimeout(function(){
  158. var url = "' . $urls[0]['url'] . '";
  159. if(url == "history_back"){
  160. window.location.href = history.back();
  161. }else{
  162. window.location.href = url;
  163. }
  164. }, 3000);
  165. </script>
  166. </head>
  167. <body class="gray-bg">
  168. <div class="ibox-content middle-box" style="width:600px; margin-top: 150px;">
  169. <h2 class="text-center">' . $ico . ' ' . $titleHtml . '</h2>
  170. <ul class="todo-list m-t ui-sortable">
  171. ' . $msgHtml . '
  172. </ul>
  173. <div class="text-center">
  174. 该页面将在 3 秒钟后自动转向
  175. </div>
  176. <div class="text-center" style="margin-top: 10px;">
  177. ' . $urlHtml . '
  178. <a href="javascript:history.back();" class="btn btn-success">
  179. 返回
  180. </a>
  181. </div>
  182. </div>
  183. </body>
  184. </html>';
  185. exit($html);
  186. }
  187. }