RemainDataLogic.php 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. <?php
  2. /**
  3. * RemainDataLogic.php UTF-8
  4. * 留存逻辑处理
  5. *
  6. * @date : 2018/5/21 18:55
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huo\logic\data;
  13. use huo\model\common\CommonModel;
  14. use huo\model\data\DayAgentModel;
  15. use huo\model\data\DayGameAgentModel;
  16. use huo\model\data\DayGameModel;
  17. use huo\model\data\DayModel;
  18. class RemainDataLogic extends CommonModel {
  19. private $base_field
  20. = [
  21. 'date',
  22. 'reg_cnt',
  23. 'reg_sum_money',
  24. 'day2',
  25. 'day3',
  26. 'day4',
  27. 'day5',
  28. 'day6',
  29. 'day7',
  30. 'day15',
  31. 'day30',
  32. ];
  33. private $base_sum_field
  34. = [
  35. 'date' => 'date',
  36. 'sum(reg_cnt)' => 'reg_cnt',
  37. 'sum(reg_sum_money)' => 'reg_sum_money',
  38. 'sum(day2)' => 'day2',
  39. 'sum(day3)' => 'day3',
  40. 'sum(day4)' => 'day4',
  41. 'sum(day5)' => 'day5',
  42. 'sum(day6)' => 'day6',
  43. 'sum(day7)' => 'day7',
  44. 'sum(day15)' => 'day15',
  45. 'sum(day30)' => 'day30',
  46. ];
  47. /**
  48. * @param array $param
  49. *
  50. * @return array
  51. */
  52. protected function getWhere($param = []) {
  53. $_map = [];
  54. if (!empty($param['start_time']) && !empty($param['end_time'])) {
  55. $_map['date'] = ['between', [$param['start_time'], $param['end_time']]];
  56. } elseif (!empty($param['start_time'])) {
  57. $_map['date'] = ['egt', $param['start_time']];
  58. } elseif (!empty($param['end_time'])) {
  59. $_map['date'] = ['elt', $param['end_time']];
  60. }
  61. if (!empty($param['agent_id'])) {
  62. $_map['agent_id'] = $param['agent_id'];
  63. }
  64. if (!empty($param['app_id'])) {
  65. $_map['app_id'] = $param['app_id'];
  66. }
  67. return $_map;
  68. }
  69. public function main($param, $order = '-date', $get_sum = false) {
  70. $_map = $this->getWhere($param);
  71. $_filed = $this->base_field;
  72. $_model = new DayModel();
  73. $_order = $this->orderFilter($order);
  74. $_items = $_model->field($_filed)->where($_map)->order($_order)->paginate();
  75. if (true === $get_sum) {
  76. $_sum_data = $this->getSumData($_model, $_map);
  77. return [$_items, $_sum_data];
  78. }
  79. return $_items;
  80. }
  81. public function game($param, $order = '-date', $get_sum = false) {
  82. $_map = $this->getWhere($param);
  83. $_filed = $this->base_field;
  84. $_filed['app_id'] = 'app_id';
  85. $_model = new DayGameModel();
  86. $_order = $this->orderFilter($order);
  87. $_items = $_model->field($_filed)->where($_map)->order($_order)->paginate();
  88. if (true === $get_sum) {
  89. $_sum_data = $this->getSumData($_model, $_map);
  90. return [$_items, $_sum_data];
  91. }
  92. return $_items;
  93. }
  94. public function agent($param, $order = '-date', $get_sum = false) {
  95. $_map = $this->getWhere($param);
  96. $_filed = $this->base_field;
  97. $_filed['agent_id'] = 'agent_id';
  98. $_model = new DayAgentModel();
  99. $_order = $this->orderFilter($order);
  100. if (isset($_map['agent_id']) && -1 == $_map['agent_id']) {
  101. $_map['agent_id'] = 0;
  102. }
  103. $_items = $_model->field($_filed)->where($_map)->order($_order)->paginate();
  104. if (true === $get_sum) {
  105. $_sum_data = $this->getSumData($_model, $_map);
  106. return [$_items, $_sum_data];
  107. }
  108. return $_items;
  109. }
  110. public function gameAgent($param, $order = '-date', $get_sum = false) {
  111. $_map = $this->getWhere($param);
  112. $_filed = $this->base_field;
  113. $_filed['agent_id'] = 'agent_id';
  114. $_filed['app_id'] = 'app_id';
  115. if (isset($_map['agent_id']) && -1 == $_map['agent_id']) {
  116. $_map['agent_id'] = 0;
  117. }
  118. $_model = new DayGameAgentModel();
  119. $_order = $this->orderFilter($order);
  120. $_items = $_model->field($_filed)->where($_map)->order($_order)->paginate();
  121. if (true === $get_sum) {
  122. $_sum_data = $this->getSumData($_model, $_map);
  123. return [$_items, $_sum_data];
  124. }
  125. return $_items;
  126. }
  127. /**
  128. * 获取汇总数据
  129. *
  130. * @param $model
  131. * @param $map
  132. *
  133. * @return array
  134. */
  135. public function getSumData($model, $map) {
  136. $_sum_field = $this->base_sum_field;
  137. $_sum_data = $model
  138. ->field($_sum_field)
  139. ->where($map)
  140. ->find();
  141. if (is_object($_sum_data)) {
  142. $_sum_data = $_sum_data->toArray();
  143. }
  144. return $_sum_data;
  145. }
  146. }