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

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
// +----------------------------------------------------------------------
// | 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;
}
}