* @version : HuoMp 1.0 */ namespace huoMpMsg\model; use huo\model\log\LogModel; class MpEventMsgLogModel extends LogModel { /* 数据库名 */ protected $table = 'mp_log_mp_event_msg'; /** * 插入数据 * * @param $data * @param bool $replace * @param bool $get_last_insert_id * * @return bool|int|string */ public function insertLog($data, $replace = false, $get_last_insert_id = true) { $_data['mp_id'] = get_val($data, 'mp_id', ''); $_data['source_id'] = get_val($data, 'source_id', ''); $_data['open_id'] = get_val($data, 'open_id', ''); $_data['msg_type'] = get_val($data, 'msg_type', 'event'); $_data['event'] = get_val($data, 'event', ''); $_data['event_key'] = get_val($data, 'event_key', ''); $_data['ticket'] = get_val($data, 'ticket', ''); $_data['latitude'] = get_val($data, 'latitude', ''); $_data['longitude'] = get_val($data, 'longitude', ''); $_data['precision'] = get_val($data, 'precision', ''); $_data['wx_create_time'] = get_val($data, 'wx_create_time', 0); $_data['create_time'] = time(); $_data['date'] = date('Y-m-d', $_data['create_time']); return parent::insertLog($_data, $replace, $get_last_insert_id); } /** * @return bool|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) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',"; $_sql .= " `date` date NOT NULL COMMENT '日期',"; $_sql .= " `mp_id` varchar(32) NOT NULL DEFAULT '' COMMENT '小程序、公众号appid 支付商户号',"; $_sql .= " `source_id` varchar(64) NOT NULL DEFAULT '0' COMMENT 'ToUserName 小程序的原始ID',"; $_sql .= " `open_id` varchar(64) NOT NULL DEFAULT '' COMMENT 'FromUserName 发送者的openid',"; $_sql .= " `msg_type` varchar(16) NOT NULL DEFAULT 'text' COMMENT 'MsgType 消息类型',"; $_sql .= " `event` varchar(64) NOT NULL DEFAULT 'text' COMMENT 'MsgType 事件类型',"; $_sql .= " `event_key` varchar(255) NOT NULL DEFAULT '' COMMENT '事件KEY值',"; $_sql .= " `ticket` varchar(64) NOT NULL DEFAULT '' COMMENT '二维码的ticket',"; $_sql .= " `latitude` varchar(64) NOT NULL DEFAULT '' COMMENT '地理位置纬度',"; $_sql .= " `longitude` varchar(64) NOT NULL DEFAULT '' COMMENT '地理位置经度',"; $_sql .= " `precision` varchar(64) NOT NULL DEFAULT '' COMMENT '地理位置精度',"; $_sql .= " `wx_create_time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT 'CreateTime 消息创建时间(整型)',"; $_sql .= " `create_time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',"; $_sql .= " PRIMARY KEY (`id`),"; $_sql .= " KEY `lmem_event_index` (`event`),"; $_sql .= " UNIQUE KEY `lmem_time_index` (`open_id`,`wx_create_time`)"; $_sql .= ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='微信事件消息';"; return $this->execute($_sql); } /** * 是否存在此消息 * * @param $open_id * @param string $wx_create_time * @param string $date 日期 * * @return int */ public function hasMsg($open_id, $wx_create_time = '', $date = '') { if (empty($open_id) || empty($wx_create_time)) { return 0; } $_date = $date; if (empty($date)) { $_date = date('Y-m-d'); } $_map['open_id'] = $open_id; $_map['wx_create_time'] = $wx_create_time; $_cnt = $this->computeTable($_date)->where($_map)->count(); if ($_cnt > 0) { return $_cnt; } return 0; } }