/**
  * 绑定角色与权限的对应关系
  * @param $roleId   角色ID
  * @param $pids 权限ID列表
  * @param $loginUser \liuxy\admin\models\AdminUser
  */
 public static function bind($roleId, $pids, $loginUser)
 {
     self::deteteAll(['role_id' => $roleId]);
     if (!empty($pids)) {
         $pids = explode(',', $pids);
         $pids = array_unique($pids);
         foreach ($pids as $pid) {
             if (!empty($pid)) {
                 $item = new RolePermission();
                 $item->isNewRecord = true;
                 $item->role_id = $roleId;
                 $item->permission_id = $pid;
                 $item->insert_by = $loginUser->username;
                 $item->insert();
                 if ($item->hasErrors()) {
                     Yii::error(VarDumper::dumpAsString($item->getErrors()), __METHOD__);
                 }
                 unset($item);
             }
         }
         /**
          * 清理角色下所对应用户的权限
          */
         foreach (AdminUserRole::find()->where(['role_id' => $roleId])->all() as $userRole) {
             AdminUser::clearPermission($userRole['user_id']);
         }
     }
 }
 /**
  * 管理员与角色绑定管理
  * @param $userId
  * @param $roleIds
  * @param $loginUser \liuxy\admin\models\AdminUser
  * @throws \Exception
  */
 public static function bind($userId, $roleIds, $loginUser)
 {
     self::deteteAll(['user_id' => $userId]);
     if (!empty($roleIds)) {
         foreach ($roleIds as $rid) {
             if (!empty($rid)) {
                 $item = new AdminUserRole();
                 $item->isNewRecord = true;
                 $item->user_id = $userId;
                 $item->role_id = $rid;
                 $item->insert_by = $loginUser->insert_by;
                 $item->insert();
                 if ($item->hasErrors()) {
                     Yii::error(VarDumper::dumpAsString($item->getErrors()), __METHOD__);
                 }
                 unset($item);
             }
         }
     }
 }
 /**
  * 清理用户缓存
  * @param $permissionId
  */
 public static function clearUserPermission($permissionId)
 {
     $roles = [];
     foreach (RolePermission::find()->where(['permission_id' => $permissionId])->all() as $rolePerm) {
         $roles[] = $rolePerm['role_id'];
     }
     foreach (AdminUserRole::find()->where(['role_id' => $roles])->all() as $userRole) {
         AdminUser::clearPermission($userRole['user_id']);
     }
 }
 /**
  * 获取管理员信息
  */
 public function actionGet()
 {
     $id = $this->get('id', 0);
     $user = AdminUser::findByCache($id);
     if ($user) {
         $roles = AdminUserRole::findAllArray(['user_id' => $id]);
         if ($roles) {
             $user['roles'] = $roles;
         }
         $this->setResponseData('data', $user);
     } else {
         $this->setError(Module::t('error.user.notexists'));
     }
 }
 /**
  * 获取用户的权限列表
  * @param $userId
  */
 public static function getPermission($userId)
 {
     $_cache_key = self::CACHE_MY_PERMISSION . $userId;
     $myPermission = self::getCache()->get($_cache_key);
     if ($myPermission) {
         return $myPermission;
     }
     $roles = [];
     foreach (AdminUserRole::find()->where(['user_id' => $userId])->all() as $role) {
         $roles[] = $role->role_id;
     }
     $permissions = [];
     foreach (RolePermission::find()->where(['role_id' => $roles])->all() as $permission) {
         $permissions[] = $permission['permission_id'];
     }
     self::getCache()->set($_cache_key, $permissions);
     return $permissions;
 }