RoleController.class.php 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. <?php
  2. namespace Home\Controller;
  3. use Think\Controller;
  4. class RoleController extends ComController {//Com
  5. public function index(){
  6. $data=I();
  7. if(isset($data['list'])){
  8. $group=M('auth_group');
  9. $getpage=$data['pageCurrent'];//第几页
  10. $getsize=$data['pageSize'];//每页条数
  11. $page=($getpage-1)*$getsize;
  12. $map= array('type'=>'1');
  13. $pingyinid = $data['pinyin'];
  14. if(!empty($pingyinid)){
  15. $map['title']=$pingyinid;
  16. }
  17. $count= $group->where($map)->count(id);// 查询满足要求的总记录数
  18. $list = $group->field('id,type,title,level,(SELECT title FROM sp_auth_group a WHERE id=sp_auth_group.pid)as pid,sort,rules')->where($map)->limit($page,$getsize)->select();
  19. $info = array(
  20. 'totalRow' => $count,
  21. //'pageSize' => $count,//分页时不传
  22. 'list' => $list,
  23. );
  24. echo json_encode($info);
  25. }else{
  26. $this->display();
  27. }
  28. }
  29. public function add(){
  30. $group=M('auth_group');
  31. $data=I();
  32. if(isset($data['type'])){
  33. $rules = array(
  34. array('title','','角色名称已存在!',0,'unique'),
  35. array('pid','require','父角色不为空!'),
  36. array('title','require','角色名称不为空!'),
  37. );
  38. if (!$group->validate($rules)->create()){
  39. echo json_encode(array('statusCode'=>'300','message'=> $group->getError()));
  40. }else{
  41. $type=$data['type'];
  42. $title=$data['title'];
  43. $sort=$data['sort'];
  44. $pidname=$data['pid'];
  45. $repid = $group->field('id,level')->where(array('title'=> $pidname))->select();
  46. $pid=$repid[0]['level']+1;
  47. if($pidname=='顶级'){
  48. $repid[0]['id']=0;
  49. $pid=1;
  50. }
  51. $add=array(
  52. 'type'=> $type,
  53. 'pid'=> $repid[0]['id'],
  54. 'title'=> $title,
  55. 'sort'=> $sort,
  56. 'level'=> $pid
  57. );
  58. $res=$group->add($add);
  59. if($res){
  60. //日志开始
  61. $filename_log = "/var/www/html/jdxf/log/config_log".date("Y-m-d").".log";
  62. $data_log ="\r\n".'['.date("Y-m-d H:i:s").']操作人员手机号:'.session('phone_login').'---角色管理新增(sp_auth_group)\r\n';
  63. $data_log1 ='新增数据:'.json_encode($add)."\r\n";
  64. file_put_contents($filename_log, $data_log, FILE_APPEND|LOCK_EX);
  65. file_put_contents($filename_log, $data_log1, FILE_APPEND|LOCK_EX);
  66. //日志结束
  67. echo json_encode(array('statusCode'=>200,'message'=>'添加成功' ));
  68. }else{
  69. echo json_encode(array('statusCode'=>300,'message'=>'添加失败' ));
  70. }
  71. }
  72. }else{
  73. $list = $group->field('id,type,title,level,pid,sort,rules')->where('type=1')->select();
  74. $this->assign('role',$list);
  75. $this->assign('action','/home/Role/add');
  76. $this->display();
  77. }
  78. }
  79. public function edit(){
  80. $group=M('auth_group');
  81. $data=I();
  82. if (session('power')==2){
  83. $this->mtReturn(300,'本账号没有该权限,如需开通请联系管理员',1);
  84. }else {
  85. if(isset($data['type'])){
  86. $roletitle=$group->field('id')->where('type=1 and title="'.$data['title'].'" and id!='.$data['roleid'])->select();
  87. if(count($roletitle) > 0){
  88. exit(json_encode(array('statusCode'=>300,'message'=>'角色已存在!' )));
  89. }
  90. $rules = array(
  91. array('pid','require','父角色不为空!'),
  92. array('title','require','角色名称不为空!'),
  93. );
  94. if (!$group->validate($rules)->create()){
  95. echo json_encode(array('statusCode'=>'300','message'=> $group->getError()));
  96. }else{
  97. $type=$data['type'];
  98. $title=$data['title'];
  99. $sort=$data['sort'];
  100. $pidname=$data['pid'];
  101. $repid = $group->field('id,level')->where(array('title'=> $pidname))->select();
  102. $pid=$repid[0]['level']+1;
  103. if($pidname=='顶级'){
  104. $repid[0]['id']=0;
  105. $pid=1;
  106. }
  107. $add=array(
  108. 'id'=> $data['roleid'],
  109. 'type'=> $type,
  110. 'pid'=> $repid[0]['id'],
  111. 'title'=> $title,
  112. 'sort'=> $sort,
  113. 'level'=> $pid
  114. );
  115. $wx=M()->query("SELECT * FROM sp_auth_group where id='".$data['roleid']."'");
  116. $res=$group->save($add);
  117. if($res){
  118. //日志代码开始
  119. $data_log ="\r\n".'['.date("Y-m-d H:i:s").']操作人员手机号:'.session('phone_login').'---角色管理(sp_auth_group表)---ID:'.$data['roleid']."数据\r\n";
  120. $data_log1 ='修改前数据:'.json_encode($wx)."\r\n";
  121. $data_log2 ='修改的数据:'.json_encode($add)."\r\n";
  122. $filename_log = "/var/www/html/jdxf/log/config_log".date("Y-m-d").".log";
  123. file_put_contents($filename_log, $data_log, FILE_APPEND|LOCK_EX);
  124. file_put_contents($filename_log, $data_log1, FILE_APPEND|LOCK_EX);
  125. file_put_contents($filename_log, $data_log2, FILE_APPEND|LOCK_EX);
  126. //日志代码结束
  127. echo json_encode(array('statusCode'=>200,'message'=>'修改成功' ));
  128. }else{
  129. echo json_encode(array('statusCode'=>300,'message'=>'修改失败' ));
  130. }
  131. }
  132. }else{
  133. $list = $group->field('id,type,title,level,pid,sort,rules')->where('type=1')->select();
  134. $this->assign('role',$list);
  135. $res=$group->where(array('id'=> $data['id']))->select();
  136. $this->assign('roleid',$data['id']);
  137. $this->assign('title',$res[0]['title']);
  138. $this->assign('sort',$res[0]['sort']);
  139. $pidarr=$group->field('title')->where(array('id'=> $res[0]['pid']))->select();
  140. if($pidarr[0]['title']==''){$pidarr[0]['title']='顶级';}
  141. $this->assign('pid',$pidarr[0]['title']);
  142. $this->assign('action','/home/Role/edit');
  143. $this->display('edit');
  144. }
  145. }
  146. }
  147. public function perm(){
  148. $data=I();
  149. $group=M('auth_rule');
  150. if(!isset($data['list'])){//查询权限菜单
  151. $count= $group->count(id);// 查询满足要求的总记录数
  152. $where = $group->query("SELECT rules from sp_auth_group WHERE id =(SELECT posname FROM sp_user WHERE username='".$_SESSION['zt_username']."')");
  153. $wheres = substr($where[0]['rules'],0,strlen($where[0]['rules'])-1);
  154. $wheres=' where p.id in('.$wheres.')';
  155. if($_SESSION['zt_username']=='admin'){
  156. $wheres='';
  157. }
  158. $list = $group->query('SELECT p.id,p.title,p.pid,p.cid,p.cpid,p.ctitle,p.allid FROM V_PERM02 AS p '.$wheres);
  159. $info = array(
  160. 'totalRow' => $count,
  161. 'pageSize' => $count,//分页时不传
  162. 'list' => $list,
  163. );
  164. //$_SESSION['CCC']=$count;
  165. //$_SESSION['DDD']=print_r($list,true);
  166. echo json_encode($info);
  167. }elseif($data['list']=='get2'){//菜单功能
  168. }elseif($data['list']=='set2'){//修改
  169. $data=I();
  170. $perms='';
  171. foreach($data as $key => $value){
  172. if(substr($key,0,9) == "checkbox_"){
  173. $perms.=substr($key,9).',';
  174. }
  175. }
  176. $rules=M('auth_group');
  177. $set=$rules->save(array('id'=> $data['permid'],'rules'=> $perms,'dataperm'=>$data['dataperm']));
  178. if($set)
  179. echo json_encode(array('statusCode'=>200,'message'=> '保存成功'));
  180. else
  181. echo json_encode(array('statusCode'=>300,'message'=> '保存失败'));
  182. }else{
  183. $sel=$group->query("SELECT rules,dataperm FROM sp_auth_group WHERE id=".$data['id']);//是否有权限
  184. $v=explode(',',$sel[0]['rules']);
  185. $this->assign('pers',json_encode(array_filter($v)));
  186. $this->assign('permid',$data['id']);
  187. $this->assign('dataperm',$sel[0]['dataperm']);
  188. $this->assign('action','/home/Role/perm');
  189. $this->display('perm');
  190. }
  191. }
  192. public function del(){
  193. $group=M('auth_group');
  194. $data=I();
  195. if (session('power')==2){
  196. $this->mtReturn(300,'本账号没有该权限,如需开通请联系管理员',1);
  197. }else {
  198. $yes=M('auth_group_access')->where('group_id='.$data['id'])->count();
  199. if($yes > 0){
  200. $this->mtReturn(300,'删除失败,请却认当前角色无用户存在!');
  201. }
  202. $used_data = M()->query("select * from sp_auth_group where id=".$data['id']);
  203. $res=$group->where('id='.$data['id'])->delete();
  204. if($res){
  205. //日志开始
  206. $filename_log = "/var/www/html/jdxf/log/config_log".date("Y-m-d").".log";
  207. $data_log ="\r\n".'['.date("Y-m-d H:i:s").']操作人员手机号:'.session('phone_login').'---角色管理删除(sp_auth_group表)---ID:'.$data['id']."\r\n";
  208. $data_log1 ='删除前数据:'.json_encode($used_data)."\r\n";
  209. file_put_contents($filename_log, $data_log, FILE_APPEND|LOCK_EX);
  210. file_put_contents($filename_log, $data_log1, FILE_APPEND|LOCK_EX);
  211. //日志开始结束
  212. $this->mtReturn(200,'删除成功'.$data['id'] );
  213. }else{
  214. $this->mtReturn(300,'删除失败' );
  215. }
  216. }
  217. }
  218. }