IconNewController.class.php 5.56 KB
<?php
/**
 * IconNewController.class.php
 * 【运营管理】管理后台新建栏目接口
 * @author Deepseath
 * @version $Id$
 */
namespace Apicp\Controller\Recommender;

use Apicp\Controller\Recommender\AbstractController;
use Common\Common\AttachOperation;
use Common\Service\CommonRecommenderService;
use Common\Model\CommonRecommenderModel;
use Common\Common\Attach;

/**
 * 【管理后台】新建栏目接口
 */
class IconNewController extends AbstractController
{

    /**
     * 新建栏目接口
     * @desc 【管理后台】新建栏目接口
     * @param int addType:true 添加类型(0:选择关联模块,1:自定义添加)
     * @param string attachId:true 栏目图标附件 Id
     * @param string title:true 栏目标题,不能超过 4个 字符
     * @param string description:false 栏目描述,不能超过  120个 字符
     * @param string url:true 栏目相对链接 URL
     * @param string app:true 指定的应用模块
     * @param string dataCategoryId:true 栏目关联的应用分类 ID
     * @param array data:true 栏目关联的应用分类详情,结构如下:<br>
     * [<br>
     *  ['id' => '一级分类ID', 'name' => '分类名称', 'upId' => '上级分类ID', 'url' => '分类 URL'],<br>
     *  ['id' => '二级分类ID', 'name' => '分类名称', 'upId' => '上级分类ID', 'url' => '分类 URL']<br>
     *  ['id' => '三级分类ID', 'name' => '分类名称', 'upId' => '上级分类ID', 'url' => '分类 URL']<br>
     *  ... ... <br>
     * ]
     * @return <pre>array(
     *  'recommendId' => 123 // 新增的栏目 Id
     *  )</pre>
     */
    public function Index()
    {
        // 添加类型
        $addType = I('addType', 0, 'rintval');
        // 图片附件 ID
        $attachId = I('attachId', '');
        // 栏目名称
        $title = I('title', '');
        // 栏目描述
        $description = I('description', '');
        // 链接 URL
        $url = I('url', '');
        // 关联的 APP
        $app = I('app', '');
        // 关联的 APP 分类 ID
        $dataCategoryId = I('dataCategoryId', '');
        // 关联版块,数组
        /**
         * [
         * ['id' => '分类ID', 'name' => '分类名称', 'upId' => '上级分类ID', 'url' => '分类 URL'],
         * ['id' => '分类ID', 'name' => '分类名称', 'upId' => '上级分类ID', 'url' => '分类 URL'],
         * ['id' => '分类ID', 'name' => '分类名称', 'upId' => '上级分类ID', 'url' => '分类 URL']
         * ]
         */
        $data = I('data/a', []);

        if (empty($attachId)) {
            return $this->_set_error('_ERR_RECOMMENDER_ICON_ATTACH_ID_EMPTY_40104');
        }
        $attachServ = &Attach::instance();
        $pic = $attachServ->getAttachUrl($attachId);
        $pic = empty($pic) ? $attachId : $pic;

        $recommenderService = new CommonRecommenderService();

        if (!$recommenderService->verifyFieldTitle($title)) {
            return $this->_set_error('_ERR_RECOMMENDER_ICON_TITLE_TOOLONG_40106');
        }

        if (!$recommenderService->verifyFieldDescription($description)) {
            return $this->_set_error('_ERR_RECOMMENDER_ICON_DESCRIPTION_TOOLONG_40107');
        }

        if (!$recommenderService->verifyFieldUrl($url)) {
            return $this->_set_error('_ERR_RECOMMENDER_ICON_URL_ERROR_40108');
        }

        // 如果不是自定义栏目
        if (!$addType) {

            if (empty($app) || $dataCategoryId === '' || empty($data)) {
                // 检查提交的相关参数是否存在
                return $this->_set_error('_ERR_RECOMMENDER_ICON_PARAM_40109');
            }

            if (!$recommenderService->is_app($app)) {
                // 检查应用模块标识是否正确
                return $this->_set_error('_ERR_RECOMMENDER_ICON_APP_ERROR_40110');
            }

            if ($recommenderService->countDuplicate(CommonRecommenderModel::TYPE_ICON, $app, null,
                    $dataCategoryId) > 0
            ) {
                // 检查关联的分类是否重复
                return $this->_set_error('_ERR_RECOMMENDER_ICON_DUPLICATE_40111');
            }
        }

        // 新增数据
        $recommenderId = $recommenderService->recommenderUpdate([
            'type' => CommonRecommenderModel::TYPE_ICON,
            'displayorder' => CommonRecommenderModel::VALUE_DISPLAYORDER_MIN,
            'hide' => CommonRecommenderModel::HIDE_NO,
            'system' => CommonRecommenderModel::SYSTEM_NO,
            'title' => $title,
            'attach_id' => $attachId,
            'pic' => $pic,
            'url' => $url,
            'description' => $description,
            'app_dir' => $app,
            'app_identifier' => APP_IDENTIFIER,
            'data_id' => '',
            'data_category_id' => $dataCategoryId,
            'data' => [
                'category' => $data
            ],
            'dateline' => MILLI_TIME,
            'adminer_id' => $this->_login->user['eaId'],
            'adminer' => $this->_login->user['eaRealname'],
            'add_type' => $addType,
        ]);

        // 设置其排序号为 ID
        $recommenderService->update($recommenderId, [
            'displayorder' => $recommenderId
        ]);

        // 附件操作
        if (strlen($attachId) == 32) {
            $attach_serv = new AttachOperation();
            $attach_serv->insert_attach(
                APP_DIR,
                'recommender',
                $recommenderId,
                ['attach_ids' => [$attachId]]
            );
        }

        return $this->_result = [
            'recommenderId' => $recommenderId
        ];
    }
}