You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

131 lines
3.9 KiB

4 years ago
<?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 ruletypes 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;
}
}