123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- <?php
- /**
- * LtvModel.php UTF-8
- *
- *
- * @date : 2018/3/26 14:02
- *
- * @license 这不是一个自由软件,未经授权不许任何使用和传播。
- * @author : wuyonghong <wyh@huosdk.com>
- * @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']);
- }
- }
|