123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- <?php
- /**
- * MpEventMsgLogModel.php UTF-8
- * 事件消息
- *
- * @date : 2018/9/26 16:16
- *
- * @license 这不是一个自由软件,未经授权不许任何使用和传播。
- * @author : wuyonghong <wyh@huosdk.com>
- * @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;
- }
- }
|