LtvModel.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. <?php
  2. /**
  3. * LtvModel.php UTF-8
  4. *
  5. *
  6. * @date : 2018/3/26 14:02
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huo\model\ads;
  13. use huo\model\common\CommonModel;
  14. use think\Exception;
  15. use think\Log;
  16. class LtvModel extends CommonModel {
  17. protected $table = 'h_ltv_game_agent';
  18. protected $name = 'ltv_game_agent';
  19. /**
  20. * 获取单挑记录
  21. *
  22. * @param string $date
  23. * @param int $app_id
  24. * @param int $agent_id
  25. *
  26. * @param int $id
  27. *
  28. * @return array|bool|null
  29. */
  30. public function readData($date, $app_id, $agent_id, $id = 0) {
  31. $_rs = $this->checkTable();
  32. if (false == $_rs) {
  33. return false;
  34. }
  35. if (!empty($id)) {
  36. $_map['id'] = $id;
  37. } else {
  38. $_map['date'] = $date;
  39. $_map['app_id'] = $app_id;
  40. $_map['agent_id'] = $agent_id;
  41. }
  42. $_key = $date.'_'.$app_id.'_'.$agent_id;
  43. try {
  44. $_data = $this->cache($_key)->where($_map)->find();
  45. if (empty($_data)) {
  46. return null;
  47. }
  48. return $_data->toArray();
  49. } catch (Exception $_e) {
  50. Log::write('ltv getData error'.$_e->getMessage(), 'error');
  51. return false;
  52. }
  53. }
  54. /**
  55. * 更新数据
  56. *
  57. * @param string $date
  58. * @param int $app_id
  59. * @param int $agent_id
  60. * @param array $data
  61. * @param bool $is_new
  62. *
  63. * @return bool
  64. */
  65. public function saveData($date, $app_id, $agent_id, $data, $is_new = false) {
  66. $_rs = $this->checkTable();
  67. if (false == $_rs) {
  68. return false;
  69. }
  70. $_map['date'] = $date;
  71. $_map['app_id'] = $app_id;
  72. $_map['agent_id'] = $agent_id;
  73. $_key = $date.'_'.$app_id.'_'.$agent_id;
  74. try {
  75. if ($is_new) {
  76. /* 新增表示插入 */
  77. $_rs = $this->cache($_key)->insert($data);
  78. } else {
  79. /* 更新 */
  80. $_rs = $this->cache($_key)->update($data);
  81. }
  82. if (false === $_rs) {
  83. return false;
  84. }
  85. return true;
  86. } catch (Exception $_e) {
  87. Log::write('ltv saveData error'.$_e->getMessage(), 'error');
  88. return false;
  89. }
  90. }
  91. /**
  92. * @return bool
  93. */
  94. private function checkTable() {
  95. $_table_name = $this->table;
  96. $_sql = '';
  97. $_sql .= "CREATE TABLE IF NOT EXISTS `".$_table_name."` (";
  98. $_sql .= " `id` int(11) NOT NULL AUTO_INCREMENT,";
  99. $_sql .= " `date` date NOT NULL COMMENT '日期',";
  100. $_sql .= " `app_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '游戏ID',";
  101. $_sql .= " `agent_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '代理ID',";
  102. $_sql .= " `ads_id` smallint(3) unsigned NOT NULL DEFAULT '0' COMMENT '1 CPA 2 CPS 3 CPC',";
  103. $_sql .= " `costs` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '花费', ";
  104. $_sql .= " `reg_cnt` int(11) NOT NULL DEFAULT '0' COMMENT '注册玩家数',";
  105. $_sql .= " `reg_device_cnt` int(11) NOT NULL DEFAULT '0' COMMENT '新增设备数',";
  106. $_sql .= " `sum_money` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '充值金额',";
  107. $_sql .= " `day1` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '1日充值金额',";
  108. $_sql .= " `day2` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '2日充值金额',";
  109. $_sql .= " `day3` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '3日充值金额',";
  110. $_sql .= " `day4` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '4日充值金额',";
  111. $_sql .= " `day5` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '5日充值金额',";
  112. $_sql .= " `day6` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '6日充值金额',";
  113. $_sql .= " `day7` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '7日充值金额',";
  114. $_sql .= " `day8` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '8日充值金额',";
  115. $_sql .= " `day9` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '9日充值金额',";
  116. $_sql .= " `day10` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '10日充值金额',";
  117. $_sql .= " `day11` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '11日充值金额',";
  118. $_sql .= " `day12` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '12日充值金额',";
  119. $_sql .= " `day13` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '13日充值金额',";
  120. $_sql .= " `day14` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '14日充值金额',";
  121. $_sql .= " `day15` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '15日充值金额',";
  122. $_sql .= " `day16` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '16日充值金额',";
  123. $_sql .= " `day17` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '17日充值金额',";
  124. $_sql .= " `day18` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '18日充值金额',";
  125. $_sql .= " `day19` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '19日充值金额',";
  126. $_sql .= " `day20` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '20日充值金额',";
  127. $_sql .= " `day21` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '21日充值金额',";
  128. $_sql .= " `day22` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '22日充值金额',";
  129. $_sql .= " `day23` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '23日充值金额',";
  130. $_sql .= " `day24` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '24日充值金额',";
  131. $_sql .= " `day25` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '25日充值金额',";
  132. $_sql .= " `day26` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '26日充值金额',";
  133. $_sql .= " `day27` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '27日充值金额',";
  134. $_sql .= " `day28` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '28日充值金额',";
  135. $_sql .= " `day29` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '29日充值金额',";
  136. $_sql .= " `day30` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '30日充值金额',";
  137. $_sql .= " `day31` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '31日充值金额',";
  138. $_sql .= " `day32` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '32日充值金额',";
  139. $_sql .= " `day33` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '33日充值金额',";
  140. $_sql .= " `day34` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '34日充值金额',";
  141. $_sql .= " `day35` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '35日充值金额',";
  142. $_sql .= " `day36` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '36日充值金额',";
  143. $_sql .= " `day37` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '37日充值金额',";
  144. $_sql .= " `day38` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '38日充值金额',";
  145. $_sql .= " `day39` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '39日充值金额',";
  146. $_sql .= " `day40` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '40日充值金额',";
  147. $_sql .= " `day41` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '41日充值金额',";
  148. $_sql .= " `day42` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '42日充值金额',";
  149. $_sql .= " `day43` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '43日充值金额',";
  150. $_sql .= " `day44` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '44日充值金额',";
  151. $_sql .= " `day45` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '45日充值金额',";
  152. $_sql .= " `day46` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '46日充值金额',";
  153. $_sql .= " `day47` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '47日充值金额',";
  154. $_sql .= " `day48` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '48日充值金额',";
  155. $_sql .= " `day49` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '49日充值金额',";
  156. $_sql .= " `day50` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '50日充值金额',";
  157. $_sql .= " `day51` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '51日充值金额',";
  158. $_sql .= " `day52` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '52日充值金额',";
  159. $_sql .= " `day53` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '53日充值金额',";
  160. $_sql .= " `day54` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '54日充值金额',";
  161. $_sql .= " `day55` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '55日充值金额',";
  162. $_sql .= " `day56` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '56日充值金额',";
  163. $_sql .= " `day57` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '57日充值金额',";
  164. $_sql .= " `day58` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '58日充值金额',";
  165. $_sql .= " `day59` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '59日充值金额',";
  166. $_sql .= " `day60` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '60日充值金额',";
  167. $_sql .= " `day90` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '90日充值金额',";
  168. $_sql .= " `day180` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '180日充值金额',";
  169. $_sql .= " `day270` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '270日充值金额',";
  170. $_sql .= " `day360` double(20,2) NOT NULL DEFAULT '0.00' COMMENT '360日充值金额',";
  171. $_sql .= " PRIMARY KEY (`id`),";
  172. $_sql .= " UNIQUE KEY `lga_dategameagent_unique` (`date`,`app_id`,`agent_id`),";
  173. $_sql .= " KEY `lga_game_index` (`app_id`),";
  174. $_sql .= " KEY `lga_agent_index` (`agent_id`)";
  175. $_sql .= ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='每日渠道游戏LTV统计表';";
  176. try {
  177. $_rs = db()->execute($_sql);
  178. if (false === $_rs) {
  179. Log::write("ltv create table ".$_table_name." failed1", 'error');
  180. return false;
  181. }
  182. return true;
  183. } catch (Exception $_e) {
  184. Log::write("ltv create table ".$_table_name." failed2", 'error');
  185. return false;
  186. }
  187. }
  188. /**
  189. * @param array $field
  190. * @param array $where
  191. * @param string $order
  192. * @param string $limit
  193. *
  194. * @return bool|false|\PDOStatement|string|\think\Collection
  195. */
  196. public function getList($field = array(), $where, $order = 'id desc', $limit = '1,10') {
  197. try {
  198. return $this->field($field)->where($where)->order($order)->page($limit)->select()->toArray();
  199. } catch (Exception $_e) {
  200. Log::write("ltv get data list error ".$_e->getMessage(), 'error');
  201. return false;
  202. }
  203. }
  204. }