InstallController.class.php 7 KB
<?php
/**
 * Created by PhpStorm.
 * User: liyifei2012it
 * Date: 17/6/13
 * Time: 18:13
 */

namespace Rpc\Controller\Common;

use Think\Db;
use Think\Log;

class InstallController extends AbstractController
{
    /**
     * 是否必须登录
     */
    protected $_require_login = false;

    private $qyDomain = QY_DOMAIN;
    private $nowTime = MILLI_TIME;
    /**
     * 应用默认数据安装接口
     * @author tangxingguo
     */
    public function Index()
    {
        Log::record('---Add Answer qyDomain info:' . QY_DOMAIN , Log::INFO);
        // 添加问题
        $this->_addQuestion();
        // 添加回答
        $this->_addAnswer();
    }

    /**
     * 执行sql语句
     * @author tangxingguo
     * @param $sql
     */
    private function _exeSql($sql)
    {
        if (empty($sql)) {
            return;
        }

        $db = &Db::getInstance();
        try {
            $db->query($sql);
        } catch (\Exception $e) {

        }
    }

    /**
     * 默认分类数据
     * @author tangxingguo
     * @return string
     */
    private function _addClass()
    {
        // 兼容多次操作
        $db = &Db::getInstance();
        $classSql = "select * from `oa_answer_class` WHERE `domain` = '{$this->qyDomain}'  and `status` < 3";
        $classInfo = $db->query($classSql);
        if (!empty($classInfo)) {
            return;
        }

        // 默认分类数据
        $defaultClass = [
            [
                'class_name' => '管理常识',
                'description' => '',
                'manager_id' => '',
                'manager_name' => '',
                'order' => -1,
                'domain' => $this->qyDomain,
                'status' => 1,
                'created' => $this->nowTime,
            ],
            [
                'class_name' => '职业技能',
                'description' => '',
            ],
            [
                'class_name' => '办公效率',
                'description' => '',
            ],
            [
                'class_name' => '市场营销',
                'description' => '',
            ],
            [
                'class_name' => '职业发展',
                'description' => '',
            ],
        ];

        // sql
        $sql = "INSERT INTO `oa_course_class` (`class_name`, `description`, `manager_id`,  `manager_name`,  `order`, `domain`, `status`, `created`) VALUES ";
        foreach ($defaultClass as $k => $v) {
            $sql .= "('{$v['class_name']}', '{$v['description']}', '{$v['manager_id']}', '{$v['manager_name']}', '{$v['order']}', '{$this->qyDomain}', 1, '{$this->nowTime}')";
            if (end($defaultClass) == $v) {
                $sql .= ";";
            } else {
                $sql .= ",";
            }
        }

        $this->_exeSql($sql);
    }

    // 添加问题
    private function _addQuestion()
    {
        // 兼容多次操作
        $db = &Db::getInstance();
        $questionSql = "select * from `oa_answer_question` WHERE `domain` = '{$this->qyDomain}'  and `status` < 3";
        $questionInfo = $db->query($questionSql);
        if (!empty($questionInfo)) {
            return;
        }
        // 提问数据
        $defaultData = [
            'class_id' => 0,
            'uid' => '',
            'username' => '员圈小助手',
            'checker_type' => 2,
            'checker_uid' => '',
            'checker_name' => '员圈小助手',
            'question_title' => '问答中心有什么作用呢?',
            'description' => '请按照使用场景和用途分别进行描述。',
            'integral' => 0,
            'is_solve' => 2,
            'answer_wait_total' => 0,
            'answer_pass_total' => 1,
            'check_time' => $this->nowTime,
            'check_status' => 2,
            'domain' => $this->qyDomain,
            'status' => 1,
            'created' => $this->nowTime,
        ];
        $sql = $this->_formatInsert('oa_answer_question', $defaultData);
        $this->_exeSql($sql);
    }

    // 添加回答
    private function _addAnswer()
    {
        // 兼容多次操作
        $db = &Db::getInstance();
        $answerSql = "select * from `oa_answer_answer` WHERE `domain` = '{$this->qyDomain}'  and `status` < 3";
        $answerInfo = $db->query($answerSql);
        if (!empty($answerInfo)) {
            return;
        }

        // 提问信息
        $db = &Db::getInstance();
        $questionSql = "select * from `oa_answer_question` WHERE `username` = '员圈小助手' and `domain` = '{$this->qyDomain}'  and `status` < 3";
        $questionInfo = $db->query($questionSql);
        if (empty($questionInfo)) {
            Log::record('---Add Answer fail info:没有找到提问数据', Log::ERR);
            return;
        }

        // 回答数据
        $data = [
            'question_id' => $questionInfo[0]['question_id'],
            'class_id' => 0,
            'user_type' => 2,
            'uid' => '',
            'username' => '员圈小助手',
            'checker_type' => 2,
            'checker_uid' => '',
            'checker_name' => '员圈小助手',
            'answer_content' => '问答中心可以帮助企业搭建一个移动化的互动问答社区。<br />(1)其使用场景在于:当员工在工作/学习中遇到问题时,可以自行在问答中心来发起提问,可设置一定的悬赏积分,来激励其他员工进行解答。<br />(2)用途上来说:通过问答中心,企业可以充分发挥员工的积极性,将工作中常见的问题进行沉淀,也可以挖掘优秀的员工,通过这种互动的方式来提供员工学习的积极性。员工可以通过问答的形式获得帮助,有一个渠道来解决自身遇到的问题,可以提高自己的业务水平。',
            'is_best' => 2,
            'like_total' => 0,
            'check_time' => $this->nowTime,
            'check_status' => 2,
            'domain' => $this->qyDomain,
            'status' => 1,
            'created' => $this->nowTime,
        ];

        $sql = $this->_formatInsert('oa_answer_answer', $data);

        $this->_exeSql($sql);
    }

    /**
     * 根据数组数据格式化为添加sql语句
     * @author tangxingguo
     * @param string $tableName 表名
     * @param array $data 数据
     * @return string|void
     */
    private function _formatInsert($tableName, $data)
    {
        if (empty($data) && !is_array($data)) {
            return;
        }

        // 拼接sql
        $sql = "INSERT INTO `{$tableName}` ";
        $keys = "(";
        $values = "(";
        foreach ($data as $k => $v) {
            if (array_slice($data, -1, 1) == [$k => $v]) {
                $symbol = "";
            } else {
                $symbol = ",";
            }
            $keys .= "`{$k}`{$symbol} ";
            if (is_numeric($v)) {
                $values .= "{$v}{$symbol} ";
            } else {
                $values .= "'{$v}'{$symbol} ";
            }
        }
        $keys .= ") VALUES ";
        $values .= ");";

        $sql .= $keys . $values;

        return $sql;
    }
}