* @version : HUOSDK 8.0 */ namespace huo\model\posts; use huo\model\common\CommonModel; use huo\model\member\MemberModel; use huolib\constant\CommonConst; class ShareLogModel extends CommonModel { protected $name = 'share_log'; // 开启自动写入时间戳字段 protected $autoWriteTimestamp = true; public function mem() { return $this->belongsTo(MemberModel::className(), 'id', 'mem_id'); } /** * 添加分享日志 * * @param $data * * @param bool $replace * @param bool $get_last_insert_id * * @return bool|mixed */ public function insertLog($data, $replace = false, $get_last_insert_id = true) { $_data['id'] = get_val($data, "id", ""); $_data['mem_id'] = get_val($data, "mem_id", 0); $_data['to_target'] = get_val($data, "to_target", ""); $_data['device_id'] = get_val($data, "device_id", ""); $_data['mac'] = get_val($data, "mac", ""); $_data['ip'] = get_val($data, "ip", ""); $_data['brand'] = get_val($data, "brand", ""); $_data['model'] = get_val($data, "model", ""); $_data['os'] = get_val($data, "os", ""); $_data['os_version'] = get_val($data, "os_version", ""); $_data['screen'] = get_val($data, "screen", ""); $_data['net'] = get_val($data, "net", ""); $_data['imsi'] = get_val($data, "imsi", ""); $_data['longitude'] = get_val($data, "longitude", ""); $_data['latitude'] = get_val($data, "latitude", ""); $_data['userua'] = get_val($data, "userua", ""); $_data['from'] = get_val($data, "from", ""); $_data['create_time'] = get_val($data, "create_time", ""); $_data['title'] = get_val($data, "title", ""); $_data['content'] = get_val($data, "content", ""); $_data['url'] = get_val($data, "url", ""); $_data['table_name'] = get_val($data, "table_name", ""); $_data['object_id'] = get_val($data, "object_id", ""); $_data['more'] = get_val($data, "more", ""); // $this->checkTable(); return parent::insertLog($_data, $replace, $get_last_insert_id); } /** * @return int * @throws \think\db\exception\BindParamException * @throws \think\exception\PDOException */ private function checkTable() { $_date = date('Ym'); $this->table = $this->table_prefix.$_date; $_sql = "CREATE TABLE IF NOT EXISTS `$this->table` ("; $_sql .= " `id` bigint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',"; $_sql .= " `mem_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '分享用户id',"; $_sql .= " `app_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '游戏ID',"; $_sql .= " `to_target` varchar(8) NOT NULL DEFAULT '' COMMENT 'weibo wx wxp qq',"; $_sql .= " `device_id` varchar(64) NOT NULL DEFAULT '' COMMENT '手机设备码',"; $_sql .= " `mac` varchar(32) NOT NULL DEFAULT '' COMMENT '设备的mac',"; $_sql .= " `ip` varchar(32) NOT NULL DEFAULT '' COMMENT '设备网络IP地址',"; $_sql .= " `brand` varchar(16) NOT NULL DEFAULT '' COMMENT '设备品牌',"; $_sql .= " `model` varchar(16) NOT NULL DEFAULT '' COMMENT '机型',"; $_sql .= " `os` varchar(8) NOT NULL DEFAULT '' COMMENT '操作系统',"; $_sql .= " `os_version` varchar(16) NOT NULL DEFAULT '' COMMENT '操作系统版本',"; $_sql .= " `screen` varchar(16) NOT NULL DEFAULT '' COMMENT '分辨率',"; $_sql .= " `net` varchar(8) NOT NULL DEFAULT '' COMMENT '3G,4G,WIFI',"; $_sql .= " `imsi` varchar(16) NOT NULL DEFAULT '' COMMENT '设备的imsi',"; $_sql .= " `longitude` varchar(32) NOT NULL DEFAULT '' COMMENT '经度',"; $_sql .= " `latitude` varchar(32) NOT NULL DEFAULT '' COMMENT '纬度',"; $_sql .= " `userua` varchar(255) NOT NULL DEFAULT '' COMMENT '用户使用的移动终端的UA信息',"; $_sql .= " `from` tinyint(2) NOT NULL DEFAULT '0' COMMENT '3 ANDROID、4 IOS、5 H5',"; $_sql .= " `create_time` bigint(20) NOT NULL DEFAULT '0' COMMENT '分享时间',"; $_sql .= " `title` char(140) DEFAULT '' COMMENT '分享标题',"; $_sql .= " `content` char(140) DEFAULT '' COMMENT '分享内容',"; $_sql .= " `url` varchar(255) DEFAULT '' COMMENT '分享URL',"; $_sql .= " PRIMARY KEY (`id`),"; $_sql .= " KEY `sl_time_index` (`create_time`),"; $_sql .= " KEY `sh_mem_index` (`mem_id`)"; $_sql .= ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='玩家分享表';"; return $this->execute($_sql); } /** * 获取玩家今日的分享记录 * * @param $mem_id * @param $to_target * * @return array|bool|false|\PDOStatement|string|\think\Model * @throws \think\Exception * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException */ public function getTodayShareLog($mem_id, $to_target) { $_map = [ 'mem_id' => $mem_id, 'to_target' => $to_target, 'create_time' => ['between', [strtotime(date('Y-m-d')), CommonConst::CONST_DAY_SECONDS + strtotime(date('Y-m-d'))]], ]; $_field = 'mem_id,create_time,to_target,title,content,url'; $_data = $this->field($_field)->where($_map)->find(); if (is_object($_data)) { return $_data->toArray(); } return null; } }