<?php /** * Created by PhpStorm. * User: zhonglei * Date: 2017/6/21 * Time: 17:14 */ namespace Common\Service; use Common\Model\ConfigModel; use Common\Common\Constant; use Common\Common\Department; use Common\Common\Tag; use Common\Common\User; use Common\Common\Job; use Common\Common\Role; class ConfigService extends AbstractService { // 构造方法 public function __construct() { parent::__construct(); $this->_d = new ConfigModel(); } /** * 格式化用户输入的权限数据 * @author zhonglei * @param array $rights 权限数据 * @return array */ public function formatPostRight($rights) { $data = []; foreach ($rights as $k => $v) { // 全公司 if ($k == 'is_all' && $v == Constant::RIGHT_IS_ALL_TRUE) { $data = [Constant::RIGHT_TYPE_ALL => [Constant::RIGHT_IS_ALL_TRUE]]; break; } // 过滤空数组 if (!is_array($v) || empty($v)) { continue; } // 数据分组 switch ($k) { case 'dp_ids': $data[Constant::RIGHT_TYPE_DEPARTMENT] = $v; break; case 'tag_ids': $data[Constant::RIGHT_TYPE_TAG] = $v; break; case 'uids': $data[Constant::RIGHT_TYPE_USER] = $v; break; case 'job_ids': $data[Constant::RIGHT_TYPE_JOB] = $v; break; case 'role_ids': $data[Constant::RIGHT_TYPE_ROLE] = $v; break; } } return $data; } /** * 获取格式化后的权限数据 * @author zhonglei * @param array $rights 权限数据 * @return array * + int is_all 是否全公司(1=否;2=是) * + array dp_list 部门信息 * + string dp_id 部门ID * + string dp_name 部门名称 * + array tag_list 标签信息 * + string tag_id 标签ID * + string tag_name 标签名称 * + array user_list 人员信息 * + string uid 用户ID * + string username 用户姓名 * + string face 头像 * + array job_list 职位信息 * + string job_id 职位ID * + string job_name 职位名称 * + array role_list 角色信息 * + string role_id 角色ID * + string role_name 角色名称 */ public function getRightData($rights) { $data = [ 'is_all' => Constant::RIGHT_IS_ALL_FALSE, 'dp_list' => [], 'tag_list' => [], 'user_list' => [], 'job_list' => [], 'role_list' => [], ]; foreach ($rights as $k => $v) { switch ($k) { // 全公司 case Constant::RIGHT_TYPE_ALL: $data['is_all'] = Constant::RIGHT_IS_ALL_TRUE; break; // 部门 case Constant::RIGHT_TYPE_DEPARTMENT: $dpServ = &Department::instance(); $dps = $dpServ->listById($v); foreach ($dps as $dp) { $data['dp_list'][] = [ 'dp_id' => $dp['dpId'], 'dp_name' => $dp['dpName'], ]; } break; // 标签 case Constant::RIGHT_TYPE_TAG: $tagServ = &Tag::instance(); $tags = $tagServ->listAll($v); foreach ($tags as $tag) { $data['tag_list'][] = [ 'tag_id' => $tag['tagId'], 'tag_name' => $tag['tagName'], ]; } break; // 人员 case Constant::RIGHT_TYPE_USER: $userServ = &User::instance(); $res_list = $userServ->listBasicByConds(['memUids' => $v]); $users = $res_list['list']; foreach ($users as $user) { $data['user_list'][] = [ 'uid' => $user['memUid'], 'username' => $user['memUsername'], 'face' => $userServ->avatar($user['memUid'], $user), ]; } break; // 职位 case Constant::RIGHT_TYPE_JOB: $jobServ = &Job::instance(); $jobs = $jobServ->listById($v); foreach ($jobs as $job) { $data['job_list'][] = [ 'job_id' => $job['jobId'], 'job_name' => $job['jobName'], ]; } break; // 角色 case Constant::RIGHT_TYPE_ROLE: $roleServ = &Role::instance(); $roles = $roleServ->listById($v); foreach ($roles as $role) { $data['role_list'][] = [ 'role_id' => $role['roleId'], 'role_name' => $role['roleName'], ]; } break; } } return $data; } /** * 获取配置数据 * @author zhonglei * @return array */ public function getData() { $list = $this->list_all(); if (empty($list)) { // 默认数据 $data = [ 'config_id' => 0, // 权限默认为全公司 'rights' => [ Constant::RIGHT_TYPE_ALL => [ Constant::RIGHT_IS_ALL_TRUE ] ], ]; } else { $data = $list[0]; $data['rights'] = unserialize($list[0]['rights']); } return $data; } /** * 根据权限数据,获取对应的用户ID * @author zhonglei * @param array $rights 权限数据 * @return array */ public function getUidsByRight($rights) { $dp_ids = []; $uids = []; $conds = []; // 全公司 if (isset($rights[Constant::RIGHT_TYPE_ALL])) { $userServ = &User::instance(); $list = $userServ->listAll(); $uids = array_column($list, 'memUid'); // 直接返回 return $uids; } // 部门 if (isset($rights[Constant::RIGHT_TYPE_DEPARTMENT])) { $dp_ids = $rights[Constant::RIGHT_TYPE_DEPARTMENT]; } // 标签 if (isset($rights[Constant::RIGHT_TYPE_TAG])) { $tagServ = Tag::instance(); $list = $tagServ->listAllMember(['tagIds' => $rights[Constant::RIGHT_TYPE_TAG]]); foreach ($list as $v) { // 标签中的部门 if (isset($v['dpId']) && !empty($v['dpId'])) { $dp_ids[] = $v['dpId']; // 标签中的人员 } elseif (isset($v['memUid']) && !empty($v['memUid'])) { $uids[] = $v['memUid']; } } } // 部门ID if (!empty($dp_ids)) { $userServ = &User::instance(); $conds['dpIdList'] = $dp_ids; $conds['departmentChildrenFlag'] = $userServ::DEPARTMENT_CHILDREN_TRUE; } // 职位 if (isset($rights[Constant::RIGHT_TYPE_JOB])) { $conds['jobIdList'] = $rights[Constant::RIGHT_TYPE_JOB]; } // 角色 if (isset($rights[Constant::RIGHT_TYPE_ROLE])) { $conds['roleIdList'] = $rights[Constant::RIGHT_TYPE_ROLE]; } // 根据筛选条件获取用户列表 if (!empty($conds)) { $userServ = &User::instance(); $list = $userServ->listAll($conds); $data = array_column($list, 'memUid'); $uids = array_merge($uids, $data); } // 人员 if (isset($rights[Constant::RIGHT_TYPE_USER])) { $uids = array_merge($uids, $rights[Constant::RIGHT_TYPE_USER]); } $uids = array_unique($uids); return $uids; } }