MpMsgLogModel.php 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <?php
  2. /**
  3. * MpMsgLogModel.php UTF-8
  4. * 微信小程序客服消息
  5. *
  6. * @date : 2018/9/14 18:27
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HuoMp 1.0
  11. */
  12. namespace huoMpMsg\model;
  13. use huo\model\log\LogModel;
  14. class MpMsgLogModel extends LogModel {
  15. /* 数据库名 */
  16. protected $table = 'mp_log_mp_msg';
  17. /**
  18. * 插入数据
  19. *
  20. * @param $data
  21. * @param bool $replace
  22. * @param bool $get_last_insert_id
  23. *
  24. * @return bool|int|string
  25. */
  26. public function insertLog($data, $replace = false, $get_last_insert_id = true) {
  27. $_data['mp_id'] = get_val($data, 'mp_id', '');
  28. $_data['wx_msg_id'] = get_val($data, 'wx_msg_id', 0);
  29. $_data['source_id'] = get_val($data, 'source_id', '');
  30. $_data['open_id'] = get_val($data, 'open_id', '');
  31. $_data['msg_type'] = get_val($data, 'msg_type', 'text');
  32. $_data['pic_url'] = get_val($data, 'pic_url', '');
  33. $_data['media_id'] = get_val($data, 'media_id', '');
  34. $_data['title'] = get_val($data, 'title', '');
  35. $_data['mini_app_id'] = get_val($data, 'mini_app_id', '');
  36. $_data['page_path'] = get_val($data, 'page_path', '');
  37. $_data['thumb_url'] = get_val($data, 'thumb_url', '');
  38. $_data['thumb_media_id'] = get_val($data, 'thumb_media_id', '');
  39. $_data['text'] = get_val($data, 'text', '');
  40. $_data['wx_create_time'] = get_val($data, 'wx_create_time', 0);
  41. $_data['create_time'] = time();
  42. $_data['date'] = date('Y-m-d', $_data['create_time']);
  43. return parent::insertLog($_data, $replace, $get_last_insert_id);
  44. }
  45. /**
  46. * @return bool|int
  47. * @throws \think\db\exception\BindParamException
  48. * @throws \think\exception\PDOException
  49. */
  50. function checkTable() {
  51. $this->table = $this->getPartitionTableName(
  52. $this->partition_data, $this->partition_field, $this->partition_rule
  53. );
  54. $_sql = "CREATE TABLE IF NOT EXISTS `".$this->table."` (";
  55. $_sql .= " `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',";
  56. $_sql .= " `date` date NOT NULL COMMENT '日期',";
  57. $_sql .= " `wx_msg_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT 'MsgId 消息id,64位整型',";
  58. $_sql .= " `mp_id` varchar(32) NOT NULL DEFAULT '' COMMENT '小程序、公众号appid 支付商户号',";
  59. $_sql .= " `source_id` varchar(64) NOT NULL DEFAULT '0' COMMENT 'ToUserName 小程序的原始ID',";
  60. $_sql .= " `open_id` varchar(64) NOT NULL DEFAULT '' COMMENT 'FromUserName 发送者的openid',";
  61. $_sql .= " `msg_type` varchar(16) NOT NULL DEFAULT 'text' COMMENT 'MsgType 消息类型',";
  62. $_sql .= " `pic_url` varchar(255) NOT NULL DEFAULT '' COMMENT 'PicUrl 图片链接(由系统生成)',";
  63. $_sql .= " `media_id` varchar(64) NOT NULL DEFAULT '' COMMENT 'MediaId 图片消息媒体id,',";
  64. $_sql .= " `title` varchar(64) NOT NULL DEFAULT '' COMMENT 'Title 标题',";
  65. $_sql .= " `mini_app_id` varchar(64) NOT NULL DEFAULT '' COMMENT 'AppId 小程序appid',";
  66. $_sql .= " `page_path` varchar(32) NOT NULL DEFAULT '' COMMENT 'PagePath 小程序appid',";
  67. $_sql .= " `thumb_url` varchar(255) NOT NULL DEFAULT '' COMMENT 'ThumbUrl 封面图片的临时cdn链接',";
  68. $_sql .= " `thumb_media_id` varchar(255) NOT NULL DEFAULT '' COMMENT 'ThumbMediaId 封面图片的临时素材id',";
  69. $_sql .= " `text` text NOT NULL COMMENT 'Content 文本消息内容',";
  70. $_sql .= " `wx_create_time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT 'CreateTime 消息创建时间(整型)',";
  71. $_sql .= " `create_time` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',";
  72. $_sql .= " PRIMARY KEY (`id`),";
  73. $_sql .= " UNIQUE KEY `mmm_msg_unique` (`wx_msg_id`),";
  74. $_sql .= " KEY `mmm_type_index` (`msg_type`),";
  75. $_sql .= " KEY `mmm_time_index` (`wx_create_time`)";
  76. $_sql .= ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='微信小程序客服消息';";
  77. return $this->execute($_sql);
  78. }
  79. /**
  80. * 是否存在此消息
  81. *
  82. * @param integer $wx_msg_id 微信消息ID
  83. *
  84. * @return int
  85. */
  86. public function hasMsg($wx_msg_id) {
  87. $_date = date('Y-m-d');
  88. $_map['wx_msg_id'] = $wx_msg_id;
  89. $_cnt = $this->computeTable($_date)->where($_map)->count();
  90. if ($_cnt > 0) {
  91. return $_cnt;
  92. }
  93. return 0;
  94. }
  95. }