MenuApi.php 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <?php
  2. namespace app\common\api;
  3. use app\admin\model\Role;
  4. use app\admin\model\SysRelation;
  5. use app\admin\model\Menu;
  6. /**
  7. * Description of MenuApi
  8. *
  9. * @author sgq
  10. */
  11. class MenuApi {
  12. public static function getMenuIdsByNewUrls(array $urls) {
  13. $where = [];
  14. $where[] = ["new_url", "in", $urls];
  15. $where[] = ["status", "=", 1];
  16. $where[] = ["delete", "=", 0];
  17. return Menu::where($where)->column("id");
  18. }
  19. public static function save($params) {
  20. $data["name"] = $params["name"];
  21. $data["new_url"] = $params["url"];
  22. $data["code"] = $params["code"];
  23. $data["pcode"] = $params["pcode"];
  24. $data["num"] = $params["num"];
  25. $data["icon"] = $params["icon"];
  26. $data["ismenu"] = $params["ismenu"];
  27. $pcode = $params["pcode"];
  28. $tmp = [];
  29. while($pcode != "0"){
  30. }
  31. if ($params["id"]) {
  32. $data["id"] = $params["id"];
  33. return Menu::update($data);
  34. }
  35. return Menu::insert($data);
  36. }
  37. public static function getAllMenus($fields = "*") {
  38. $where[] = ["status", "=", 1];
  39. $where[] = ["delete", "=", 0];
  40. $menus = Menu::where($where)->field($fields)->order("levels asc,num asc")->select()->toArray();
  41. $menus = self::buildMenu($menus);
  42. return $menus;
  43. }
  44. public static function getMenuListByRoleid($roleid) {
  45. $role = Role::find($roleid);
  46. $tmp = [];
  47. if ($role) {
  48. $menu_ids = $role->sysRelation->column("menuid");
  49. $where[] = ["status", "=", 1];
  50. $where[] = ["ismenu", "=", 1];
  51. $where[] = ["new_url", "<>", ""];
  52. $where[] = ["id", "in", $menu_ids];
  53. $whr[] = ["levels", "=", 1];
  54. $menus = Menu::whereOr([$where, $whr])->order("levels asc,num asc")->select()->toArray();
  55. $menus = self::buildMenu($menus);
  56. for ($i = 0; $i < count($menus); $i++) {
  57. $menu_items_count = count($menus[$i]["children"]);
  58. $empty_url_count = 0;
  59. for ($n = 0; $n < $menu_items_count; $n++) {
  60. if ($menus[$i]["children"][$n]["new_url"] == null)
  61. $empty_url_count++;
  62. }
  63. if ($empty_url_count != $menu_items_count)
  64. $tmp[] = $menus[$i];
  65. }
  66. }
  67. return $tmp;
  68. }
  69. public static function getPrivilagesByRoleid($roleid) {
  70. $role = Role::find($roleid);
  71. $menu_ids = $role->sysRelation->column("menuid");
  72. $menus = Menu::where("status", 1)->order("levels asc,num asc")->select()->toArray();
  73. $codeToPid = [];
  74. foreach ($menus as &$menu) {
  75. $codeToPid[$menu["code"]] = $menu["id"];
  76. $menu["checked"] = in_array($menu["id"], $menu_ids) ? true : false;
  77. $menu["pid"] = isset($codeToPid[$menu["pcode"]]) ? $codeToPid[$menu["pcode"]] : 0;
  78. }unset($menu);
  79. return $menus;
  80. }
  81. /**
  82. * 递归获取多级菜单集合
  83. * @param type $menus
  84. * @param type $pcode
  85. * @return type
  86. */
  87. private static function buildMenu($menus, $pcode = "0") {
  88. $result = [];
  89. foreach ($menus as $key => $menu) {
  90. if ($pcode == $menu["pcode"]) {
  91. unset($menus[$key]);
  92. $menu["children"] = self::buildMenu($menus, $menu["code"]);
  93. if ($menu["pcode"] == 0) {
  94. $result[] = $menu;
  95. }
  96. }
  97. }
  98. return $result;
  99. }
  100. /**
  101. * 权限检查
  102. * @param type $url 新权限url
  103. * @param type $old_url 旧系统权限url
  104. * @return boolean
  105. */
  106. public static function chkPermission($url, $old_url) {
  107. $url = strtolower($url);
  108. $old_url = strtolower($old_url);
  109. $menu = Menu::whereRaw("`status`=1 and (new_url=:new_url or `url`=:url)", ["new_url" => $url, "url" => $old_url])->findOrEmpty()->toArray();
  110. if (!$menu)
  111. return true;
  112. $menuid = $menu["id"];
  113. $roleid = session("user")["roleid"];
  114. $role = Role::find($roleid);
  115. $menu_ids = $role->sysRelation->column("menuid");
  116. return in_array($menuid, $menu_ids);
  117. }
  118. public static function getEnterpriseMenuByType($type) {
  119. $menus = [];
  120. $menus[] = ["type" => [1, 2, 3], "code" => "qyzx", "pcode" => "0", "name" => "机构用户中心", "url" => "/enterprise/index/centerPage", "icon" => "fa-user", "status" => 1];
  121. $menus[] = ["type" => [1, 2], "code" => "yhfk", "pcode" => "0", "name" => "用户反馈", "url" => "", "icon" => "fa-bug", "status" => 1];
  122. $menus[] = ["type" => [1, 2], "code" => "rcrd", "pcode" => "0", "name" => "人才认定", "url" => "#", "icon" => "fa-thumbs-o-up", "status" => 1];
  123. $menus[] = ["type" => [1, 2], "code" => "jctjsb", "pcode" => "rcrd", "name" => "基础条件申报", "url" => "/enterprise/base", "icon" => "fa-thumbs-o-up", "status" => 1];
  124. $menus[] = ["type" => [1, 2], "code" => "rcrdsb", "pcode" => "rcrd", "name" => "人才认定申报", "url" => "/enterprise/talent", "icon" => "fa-thumbs-up", "status" => 1];
  125. $menus[] = ["type" => [1, 2], "code" => "yxrck", "pcode" => "rcrd", "name" => "优秀人才库", "url" => "", "icon" => "fa-thumbs-up", "status" => 1];
  126. $menus[] = ["type" => [1, 2], "code" => "lzsb", "pcode" => "rcrd", "name" => "离职申报", "url" => "", "icon" => "fa-thumbs-up", "status" => 1];
  127. $menus[] = ["type" => [1, 2], "code" => "gzdwbg", "pcode" => "rcrd", "name" => "工作单位变更", "url" => "", "icon" => "fa-thumbs-up", "status" => 1];
  128. $menus[] = ["type" => [1, 2], "code" => "yhzhbg", "pcode" => "rcrd", "name" => "银行账号变更", "url" => "", "icon" => "fa-thumbs-up", "status" => 1];
  129. $menus[] = ["type" => [1, 2], "code" => "rcccbg", "pcode" => "rcrd", "name" => "人才层次变更", "url" => "", "icon" => "fa-thumbs-up", "status" => 1];
  130. $menus[] = ["type" => [1, 2], "code" => "jcxxbg", "pcode" => "rcrd", "name" => "基础信息变更", "url" => "", "icon" => "fa-thumbs-up", "status" => 1];
  131. $menus[] = ["type" => [1, 2], "code" => "jbtmanage", "pcode" => "0", "name" => "津补贴申报", "url" => "", "icon" => "fa-money", "status" => 0];
  132. $menus[] = ["type" => [1, 2], "code" => "jbtsb", "pcode" => "jbtmanage", "name" => "津补贴申报", "url" => "", "icon" => "fa-thumbs-up", "status" => 1];
  133. $menus[] = ["type" => [1, 2], "code" => "gfbt", "pcode" => "0", "name" => "购房补贴", "url" => "", "icon" => "fa-university", "status" => 0];
  134. $menus[] = ["type" => [1, 2], "code" => "gfbtsb", "pcode" => "gfbt", "name" => "购房补贴申报", "url" => "", "icon" => "fa-thumbs-up", "status" => 1];
  135. $menus[] = ["type" => [2], "code" => "pxbtmanage", "pcode" => "0", "name" => "培训补贴", "url" => "", "icon" => "fa-building", "status" => 1];
  136. $menus[] = ["type" => [2], "code" => "pxbt", "pcode" => "pxbtmanage", "name" => "培训补贴", "url" => "", "icon" => "fa-thumbs-up", "status" => 1];
  137. $menus[] = ["type" => [2], "code" => "zdzxmanage", "pcode" => "0", "name" => "重大专项", "url" => "", "icon" => "fa-life-ring", "status" => 1];
  138. $menus[] = ["type" => [2], "code" => "zdzx", "pcode" => "zdzxmanage", "name" => "重大专项", "url" => "", "icon" => "fa-thumbs-up", "status" => 1];
  139. $menus[] = ["type" => [2], "code" => "znjy", "pcode" => "0", "name" => "子女教育", "url" => "", "icon" => "fa-graduation-cap", "status" => 1];
  140. $menus[] = ["type" => [2], "code" => "xzfbz", "pcode" => "znjy", "name" => "学杂费补助", "url" => "", "icon" => "fa-thumbs-up", "status" => 1];
  141. $menus[] = ["type" => [2], "code" => "ylbzmanage", "pcode" => "0", "name" => "医疗补助", "url" => "", "icon" => "fa-hospital-o", "status" => 1];
  142. $menus[] = ["type" => [2], "code" => "ylbz", "pcode" => "ylbzmanage", "name" => "医疗补助", "url" => "", "icon" => "fa-thumbs-up", "status" => 1];
  143. $menus[] = ["type" => [2], "code" => "zfbz", "pcode" => "0", "name" => "住房保障", "url" => "", "icon" => "fa-home", "status" => 1];
  144. $menus[] = ["type" => [2], "code" => "zfsq", "pcode" => "zfbz", "name" => "租房申请", "url" => "", "icon" => "fa-home", "status" => 1];
  145. $menus[] = ["type" => [2], "code" => "fzbz", "pcode" => "zfbz", "name" => "房租补助", "url" => "", "icon" => "fa-money", "status" => 1];
  146. $menus[] = ["type" => [2], "code" => "gfsq", "pcode" => "zfbz", "name" => "购房申请", "url" => "", "icon" => "fa-envira", "status" => 1];
  147. $menus[] = ["type" => [2], "code" => "gfbz", "pcode" => "zfbz", "name" => "购房补助", "url" => "", "icon" => "fa-envira", "status" => 1];
  148. $menus[] = ["type" => [1], "code" => "sbrc", "pcode" => "0", "name" => "硕博人才", "url" => "", "icon" => "fa-graduation-cap", "status" => 0];
  149. $menus[] = ["type" => [1], "code" => "shbt", "pcode" => "sbrc", "name" => "生活补贴", "url" => "", "icon" => "fa-graduation-cap", "status" => 1];
  150. $menus[] = ["type" => [3], "code" => "hxjh", "pcode" => "0", "name" => "海峡计划", "url" => "", "icon" => "fa-plane", "status" => 1];
  151. $menus[] = ["type" => [3], "code" => "hxjhsb", "pcode" => "hxjh", "name" => "海峡计划申报", "url" => "", "icon" => "fa-pencil", "status" => 1];
  152. foreach ($menus as $key => $menu) {
  153. if (!in_array($type, $menu["type"]) || ($menu["pcode"]) != "0" && $menu["url"] == "" || $menu["status"] == 0)
  154. unset($menus[$key]);
  155. }
  156. return self::buildMenu($menus);
  157. }
  158. }