WelcomeLogic.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <?php
  2. namespace app\v1\logic;
  3. use plugin\saiadmin\basic\BaseLogic;
  4. use support\think\Db;
  5. /**
  6. * 欢迎页逻辑层
  7. */
  8. class WelcomeLogic extends BaseLogic
  9. {
  10. public function index()
  11. {
  12. $data = [
  13. 'reg' => [
  14. 'name' => '注册用户',
  15. ],
  16. 'login' => [
  17. 'name' => '登录用户',
  18. ],
  19. 'pay' => [
  20. 'name' => '充值金额',
  21. ],
  22. 'cost' => [
  23. 'name' => '消耗金额',
  24. ],
  25. ];
  26. $tday = date('Y-m-d');
  27. $lday = date('Y-m-d',time()-86400);
  28. $tmon = date('Y-m');
  29. $lmon = date('Y-m',strtotime($tmon)-86400);
  30. $res = [];
  31. $baseTotalDayField = [
  32. 'sum(reg_total)' => 'reg',
  33. 'sum(old_login_total)' => 'login',
  34. 'sum(pay_total)' => 'pay',
  35. ];
  36. $tYear = (int)date('Y', strtotime($tday));
  37. $lYear = (int)date('Y', strtotime($lday));
  38. $res['tday'] = Db::connect('db_data_report')->table('base_total_day_'.$tYear)->field($baseTotalDayField)->where('tdate',$tday)->find();
  39. $res['lday'] = Db::connect('db_data_report')->table('base_total_day_'.$lYear)->field($baseTotalDayField)->where('tdate',$lday)->find();
  40. $baseTotalMonthField = [
  41. 'sum(reg_total)' => 'reg',
  42. 'sum(login_total)' => 'login',
  43. 'sum(pay_total)' => 'pay',
  44. ];
  45. $res['tmon'] = Db::connect('db_data_report')->table('game_total_month')->field($baseTotalMonthField)->where('tmonth',$tmon)->find();
  46. $res['lmon'] = Db::connect('db_data_report')->table('game_total_month')->field($baseTotalMonthField)->where('tmonth',$lmon)->find();
  47. $res['tday']['cost'] = Db::connect('db_advert')->table('media_cost')->where('tdate',$tday)->sum('money');
  48. $res['lday']['cost'] = Db::connect('db_advert')->table('media_cost')->where('tdate',$lday)->sum('money');
  49. $res['tmon']['cost'] = Db::connect('db_advert')->table('media_cost')->where('tdate',"{$tmon}-01,{$tday}")->sum('money');
  50. $llday = date('Y-m-d',strtotime($tmon)-86400);
  51. $res['lmon']['cost'] = Db::connect('db_advert')->table('media_cost')->where('tdate',"{$lmon}-01,{$llday}")->sum('money');
  52. foreach($res as $ak=>$val){
  53. foreach($data as $bk=>$v){
  54. $data[$bk][$ak] = $val[$bk];
  55. }
  56. }
  57. return [
  58. 'data' => $data,
  59. ];
  60. }
  61. // 一周数据,图表
  62. public function chartData()
  63. {
  64. $days = [];
  65. for($i=-6;$i<=0;$i++){
  66. $days[] = date('Y-m-d',time()+86400*$i);
  67. }
  68. $where = [
  69. ['tdate','between',[$days[0],$days[6]]],
  70. ];
  71. $baseTotalDayField = [
  72. 'sum(reg_total)' => 'reg',
  73. 'sum(old_login_total)' => 'login',
  74. 'sum(pay_total)' => 'pay',
  75. 'tdate' => 'tdate',
  76. ];
  77. $baseTotal = Db::connect('db_data_report')
  78. ->table('base_total_day_'.date('Y'))
  79. ->field($baseTotalDayField)
  80. ->where($where)
  81. ->group('tdate')
  82. ->select()->toArray();
  83. $temp = $baseTotal;
  84. foreach($temp as $tmp){
  85. $res[$tmp['tdate']]['reg'] = $tmp['reg'];
  86. $res[$tmp['tdate']]['pay'] = $tmp['pay'];
  87. $res[$tmp['tdate']]['login'] = $tmp['login'];
  88. }
  89. $costField = [
  90. 'SUM(money)' => 'cost',
  91. 'tdate'
  92. ];
  93. $temp = Db::connect('db_advert')
  94. ->table('media_cost')
  95. ->field($costField)
  96. ->where($where)
  97. ->group('tdate')
  98. ->select()->toArray();
  99. foreach($temp as $tmp){
  100. $res[$tmp['tdate']]['cost'] = $tmp['cost'];
  101. }
  102. foreach($days as $k=>$d){
  103. $data['days'][$k] = $d;
  104. $data['reg'][$k] = $res[$d]['reg']??0+0;
  105. $data['pay'][$k] = $res[$d]['pay']??0+0;
  106. $data['cost'][$k] = round($res[$d]['cost']??0+0);
  107. $data['login'][$k]= $res[$d]['login']??0+0;
  108. }
  109. return $data;
  110. }
  111. }