<?php /** * Created by PhpStorm. * User: liyifei2012it * Date: 17/8/14 * Time: 17:50 */ namespace Frontend\Controller\UpdateDB; use Think\Model; class IntegralController extends AbstractController { /** * 积分策略版本迭代,数据库升级脚本 * @author liyifei * @date 2017-08-15 */ 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 * 1、修改oa_news_article表,增加strategy_setting、strategys字段,记录积分策略设置及策略数据; * 2、新增oa_news_user_action表,记录用户积分埋点动作; * @author liyifei * @return string */ private function _updateSql() { $modelServ = new Model(); $articleSql = "select * from `oa_news_article`"; $article = $modelServ->fetch_row($articleSql); $alterSql = ''; // 修改oa_news_article表,增加strategy_setting字段,记录积分策略设置 if (!isset($article['strategy_setting'])) { $alterSql .= "ALTER TABLE `oa_news_article` ADD COLUMN `strategy_setting` TINYINT(1) NOT NULL DEFAULT 2 COMMENT '积分策略设置(1=启用默认策略;2=不启用策略;3=自定义策略)' AFTER `like_total`;"; } // 修改oa_news_article表,增加strategys字段,记录积分策略数据 if (!isset($article['strategys'])) { $alterSql .= "ALTER TABLE `oa_news_article` ADD COLUMN `strategys` TEXT NOT NULL COMMENT '自定义策略数据' AFTER `strategy_setting`;"; } // 新增oa_news_user_action表,记录用户积分埋点动作 $alterSql .= " CREATE TABLE IF NOT EXISTS `oa_news_user_action` ( `user_action_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `uid` char(32) NOT NULL COMMENT '用户ID', `data_id` int(10) NOT NULL COMMENT '数据ID', `action_key` varchar(50) NOT NULL COMMENT '动作Key', `domain` char(32) NOT NULL COMMENT '企业域名', `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '数据状态(1=新创建;2=已更新;3=已删除)', `created` bigint(20) NOT NULL DEFAULT '0' COMMENT '创建时间', `updated` bigint(20) NOT NULL DEFAULT '0' COMMENT '更新时间', `deleted` bigint(20) NOT NULL DEFAULT '0' COMMENT '删除时间', PRIMARY KEY (`user_action_id`), KEY `uid` (`uid`,`action_key`,`data_id`), KEY `domain` (`domain`), KEY `status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户动作表'; "; return $alterSql; } }