* @version : HUOSDK 8.0 */ namespace huo\model\ads; use huo\model\common\CommonModel; use think\Exception; use think\Log; class LtvModel extends CommonModel { protected $table = 'h_ltv_game_agent'; protected $name = 'ltv_game_agent'; /** * 获取单挑记录 * * @param string $date * @param int $app_id * @param int $agent_id * * @param int $id * * @return array|bool|null */ public function readData($date, $app_id, $agent_id, $id = 0) { $_rs = $this->checkTable(); if (false == $_rs) { return false; } if (!empty($id)) { $_map['id'] = $id; } else { $_map['date'] = $date; $_map['app_id'] = $app_id; $_map['agent_id'] = $agent_id; } $_key = $date.'_'.$app_id.'_'.$agent_id; try { $_data = $this->cache($_key)->where($_map)->find(); if (empty($_data)) { return null; } return $_data->toArray(); } catch (Exception $_e) { Log::write('ltv getData error'.$_e->getMessage(), '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 = $date.'_'.$app_id.'_'.$agent_id; try { if ($is_new) { /* 新增表示插入 */ $_rs = $this->cache($_key)->insert($data); } else { /* 更新 */ $_rs = $this->cache($_key)->update($data); } if (false === $_rs) { return false; } return true; } catch (Exception $_e) { Log::write('ltv saveData error'.$_e->getMessage(), '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 .= " `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 `lga_dategameagent_unique` (`date`,`app_id`,`agent_id`),"; $_sql .= " KEY `lga_game_index` (`app_id`),"; $_sql .= " KEY `lga_agent_index` (`agent_id`)"; $_sql .= ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='每日渠道游戏LTV统计表';"; try { $_rs = db()->execute($_sql); if (false === $_rs) { Log::write("ltv create table ".$_table_name." failed1", 'error'); return false; } return true; } catch (Exception $_e) { Log::write("ltv create table ".$_table_name." failed2", 'error'); return false; } } /** * @param array $field * @param array $where * @param string $order * @param string $limit * * @return bool|false|\PDOStatement|string|\think\Collection */ public function getList($field = array(), $where, $order = 'id desc', $limit = '1,10') { try { return $this->field($field)->where($where)->order($order)->page($limit)->select()->toArray(); } catch (Exception $_e) { Log::write("ltv get data list error ".$_e->getMessage(), 'error'); return false; } } }