| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- <?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;
- }
- }
|