HomepageLogModel.php 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. <?php
  2. /**
  3. * HomepageLogModel.php UTF-8
  4. * 玩家主页访问记录模型
  5. *
  6. * @date : 2018/8/15 21:51
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : luowei <lw@huosdk.com>
  10. * @version : HuoMP 1.0
  11. */
  12. namespace huomp\model\log;
  13. use huo\model\log\LogModel;
  14. use huo\model\member\MemberModel;
  15. use huomp\model\homepage\HpVisitorModel;
  16. class HomepageLogModel extends LogModel {
  17. /* 数据库名 */
  18. protected $table = 'mp_log_homepage';
  19. /**
  20. * 关联访问者
  21. *
  22. * @return \think\model\relation\BelongsTo
  23. */
  24. public function visitor() {
  25. return $this->belongsTo(MemberModel::className(), 'mem_id', 'id')->field('id,username,nickname,avatar');
  26. }
  27. /**
  28. * 插入数据
  29. *
  30. * @param $data
  31. * @param bool $replace
  32. * @param bool $get_last_insert_id
  33. *
  34. * @return bool|int|string
  35. */
  36. public function insertLog($data, $replace = false, $get_last_insert_id = true) {
  37. $_data['mem_id'] = get_val($data, 'mem_id', 0);
  38. $_data['homepage_id'] = get_val($data, 'homepage_id', 0);
  39. $_data['agent_id'] = get_val($data, 'agent_id', 0);
  40. $_data['agent_game'] = get_val($data, 'agent_game', '');
  41. $_data['app_id'] = get_val($data, 'app_id', 0);
  42. $_data['device_id'] = get_val($data, 'device_id', '');
  43. $_data['idfv'] = get_val($data, 'idfv', '');
  44. $_data['mac'] = get_val($data, 'mac', '');
  45. $_data['ip'] = get_val($data, 'ip', '');
  46. $_data['brand'] = get_val($data, 'brand', '');
  47. $_data['model'] = get_val($data, 'model', '');
  48. $_data['os'] = get_val($data, 'os', '');
  49. $_data['os_version'] = get_val($data, 'os_version', '');
  50. $_data['screen'] = get_val($data, 'screen', '');
  51. $_data['net'] = get_val($data, 'net', '');
  52. $_data['imsi'] = get_val($data, 'imsi', '');
  53. $_data['longitude'] = get_val($data, 'longitude', '');
  54. $_data['latitude'] = get_val($data, 'latitude', '');
  55. $_data['userua'] = get_val($data, 'userua', '');
  56. $_data['from'] = get_val($data, 'from', 0);
  57. $_data['create_time'] = time();
  58. $_data['open_cnt'] = get_val($data, 'from', 0);
  59. $_data['date'] = date('Y-m-d', $_data['create_time']);
  60. (new HpVisitorModel())->replaceData($_data['homepage_id'], $_data['mem_id']);
  61. return parent::insertLog($_data, $replace, $get_last_insert_id);
  62. }
  63. /**
  64. * @return bool|int
  65. * @throws \think\db\exception\BindParamException
  66. * @throws \think\exception\PDOException
  67. */
  68. function checkTable() {
  69. $this->table = $this->getPartitionTableName(
  70. $this->partition_data, $this->partition_field, $this->partition_rule
  71. );
  72. $_sql = "CREATE TABLE IF NOT EXISTS `$this->table` (";
  73. $_sql .= " `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',";
  74. $_sql .= " `date` date NOT NULL COMMENT '日期',";
  75. $_sql .= " `mem_id` int(11) NOT NULL DEFAULT '0' COMMENT '玩家ID',";
  76. $_sql .= " `homepage_id` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT '主页id',";
  77. $_sql .= " `agent_id` int(11) NOT NULL DEFAULT '0' COMMENT '玩家归属的ch_id',";
  78. $_sql .= " `agent_game` varchar(32) NOT NULL COMMENT '子渠道编号',";
  79. $_sql .= " `app_id` int(11) NOT NULL DEFAULT '0' COMMENT '游戏id',";
  80. $_sql .= " `device_id` varchar(64) NOT NULL DEFAULT '' COMMENT '手机设备码',";
  81. $_sql .= " `idfv` varchar(64) NOT NULL DEFAULT '' COMMENT 'IOS idfv',";
  82. $_sql .= " `mac` varchar(32) NOT NULL DEFAULT '' COMMENT '设备的mac',";
  83. $_sql .= " `ip` varchar(32) NOT NULL DEFAULT '' COMMENT '设备网络IP地址',";
  84. $_sql .= " `brand` varchar(16) NOT NULL DEFAULT '' COMMENT '设备品牌',";
  85. $_sql .= " `model` varchar(16) NOT NULL DEFAULT '' COMMENT '机型',";
  86. $_sql .= " `os` varchar(8) NOT NULL DEFAULT '' COMMENT '操作系统',";
  87. $_sql .= " `os_version` varchar(16) NOT NULL DEFAULT '' COMMENT '操作系统版本',";
  88. $_sql .= " `screen` varchar(16) NOT NULL DEFAULT '' COMMENT '分辨率',";
  89. $_sql .= " `net` varchar(8) NOT NULL DEFAULT '' COMMENT '3G,4G,WIFI',";
  90. $_sql .= " `imsi` varchar(16) NOT NULL DEFAULT '' COMMENT '设备的imsi',";
  91. $_sql .= " `longitude` varchar(32) NOT NULL DEFAULT '' COMMENT '经度',";
  92. $_sql .= " `latitude` varchar(32) NOT NULL DEFAULT '' COMMENT '纬度',";
  93. $_sql .= " `userua` varchar(255) NOT NULL DEFAULT '' COMMENT '用户使用的移动终端的UA信息',";
  94. $_sql .= " `from` smallint(4) NOT NULL DEFAULT '0' COMMENT '3 ANDROID、4 IOS、5 H5',";
  95. $_sql .= " `create_time` bigint(20) NOT NULL DEFAULT '0' COMMENT '登录时间',";
  96. $_sql .= " `open_cnt` int(11) NOT NULL DEFAULT '0' COMMENT '打开此应用次数',";
  97. $_sql .= " PRIMARY KEY (`id`),";
  98. $_sql .= " KEY `mp_mem_homepage_index` (`mem_id`,`homepage_id`),";
  99. $_sql .= " KEY `mp_homepage_index` (`homepage_id`),";
  100. $_sql .= " KEY `lol_time_index` (`create_time`),";
  101. $_sql .= " KEY `lol_date_index` (`date`)";
  102. $_sql .= ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='主页访客表';";
  103. return $this->execute($_sql);
  104. }
  105. }