<?php /** * Created by PhpStorm. * User: liyifei2012it * Date: 17/9/26 * Time: 11:21 */ namespace Apicp\Controller\HomePage; use Com\PackageValidate; use Common\Common\HomePage; class SaveController extends AbstractController { /** * Save * @author liyifei * @desc 保存个人主页设置 * @param Int homepage:true:1 是否开启(1=关闭;2=开启) * @param Array attrs 全体成员信息显示(只传展示的字段;homepage=2时必传) * @param Int secret 敏感成员信息是否显示(1=不显示;2=显示) * @param Array secret_rights 敏感成员范围(secret=2时必传) * @param Array secret_rights.dp_ids 部门ID * @param Array secret_rights.tag_ids 标签ID * @param Array secret_rights.uids 人员ID * @param Array secret_rights.job_ids 职位ID * @param Array secret_rights.role_ids 角色ID * @param Array secret_attrs 敏感成员信息显示(只传展示的字段;secret=2时必传) * @return array * array( * 'setting_id' => 1 // 设置ID * ) */ public function Index() { // 请求数据 $postData = I('post.'); // 验证规则 $rules = [ 'homepage' => 'require|integer|in:1,2', 'attrs' => 'array', 'secret' => 'integer|in:1,2', 'secret_rights' => 'array', 'secret_attrs' => 'array', ]; // 验证请求数据 $validate = new PackageValidate(); $validate->postData = $postData; $validate->validateParams($rules); // 校验及格式化请求数据 $formatData = $this->_formatPostData($postData); $homepageServ = &HomePage::instance(); $res = $homepageServ->saveSetting($formatData); if (!$res) { E('_ERR_HOMEPAGE_SAVE_SETTING'); } } /** * 校验及格式化请求数据 * @author liyifei * @param array $postData 请求数据 * @return array */ private function _formatPostData($postData) { // 默认返回值格式 $formatData = [ 'homepage' => isset($postData['homepage']) ? $postData['homepage'] : HomePage::CLOSE, 'attrs' => isset($postData['attrs']) ? $postData['attrs'] : [], 'secret' => isset($postData['secret']) ? $postData['secret'] : HomePage::CLOSE, 'secret_rights' => isset($postData['secret_rights']) ? $postData['secret_rights'] : [], 'secret_attrs' => isset($postData['secret_attrs']) ? $postData['secret_attrs'] : [], ]; // 可用人员字段 $homepageServ = &HomePage::instance(); $attrList = $homepageServ->getAttrs(); $fieldNames = array_keys($attrList); // 个人主页功能开启 if ($postData['homepage'] == HomePage::OPEN && (!isset($postData['attrs']) || empty($postData['attrs']))) { // 全体成员信息参数错误 E('_ERR_HOMEPAGE_ATTRS_PARAM'); } // 全体成员信息包含未启用的员工属性 if (isset($postData['attrs']) && !empty($postData['attrs']) && array_diff($postData['attrs'], $fieldNames)) { E('_ERR_HOMEPAGE_ATTRS_VALUES'); } // 敏感信息缺少必传参数 if (isset($postData['secret']) && $postData['secret'] == HomePage::OPEN && !isset($postData['secret_rights'], $postData['secret_attrs'])) { E('_ERR_HOMEPAGE_SECRET_ATTRS_LOSE'); } // 校验敏感成员权限数据格式 if (isset($postData['secret_rights']) && !empty($postData['secret_rights'])) { $rightKeys = ['uids', 'dp_ids', 'tag_ids', 'job_ids', 'role_ids']; if (array_diff(array_keys($postData['secret_rights']), $rightKeys)) { E('_ERR_HOMEPAGE_SECRET_RIGHT'); } // 格式化敏感成员权限数据 $formatData['secret_rights'] = $this->formatPostData($postData['secret_rights']); } // 敏感成员信息包含未启用的员工属性 if (isset($postData['secret_attrs']) && !empty($postData['secret_attrs']) && array_diff($postData['secret_attrs'], $fieldNames)) { E('_ERR_HOMEPAGE_SECRET_ATTRS_VALUES'); } return $formatData; } /** * 格式化用户输入的权限数据 * @author zhonglei * @param array $rights 权限数据 * @return array */ public function formatPostData($rights) { $data = []; foreach ($rights as $k => $v) { // 过滤空数组 if (!is_array($v) || empty($v)) { continue; } // 数据分组 switch ($k) { case 'dp_ids': $data[HomePage::RIGHT_TYPE_DEPARTMENT] = $v; break; case 'tag_ids': $data[HomePage::RIGHT_TYPE_TAG] = $v; break; case 'uids': $data[HomePage::RIGHT_TYPE_USER] = $v; break; case 'job_ids': $data[HomePage::RIGHT_TYPE_JOB] = $v; break; case 'role_ids': $data[HomePage::RIGHT_TYPE_ROLE] = $v; break; } } return $data; } }