* @version : HUOSDK 8.0 */ namespace ltv; use huolib\constant\CacheConst; use think\Exception; use think\Log; use think\Model; class LtvModel extends Model { protected $table = 'h_ltv_game_agent'; protected $cache_key = CacheConst::CACHE_LTV_INFO_BY_DAA_PREFIX; //通过date-app_id-agent_id 获取ltv缓存key /** * 通过date-app_id-agent_id 获取ltv缓存key * * @param string $date 日期 * @param int $app_id 应用id * @param int $agent_id 渠道id * * @return string */ protected function getCacheKeyByDateAppIdAgentId($date, $app_id, $agent_id) { return $this->cache_key.$date.'_'.$app_id.'_'.$agent_id; } /** * 获取单挑记录 * * @param string $date 日期 * @param int $app_id 应用id * @param int $agent_id 渠道id * * @return bool|array */ public function getInfoByDateAppIdAgentId($date, $app_id, $agent_id) { $_rs = $this->checkTable(); if (false == $_rs) { return false; } // $_key = $this->getCacheKeyByDateAppIdAgentId($date, $app_id, $agent_id); $_map['date'] = $date; $_map['app_id'] = $app_id; $_map['agent_id'] = $agent_id; try { $_data = $this->where($_map)->find();//->cache($_key) if (is_object($_data)) { $_data = $_data->toArray(); } return $_data; } catch (Exception $_e) { Log::write( 'line='.__LINE__.'&func='.__FUNCTION__.'&class='.__CLASS__.'¶m='.json_encode( array($date, $app_id, $agent_id) ).'&msg=ltv getData error '.$_e->getMessage(), Log::ERROR ); return false; } } /** * 更新数据 * * @param string $date * @param int $app_id * @param int $agent_id * @param array $data * @param bool $is_new * * @return bool */ public function saveData($date, $app_id, $agent_id, $data, $is_new = false) { $_rs = $this->checkTable(); if (false == $_rs) { return false; } $_map['date'] = $date; $_map['app_id'] = $app_id; $_map['agent_id'] = $agent_id; // $_key = $this->getCacheKeyByDateAppIdAgentId($date, $app_id, $agent_id); try { if ($is_new) { /* 新增表示插入 */ $_rs = $this->insert($data);//->cache($_key) } else { /* 更新 */ $_rs = $this->update($data, $_map);//->cache($_key) } if (false === $_rs) { return false; } return true; } catch (Exception $_e) { Log::write( 'line='.__LINE__.'&func='.__FUNCTION__.'&class='.__CLASS__.'¶m='.json_encode( array($date, $app_id, $agent_id, $data, $is_new) ).'&msg=ltv savData error '.$_e->getMessage(), Log::ERROR ); return false; } } /** * @return bool */ private function checkTable() { $_table_name = $this->table; $_sql = ''; $_sql .= "CREATE TABLE IF NOT EXISTS `".$_table_name."` ("; $_sql .= " `id` int(11) NOT NULL AUTO_INCREMENT,"; $_sql .= " `date` date NOT NULL COMMENT '日期',"; $_sql .= " `app_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '游戏ID',"; $_sql .= " `agent_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '渠道ID',"; $_sql .= " `ads_id` smallint(3) unsigned NOT NULL DEFAULT '0' COMMENT '1 CPA 2 CPS 3 CPC',"; $_sql .= " `costs` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '花费', "; $_sql .= " `reg_cnt` int(11) NOT NULL DEFAULT '0' COMMENT '注册玩家数',"; $_sql .= " `reg_device_cnt` int(11) NOT NULL DEFAULT '0' COMMENT '新增设备数',"; $_sql .= " `sum_money` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '充值金额',"; $_sql .= " `day1` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '1日充值金额',"; $_sql .= " `day2` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '2日充值金额',"; $_sql .= " `day3` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '3日充值金额',"; $_sql .= " `day4` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '4日充值金额',"; $_sql .= " `day5` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '5日充值金额',"; $_sql .= " `day6` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '6日充值金额',"; $_sql .= " `day7` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '7日充值金额',"; $_sql .= " `day8` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '8日充值金额',"; $_sql .= " `day9` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '9日充值金额',"; $_sql .= " `day10` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '10日充值金额',"; $_sql .= " `day11` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '11日充值金额',"; $_sql .= " `day12` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '12日充值金额',"; $_sql .= " `day13` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '13日充值金额',"; $_sql .= " `day14` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '14日充值金额',"; $_sql .= " `day15` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '15日充值金额',"; $_sql .= " `day16` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '16日充值金额',"; $_sql .= " `day17` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '17日充值金额',"; $_sql .= " `day18` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '18日充值金额',"; $_sql .= " `day19` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '19日充值金额',"; $_sql .= " `day20` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '20日充值金额',"; $_sql .= " `day21` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '21日充值金额',"; $_sql .= " `day22` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '22日充值金额',"; $_sql .= " `day23` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '23日充值金额',"; $_sql .= " `day24` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '24日充值金额',"; $_sql .= " `day25` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '25日充值金额',"; $_sql .= " `day26` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '26日充值金额',"; $_sql .= " `day27` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '27日充值金额',"; $_sql .= " `day28` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '28日充值金额',"; $_sql .= " `day29` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '29日充值金额',"; $_sql .= " `day30` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '30日充值金额',"; $_sql .= " `day31` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '31日充值金额',"; $_sql .= " `day32` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '32日充值金额',"; $_sql .= " `day33` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '33日充值金额',"; $_sql .= " `day34` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '34日充值金额',"; $_sql .= " `day35` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '35日充值金额',"; $_sql .= " `day36` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '36日充值金额',"; $_sql .= " `day37` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '37日充值金额',"; $_sql .= " `day38` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '38日充值金额',"; $_sql .= " `day39` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '39日充值金额',"; $_sql .= " `day40` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '40日充值金额',"; $_sql .= " `day41` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '41日充值金额',"; $_sql .= " `day42` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '42日充值金额',"; $_sql .= " `day43` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '43日充值金额',"; $_sql .= " `day44` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '44日充值金额',"; $_sql .= " `day45` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '45日充值金额',"; $_sql .= " `day46` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '46日充值金额',"; $_sql .= " `day47` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '47日充值金额',"; $_sql .= " `day48` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '48日充值金额',"; $_sql .= " `day49` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '49日充值金额',"; $_sql .= " `day50` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '50日充值金额',"; $_sql .= " `day51` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '51日充值金额',"; $_sql .= " `day52` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '52日充值金额',"; $_sql .= " `day53` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '53日充值金额',"; $_sql .= " `day54` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '54日充值金额',"; $_sql .= " `day55` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '55日充值金额',"; $_sql .= " `day56` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '56日充值金额',"; $_sql .= " `day57` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '57日充值金额',"; $_sql .= " `day58` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '58日充值金额',"; $_sql .= " `day59` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '59日充值金额',"; $_sql .= " `day60` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '60日充值金额',"; $_sql .= " `day90` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '90日充值金额',"; $_sql .= " `day120` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '120日充值金额',"; $_sql .= " `day180` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '180日充值金额',"; $_sql .= " `day270` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '270日充值金额',"; $_sql .= " `day360` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '360日充值金额',"; $_sql .= " PRIMARY KEY (`id`),"; $_sql .= " UNIQUE KEY `ldga_dgc_unique` (`date`,`app_id`,`agent_id`),"; $_sql .= " KEY `ldga_game_index` (`app_id`),"; $_sql .= " KEY `ldga_ch_index` (`agent_id`)"; $_sql .= ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='每日渠道游戏LTV统计表';"; try { $_rs = db()->execute($_sql); if (false === $_rs) { Log::write( 'line='.__LINE__.'&func='.__FUNCTION__.'&class='.__CLASS__."ltv create table ".$_table_name ." failed1", Log::ERROR ); return false; } return true; } catch (Exception $_e) { Log::write( 'line='.__LINE__.'&func='.__FUNCTION__.'&class='.__CLASS__."ltv create table ".$_table_name ." failed2", Log::ERROR ); return false; } } /*** * 关联渠道 */ public function ch() { return $this->hasOne('huo\model\user\UserModel', 'id', 'agent_id') ->field(['id', 'user_login']); } /** * 关联游戏 */ public function game() { return $this->hasOne('huo\model\game\GameModel', 'id', 'app_id') ->field(['id', 'name']); } }