InstallController.class.php 6.11 KB
<?php
/**
 * 应用安装时的消息回调
 * User: zhuxun37
 * Date: 16/8/11
 * Time: 下午3:44
 */

namespace Frontend\Controller\Callback;

use Common\Service\SettingService;
use Think\Log;

class InstallController extends AbstractController
{
    /**
     * 应用状态,可用
     */
    const PLUGIN_STATE_AVAILABLE = 1;

    /**
     * 应用状态,不可用
     */
    const PLUGIN_STATE_UNAVAILABLE = 2;

    // 实例化设置表
    /** @var SettingService */
    protected $setting_serv;

    public function __construct()
    {
        parent::__construct();

        $this->setting_serv = new SettingService();

        return true;

    }

    /**
     * 安装消息回调
     *
     * $this->callBackData 格式如下:
     * {
     *   "epId":"B646C6F67F0000017D3965FCF2FD3A2F",
     *   "plPluginid":"D194A216C0A8C7BD2C339C03334A40EE",
     *   "thirdIdentifier":"QY",
     *   "eplAvailable":1,
     *   "epEnumber":"local",
     *   "qysSuiteid":"tj371afbea374f01b2",
     *   "flag":false,
     *   "corpid": "wxac606454f473e98f",
     *   "url":"http://thr.vchangyi.com/local/Contact/Frontend/Callback/Install"
     * }
     *
     * @return bool
     */
    public function Index()
    {

        Log::record(sprintf('---%s %s INSTALL START---', QY_DOMAIN, APP_IDENTIFIER), Log::INFO);
        Log::record(var_export($this->callBackData, true), Log::INFO);
        Log::record(sprintf('---%s %s INSTALL END ---', QY_DOMAIN, APP_IDENTIFIER), Log::INFO);

        $this->Install();
        exit('SUCCESS');
    }

    /**
     * 安装应用
     * @author liyifei
     * @return void
     */
    public function Install()
    {
        $this->setDefaultData();

        exit('SUCCESS');
    }

    /**
     * 卸载应用
     * @author zhonglei
     * @return void
     */
    public function Uninstall()
    {
    }

    protected function setDefaultData()
    {

        $settingServ = new SettingService();
        $count = $settingServ->count();

        if ($count > 0) {
            return;
        }

        // 默认配置信息
        $defaultData = \Common\Sql\DefaultData::installData();

        $settingServ->insert_all($defaultData['workmate_config_default']);

    }

    /**
     * 应用数据库数据更新升级【v3.0.0】
     *
     * @author heyuelong
     *
     * @return void
     */
    public function UpdateDBv3()
    {

        set_time_limit(0);
        ini_set("memory_limit", "1128M");
        $sql = [];

        // 新增同事圈回复,被回复统计信息表
        $sql[] = "CREATE TABLE IF NOT EXISTS `oa_workmate_count` (
          `id` INT(10) NOT NULL AUTO_INCREMENT,
          `uid` CHAR(32) NOT NULL DEFAULT '' COMMENT '用户ID',
          `replies_total` INT(10) NOT NULL DEFAULT '0' COMMENT '话题被回复次数',
          `replies_num` INT(10) NOT NULL DEFAULT '0' COMMENT '话题被回复个数',
          `reply_total` INT(10) NOT NULL DEFAULT '0' COMMENT '回复话题次数',
          `reply_num` INT(10) NOT NULL DEFAULT '0' COMMENT '回复话题个数',
          `circle_total` INT(10) NOT NULL DEFAULT '0' COMMENT '发布话题数',
          `domain` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '企业域名',
          `status` TINYINT(3) UNSIGNED NOT NULL DEFAULT '1' COMMENT '状态, 1=初始化,2=已更新,3=已删除',
          `created` BIGINT(13) UNSIGNED NOT NULL DEFAULT '0' COMMENT '创建时间',
          `updated` BIGINT(13) UNSIGNED NOT NULL DEFAULT '0' COMMENT '更新时间',
          `deleted` BIGINT(13) UNSIGNED NOT NULL DEFAULT '0' COMMENT '删除时间',
          PRIMARY KEY (`id`),
          KEY `uid` (`uid`),
          KEY `domain_status` (`domain`,`status`)
        ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COMMENT='同事圈回复,被回复统计信息表' AUTO_INCREMENT=1;";


        // 新增同事圈积分日志表
        $sql[] = "CREATE TABLE IF NOT EXISTS `oa_workmate_log` (
          `id` INT(10) NOT NULL AUTO_INCREMENT,
          `uid` CHAR(32) NOT NULL DEFAULT '' COMMENT '用户ID',
          `pid` INT(10) NOT NULL DEFAULT '0' COMMENT '话题ID',
          `businessId` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '业务ID',
          `domain` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '企业域名',
          `status` TINYINT(3) UNSIGNED NOT NULL DEFAULT '1' COMMENT '状态, 1=初始化,2=已更新,3=已删除',
          `created` BIGINT(13) UNSIGNED NOT NULL DEFAULT '0' COMMENT '创建时间',
          `updated` BIGINT(13) UNSIGNED NOT NULL DEFAULT '0' COMMENT '更新时间',
          `deleted` BIGINT(13) UNSIGNED NOT NULL DEFAULT '0' COMMENT '删除时间',
          PRIMARY KEY (`id`),
          KEY `businessId` (`businessId`),
          KEY `domain_status` (`domain`,`status`)
        ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COMMENT='同事圈积分日志表' AUTO_INCREMENT=1;";

        $sql[]="CREATE TABLE IF NOT EXISTS `oa_workmate_history` (
          `id` INT(10) NOT NULL AUTO_INCREMENT,
          `uid` CHAR(32) NOT NULL DEFAULT '' COMMENT '用户ID',
          `pid` INT(10) NOT NULL DEFAULT '0' COMMENT '话题ID',
          `type` TINYINT(3) UNSIGNED NOT NULL DEFAULT '1' COMMENT '回复类型, 1:话题被回复, 2:回复话题',
          `post_man` CHAR(32) NOT NULL DEFAULT '' COMMENT '回帖人UID',
          `domain` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '企业域名',
          `status` TINYINT(3) UNSIGNED NOT NULL DEFAULT '1' COMMENT '状态, 1=初始化,2=已更新,3=已删除',
          `created` BIGINT(13) UNSIGNED NOT NULL DEFAULT '0' COMMENT '创建时间',
          `updated` BIGINT(13) UNSIGNED NOT NULL DEFAULT '0' COMMENT '更新时间',
          `deleted` BIGINT(13) UNSIGNED NOT NULL DEFAULT '0' COMMENT '删除时间',
          PRIMARY KEY (`id`),
          KEY `uid` (`uid`),
          KEY `pid` (`pid`),
          KEY `type` (`type`),
          KEY `domain_status` (`domain`,`status`)
        ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COMMENT='同事圈话题被回复,回复话题日志表' AUTO_INCREMENT=1;";

        if (!empty($sql)) {
            // 循环执行sql更新语句
            foreach ($sql as $key => $value) {
                $this->setting_serv->execute($value);
            }
        }

        exit('SUCCESS');
    }

}