|
|
<?php
|
|
|
// +----------------------------------------------------------------------
|
|
|
// | Description: 规则
|
|
|
// +----------------------------------------------------------------------
|
|
|
// | Author: Michael_xu | gengxiaoxu@5kcrm.com
|
|
|
// +----------------------------------------------------------------------
|
|
|
|
|
|
namespace app\admin\model;
|
|
|
|
|
|
use app\admin\model\Common;
|
|
|
use \think\Db;
|
|
|
|
|
|
class Rule extends Common
|
|
|
{
|
|
|
/**
|
|
|
* 为了数据库的整洁,同时又不影响Model和Controller的名称
|
|
|
* 我们约定每个模块的数据表都加上相同的前缀,比如CRM模块用crm作为数据表前缀
|
|
|
*/
|
|
|
protected $name = 'admin_rule';
|
|
|
|
|
|
/**
|
|
|
* [getDataList 获取列表]
|
|
|
* @param string $type [是否为树状结构]
|
|
|
* @param int $pid 角色分类:0客户自定义角色,1系统默认管理角色,2客户管理角色,3人力资源管理角色,4财务管理角色,5项目管理角色,6办公管理角色
|
|
|
* @return [array]
|
|
|
*/
|
|
|
public function getDataList($param)
|
|
|
{
|
|
|
$type = $param['type'];
|
|
|
$groupPid = $param['pid'] ? : 0;
|
|
|
$types = $this->groupsToRules($groupPid);
|
|
|
// 若type为tree,则返回树状结构
|
|
|
if ($type == 'tree') {
|
|
|
$cat = new \com\Category('admin_rule', array('id', 'pid', 'title', 'title'));
|
|
|
$data = $cat->getList('', 0, 'id');
|
|
|
foreach ($data as $k => $v) {
|
|
|
if ($v['id'] == '31') {
|
|
|
unset($data[$k]);
|
|
|
continue;
|
|
|
}
|
|
|
$data[$k]['check'] = false;
|
|
|
if ($types && !in_array((int)$v['types'], $types)) {
|
|
|
unset($data[$k]);
|
|
|
}
|
|
|
if (empty($v['status'])) {
|
|
|
unset($data[$k]);
|
|
|
}
|
|
|
}
|
|
|
$data = array_merge($data);
|
|
|
$tree = new \com\Tree();
|
|
|
$list = $tree->list_to_tree($data, 'id', 'pid', 'child', 0, true, array('pid'));
|
|
|
} elseif ($types) {
|
|
|
$list = Db::name('AdminRule')->where(['types' => ['in',$types]])->select();
|
|
|
}
|
|
|
return $list;
|
|
|
}
|
|
|
|
|
|
//添加规则
|
|
|
public function createData($param)
|
|
|
{
|
|
|
if($param['pid'] && $param['name']&&$param['title']){
|
|
|
$pdet = Db::name('AdminRule')->where('id ='.$param['pid'].'')->find();
|
|
|
if ($pdet['level'] == 1) {
|
|
|
$data['level'] = 2;
|
|
|
} elseif ( $pdet['level'] == 2){
|
|
|
$data['level'] = 3;
|
|
|
} else {
|
|
|
$this->error = '等级参数错误';
|
|
|
return false;
|
|
|
}
|
|
|
$data['pid'] = $param['pid']; //上级ID
|
|
|
$data['name'] = $param['name']; //方法名
|
|
|
$data['title'] = $param['title'];//名称
|
|
|
$data['status'] = 1; //状态1 显示
|
|
|
|
|
|
//1超级管理员2系统设置管理员3部门与员工管理员4审批流管理员5工作台管理员6客户管理员7项目管理员8公告管理员
|
|
|
$data['types'] = $param['types'];
|
|
|
$flag = $this->insert($data);
|
|
|
if ($flag) {
|
|
|
return true;
|
|
|
} else {
|
|
|
$this->error = '添加失败';
|
|
|
return false;
|
|
|
}
|
|
|
} else {
|
|
|
$this->error = '参数错误';
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//编辑规则
|
|
|
public function updateDataById($param,$id)
|
|
|
{
|
|
|
if ($param['id']) {
|
|
|
$flag = $this->where('id ='.$param['id'].'')->update($param);
|
|
|
return true;
|
|
|
} else {
|
|
|
$this->error = '参数错误';
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 角色与规则对照表
|
|
|
* @param $groupPid 角色分类:0客户自定义角色,1系统默认管理角色,2客户管理角色,3人力资源管理角色(原客户),4财务管理角色(原客户),5项目管理角色,6办公管理角色,7人力资源管理角色,8财务管理角色
|
|
|
* @param rule:types 0系统设置1工作台2客户管理3项目管理4人力资源5财务管理6商业智能(客戶)
|
|
|
* @return
|
|
|
*/
|
|
|
public function groupsToRules($groupPid)
|
|
|
{
|
|
|
$ruleTypes = [];
|
|
|
switch ($groupPid) {
|
|
|
case '0' :
|
|
|
case '2' :
|
|
|
$ruleTypes = ['2','6'];
|
|
|
break;
|
|
|
case '1' :
|
|
|
$ruleTypes = ['0'];
|
|
|
break;
|
|
|
case '5' :
|
|
|
$ruleTypes = ['3'];
|
|
|
break;
|
|
|
case '6' :
|
|
|
$ruleTypes = ['1','7'];
|
|
|
break;
|
|
|
default : $ruleTypes = [$groupPid];
|
|
|
break;
|
|
|
}
|
|
|
return $ruleTypes;
|
|
|
}
|
|
|
} |