<?php /** * 应用安装时的消息回调 * User: zhuxun37 * Date: 16/8/11 * Time: 下午3:44 */ namespace Frontend\Controller\Callback; use Common\Service\ActivityService; use Think\Log; class InstallController extends AbstractController { /** * 应用状态,可用 */ const PLUGIN_STATE_AVAILABLE = 1; /** * 应用状态,不可用 */ const PLUGIN_STATE_UNAVAILABLE = 2; // 活动主表 /** @var ActivityService */ protected $activity_serv; public function __construct() { parent::__construct(); // 实例化活动表 $this->activity_serv = new ActivityService(); } /** * 安装消息回调 * * $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() { exit('SUCCESS'); } /** * 卸载应用 * @author zhonglei * @return void */ public function Uninstall() { exit('SUCCESS'); } /** * 应用数据库数据更新升级【v3.0.0】 * * @author heyuelong * * @return void */ public function UpdateDBv3() { set_time_limit(0); ini_set("memory_limit", "1128M"); $sql = array(); // 活动中心主表 $pes = $this->activity_serv->query("SHOW FIELDS FROM oa_activity_activity"); $field = array_column($pes, 'field'); if (!in_array('integral_action_type', $field)) { // 新增策略类型字段 $sql[] = "ALTER TABLE oa_activity_activity add integral_action_type TINYINT(3) UNSIGNED NOT NULL DEFAULT '1' COMMENT '积分策略(1:启用默认,2:不启用,3:启用自定义策略)'"; } if (!in_array('integral_strategyid', $field)) { // 新增策略id字段 $sql[] = "ALTER TABLE oa_activity_activity add integral_strategyid varchar(255) NOT NULL DEFAULT '' COMMENT '积分策略ID集合(逗号分隔)'"; } if (!in_array('floor', $field)) { // 新增楼层字段 $sql[] = "ALTER TABLE oa_activity_activity add floor INT (11) NOT NULL DEFAULT '0' COMMENT '楼层'"; } // 回复表 $pes_commit = $this->activity_serv->query("SHOW FIELDS FROM oa_activity_comment"); $commit_field = array_column($pes_commit, 'field'); // 回复楼层字段 if (!in_array('sort', $commit_field)) { $sql[] = "ALTER TABLE oa_activity_comment add `sort` INT(10) NOT NULL DEFAULT '0' COMMENT '排序'"; } // 新增活动回复,被回复统计信息表 $sql[] = "CREATE TABLE IF NOT EXISTS `oa_activity_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 '回复活动数', `answer_total` INT(10) NOT NULL DEFAULT '0' COMMENT '回复次数', `answer_num` 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_activity_history` ( `id` INT(10) NOT NULL AUTO_INCREMENT, `uid` CHAR(32) NOT NULL DEFAULT '' COMMENT '用户ID', `ac_id` INT (10) NOT NULL DEFAULT '0' COMMENT '话题ID', `pid` INT(10) NOT NULL DEFAULT '0' COMMENT '帖子ID', `type` TINYINT(3) UNSIGNED NOT NULL DEFAULT '1' COMMENT '回复类型, 1:回复活动类型, 2:回帖被回复,3.被回复帖子', `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 `post_man` (`post_man`), KEY `pid` (`pid`), KEY `domain_status` (`domain`,`status`) ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COMMENT='同事圈话题被回复,回复话题日志表' AUTO_INCREMENT=1;"; // 新增活动积分日志表 $sql[] = "CREATE TABLE IF NOT EXISTS `oa_activity_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 `uid` (`uid`), KEY `businessId` (`businessId`), KEY `domain_status` (`domain`,`status`) ) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COMMENT='活动积分日志表' AUTO_INCREMENT=1;"; if (!empty($sql)) { // 循环执行sql更新语句 foreach ($sql as $key => $value) { $this->activity_serv->execute($value); } } exit('SUCCESS'); } }