SaveController.class.php 3.38 KB
<?php
/**
 * Created by PhpStorm.
 * User: tangxingguo
 * Date: 2017/4/11
 * Time: 18:42
 */
namespace Apicp\Controller\CourseClass;

use Com\PackageValidate;
use Common\Service\ClassService;
use Common\Service\RightService;

class SaveController extends \Apicp\Controller\AbstractController
{
    /**
     * Save
     * @author tangxingguo
     * @desc 保存分类
     * @param int    parent_id 上级分类ID(二级、三级分类保存时必填)
     * @param int    class_id 分类ID
     * @param string class_name:true 分类标题
     * @param string description 分类描述
     * @param int    is_open 是否启用分类(1=不启用;2=启用;二级、三级分类保存时必填)
     * @param Array right 适用范围
     * @param String right.is_all 是否全公司(任意值,有值即为全公司)
     * @param Array right.uids 人员ID
     * @param Array right.dp_ids 部门ID
     * @param Array right.tag_ids 标签ID
     * @param Array right.job_ids 职位ID
     * @param Array right.role_ids 角色ID
     */
    public function Index_post()
    {
        // 验证规则
        $rules = [
            'parent_id' => 'integer',
            'class_id' => 'integer',
            'class_name' => 'require|max:20',
            'description' => 'max:120',
            'is_open' => 'integer|between:1,2',
            'right' => 'array',
        ];

        // 验证数据
        $validate = new PackageValidate($rules, [], array_keys($rules));
        $postData = $validate->postData;

        // 分类信息初始化
        $classInfo = [
            'class_name' => $postData['class_name'],
            'description' => isset($postData['description']) ? $postData['description'] : '',
        ];

        // 唯一分类名检查
        $classServ = new ClassService();
        if (!$classServ->uniqueName($classInfo['class_name'], $postData['class_id'])) {

            E('_ERR_CLASS_NAME_REPEAT');
        }

        // 二级、三级分类信息初始化
        $rightServ = new RightService();
        if (isset($postData['parent_id'])) {
            // 是否启用参数检查
            if (!isset($postData['is_open'])) {

                E('_ERR_CLASS_IS_OPEN_EMPTY');
            }

            $classInfo['parent_id'] = $postData['parent_id'];
            $count = $classServ->count($postData['parent_id']);
            if (empty($count)) {

                E('_ERR_CLASS_PARENT_ID_NOT_FOUND');
            }

            $classInfo['is_open'] = $postData['is_open'];

            // 权限数据
            $level = 0;
            if (isset($postData['class_id'])) {

                $classServ->getLevel($postData['class_id'], $level);
            }

            if (isset($postData['right']) && $level != 3) {

                if (empty($rightServ->formatPostData($postData['right']))) {

                    E('_ERR_CLASS_RIGHT_EMPTY');
                }

                $rightInfo = $postData['right'];
            }
        }

        // 保存分类
        if (!isset($postData['class_id']) || empty($postData['class_id'])) {
            // 保存
            $postData['class_id'] = $classServ->insert($classInfo);
        } else {
            // 修改
            $classServ->update($postData['class_id'], $classInfo);
        }

        // 保存权限
        if (isset($rightInfo)) {

            $rightServ->saveData(['class_id' => $postData['class_id']], $rightInfo);
        }
    }
}