Controller.php 6.0 KB

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