RoleController.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <?php
  2. namespace app\modules\admin\controllers;
  3. use app\common\controllers\BController;
  4. use app\modules\admin\models\Role;
  5. use app\modules\admin\models\Resource;
  6. use app\modules\admin\models\RoleResource;
  7. use app\common\components\FormElements;
  8. use Yii;
  9. class RoleController extends BController
  10. {
  11. public $layout = 'main';
  12. public function actionList()
  13. {
  14. if (Yii::$app->request->isAjax) {
  15. $query = Role::find();
  16. $data = [];
  17. $params = Yii::$app->request->get('Role');
  18. $query = mergeParams($query,$params);
  19. $roleList = $query->all();
  20. foreach($roleList as $role)
  21. {
  22. $data[] = array('role_id'=>$role->role_id,'role_name'=>$role->role_name,'description'=>$role->description,'disabledTxt'=>Resource::disableOptions($role->disabled),'disabled'=>$role->disabled);
  23. }
  24. echo_json($data);
  25. }
  26. $this->tableTitle = array(
  27. array('field'=>'role_id','title'=>Role::getAttributeName('role_id'),'align'=>'center','sortable'=>true,'class'=>'col-md-2'),
  28. array('field'=>'role_name','title'=>Role::getAttributeName('role_name'),'align'=>'center'),
  29. array('field'=>'description','title'=>Role::getAttributeName('description'),'align'=>'center'),
  30. array('field'=>'disabled','title'=>Role::getAttributeName('disabled'),'align'=>'center','formatter'=>'switchFormatter'),
  31. array('field'=>'operate','title'=>Role::getAttributeName('operate'),'align'=>'center','events'=>'window.operateEvents','formatter'=>'operateFormatter'),
  32. );
  33. $this->tableConfig = array('table'=>Role::shortTableName(),'url'=>$this->createRealUrl(['admin/role/list']),'setFieldUrl'=>$this->createRealUrl(['admin/role/setfield']),'idField'=>Role::modelPrimaryKey(),'checkbox'=>0,'dropmenu'=>1,'pagination'=>false,'refresh'=>true);
  34. return $this->render('list',array('model'=>new Role()));
  35. }
  36. function actionAdd()
  37. {
  38. $model = new Role();
  39. if(Yii::$app->request->isAjax&&$model->load(Yii::$app->request->post())){
  40. if(!$model->validate())
  41. {
  42. $msgdata = ['error' => 1,'msg' => $model->returnFirstError()];
  43. }
  44. else
  45. {
  46. if($model->save())
  47. {
  48. $msgdata = ['error' => 0,'msg' => '操作成功'];
  49. }
  50. else
  51. {
  52. $msgdata = ['error' => 1,'msg' => '操作失败'];
  53. }
  54. }
  55. echo_json($msgdata);
  56. }
  57. return $this->renderAjax('add',array('model'=>$model));
  58. }
  59. function actionEdit()
  60. {
  61. $rold_id = $this->getKeyId('role_id');
  62. $model = Role::findOne($rold_id);
  63. check_record_exists($model);
  64. if(Yii::$app->request->isAjax&&$model->load(Yii::$app->request->post())){
  65. if(!$model->validate())
  66. {
  67. $msgdata = ['error' => 1,'msg' => $model->returnFirstError()];
  68. }
  69. else
  70. {
  71. if($model->save())
  72. {
  73. $msgdata = ['error' => 0,'msg' => '操作成功'];
  74. }
  75. else
  76. {
  77. $msgdata = ['error' => 1,'msg' => '操作失败'];
  78. }
  79. }
  80. echo_json($msgdata);
  81. }
  82. return $this->renderAjax('add',array('model'=>$model));
  83. }
  84. //权限设置
  85. public function actionSettings()
  86. {
  87. $role_id = $this->getKeyId('role_id');
  88. $model = Role::findOne($role_id);
  89. check_record_exists($model);
  90. if(Yii::$app->request->isAjax&&Yii::$app->request->post())
  91. {
  92. RoleResource::deleteAll(['role_id'=>$role_id]);
  93. if(Yii::$app->request->post('innerIds'))
  94. {
  95. $innerIds = explode(",",Yii::$app->request->post('innerIds'));
  96. $rows = [];
  97. if(is_array($innerIds))foreach($innerIds as $innerId)
  98. {
  99. $rows[] = array('role_id'=>$role_id,'hash'=>$innerId);
  100. }
  101. if(!empty($rows))
  102. {
  103. Yii::$app->db->createCommand()->batchInsert(RoleResource::tableName(), ['role_id','hash'], $rows)->execute();
  104. }
  105. }
  106. $msgdata = ['error' => 0,'msg' => '操作成功'];
  107. echo_json($msgdata);
  108. }
  109. $hashs = RoleResource::find()->where(['role_id'=>$role_id])->select('hash')->column();
  110. if (Yii::$app->request->isAjax&&Yii::$app->request->get('getdata')) {
  111. $data = [];
  112. $resultList = Resource::find()->where(['disabled'=>0])->orderBy(['parent_hash'=>SORT_ASC,'list_order'=>SORT_ASC])->all();
  113. foreach($resultList as $resource)
  114. {
  115. $data[] = array('hash'=>$resource->hash,'parent_hash'=>$resource->parent_hash,'name'=>Yii::t('resource',$resource->name),'check'=>in_array($resource->hash,$hashs)?true:false);
  116. }
  117. echo_json($data);
  118. }
  119. $tableTitle = array(
  120. array('field'=>'hash','checkbox'=>false,'formatter'=>'checkboxFormatter','width'=>'20px'),
  121. array('field'=>'name','title'=>'菜单','align'=>'left'),
  122. );
  123. $tableConfig = array('table'=>Resource::shortTableName(),'idField'=>Resource::modelPrimaryKey(),'url'=>$this->createRealUrl(['admin/role/settings','getdata'=>1,'role_id'=>$role_id]),'checkbox'=>1,'dropmenu'=>1,'tree'=>1,'parentIdField'=>'parent_hash','treeShowField'=>'name','expand'=>true,'refresh'=>true);
  124. return $this->renderAjax('settings',array('model'=>$model,'tableTitle'=>$tableTitle,'tableConfig'=>$tableConfig));
  125. }
  126. //删除
  127. public function actionDel()
  128. {
  129. $role_id = $this->getKeyId('role_id');
  130. $model = Role::findOne($role_id);
  131. check_record_exists($model);
  132. if($model->delete())
  133. {
  134. RoleResource::deleteAll(['role_id'=>$role_id]);
  135. $msgdata = ['error' => 0,'msg' => '操作成功!'];
  136. }
  137. else
  138. {
  139. $msgdata = ['error' => 1,'msg' => '操作失败!'];
  140. }
  141. echo_json($msgdata);
  142. }
  143. }