ShareLogModel.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <?php
  2. /**
  3. * ShareLogModel.php UTF-8
  4. *
  5. *
  6. * @date : 2018/5/26 16:57
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : luowei <lw@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huo\model\posts;
  13. use huo\model\common\CommonModel;
  14. use huo\model\member\MemberModel;
  15. use huolib\constant\CommonConst;
  16. class ShareLogModel extends CommonModel {
  17. protected $name = 'share_log';
  18. // 开启自动写入时间戳字段
  19. protected $autoWriteTimestamp = true;
  20. public function mem() {
  21. return $this->belongsTo(MemberModel::className(), 'id', 'mem_id');
  22. }
  23. /**
  24. * 添加分享日志
  25. *
  26. * @param $data
  27. *
  28. * @param bool $replace
  29. * @param bool $get_last_insert_id
  30. *
  31. * @return bool|mixed
  32. */
  33. public function insertLog($data, $replace = false, $get_last_insert_id = true) {
  34. $_data['id'] = get_val($data, "id", "");
  35. $_data['mem_id'] = get_val($data, "mem_id", 0);
  36. $_data['to_target'] = get_val($data, "to_target", "");
  37. $_data['device_id'] = get_val($data, "device_id", "");
  38. $_data['mac'] = get_val($data, "mac", "");
  39. $_data['ip'] = get_val($data, "ip", "");
  40. $_data['brand'] = get_val($data, "brand", "");
  41. $_data['model'] = get_val($data, "model", "");
  42. $_data['os'] = get_val($data, "os", "");
  43. $_data['os_version'] = get_val($data, "os_version", "");
  44. $_data['screen'] = get_val($data, "screen", "");
  45. $_data['net'] = get_val($data, "net", "");
  46. $_data['imsi'] = get_val($data, "imsi", "");
  47. $_data['longitude'] = get_val($data, "longitude", "");
  48. $_data['latitude'] = get_val($data, "latitude", "");
  49. $_data['userua'] = get_val($data, "userua", "");
  50. $_data['from'] = get_val($data, "from", "");
  51. $_data['create_time'] = get_val($data, "create_time", "");
  52. $_data['title'] = get_val($data, "title", "");
  53. $_data['content'] = get_val($data, "content", "");
  54. $_data['url'] = get_val($data, "url", "");
  55. $_data['table_name'] = get_val($data, "table_name", "");
  56. $_data['object_id'] = get_val($data, "object_id", "");
  57. $_data['more'] = get_val($data, "more", "");
  58. // $this->checkTable();
  59. return parent::insertLog($_data, $replace, $get_last_insert_id);
  60. }
  61. /**
  62. * @return int
  63. * @throws \think\db\exception\BindParamException
  64. * @throws \think\exception\PDOException
  65. */
  66. private function checkTable() {
  67. $_date = date('Ym');
  68. $this->table = $this->table_prefix.$_date;
  69. $_sql = "CREATE TABLE IF NOT EXISTS `$this->table` (";
  70. $_sql .= " `id` bigint(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',";
  71. $_sql .= " `mem_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '分享用户id',";
  72. $_sql .= " `app_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '游戏ID',";
  73. $_sql .= " `to_target` varchar(8) NOT NULL DEFAULT '' COMMENT 'weibo wx wxp qq',";
  74. $_sql .= " `device_id` varchar(64) NOT NULL DEFAULT '' COMMENT '手机设备码',";
  75. $_sql .= " `mac` varchar(32) NOT NULL DEFAULT '' COMMENT '设备的mac',";
  76. $_sql .= " `ip` varchar(32) NOT NULL DEFAULT '' COMMENT '设备网络IP地址',";
  77. $_sql .= " `brand` varchar(16) NOT NULL DEFAULT '' COMMENT '设备品牌',";
  78. $_sql .= " `model` varchar(16) NOT NULL DEFAULT '' COMMENT '机型',";
  79. $_sql .= " `os` varchar(8) NOT NULL DEFAULT '' COMMENT '操作系统',";
  80. $_sql .= " `os_version` varchar(16) NOT NULL DEFAULT '' COMMENT '操作系统版本',";
  81. $_sql .= " `screen` varchar(16) NOT NULL DEFAULT '' COMMENT '分辨率',";
  82. $_sql .= " `net` varchar(8) NOT NULL DEFAULT '' COMMENT '3G,4G,WIFI',";
  83. $_sql .= " `imsi` varchar(16) NOT NULL DEFAULT '' COMMENT '设备的imsi',";
  84. $_sql .= " `longitude` varchar(32) NOT NULL DEFAULT '' COMMENT '经度',";
  85. $_sql .= " `latitude` varchar(32) NOT NULL DEFAULT '' COMMENT '纬度',";
  86. $_sql .= " `userua` varchar(255) NOT NULL DEFAULT '' COMMENT '用户使用的移动终端的UA信息',";
  87. $_sql .= " `from` tinyint(2) NOT NULL DEFAULT '0' COMMENT '3 ANDROID、4 IOS、5 H5',";
  88. $_sql .= " `create_time` bigint(20) NOT NULL DEFAULT '0' COMMENT '分享时间',";
  89. $_sql .= " `title` char(140) DEFAULT '' COMMENT '分享标题',";
  90. $_sql .= " `content` char(140) DEFAULT '' COMMENT '分享内容',";
  91. $_sql .= " `url` varchar(255) DEFAULT '' COMMENT '分享URL',";
  92. $_sql .= " PRIMARY KEY (`id`),";
  93. $_sql .= " KEY `sl_time_index` (`create_time`),";
  94. $_sql .= " KEY `sh_mem_index` (`mem_id`)";
  95. $_sql .= ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='玩家分享表';";
  96. return $this->execute($_sql);
  97. }
  98. /**
  99. * 获取玩家今日的分享记录
  100. *
  101. * @param $mem_id
  102. * @param $to_target
  103. *
  104. * @return array|bool|false|\PDOStatement|string|\think\Model
  105. * @throws \think\Exception
  106. * @throws \think\db\exception\DataNotFoundException
  107. * @throws \think\db\exception\ModelNotFoundException
  108. * @throws \think\exception\DbException
  109. */
  110. public function getTodayShareLog($mem_id, $to_target) {
  111. $_map = [
  112. 'mem_id' => $mem_id,
  113. 'to_target' => $to_target,
  114. 'create_time' => ['between',
  115. [strtotime(date('Y-m-d')), CommonConst::CONST_DAY_SECONDS + strtotime(date('Y-m-d'))]],
  116. ];
  117. $_field = 'mem_id,create_time,to_target,title,content,url';
  118. $_data = $this->field($_field)->where($_map)->find();
  119. if (is_object($_data)) {
  120. return $_data->toArray();
  121. }
  122. return null;
  123. }
  124. }