getListAll(); View::assign('dataList', $dataList); //获取参数列表信息 $auth_rule_param_model = new AuthRuleParam(); $param = $auth_rule_param_model->getListByRule(); View::assign('param', $param); return View::fetch('auth'); } /** * 权限组添加 * @return string */ public function authGroupAdd() { $auth_rule_model = new AuthRule(); if (request()->isPost()) { $data = input('post.'); $data['uid'] = 2; //权限值进行小写操作 $data['rule_val'] = strtolower($data['rule_val']); $data['group_name'] = $data['rule_val']; //判断是否存在 if ($data['id'] != "") { $count = $auth_rule_model->where([ ['id', '<>', $data['id']], ['rule_val', '=', $data['rule_val']], ['type', '=', 1] ])->count(); if ($count > 0) { sendErrorMessage('1','该权限组已经存在,修改失败!'); } } else { $count = $auth_rule_model->where([ ['rule_val' ,'=',$data['rule_val']], ['type','=', 1], ])->count(); if ($count > 0) { sendErrorMessage('1','该权限组已经存在,添加失败!'); } } $res = $auth_rule_model->dataUpdate($data); if (!$res) { sendErrorMessage(); } $this->createMenu(); return sendSuccessMessage(); } else { $id = input('param.id', 0); $data = $auth_rule_model->getOneData(['id' => $id]); View::assign('data', $data); return View::fetch('authgroupadd'); } } /** * 权限组修改 * @return string */ public function authGroupUpdate() { return $this->authGroupAdd(); } public function authGroupDelete() { $id = input('param.id', 0); //查询该权限授权次数 $auth_group_rule_model = new AuthGroupRule(); $count = $auth_group_rule_model->where(['rule_id' => $id])->count('role_id'); if ($count > 0) { return sendErrorMessage(1,'该权限组已被授权给角色,无法删除!'); } $auth_rule_mode = new AuthRule(); //取该权限组的所有的权限 $group_name = $auth_rule_mode->where(['id' => $id, 'uid' => UID])->value('group_name'); $idList = $auth_rule_mode->where(['group_name' => $group_name, 'uid' => UID])->column('id'); $res = $auth_rule_mode->destroy($idList); if ($res === false) { return sendErrorMessage(); } $this->createMenu(); return sendSuccessMessage(); } /** * 权限添加 * @return string */ public function authAdd() { $auth_rule_model = new AuthRule(); if (request()->isPost()) { $data = input('post.'); $data['uid'] = UID; //权限值进行小写操作 $data['rule_val'] = strtolower($data['rule_val']); //获取所有的一级分类id $idData = $auth_rule_model->where(['pid' => $data['group_id']])->column('id'); $group_module = $auth_rule_model->where(['id'=>$data['group_id']])->value('module'); array_push($idData, $data['group_id']); //判断是否存在 if ($data['id'] != "") { $count = $auth_rule_model->getNumber([['id', '<>', $data['id']], ['rule_val', '=', $data['rule_val']], ['pid', 'in', $idData], ['uid', '=', UID]]); if ($count > 0) { return sendErrorMessage(1,'该权限已经存在,修改失败!'); } } else { $count = $auth_rule_model->getNumber([['rule_val', '=', $data['rule_val']], ['pid', 'in', $idData], ['uid', '=', UID]]); if ($count > 0) { return sendErrorMessage(1,'该权限已经存在,添加失败!'); } } $data['module'] = $group_module; $data['rule_url'] = strtolower($group_module."/" . $data['group_val'] . "/" . $data['rule_val']); $data['group_name'] = $data['group_val']; if ($data['type'] == 2) { $data['pid'] = $data['group_id']; } $res = $auth_rule_model->dataUpdate($data); if (!$res) { return sendErrorMessage(); } $this->createMenu(); return sendSuccessMessage(); } else { $id = input('param.id', 0); $groupid = input('param.groupid', 0); //获取组信息 $group = $auth_rule_model->getOneData(['id' => $groupid]); View::assign('group', $group); //获取权限信息 $data = $auth_rule_model->getOneData(['id' => $id]); View::assign('data', $data); //获取该权限组下已经权限列表 $pidlist = $auth_rule_model->getAllData(['pid' => $groupid], 'id,title,rule_val'); View::assign('pidlist', $pidlist); return View::fetch('authadd'); } } /** * 权限修改 * @return string */ public function authUpdate() { return $this->AuthAdd(); } /* * 权限删除 */ public function authDelete() { $id = input('param.id', 0); //查询该权限授权次数 $auth_group_rule_model = new AuthGroupRule(); $count = $auth_group_rule_model->where(['rule_id' => $id])->count('role_id'); if ($count > 0) { return sendErrorMessage(1,'该权限已被授权给角色,无法删除!'); } $auth_rule_mode = new AuthRule(); $type = $auth_rule_mode->where(['id' => $id])->value('type'); if ($type == 2) { $idlist = $auth_rule_mode->where(['pid' => $id])->column('id'); array_push($idlist, $id); $res = $auth_rule_mode->destroy($idlist); } else { $res = $auth_rule_mode->destroy($id); } if ($res === false) { return sendErrorMessage(); } $this->createMenu(); return sendSuccessMessage(); } //批量添加权限 public function authBatchAdd() { $auth_rule_model = new AuthRule(); if (request()->isPost()) { $data = input('post.'); $auth = $data['rule']; $one_auth_val = []; foreach ($auth as $value) { $one_auth_val[] = $value['rule_val']; //判断是否库中已存在 $count = $auth_rule_model->getNumber(['type' => 2, 'pid' => $data['group_id'], 'rule_val' => $value['rule_val']]); if ($count > 0) { return sendErrorMessage(1,'一级权限:' . $value['title'] . "已添加过,不可重复添加!"); } $two_auth_val = []; if (!empty($value['twolevel'])) { foreach ($value['twolevel'] as $val) { $two_auth_val[] = $val['rule_val']; } } //判断是否有重复值 (每个一级权限下的二级权限) $unique_arr = array_unique($two_auth_val); if (count($two_auth_val) != count($unique_arr)) { // 获取重复数据的数组 // $repeat_arr = array_diff_assoc($two_auth_val, $unique_arr); // $arr= implode(',', $repeat_arr); return sendErrorMessage(1,'一级权限:' . $value['title'] . "下的二级权限值有重复,不可添加!"); } } //判断一级权限是否有重复 $unique_one = array_unique($one_auth_val); if (count($one_auth_val) != count($unique_one)) { // 获取重复数据的数组 $repeat_arr = array_diff_assoc($one_auth_val, $unique_one); $arr = implode(',', $repeat_arr); return sendErrorMessage(1,'一级权限' . $arr . "重复,不可添加!"); } $group_module = $auth_rule_model->getOneData(['id'=>$data['group_id']],'module'); //拼接数组,事务提交信息 $auth_rule_model->startTrans(); foreach ($auth as $value) { $temp = [ 'uid' => UID, 'type' => 2, 'module' => $group_module, 'title' => $value['title'], 'rule_val' => $value['rule_val'], 'sort' => $value['sort'], 'is_total_visible' => $value['is_total_visible'], 'is_sub_visible' => $value['is_sub_visible'], 'pid' => $data['group_id'], 'group_name' => $data['group_val'], 'rule_url' => strtolower($group_module."/" . $data['group_val'] . "/" . $value['rule_val']) ]; $res = $auth_rule_model->dataUpdate($temp); if ($res == false) { $auth_rule_model->rollback(); return sendErrorMessage(1,'权限(一级)添加失败'); } if (!empty($value['twolevel'])) { foreach ($value['twolevel'] as $val) { $tep = [ 'uid' => UID, 'type' => 3, 'module' => $group_module, 'title' => $val['title'], 'rule_val' => $val['rule_val'], 'sort' => $val['sort'], 'pid' => $res, 'group_name' => $data['group_val'], 'rule_url' => strtolower($group_module."/" . $data['group_val'] . "/" . $val['rule_val']) ]; $res1 = $auth_rule_model->dataUpdate($tep); if ($res1 == false) { $auth_rule_model->rollback(); return sendErrorMessage(1,'权限(二级)添加失败'); } } } } $auth_rule_model->commit(); $this->createMenu(); return sendSuccessMessage(); } else { $id = input('param.id', 0); $groupid = input('param.groupid', 0); //获取组信息 $group = $auth_rule_model->getOneData(['id' => $groupid]); View::assign('group', $group); return View::fetch('authbatchadd'); } } //批量修改权限 public function authBatchUpdate() { $auth_rule_model = new AuthRule(); $auth_group_rule_model = new AuthGroupRule(); if (request()->isPost()) { $data = input('post.'); $auth = $data['rule']; $one_auth_val = []; $auth_all_id = []; foreach ($auth as $value) { $one_auth_val[] = $value['rule_val']; if ($value['id'] > 0) { $auth_all_id[] = $value['id']; } $two_auth_val = []; if (!empty($value['twolevel'])) { foreach ($value['twolevel'] as $val) { if ($val['id'] > 0) { $auth_all_id[] = $val['id']; } $two_auth_val[] = $val['rule_val']; } } //判断是否有重复值 (每个一级权限下的二级权限) $unique_arr = array_unique($two_auth_val); if (count($two_auth_val) != count($unique_arr)) { // 获取重复数据的数组 // $repeat_arr = array_diff_assoc($two_auth_val, $unique_arr); // $arr= implode(',', $repeat_arr); return sendErrorMessage(1,'一级权限:' . $value['title'] . "下的二级权限值有重复,不可添加!"); } } //判断一级权限是否有重复 $unique_one = array_unique($one_auth_val); if (count($one_auth_val) != count($unique_one)) { // 获取重复数据的数组 $repeat_arr = array_diff_assoc($one_auth_val, $unique_one); $arr = implode(',', $repeat_arr); return sendErrorMessage(1,'一级权限' . $arr . "重复,不可添加!"); } // var_dump($auth_all_id); //获取删除数组 $delete_id_all = $auth_rule_model->where([['id', 'NOT IN', $auth_all_id], ['type', 'IN', [2, 3]], ['group_name', '=', $data['group_val']]])->column('id'); // var_dump($delete_id_all); // exit(); //查询该权限授权次数 if (!empty($delete_id_all)) { $set_count = $auth_group_rule_model->getCountByRuleMany($delete_id_all); if ($set_count > 0) { return sendErrorMessage(1,"删除权限已被授权给角色,无法删除!"); } } //拼接数组,事务提交信息 $auth_rule_model->startTrans(); //删除权限 if (!empty($delete_id_all)) { $delete_re = $auth_rule_model->destroy($delete_id_all); if ($delete_re == false) { $auth_rule_model->rollback(); return sendErrorMessage(1,'权限修改失败!'); } } $group_module = $auth_rule_model->getOneData(['id'=>$data['group_id']],'module'); foreach ($auth as $value) { if ($value['id'] > 0) { $temp = [ 'id' => $value['id'], 'uid' => UID, 'type' => 2, 'module' => $group_module, 'title' => $value['title'], 'rule_val' => $value['rule_val'], 'sort' => $value['sort'], 'is_total_visible' => $value['is_total_visible'], 'is_sub_visible' => $value['is_sub_visible'], 'pid' => $data['group_id'], 'group_name' => $data['group_val'], 'rule_url' => strtolower($group_module."/" . $data['group_val'] . "/" . $value['rule_val']), 'update_time' => time() ]; $res = $auth_rule_model->dataUpdate($temp); if ($res == false) { $auth_rule_model->rollback(); return sendErrorMessage(1,'权限(一级)修改失败'); } if (!empty($value['twolevel'])) { foreach ($value['twolevel'] as $val) { if ($val['id'] > 0) { $tep = [ 'id' => $val['id'], 'uid' => UID, 'type' => 3, 'module' => $group_module, 'title' => $val['title'], 'rule_val' => $val['rule_val'], 'sort' => $val['sort'], 'pid' => $res, 'group_name' => $data['group_val'], 'rule_url' => strtolower($group_module."/" . $data['group_val'] . "/" . $val['rule_val']), 'update_time' => time() ]; $res1 = $auth_rule_model->dataUpdate($tep); if ($res1 == false) { $auth_rule_model->rollback(); return sendErrorMessage(1,'权限(二级)修改失败'); } } else { $tep = [ 'uid' => UID, 'type' => 3, 'module' => $group_module, 'title' => $val['title'], 'rule_val' => $val['rule_val'], 'sort' => $val['sort'], 'pid' => $res, 'group_name' => $data['group_val'], 'rule_url' => strtolower($group_module."/" . $data['group_val'] . "/" . $val['rule_val']) ]; $res1 = $auth_rule_model->dataUpdate($tep); if ($res1 == false) { $auth_rule_model->rollback(); return sendErrorMessage(1,'权限(二级)添加失败'); } } } } } else { $temp = [ 'uid' => UID, 'type' => 2, 'module' => $group_module, 'title' => $value['title'], 'rule_val' => $value['rule_val'], 'sort' => $value['sort'], 'is_total_visible' => $value['is_total_visible'], 'is_sub_visible' => $value['is_sub_visible'], 'pid' => $data['group_id'], 'group_name' => $data['group_val'], 'rule_url' => strtolower($group_module."/" . $data['group_val'] . "/" . $value['rule_val']) ]; $res = $auth_rule_model->dataUpdate($temp); if ($res == false) { $auth_rule_model->rollback(); return sendErrorMessage(1,'权限(一级)添加失败'); } if (!empty($value['twolevel'])) { foreach ($value['twolevel'] as $val) { $tep = [ 'uid' => UID, 'type' => 3, 'module' => $group_module, 'title' => $val['title'], 'rule_val' => $val['rule_val'], 'sort' => $val['sort'], 'pid' => $res, 'group_name' => $data['group_val'], 'rule_url' => strtolower($group_module."/" . $data['group_val'] . "/" . $val['rule_val']) ]; $res1 = $auth_rule_model->dataUpdate($tep); if ($res1 == false) { $auth_rule_model->rollback(); return sendErrorMessage(1,'权限(二级)添加失败'); } } } } } $auth_rule_model->commit(); $this->createMenu(); return sendSuccessMessage(); } else { $id = input('param.id', 0); $groupid = input('param.groupid', 0); //获取组信息 $group = $auth_rule_model->getOneData(['id' => $groupid]); View::assign('group', $group); //获取改组所有的权限信息 $one_level = $auth_rule_model->getAllData(['pid' => $groupid, 'type' => 2], "id,title,rule_val,sort,is_total_visible,is_sub_visible", "sort desc"); if (!empty($one_level)) { foreach ($one_level as $key => $value) { $two_level = $auth_rule_model->getAllData(['type' => 3, 'pid' => $value['id']], "id,title,rule_val,sort,is_total_visible,is_sub_visible", "sort desc"); if (!empty($two_level)) { $value['twolevel'] = $two_level->toArray(); } else { $value['twolevel'] = []; } $one_level[$key] = $value; } } View::assign('auth', $one_level); return View::fetch('authbatchupdate'); } } /** * 权限参数 * @return string */ public function authParam() { $id = input('param.id', 0); $auth_rule_param_model = new AuthRuleParam(); $dataList = $auth_rule_param_model->getAllData(['rule_id' => $id], '', 'sort desc, id asc'); View::assign('dataList', $dataList); //获取权限相关信息 $auth_rule_model = new AuthRule(); $rule = $auth_rule_model->getOneData(['id' => $id]); View::assign('rule', $rule); return View::fetch('authparam'); } /* * 权限参数添加 */ public function authParamAdd() { $auth_rule_param_model = new AuthRuleParam(); if (request()->isPost()) { $data = input('post.'); $data['uid'] = UID; //权限值进行小写操作 $data['param_val'] = strtolower($data['param_val']); //判断是否存在 if ($data['id'] != "") { $count = $auth_rule_param_model->getNumber([['id', '<>', $data['id']], ['param_val', '=', $data['param_val']], ['rule_id', '=', $data['rule_id']], ['uid', '=', UID]]); if ($count > 0) { return sendErrorMessage(1,'该参数已经存在,修改失败!'); } } else { $count = $auth_rule_param_model->getNumber(['param_val' => $data['param_val'], 'rule_id' => $data['rule_id'], 'uid' => UID]); if ($count > 0) { return sendErrorMessage(1,'该参数已经存在,添加失败!'); } } $res = $auth_rule_param_model->dataUpdate($data); if (!$res) { return sendErrorMessage(); } $this->createMenu(); return sendSuccessMessage(); } else { $id = input('param.id', 0); $rule_id = input('param.rule_id'); //获取权限信息 $auth_rule_model = new AuthRule(); $rule = $auth_rule_model->getOneData(['id' => $rule_id]); View::assign('rule_id', $rule_id); View::assign('rule', $rule); //获取参数信息 $data = $auth_rule_param_model->getOneData(['id' => $id]); View::assign('data', $data); return View::fetch('authparamadd'); } } public function authParamDelete() { $id = input('param.id', 0); $auth_rule_param_model = new AuthRuleParam(); $res = $auth_rule_param_model->destroy( $id); $this->createMenu(); if ($res === false) { return sendErrorMessage(); } return sendSuccessMessage(); } /* * 权限参数修改 */ public function authParamUpdate() { return $this->authParamAdd(); } /** * 更改排序 * @return \think\response\Json */ public function updateFieldModel() { $data = input('post.'); if($data['childrenModel']) { $model = invoke('app\\'.$data['model'].'\\model\\' .$data['childrenModel'].'\\'. parse_name($data['table'], 1)); }else{ $model = invoke('app\\'.$data['model'].'\\model\\' . parse_name($data['table'], 1)); } if (array_key_exists('operate_value', $data) && $data['operate_value'] == 'sort') { $data['id'] = json_decode($data['id'], true); $res = $model->saveAll($data['id']); } else { $update_data = [$data['field'] => $data['value']]; if ($data['field'] == "delete_time") { $data['value'] = time(); } if($data['field'] == 'is_publish'){ if($data['value'] == 0) { $update_data['publish_time'] = 0; }else{ $update_data['publish_time'] = time(); } } if($data['field'] == 'is_recommend'){ if($data['value'] == 0) { $update_data['recommend_time'] = 0; }else{ $update_data['recommend_time'] = time(); } } $res = $model->where(['id'=>$data['id']])->update($update_data); } if ($res === false) { return sendErrorMessage(); } $this->createMenu(); return sendSuccessMessage(); } public function index() { $this->createMenu(); } /** * 调用生成菜单方法 * @auth Alan * @time 2019-02-27 */ public function createMenu() { $authLogic = new \app\auth\logic\Auth(); $authLogic->createMenu(); } }