Admingroup.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261
  1. <?php
  2. namespace app\admin\controller;
  3. use think\Lang;
  4. class Admingroup extends AdminControl
  5. {
  6. public function _initialize()
  7. {
  8. parent::_initialize();
  9. Lang::load(APP_PATH . 'admin/lang/' . config('default_lang') . '/admingroup.lang.php');
  10. }
  11. /**
  12. * 管理权限组
  13. * @return mixed
  14. */
  15. public function index()
  16. {
  17. $model_admingroup = Model('admingroup');
  18. $condition = array();
  19. $condition['lang'] = config('default_lang');
  20. $condition['suosgs'] = 1;
  21. $admingroup_list = $model_admingroup->getAdminGroupList($condition,'*');
  22. $allpower = $this->qxhans();
  23. $this->assign('allpower',$allpower);
  24. $this->assign('admin_group_list', $admingroup_list);
  25. $this->setAdminCurItem('index');
  26. return $this->fetch();
  27. }
  28. public function getControllers($dir) {
  29. $pathList = glob($dir . '/*.php');
  30. $res = [];
  31. foreach($pathList as $key => $value) {
  32. $res[] = basename($value, '.php');
  33. }
  34. return $res;
  35. }
  36. /**
  37. * 添加权限组
  38. * @return mixed
  39. */
  40. public function add()
  41. {
  42. if (request()->isPost()) {
  43. $admin_group_model = model('admingroup');
  44. //判断权限组名是否存在
  45. $where['group_name'] = input('post.group_name');
  46. $where['suosgs'] = 1;
  47. if ($admin_group_model->getOneAdmingroup($where)) {
  48. $this->error(lang('admin_group_existence'));
  49. }
  50. var_dump($_POST['permission']);die;
  51. $limit_str = '';
  52. if (is_array($_POST['permission'])) {
  53. $limit_str = implode('|', $_POST['permission']);
  54. }
  55. $data['group_limits'] = ds_encrypt($limit_str, MD5_KEY . md5(input('post.group_name')));
  56. $data['group_name'] = input('post.group_name');
  57. $data['lang'] = config('default_lang');
  58. $data['addtime'] = TIMESTAMP;
  59. if ($admin_group_model->addAdminGroup($data)) {
  60. $this->log(lang('ds_add') . lang('ds_admin_group') . '[' . input('post.group_name') . ']', 1);
  61. dsLayerOpenSuccess(lang('admin_group_add_succ'));
  62. } else {
  63. $this->error(lang('admin_group_add_fail'));
  64. }
  65. } else {
  66. $this->assign('admin_array', 'add');
  67. $this->assign('limit', $this->permission());
  68. $this->setAdminCurItem('add');
  69. return $this->fetch('form');
  70. }
  71. }
  72. public function edit()
  73. {
  74. $admin_group_model = model('admingroup');
  75. $group_id = intval(input('param.group_id'));
  76. $group_info = $admin_group_model->getOneAdmingroup(array('group_id' => $group_id));
  77. if (empty($group_info)) {
  78. $this->error(lang('admin_set_admin_not_exists'));
  79. }
  80. if (request()->isPost()) {
  81. $limit_str = '';
  82. if (is_array($_POST['permission'])) {
  83. $limit_str = implode('|', $_POST['permission']);
  84. }
  85. $limit_str = ds_encrypt($limit_str, MD5_KEY . md5(input('post.group_name')));
  86. $data['group_limits'] = $limit_str;
  87. $data['group_name'] = input('post.group_name');
  88. $update = $admin_group_model->editAdminGroup(array('group_id' => $group_id), $data);
  89. if ($update) {
  90. $this->log(lang('ds_edit') . lang('group_limits') . '[' . input('post.group_limits') . ']', 1);
  91. dsLayerOpenSuccess(lang('admin_group_edit_succ'));
  92. } else {
  93. $this->error(lang('admin_group_edit_fail'));
  94. }
  95. } else {
  96. //解析已有权限
  97. $hlimit = ds_decrypt($group_info['group_limits'], MD5_KEY . md5($group_info['group_name']));
  98. $group_info['group_limits'] = explode('|', $hlimit);
  99. $this->assign('admin_array', 'edit');
  100. $this->assign('group_info', $group_info);
  101. $this->assign('limit', $this->permission());
  102. $this->setAdminCurItem('edit');
  103. return $this->fetch('form');
  104. }
  105. }
  106. public function del()
  107. {
  108. $group_id = input('param.group_id');
  109. if (empty($group_id)) {
  110. $this->error(lang('param_error'));
  111. }
  112. $result = db('admingroup')->delete($group_id);
  113. if ($result) {
  114. ds_json_encode(10000, lang('admin_group_del_succ'));
  115. } else {
  116. ds_json_encode(10001, lang('admin_group_del_fail'));
  117. }
  118. }
  119. /**
  120. * 取得所有权限项
  121. *
  122. * @return array
  123. */
  124. private function permission()
  125. {
  126. $limit = $this->limitList();
  127. if (is_array($limit)) {
  128. foreach ($limit as $k => $v) {
  129. if (is_array($v['child'])) {
  130. $tmp = array();
  131. foreach ($v['child'] as $key => $value) {
  132. $controller = (!empty($value['controller'])) ? $value['controller'] : $v['controller'];
  133. if (strpos($controller, '|') == false) {//controller参数不带|
  134. $limit[$k]['child'][$key]['action'] = rtrim($controller . '.' . str_replace('|', '|' . $controller . '.', $value['action']), '.');
  135. } else {//controller参数带|
  136. $tmp_str = '';
  137. if (empty($value['action'])) {
  138. $limit[$k]['child'][$key]['action'] = $controller;
  139. } elseif (strpos($value['action'], '|') == false) {//action参数不带|
  140. foreach (explode('|', $controller) as $v1) {
  141. $tmp_str .= "$v1.{$value['action']}|";
  142. }
  143. $limit[$k]['child'][$key]['action'] = rtrim($tmp_str, '|');
  144. } elseif (strpos($value['action'], '|') != false && strpos($controller, '|') != false) {//action,controller都带|,交差权限
  145. foreach (explode('|', $controller) as $v1) {
  146. foreach (explode('|', $value['action']) as $v2) {
  147. $tmp_str .= "$v1.$v2|";
  148. }
  149. }
  150. $limit[$k]['child'][$key]['action'] = rtrim($tmp_str, '|');
  151. }
  152. }
  153. }
  154. }
  155. }
  156. return $limit;
  157. } else {
  158. return array();
  159. }
  160. }
  161. /*
  162. * 权限选择列表
  163. */
  164. function limitList()
  165. {
  166. $_limit = array(
  167. array('name' => lang('ds_dashboard_manage'), 'child' => array(
  168. array('name' => lang('ds_welcome'), 'action' => null, 'controller' => 'Wlcome'),
  169. array('name' => lang('ds_welcome'), 'action' => "index", 'controller' => 'Wlcome'),
  170. )),
  171. array('name' => lang('ds_config'), 'child' => array(
  172. array('name' => lang('ds_config'), 'action' => null, 'controller' => 'Config'),
  173. array('name' => lang('ds_wzconfig'), 'action' => "index", 'controller' => 'Config'),
  174. // array('name' => lang('ds_fzsconfig'), 'action' => "dump", 'controller' => 'Config'),
  175. //array('name' => lang('ds_seoconfig'), 'action' => "seo", 'controller' => 'Config'),
  176. )),
  177. array('name' => "数据库设置", 'child' => array(
  178. array('name' => lang('ds_db'), 'action' => null, 'controller' => 'Db'),
  179. array('name' => lang('ds_bfdb'), 'action' => "index", 'controller' => 'Db'),
  180. array('name' => lang('ds_hydb'), 'action' => "restore", 'controller' => 'Db'),
  181. )),
  182. array('name' => lang('ds_adminlog'), 'child' => array(
  183. array('name' => lang('ds_adminlog'), 'action' => null, 'controller' => 'AdminLog'),
  184. array('name' => lang('ds_adminczlog'), 'action' => 'index', 'controller' => 'AdminLog'),
  185. )),
  186. array('name' => lang('ds_member'), 'child' => array(
  187. array('name' => lang('ds_member'), 'action' => null, 'controller' => 'Member'),
  188. array('name' => lang('ds_glmember'), 'action' => "index", 'controller' => 'Member'),
  189. array('name' => lang('ds_addmember'), 'action' => "add", 'controller' => 'Member'),
  190. array('name' => lang('ds_edmember'), 'action' => "edit", 'controller' => 'Member'),
  191. array('name' => lang('ds_dlmember'), 'action' => "del", 'controller' => 'Member'),
  192. )),
  193. array('name' => "接入设置", 'child' => array(
  194. array('name' => "接入设置", 'action' => null, 'controller' => 'Accesskf'),
  195. array('name' => "接入列表", 'action' => "index", 'controller' => 'Accesskf'),
  196. array('name' => "接入添加", 'action' => "add", 'controller' => 'Accesskf'),
  197. array('name' => "接入编辑", 'action' => "edit", 'controller' => 'Accesskf'),
  198. array('name' => "接入删除", 'action' => "del", 'controller' => 'Accesskf'),
  199. )),
  200. array('name' => lang('ds_admin'), 'child' => array(
  201. array('name' => lang('ds_admin'), 'action' => null, 'controller' => 'Admin'),
  202. array('name' => lang('ds_gladmin'), 'action' => "index", 'controller' => 'Admin'),
  203. array('name' => lang('ds_addadmin'), 'action' => "add", 'controller' => 'Admin'),
  204. array('name' => lang('ds_edadmin'), 'action' => "edit", 'controller' => 'Admin'),
  205. array('name' => lang('ds_dladmin'), 'action' => "del", 'controller' => 'Admin'),
  206. )),
  207. array('name' => lang('ds_admin_group'), 'child' => array(
  208. array('name' => lang('ds_admin_group'), 'action' => null, 'controller' => 'AdminGroup'),
  209. array('name' => lang('ds_admin_glgroup'), 'action' => "index", 'controller' => 'AdminGroup'),
  210. array('name' => lang('ds_admin_addgroup'), 'action' => "add", 'controller' => 'AdminGroup'),
  211. array('name' => lang('ds_admin_edgroup'), 'action' => "edit", 'controller' => 'AdminGroup'),
  212. array('name' => lang('ds_admin_dlgroup'), 'action' => "del", 'controller' => 'AdminGroup'),
  213. )),
  214. array('name' => lang('ds_product'), 'child' => array(
  215. array('name' => lang('ds_product'), 'action' => null, 'controller' => 'Product'),
  216. array('name' => lang('ds_product'), 'action' => "index", 'controller' => 'Product'),
  217. array('name' => lang('ds_addproduct'), 'action' => 'add', 'controller' => 'Product'),
  218. array('name' => lang('ds_edproduct'), 'action' => 'edit', 'controller' => 'Product'),
  219. array('name' => lang('ds_dlproduct'), 'action' => 'del', 'controller' => 'Product'),
  220. )),
  221. array('name' => lang('ds_message'), 'child' => array(
  222. array('name' => lang('ds_message'), 'action' => null, 'controller' => 'Message'),
  223. array('name' => lang('ds_glmessage'), 'action' => "index", 'controller' => 'Message'),//留言表
  224. array('name' => lang('ds_ckmessage'), 'action' => "reply", 'controller' => 'Message'),
  225. array('name' => lang('ds_dlmessage'), 'action' => "del", 'controller' => 'Message'),
  226. )),
  227. array('name' => lang('ds_kfchat'), 'child' => array(
  228. array('name' => lang('ds_kfchat'), 'action' => null, 'controller' => 'Service'),
  229. array('name' => lang('ds_kfchat'), 'action' => "index", 'controller' => 'Service'),
  230. )),//对话平台
  231. array('name' => lang('ds_records'), 'child' => array(
  232. array('name' => lang('ds_records'), 'action' => null, 'controller' => 'Jobcv'),
  233. array('name' => lang('ds_glrecords'), 'action' => "index", 'controller' => 'Jobcv'),
  234. )),//历史记录
  235. );
  236. return $_limit;
  237. }
  238. protected function getAdminItemList()
  239. {
  240. $menu_array = array(
  241. array(
  242. 'name' => 'index', 'text' => lang('ds_manage'), 'url' => url('Admingroup/index')
  243. ), array(
  244. 'name' => 'add', 'text' => lang('ds_add'), 'url' => "javascript:dsLayerOpen('".url('Admingroup/add')."','".lang('ds_add')."')"
  245. ),
  246. );
  247. return $menu_array;
  248. }
  249. }