SystemRole.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. <?php
  2. namespace app\admin\controller\setting;
  3. use app\admin\model\system\SystemMenus;
  4. use service\UtilService as Util;
  5. use service\JsonService as Json;
  6. use think\Request;
  7. use think\Url;
  8. use app\admin\model\system\SystemRole as RoleModel;
  9. use app\admin\controller\AuthController;
  10. /*
  11. * 身份管理 控制器
  12. * */
  13. class SystemRole extends AuthController
  14. {
  15. /**
  16. * 显示资源列表
  17. *
  18. * @return \think\Response
  19. */
  20. public function index()
  21. {
  22. $where = Util::getMore([
  23. ['status',''],
  24. ['role_name',''],
  25. ],$this->request);
  26. $where['level'] = $this->adminInfo['level'];
  27. $this->assign('where',$where);
  28. $this->assign(RoleModel::systemPage($where));
  29. return $this->fetch();
  30. }
  31. /**
  32. * 显示创建资源表单页.
  33. *
  34. * @return \think\Response
  35. */
  36. public function create()
  37. {
  38. // if(0 == 0){
  39. // }else{
  40. // dump($this->adminInfo['level']);
  41. // }
  42. $menus = $this->adminInfo['level'] == 0 ? SystemMenus::ruleList() : SystemMenus::rolesByRuleList($this->adminInfo['roles']);
  43. $this->assign(['menus'=>json($menus)->getContent(),'saveUrl'=>Url::build('save')]);
  44. return $this->fetch();
  45. }
  46. /**
  47. * 保存新建的资源
  48. *
  49. * @param \think\Request $request
  50. * @return \think\Response
  51. */
  52. public function save(Request $request)
  53. {
  54. $data = Util::postMore([
  55. 'role_name',
  56. ['status',0],
  57. ['checked_menus',[],'','rules']
  58. ],$request);
  59. if(!$data['role_name']) return Json::fail('请输入身份名称');
  60. if(!is_array($data['rules']) || !count($data['rules']) )
  61. return Json::fail('请选择最少一个权限');
  62. foreach ($data['rules'] as $v){
  63. $pid = SystemMenus::where('id',$v)->value('pid');
  64. if(!in_array($pid,$data['rules'])) $data['rules'][] = $pid;
  65. }
  66. $data['rules'] = implode(',',$data['rules']);
  67. $data['level'] = $this->adminInfo['level']+1;
  68. RoleModel::set($data);
  69. return Json::successful('添加身份成功!');
  70. }
  71. /**
  72. * 显示指定的资源
  73. *
  74. * @param int $id
  75. * @return \think\Response
  76. */
  77. public function read($id)
  78. {
  79. //
  80. }
  81. /**
  82. * 显示编辑资源表单页.
  83. *
  84. * @param int $id
  85. * @return \think\Response
  86. */
  87. public function edit($id)
  88. {
  89. //
  90. $role = RoleModel::get($id);
  91. $menus = $this->adminInfo['level'] == 0 ? SystemMenus::ruleList() : SystemMenus::rolesByRuleList($this->adminInfo['roles']);
  92. $this->assign(['role'=>$role->toJson(),'menus'=>json($menus)->getContent(),'updateUrl'=>Url::build('update',array('id'=>$id))]);
  93. return $this->fetch();
  94. }
  95. /**
  96. * 保存更新的资源
  97. *
  98. * @param \think\Request $request
  99. * @param int $id
  100. * @return \think\Response
  101. */
  102. public function update(Request $request, $id)
  103. {
  104. $data = Util::postMore([
  105. 'role_name',
  106. ['status',0],
  107. ['checked_menus',[],'','rules']
  108. ],$request);
  109. if(!$data['role_name']) return Json::fail('请输入身份名称');
  110. if(!is_array($data['rules']) || !count($data['rules']) )
  111. return Json::fail('请选择最少一个权限');
  112. foreach ($data['rules'] as $v){
  113. $pid = SystemMenus::where('id',$v)->value('pid');
  114. if(!in_array($pid,$data['rules'])) $data['rules'][] = $pid;
  115. }
  116. $data['rules'] = implode(',',$data['rules']);
  117. RoleModel::edit($data,$id);
  118. return Json::successful('修改成功!');
  119. }
  120. /**
  121. * 删除指定资源
  122. *
  123. * @param int $id
  124. * @return \think\Response
  125. */
  126. public function delete($id)
  127. {
  128. if(!RoleModel::del($id))
  129. return Json::fail(RoleModel::getErrorInfo('删除失败,请稍候再试!'));
  130. else
  131. return Json::successful('删除成功!');
  132. }
  133. }