* @version : HUOSDK 8.0 */ namespace huo\model\log; class DmlSwitchModel extends LogModel { protected $name = 'ldm_switch'; /** * @param array $where * date * mem_id * app_id * * @return array|bool|false */ public function getDetail($where) { $_map['date'] = isset($where['date']) ? $where['date'] : date('Y-m-d'); $_map['mem_id'] = isset($where['mem_id']) ? $where['mem_id'] : 0; $_map['app_id'] = isset($where['app_id']) ? $where['app_id'] : 0; $_data = $this->computeTable($_map['date'])->where($_map)->find(); if (is_object($_data)) { $_data = $_data->toArray(); } if (empty($_data)) { return false; } return $_data; } /** * 计算总登陆次数 * * @param $where * * @return float|int */ public function getSumLoginCnt($where) { $_map['date'] = isset($where['date']) ? $where['date'] : date('Y-m-d'); $_map['mem_id'] = isset($where['mem_id']) ? $where['mem_id'] : 0; $_sum_login_cnt = $this->computeTable($_map['date'])->where($_map)->sum('login_cnt'); if (empty($_sum_login_cnt)) { return 0; } return $_sum_login_cnt; } /** * @param $data * @param bool $replace * @param bool $get_last_insert_id * * @return bool|int|string */ public function insertLog($data, $replace = true, $get_last_insert_id = true) { return parent::insertLog($data, $replace, $get_last_insert_id); } /** * 更新每日玩家表 * * @param array $data * * @param int $id 主键ID * * @return bool */ public function updateLog($data, $id) { $_map['id'] = $id; if (false === $this->computeTable($data['date'])->where($_map)->update($data)) { return false; } else { return true; } } /** * 删除每日玩家表 * * @param int $mem_id 玩家id * * @param string $date 日期 * * @return bool */ public function deleteLog($mem_id, $date) { $_map['date'] = $mem_id; $_map['mem_id'] = $date; if (false === $this->computeTable($date)->where($_map)->delete()) { return false; } else { return true; } } /** * 创建表 * * @return int * @throws \think\db\exception\BindParamException * @throws \think\exception\PDOException */ function checkTable() { $this->table = $this->getPartitionTableName( $this->partition_data, $this->partition_field, $this->partition_rule ); $_sql = "CREATE TABLE IF NOT EXISTS `$this->table` ("; $_sql .= " `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '',"; $_sql .= " `date` date NOT NULL COMMENT '日期',"; $_sql .= " `mem_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '玩家ID',"; $_sql .= " `agent_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '归属渠道',"; $_sql .= " `app_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '游戏ID',"; $_sql .= " `reg_time` bigint(20) NOT NULL DEFAULT '0' COMMENT '玩家注册时间',"; $_sql .= " `reg_days` int(11) NOT NULL DEFAULT '0' COMMENT '注册天数',"; $_sql .= " `role_days` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '创角天数',"; $_sql .= " `device_id` varchar(64) NOT NULL DEFAULT '' COMMENT '手机设备码',"; $_sql .= " `device_cnt` int(11) NOT NULL DEFAULT '1' COMMENT '登陆的设备个数',"; $_sql .= " `login_cnt` int(11) NOT NULL DEFAULT '1' COMMENT '登陆次数',"; $_sql .= " `sum_money` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT '累计充值',"; $_sql .= " `sum_real_money` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT '累计真实充值',"; $_sql .= " `first_pay_time` bigint(20) NOT NULL DEFAULT '0' COMMENT '第一笔充值时间',"; $_sql .= " `last_pay_time` bigint(20) NOT NULL DEFAULT '0' COMMENT '最近充值时间',"; $_sql .= " `last_money` decimal(20,2) NOT NULL DEFAULT '0.00' COMMENT '最近充值金额',"; $_sql .= " `order_cnt` int(20) unsigned NOT NULL DEFAULT '0' COMMENT '订单数量',"; $_sql .= " `order_suc_cnt` int(20) unsigned NOT NULL DEFAULT '0' COMMENT '支付成功订单数量',"; $_sql .= " `last_login_ip` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '玩家最近登陆ip',"; $_sql .= " `auth_cnt` int(11) NOT NULL DEFAULT '0' COMMENT '授权登陆次数',"; $_sql .= " `is_cpa` tinyint(4) unsigned NOT NULL DEFAULT '1' COMMENT '是否计算cpa 1 否 2是',"; $_sql .= " `is_auth` tinyint(4) unsigned NOT NULL DEFAULT '1' COMMENT '是否第三方注册 1 否 2是',"; $_sql .= " `reg_app_id` int(11) NOT NULL DEFAULT '0' COMMENT '注册游戏ID',"; $_sql .= " PRIMARY KEY (`id`),"; $_sql .= " UNIQUE KEY `ldm_date_mem_app_unique` (`date`,`mem_id`,`app_id`),"; $_sql .= " KEY `ldm_ip_index` (`last_login_ip`),"; $_sql .= " KEY `ldm_mem_index` (`mem_id`)"; $_sql .= ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='玩家每日';"; return $this->execute($_sql); } }