Rules.php 6.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | Description: 规则
  4. // +----------------------------------------------------------------------
  5. // | Author: Michael_xu | gengxiaoxu@5kcrm.com
  6. // +----------------------------------------------------------------------
  7. namespace app\admin\controller;
  8. use think\Hook;
  9. use think\Request;
  10. use think\Db;
  11. class Rules extends ApiCommon
  12. {
  13. /**
  14. * 用于判断权限
  15. * @permission 无限制
  16. * @allow 登录用户可访问
  17. * @other 其他根据系统设置
  18. **/
  19. public function _initialize()
  20. {
  21. $action = [
  22. 'permission'=>[''],
  23. 'allow'=>['index','groupauth','upgroupauth','getgroupauth','groupauthid']
  24. ];
  25. Hook::listen('check_auth',$action);
  26. $request = Request::instance();
  27. $a = strtolower($request->action());
  28. if (!in_array($a, $action['permission'])) {
  29. parent::_initialize();
  30. }
  31. $m = $this->m;
  32. $c = $this->c;
  33. $a = $this->a;
  34. }
  35. public function index()
  36. {
  37. $ruleModel = model('Rule');
  38. $param = $this->param;
  39. $data = $ruleModel->getDataList($param);
  40. return resultArray(['data' => $data]);
  41. }
  42. /**
  43. * 新建规则
  44. * @param
  45. * @return
  46. */
  47. public function save()
  48. {
  49. $ruleModel = model('Rule');
  50. $param = $this->param;
  51. $data = $ruleModel->createData($param);
  52. if (!$data) {
  53. return resultArray(['error' => $ruleModel->getError()]);
  54. }
  55. return resultArray(['data' => '添加成功']);
  56. }
  57. /**
  58. * 编辑规则
  59. * @param
  60. * @return
  61. */
  62. public function update()
  63. {
  64. $ruleModel = model('Rule');
  65. $param = $this->param;
  66. $data = $ruleModel->updateDataById($param, $param['id']);
  67. if (!$data) {
  68. return resultArray(['error' => $ruleModel->getError()]);
  69. }
  70. return resultArray(['data' => '编辑成功']);
  71. }
  72. /**
  73. * 配置角色查看范围列表
  74. * @author zjf
  75. */
  76. public function groupauth()
  77. {
  78. $param = $this->param;
  79. $data = ['0' => ['name' => '系统管理角色','pid' => 1],'1' => ['name' => '办公管理角色','pid' => 6],'2' => ['name' => '客户管理角色','pid' => 2],'3' => ['name' => '项目管理角色','pid' => '9']];
  80. $list = db('admin_group')->field('id, pid, title')->select();
  81. $authList = db('admin_group_auth')->where('group_id', $param['group_id'])->column('auth_group_id');
  82. foreach ($data as $key => $value) {
  83. foreach ($list as $k => $v) {
  84. $v['is_true'] = in_array($v['id'], $authList) ? 1 : 0;
  85. if($v['pid'] == $value['pid']){
  86. $data[$key]['item'][] = $v;
  87. }
  88. }
  89. }
  90. return resultArray(['data' => $data]);
  91. }
  92. /**
  93. * 配置角色查看范围列表
  94. * @author zjf
  95. */
  96. public function groupauthid()
  97. {
  98. $param = $this->param;
  99. $authList = db('admin_group_auth')->where('group_id', $param['group_id'])->column('auth_group_id');
  100. return resultArray(['data' => array_map('intval', $authList)]);
  101. }
  102. /**
  103. * 编辑配置角色查看范围
  104. */
  105. public function upgroupauth()
  106. {
  107. $param = $this->param;
  108. $group_id = $param['group_id'];
  109. $auth_group_id = $param['auth_group_id'];
  110. $data = [];
  111. foreach ($auth_group_id as $key => $value) {
  112. $data[] = [
  113. 'group_id' => $param['group_id'],
  114. 'auth_group_id' => $value
  115. ];
  116. }
  117. // 启动事务
  118. Db::startTrans();
  119. try{
  120. db('admin_group_auth')->where('group_id', $param['group_id'])->delete();
  121. db('admin_group_auth')->insertAll($data);
  122. // 提交事务
  123. Db::commit();
  124. return resultArray(['data' => '编辑成功']);
  125. } catch (\Exception $e) {
  126. // 回滚事务
  127. Db::rollback();
  128. return resultArray(['data' => '编辑失败']);
  129. }
  130. }
  131. /**
  132. * 配置角色查看范围列表
  133. * @author zjf
  134. */
  135. public function getgroupauth()
  136. {
  137. $userInfo = $this->userInfo;
  138. $userId = $userInfo['id'];
  139. $groupIds = db('admin_access')->where('user_id', $userId)->column('group_id');
  140. $rules = db('admin_group')->where('id', 'in', $groupIds)->column('rules');
  141. $arr = [];
  142. foreach ($rules as $key => $value) {
  143. if($arr){
  144. $arr = array_merge(explode(",", trim($value, ",")), $arr);
  145. }else{
  146. $arr = explode(",", trim($value, ","));
  147. }
  148. }
  149. $data = ['0' => ['name' => '系统管理角色','pid' => 1],'1' => ['name' => '办公管理角色','pid' => 6],'2' => ['name' => '客户管理角色','pid' => 2],'3' => ['name' => '项目管理角色','pid' => '9']];
  150. # 角色权限查看 配置范围对应id
  151. $rule_authority_id = db('admin_rule')->where(['title' => '角色权限设置', 'name' => 'update'])->value('id');
  152. if(!in_array($rule_authority_id, $arr) && $userId != 1){
  153. $auth_group_ids = db('admin_group_auth')->where('group_id', 'in', $groupIds)->column('auth_group_id');
  154. $list = db('admin_group')->where('id', 'in', $auth_group_ids)->select();
  155. $arrData = [];
  156. foreach ($data as $key => $value) {
  157. $item = [];
  158. foreach ($list as $k => $v) {
  159. if($v['pid'] == $value['pid']){
  160. $item[] = $v;
  161. }
  162. }
  163. $items = [];
  164. if(!empty($item)){
  165. $items = [
  166. 'name' => $value['name'],
  167. 'pid' => $value['pid'],
  168. 'list' => $item,
  169. ];
  170. $arrData[] = $items;
  171. }
  172. }
  173. return resultArray(['data' => $arrData]);
  174. }else{
  175. $list = db('admin_group')->select();
  176. foreach ($data as $key => $value) {
  177. foreach ($list as $k => $v) {
  178. if($v['pid'] == $value['pid']){
  179. $data[$key]['list'][] = $v;
  180. }
  181. }
  182. }
  183. return resultArray(['data' => $data]);
  184. }
  185. }
  186. }