Rule.php 3.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | Description: 规则
  4. // +----------------------------------------------------------------------
  5. // | Author: Michael_xu | gengxiaoxu@5kcrm.com
  6. // +----------------------------------------------------------------------
  7. namespace app\admin\model;
  8. use app\admin\model\Common;
  9. use \think\Db;
  10. class Rule extends Common
  11. {
  12. /**
  13. * 为了数据库的整洁,同时又不影响Model和Controller的名称
  14. * 我们约定每个模块的数据表都加上相同的前缀,比如CRM模块用crm作为数据表前缀
  15. */
  16. protected $name = 'admin_rule';
  17. /**
  18. * [getDataList 获取列表]
  19. * @param string $type [是否为树状结构]
  20. * @param int $pid 角色分类:0客户自定义角色,1系统默认管理角色,2客户管理角色,3人力资源管理角色,4财务管理角色,5项目管理角色,6办公管理角色
  21. * @return [array]
  22. */
  23. public function getDataList($param)
  24. {
  25. $type = $param['type'];
  26. $groupPid = $param['pid'] ? : 0;
  27. $types = $this->groupsToRules($groupPid);
  28. // 若type为tree,则返回树状结构
  29. if ($type == 'tree') {
  30. $cat = new \com\Category('admin_rule', array('id', 'pid', 'title', 'title'));
  31. $data = $cat->getList('', 0, 'id');
  32. foreach ($data as $k => $v) {
  33. if ($v['id'] == '31') {
  34. unset($data[$k]);
  35. continue;
  36. }
  37. $data[$k]['check'] = false;
  38. if ($types && !in_array((int)$v['types'], $types)) {
  39. unset($data[$k]);
  40. }
  41. if (empty($v['status'])) {
  42. unset($data[$k]);
  43. }
  44. }
  45. $data = array_merge($data);
  46. $tree = new \com\Tree();
  47. $list = $tree->list_to_tree($data, 'id', 'pid', 'child', 0, true, array('pid'));
  48. } elseif ($types) {
  49. $list = Db::name('AdminRule')->where(['types' => ['in',$types]])->select();
  50. }
  51. return $list;
  52. }
  53. //添加规则
  54. public function createData($param)
  55. {
  56. if($param['pid'] && $param['name']&&$param['title']){
  57. $pdet = Db::name('AdminRule')->where('id ='.$param['pid'].'')->find();
  58. if ($pdet['level'] == 1) {
  59. $data['level'] = 2;
  60. } elseif ( $pdet['level'] == 2){
  61. $data['level'] = 3;
  62. } else {
  63. $this->error = '等级参数错误';
  64. return false;
  65. }
  66. $data['pid'] = $param['pid']; //上级ID
  67. $data['name'] = $param['name']; //方法名
  68. $data['title'] = $param['title'];//名称
  69. $data['status'] = 1; //状态1 显示
  70. //1超级管理员2系统设置管理员3部门与员工管理员4审批流管理员5工作台管理员6客户管理员7项目管理员8公告管理员
  71. $data['types'] = $param['types'];
  72. $flag = $this->insert($data);
  73. if ($flag) {
  74. return true;
  75. } else {
  76. $this->error = '添加失败';
  77. return false;
  78. }
  79. } else {
  80. $this->error = '参数错误';
  81. return false;
  82. }
  83. }
  84. //编辑规则
  85. public function updateDataById($param,$id)
  86. {
  87. if ($param['id']) {
  88. $flag = $this->where('id ='.$param['id'].'')->update($param);
  89. return true;
  90. } else {
  91. $this->error = '参数错误';
  92. return false;
  93. }
  94. }
  95. /**
  96. * 角色与规则对照表
  97. * @param $groupPid 角色分类:0客户自定义角色,1系统默认管理角色,2客户管理角色,3人力资源管理角色(原客户),4财务管理角色(原客户),5项目管理角色,6办公管理角色,7人力资源管理角色,8财务管理角色
  98. * @param rule:types 0系统设置1工作台2客户管理3项目管理4人力资源5财务管理6商业智能(客戶)
  99. * @return
  100. */
  101. public function groupsToRules($groupPid)
  102. {
  103. $ruleTypes = [];
  104. switch ($groupPid) {
  105. case '0' :
  106. case '2' :
  107. $ruleTypes = ['2','6'];
  108. break;
  109. case '1' :
  110. $ruleTypes = ['0'];
  111. break;
  112. case '5' :
  113. $ruleTypes = ['3'];
  114. break;
  115. case '6' :
  116. $ruleTypes = ['1','7'];
  117. break;
  118. default : $ruleTypes = [$groupPid];
  119. break;
  120. }
  121. return $ruleTypes;
  122. }
  123. }