You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
information-system/application/models/infoaccessmanage_model.php

435 lines
15 KiB
PHP

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
class infoAccessmanage_model extends CI_Model
{
function __construct()
{
parent::__construct();
$this->HT = $this->load->database('INFORMATION', TRUE);
$this->HT229 = $this->load->database('HT', TRUE);
}
//获取用户结构列表
public function get_user_structure(){
$sql = "SELECT is1.is_id AS id,
is1.is_parent_id AS pId,
OPI_Name as name,
1 AS status,
OPI_Code,
iam_id,
iam_author
FROM infoaccessmanage
INNER JOIN infoStructures is1 ON iam_is_id = is1.is_id
LEFT JOIN tourmanager.dbo.OperatorInfo ON iam_author=OPI_Code
ORDER BY is1.is_level ASC,
is1.is_sort ASC,
is1.is_path ASC";
$query = $this->HT->query($sql);
$result=$query->result();
//获取作者平台用户的用户名
$author_user=$this->get_author_user_list();
$author=array();
foreach ($author_user as $v) {
$author[$v->a_id]=$v->a_name;
}
foreach ($result as $r) {
if(is_numeric($r->iam_author)) {
$r->name=$author[$r->iam_author];
}elseif (is_null($r->name)) {
$r->name=$r->iam_author;
}else{
$r->name=$r->name.'('.$r->OPI_Code.')';
}
}
return $query->result();
}
//根据用户标识iam_author获取权限
public function get_user_access($iam_author,$site_code){
$sql = "SELECT TOP 1
iam_id,
iam_author,
iam_is_id,
iao_id,
iao_read,
iao_write,
iao_role,
iao_site
FROM infoaccessmanage
LEFT JOIN infoaccessownsite ON iao_author=iam_author AND iao_site=?
WHERE iam_author='$iam_author'";
$query = $this->HT->query($sql, array($site_code));
$result = $query->result();
if (!empty($result)) {
$result=$result[0];
}
return $result;
}
//根据用户的树结构ID获取用户权限数据
public function get_user_by_isid($iam_is_id,$site_code){
$sql = "SELECT TOP 1
iam_id,
iam_author as iao_author,
iam_is_id,
iao_id,
iao_read,
iao_write,
iao_role,
iao_site,
iao_other
FROM infoaccessmanage
LEFT JOIN infoaccessownsite ON iao_author=iam_author AND iao_site=?
WHERE iam_is_id=?";
$query = $this->HT->query($sql, array($site_code,$iam_is_id));
$result = $query->result();
if (!empty($result)) {
$result=$result[0];
}
return $result;
}
//获取用户拥有权限的站点
public function get_user_site_list($iao_author){
$sql = "SELECT iao_site
FROM infoaccessownsite
WHERE iao_author='$iao_author'";
$query = $this->HT->query($sql);
$result = $query->result();
$sites='';
if (!empty($result)) {
foreach ($result as $s) {
$sites.=$s->iao_site.',';
}
}
return $sites;
}
public function get_user_site_list_by_isid($iam_is_id){
$sql = "SELECT iao_site
FROM infoaccessownsite
INNER JOIN infoaccessmanage ON iam_author=iao_author AND iam_is_id=?";
$query = $this->HT->query($sql, array($iam_is_id));
$result = $query->result();
$sites='';
if (!empty($result)) {
foreach ($result as $s) {
$sites.=$s->iao_site.',';
}
}
return $sites;
}
//删除某个用户
public function delete_user($iam_id){
$sql = "DELETE FROM infoaccessmanage WHERE iam_id=?";
$result=$this->HT->query($sql, array($iam_id));
return $result;
}
//给用户添加可以访问的站点
public function add_site($iao_author,$iao_site){
$sql = "INSERT INTO infoaccessownsite (
iao_author,
iao_site
) VALUES (?,?)";
$query = $this->HT->query($sql, array($iao_author,$iao_site));
return $this->HT->last_id('infoaccessownsite');
}
//删除用户在某一站点的权限
public function delete_site($author,$site=''){
$map="";
if ($site!='') {
$map=" AND iao_site='$site'";
}
$set_sql = "DELETE FROM infoaccessownsite WHERE iao_author=? $map";
$result=$this->HT->query($set_sql, array($author));
return $result;
}
//更新用户在某一站点的权限
public function update_site($iao_author,$iao_site,$iao_other){
$sql = "UPDATE infoaccessownsite
SET iao_other=?
WHERE iao_author = ? AND iao_site = ?";
$result = $this->HT->query($sql, array($iao_other,$iao_author,$iao_site));
return $sql;
}
//添加用户
public function add_access($iam_author,$iam_is_id){
$sql = "INSERT INTO infoaccessmanage (
iam_author,
iam_is_id
) VALUES (?,?)";
$query = $this->HT->query($sql, array($iam_author,$iam_is_id));
return $this->HT->last_id('infoaccessmanage');
}
//编辑用户权限
public function update_access($iam_id,$iam_author){
$set_sql = "UPDATE infoaccessmanage
SET iam_author=?
WHERE iam_id = ?";
$result=$this->HT->query($set_sql, array($iam_author,$iam_id));
return $result;
}
//编辑用户可以操作的信息节点
public function update_ownsite($iao_read,$iao_write,$iao_author,$iao_site,$iao_role){
$set_sql = "UPDATE infoaccessownsite
SET iao_read=?,
iao_write=?,
iao_role=?
WHERE iao_author = ? AND iao_site=?";
$result=$this->HT->query($set_sql, array($iao_read,$iao_write,$iao_role,$iao_author,$iao_site));
return $result;
}
//获取角色结构列表
public function get_role_structure(){
$sql = "SELECT is1.is_id AS id,
is1.is_parent_id AS pId,
iar_name as name,
1 AS status,
iar_id,
is1.is_level
FROM infoaccessrole
INNER JOIN infoStructures is1 ON iar_is_id = is1.is_id
ORDER BY is1.is_level ASC,
is1.is_sort ASC,
is1.is_path ASC";
$query = $this->HT->query($sql);
return $query->result();
}
//添加角色
public function add_role($iar_name,$iar_is_id){
$sql = "INSERT INTO infoaccessrole (
iar_name,
iar_is_id
) VALUES (?,?)";
$query = $this->HT->query($sql, array($iar_name,$iar_is_id));
return $this->HT->last_id('infoaccessrole');
}
//更新角色名称
public function update_role($iar_id,$iar_name){
$set_sql = "UPDATE infoaccessrole
SET iar_name = ?
WHERE iar_id = ?";
$result=$this->HT->query($set_sql, array($iar_name,$iar_id));
return $result;
}
//获取角色列表
public function get_role($ian_iar_id){
$sql = "SELECT iar_id,
iar_name,
is1.is_level
FROM infoaccessrole
INNER JOIN infoStructures is1 ON iar_is_id = is1.is_id
WHERE iar_id IN ($ian_iar_id)";
$query = $this->HT->query($sql);
return $query->result();
}
//根据角色的树结构ID获取角色拥有的权限节点
public function get_role_by_isid($iar_is_id){
$sql = "SELECT iar_id,iar_name,ian_iaa_id,iar_is_id
FROM infoaccessrole
LEFT JOIN infoaccessnode
ON iar_id=ian_iar_id
WHERE iar_is_id=?";
$query = $this->HT->query($sql,array($iar_is_id));
$result=$query->result();
if(!empty($result))
{
$result=$result[0];
}
return $result;
}
//删除角色,并删除与之相关的“角色-权限节点”关系
public function delete_role($iar_id){
$sql = "DELETE FROM infoaccessrole WHERE iar_id = ?";
$query=$this->HT->query($sql, array($iar_id));
if ($query) {
$node_sql = "DELETE FROM infoaccessnode WHERE ian_iar_id = ?";
$query=$this->HT->query($node_sql, array($iar_id));
}
return $query;
}
//添加新的 “角色-权限节点”关系
public function add_node($ian_iar_id,$ian_iaa_ids){
$sql = "INSERT INTO infoaccessnode (
ian_iar_id,
ian_iaa_id
) VALUES (?,?)";
$query = $this->HT->query($sql, array($ian_iar_id,$ian_iaa_ids));
return $this->HT->last_id('infoaccessnode');
}
//更新“角色-权限节点”关系
public function update_node($ian_iar_id,$ian_iaa_id){
$set_sql = "UPDATE infoaccessnode
SET ian_iaa_id = ?
WHERE ian_iar_id = ?";
$result=$this->HT->query($set_sql, array($ian_iaa_id,$ian_iar_id));
return $result;
}
//获取某个角色拥有的权限节点ID
public function get_node_list($ian_iar_id){
$set_sql = "SELECT ian_iaa_id
FROM infoaccessnode
WHERE ian_iar_id IN ($ian_iar_id)";
$query = $this->HT->query($set_sql);
return $query->result();
}
//获取权限节点结构列表
public function get_structure_list(){
$sql = "SELECT is1.is_id AS id,
is1.is_parent_id AS pId,
iaa_title as name,
1 AS status,
iaa_id
FROM infoaccessaction
INNER JOIN infoStructures is1 ON iaa_is_id = is1.is_id
ORDER BY is1.is_level ASC,
is1.is_sort ASC,
is1.is_path ASC";
$query = $this->HT->query($sql);
return $query->result();
}
//根据权限节点树结构id数组获取其子节点数据
public function get_sub_action_by_isids($iaa_is_id_arr){
$map='1=2';
foreach ($iaa_is_id_arr as $v) {
$map.=' or '."is_path like '%$v%'";
}
$sql = "SELECT iaa_id
FROM infoaccessaction
INNER JOIN infoStructures ON iaa_is_id=is_id
WHERE $map";
$query = $this->HT->query($sql);
$result = $query->result();
return $result;
}
//根据树结构ID获取权限节点内容
public function get_action_bytreeid($treeid){
$sql = "SELECT TOP 1
iaa_title,
iaa_controller,
iaa_action,
iaa_is_id,
iaa_id
FROM infoaccessaction
WHERE iaa_is_id=?";
$query = $this->HT->query($sql, array($treeid));
$result = $query->result();
if (!empty($result)) {
$result=$result[0];
}
return $result;
}
//根据权限节点id字符串获取权限节点内容
public function get_role_action_list($iaa_ids){
$sql = "SELECT iaa_id,
iaa_title,
iaa_controller,
iaa_action,
iaa_is_id as is_id
FROM infoaccessaction
WHERE iaa_id IN ($iaa_ids)";
$query = $this->HT->query($sql);
$result = $query->result();
return $result;
}
//获取所有的权限节点列表
public function get_action_list()
{
$sql = "SELECT iaa_id,
iaa_title,
iaa_controller,
iaa_action,
iaa_is_id
FROM infoaccessaction";
$query = $this->HT->query($sql);
$result = $query->result();
return $result;
}
//添加权限节点
public function add_action($iam_author,$iam_is_id){
$sql = "INSERT INTO infoaccessaction (
iaa_title,
iaa_is_id
) VALUES (?,?)";
$query = $this->HT->query($sql, array($iam_author,$iam_is_id));
return $this->HT->last_id('infoaccessaction');
}
//更新权限节点
public function update_action($iaa_title,$iaa_controller,$iaa_action,$iaa_id){
$set_sql = "UPDATE infoaccessaction
SET iaa_title=?,
iaa_controller=?,
iaa_action=?
WHERE iaa_id = ?";
$result=$this->HT->query($set_sql, array($iaa_title,$iaa_controller,$iaa_action,$iaa_id));
return $result;
}
//删除某个权限节点
public function delete_action($iaa_id){
$sql = "DELETE FROM infoaccessaction WHERE iaa_id = ?";
$query=$this->HT->query($sql, array($iaa_id));
return $query;
}
//获取某个站点的作者
public function get_site_author($site){
$sql="select iao_author from infoaccessownsite where iao_site=?";
$query = $this->HT->query($sql,array($site));
return $query->result();
}
//获取汉特用户列表
public function get_ht_user_list($undefined=false){
$undefined_sql='';
if ($undefined) {
$undefined_sql="AND OPI_Code NOT IN (SELECT iam_author FROM infoaccessmanage)";
}
$sql = "SELECT * FROM tourmanager.dbo.OperatorInfo WHERE DeleteFlag=0 $undefined_sql";
$query = $this->HT->query($sql);
return $query->result();
}
//获取作者平台用户列表
public function get_author_user_list($undefined=false){
$undefined_sql='WHERE a_active=1';
if ($undefined) {
//已经添加的用户id不知道为啥直接嵌套报错
$mapsql="SELECT iam_author FROM infoaccessmanage where ISNUMERIC(iam_author)=1";
$map_query = $this->HT->query($mapsql);
$authors='';
foreach ($map_query->result() as $v) {
if(trim($v->iam_author)!='')$authors.=$v->iam_author.',';
}
$authors=$authors.'0';
$undefined_sql.=" AND a_id NOT IN ($authors)";
}
$sql = "SELECT * FROM tourmanager.dbo.infoAuthors $undefined_sql";
$query = $this->HT->query($sql);
return $query->result();
}
}