Rules.php 7.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227
  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. // $userInfo=$this->userInfo;
  82. $authList = db('admin_group_auth')->where('group_id', $param['group_id'])->column('auth_group_id');
  83. foreach ($data as $key => $value) {
  84. foreach ($list as $k => $v) {
  85. $v['is_true'] = in_array($v['id'], $authList) ? 1 : 0;
  86. if($v['pid'] == $value['pid']){
  87. if($v['id']==1){
  88. continue;
  89. }elseif($v['id']==2){
  90. continue;
  91. }else{
  92. $data[$key]['item'][] = $v;
  93. }
  94. }
  95. }
  96. }
  97. return resultArray(['data' => $data]);
  98. }
  99. /**
  100. * 配置角色查看范围列表
  101. * @author zjf
  102. */
  103. public function groupauthid()
  104. {
  105. $param = $this->param;
  106. $authList = db('admin_group_auth')->where('group_id', $param['group_id'])->column('auth_group_id');
  107. return resultArray(['data' => array_map('intval', $authList)]);
  108. }
  109. /**
  110. * 编辑配置角色查看范围
  111. */
  112. public function upgroupauth()
  113. {
  114. $param = $this->param;
  115. $group_id = $param['group_id'];
  116. $auth_group_id = $param['auth_group_id'];
  117. $data = [];
  118. foreach ($auth_group_id as $key => $value) {
  119. $data[] = [
  120. 'group_id' => $param['group_id'],
  121. 'auth_group_id' => $value
  122. ];
  123. }
  124. // 启动事务
  125. Db::startTrans();
  126. try{
  127. db('admin_group_auth')->where('group_id', $param['group_id'])->delete();
  128. db('admin_group_auth')->insertAll($data);
  129. // 提交事务
  130. Db::commit();
  131. return resultArray(['data' => '编辑成功']);
  132. } catch (\Exception $e) {
  133. // 回滚事务
  134. Db::rollback();
  135. return resultArray(['data' => '编辑失败']);
  136. }
  137. }
  138. /**
  139. * 配置角色查看范围列表
  140. * @author zjf
  141. */
  142. public function getgroupauth()
  143. {
  144. $userInfo = $this->userInfo;
  145. $userId = $userInfo['id'];
  146. $groupIds = db('admin_access')->where('user_id', $userId)->column('group_id');
  147. $rules = db('admin_group')->where('id', 'in', $groupIds)->column('rules');
  148. $arr = [];
  149. foreach ($rules as $key => $value) {
  150. if($arr){
  151. $arr = array_merge(explode(",", trim($value, ",")), $arr);
  152. }else{
  153. $arr = explode(",", trim($value, ","));
  154. }
  155. }
  156. $data = ['0' => ['name' => '系统管理角色','pid' => 1],'1' => ['name' => '办公管理角色','pid' => 6],'2' => ['name' => '客户管理角色','pid' => 2],'3' => ['name' => '项目管理角色','pid' => '9']];
  157. # 角色权限查看 配置范围对应id
  158. $rule_authority_id = db('admin_rule')->where(['title' => '角色权限设置', 'name' => 'update'])->value('id');
  159. if(!in_array($rule_authority_id, $arr) && $userId != 1){
  160. $auth_group_ids = db('admin_group_auth')->where('group_id', 'in', $groupIds)->column('auth_group_id');
  161. $list = db('admin_group')->where('id', 'in', $auth_group_ids)->select();
  162. $arrData = [];
  163. foreach ($data as $key => $value) {
  164. $item = [];
  165. foreach ($list as $k => $v) {
  166. if($v['pid'] == $value['pid']){
  167. if($v['pid'] == $value['pid']){
  168. if($userId!=1 && $v['id']==1){
  169. continue;
  170. }else{
  171. $item[] = $v;
  172. }
  173. }
  174. }
  175. }
  176. $items = [];
  177. if(!empty($item)){
  178. $items = [
  179. 'name' => $value['name'],
  180. 'pid' => $value['pid'],
  181. 'list' => $item,
  182. ];
  183. $arrData[] = $items;
  184. }
  185. }
  186. return resultArray(['data' => $arrData]);
  187. }else{
  188. $list = db('admin_group')->select();
  189. foreach ($data as $key => $value) {
  190. foreach ($list as $k => $v) {
  191. if($v['pid'] == $value['pid']){
  192. if($v['id']==1){
  193. continue;
  194. }else{
  195. $data[$key]['list'][] = $v;
  196. }
  197. }
  198. }
  199. }
  200. return resultArray(['data' => $data]);
  201. }
  202. }
  203. }