UpdateController.class.php 4.71 KB
<?php
/**
 * Created by PhpStorm.
 */

namespace Frontend\Controller\UpdateDB;

class UpdateController extends AbstractController
{

    /**
     * 员圈套件-调研中心数据库升级
     */
    public function Index()
    {

        $sql = $this->_updateSql();
        if (empty($sql)) {
            exit('没有可升级的sql');
        }

        $db = \Think\Db::getInstance();
        try {

            $db->execute($sql);
        } catch (\Exception $e) {

            exit('数据库升级失败:' . $e->getMessage());
        }

        exit("数据库升级完成,执行sql如下:{$sql}");
    }

    /**
     * 待升级的sql
     *      1. oa_questionnaire_classify,增加qc_desc字段
     *      2. oa_questionnaire_baseinfo,增加is_notice字段;
     *         oa_questionnaire_baseinfo,修改secret字段默认值为0,备注为"内容保密(0:关闭;1:开启)";
     *         oa_questionnaire_baseinfo,修改share字段备注为"是否可允许外部人员参与(0:不允许;1:允许)";
     *         oa_questionnaire_baseinfo,修改anonymous字段默认值为0,备注为"匿名(0:匿名;1:实名)";
     *         oa_questionnaire_baseinfo,删除repeat、is_redpack、is_openfield字段
     *      3. oa_questionnaire_question,修改q_required字段默认值为0,备注为"是否必填(0:非必填,1:必填)";
     *         修改q_other字段默认值为0,备注为"是否包含其他选项(0:不包含,1:包含)"
     *      4. 删除表oa_questionnaire_count(用户参加调研次数统计表)
     *      5. oa_questionnaire_baseinfo 更新secret=1的值为0,secret=2的值为1
     *         oa_questionnaire_baseinfo 更新share=2的值为0
     *         oa_questionnaire_baseinfo 更新anonymous=1的值为0,anonymous=2的值为1
     *      6. oa_questionnaire_question 更新q_required=1的值为0,q_required=2的值为1
     *         oa_questionnaire_question 更新q_other=1的值为0,q_other=2的值为1
     *
     * @author wanghuan
     * @return string
     */
    private function _updateSql()
    {

        $sql = "
             ALTER TABLE `oa_questionnaire_classify` ADD `qc_desc` VARCHAR(360) NOT NULL DEFAULT '' COMMENT '分类描述' AFTER `qc_name`;
             ALTER TABLE `oa_questionnaire_baseinfo` ADD `is_notice` TINYINT(1) UNSIGNED NOT NULL DEFAULT 0 COMMENT '调研发布时是否进行提醒(0:否,1:是)' AFTER `involved_total`;
             ALTER TABLE `oa_questionnaire_baseinfo` ALTER COLUMN `secret` DROP DEFAULT;
             ALTER TABLE `oa_questionnaire_baseinfo` ALTER COLUMN `secret` SET DEFAULT 0;
             ALTER TABLE `oa_questionnaire_baseinfo` MODIFY COLUMN `secret` TINYINT(1) COMMENT '内容保密(0:关闭;1:开启)';
             ALTER TABLE `oa_questionnaire_baseinfo` MODIFY COLUMN `share` TINYINT(1) COMMENT '是否可允许外部人员参与(0:不允许;1:允许)';
             ALTER TABLE `oa_questionnaire_baseinfo` ALTER COLUMN `anonymous` DROP DEFAULT;
             ALTER TABLE `oa_questionnaire_baseinfo` ALTER COLUMN `anonymous` SET DEFAULT 0;
             ALTER TABLE `oa_questionnaire_baseinfo` MODIFY COLUMN `anonymous` TINYINT(1) COMMENT '匿名(0:匿名;1:实名)';
             ALTER TABLE `oa_questionnaire_baseinfo` DROP `repeat`, DROP `is_redpack`, DROP `is_openfield`;
             ALTER TABLE `oa_questionnaire_question` ALTER COLUMN `q_required` DROP DEFAULT;
             ALTER TABLE `oa_questionnaire_question` ALTER COLUMN `q_required` SET DEFAULT 0;
             ALTER TABLE `oa_questionnaire_question` MODIFY COLUMN `q_required` TINYINT(1) COMMENT '是否必填(0:非必填,1:必填)';
             ALTER TABLE `oa_questionnaire_question` ALTER COLUMN `q_other` DROP DEFAULT;
             ALTER TABLE `oa_questionnaire_question` ALTER COLUMN `q_other` SET DEFAULT 0;
             ALTER TABLE `oa_questionnaire_question` MODIFY COLUMN `q_other` TINYINT(1) COMMENT '是否包含其他选项(0:不包含,1:包含)';
             DROP TABLE `oa_questionnaire_count`;
             UPDATE `oa_questionnaire_baseinfo` SET `secret`=0 WHERE `secret`=1;
             UPDATE `oa_questionnaire_baseinfo` SET `secret`=1 WHERE `secret`=2;
             UPDATE `oa_questionnaire_baseinfo` SET `share`=0 WHERE `share`=2;
             UPDATE `oa_questionnaire_baseinfo` SET `anonymous`=0 WHERE `anonymous`=1;
             UPDATE `oa_questionnaire_baseinfo` SET `anonymous`=1 WHERE `anonymous`=2;
             UPDATE `oa_questionnaire_question` SET `q_required`=0 WHERE `q_required`=1;
             UPDATE `oa_questionnaire_question` SET `q_required`=1 WHERE `q_required`=2;
             UPDATE `oa_questionnaire_question` SET `q_other`=0 WHERE `q_other`=1;
             UPDATE `oa_questionnaire_question` SET `q_other`=1 WHERE `q_other`=2;
        ";

        return $sql;
    }
}