Dashboard.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. <?php
  2. namespace app\admin\controller\csminvite;
  3. use app\common\controller\Backend;
  4. use addons\csminvite\library\CsmBackend;
  5. /**
  6. * 控制台
  7. *
  8. * @icon fa fa-dashboard
  9. * @remark 用于展示当前系统中的统计数据、统计报表及重要实时数据
  10. */
  11. class Dashboard extends CsmBackend
  12. {
  13. public function indexChartDataset()
  14. {
  15. $dao1d = new \app\admin\model\csminvite\Notifyuser();
  16. $dao2d = new \app\admin\model\csminvite\Qduser();
  17. $dao3d = new \app\admin\model\csminvite\Invcodeuser();
  18. $has4 = 'N';
  19. $invite = get_addon_info('invite');
  20. if ($invite && $invite['state']) {
  21. $has4 = 'Y';
  22. }
  23. $dataset = [];
  24. $dataset[] = ['product','邮件邀请','二维码邀请','注册码注册','会员邀请'];
  25. $calcday = 7;
  26. for ($i = 0; $i < $calcday; $i ++) {
  27. $begintime = \fast\Date::unixtime('day', -$calcday+1+$i);
  28. $dd = date("Y-m-d", $begintime);
  29. $dataset[$dd] = [$dd,
  30. 0,
  31. 0,
  32. 0,
  33. 0
  34. ];
  35. }
  36. $begindate = \fast\Date::unixtime('day', - 10);
  37. $list1 = $dao1d->alias("t")
  38. ->where("userstatus", "=", "registed")
  39. ->where("status", "=", "normal")
  40. ->where("registedtime", ">=", $begindate)
  41. ->field("t.registeddate,count(*) cnt")
  42. ->group("registeddate")
  43. ->select();
  44. $this->_fillDataset($dataset, $list1, 0);
  45. $list2 = $dao2d->alias("t")
  46. ->where("status", "=", "normal")
  47. ->where("registedtime", ">=", $begindate)
  48. ->field("t.registeddate,count(*) cnt")
  49. ->group("registeddate")
  50. ->select();
  51. $this->_fillDataset($dataset, $list2, 1);
  52. $list3 = $dao3d->alias("t")
  53. ->where("codestatus", "=", "used")
  54. ->where("status", "=", "normal")
  55. ->where("registedtime", ">=", $begindate)
  56. ->field("t.registeddate,count(*) cnt")
  57. ->group("registeddate")
  58. ->select();
  59. $this->_fillDataset($dataset, $list3, 2);
  60. $list4 = array();
  61. if($has4=='Y'){
  62. $dao4 = new \addons\invite\model\Invite();
  63. $list4 = $dao4->alias("t")
  64. ->where("createtime", ">=", $begindate)
  65. ->field("FROM_UNIXTIME(createtime,'%Y-%m-%d') registeddate,count(*) cnt")
  66. ->group("registeddate")
  67. ->select();
  68. }
  69. $this->_fillDataset($dataset, $list4, 3);
  70. $param = [
  71. "dataset"=>$dataset,
  72. ];
  73. //var_dump($param);
  74. $this->success("ok",null,$param);
  75. }
  76. private function _fillDataset(&$dataset, $list, $index)
  77. {
  78. foreach ($list as $k => $v) {
  79. $dataset[$v['registeddate']][$index+1] = $v->cnt;
  80. }
  81. }
  82. /**
  83. * 查看
  84. * http://127.0.0.1/fastadmin_plugin_csmmeet/public/q3HJDu2RgE.php/csminvite/dashboard
  85. */
  86. public function index()
  87. {
  88. // 1:notify 2:qd 3:invitecode
  89. $dao1 = new \app\admin\model\csminvite\Notify();
  90. $dao1d = new \app\admin\model\csminvite\Notifyuser();
  91. $dao2 = new \app\admin\model\csminvite\Qd();
  92. $dao2d = new \app\admin\model\csminvite\Qduser();
  93. $dao3 = new \app\admin\model\csminvite\Invcode();
  94. $dao3d = new \app\admin\model\csminvite\Invcodeuser();
  95. $has4 = 'N';
  96. $invite = get_addon_info('invite');
  97. if ($invite && $invite['state']) {
  98. $has4 = 'Y';
  99. }
  100. // 计算注册总数
  101. $countregister1 = $dao1d->where("userstatus", "=", "registed")
  102. ->where("status", "=", "normal")
  103. ->count();
  104. $countsee1 = $dao1d
  105. ->where("status", "=", "normal")
  106. ->sum("seecount");
  107. $countregister2 = $dao2d->where("status", "=", "normal")->count();
  108. $countsee2 = $dao2->where("status", "=", "normal")->sum("seecount");
  109. $countregister3 = $dao3d->where("codestatus", "=", "used")
  110. ->where("status", "=", "normal")
  111. ->count();
  112. $countregister4 = '0';
  113. if($has4=='Y'){
  114. $dao4 = new \addons\invite\model\Invite();
  115. $countregister4 = $dao4->count();
  116. }
  117. // 注册总人数
  118. $countregistertotal = $countregister1 + $countregister2 + $countregister3 + $countregister4;
  119. // 三种方式的列表
  120. $list1 = $dao1->alias("t")
  121. ->where("t.status", "=", "normal")
  122. ->join("csminvite_notifyuser a1", " a1.csminvite_notify_id=t.id and a1.userstatus='registed' and a1.status='normal'",'LEFT')
  123. ->group('t.id,t.name')
  124. ->field("t.id,t.name,count(a1.id) cnt")
  125. ->order("t.id", "desc")
  126. ->limit(0, 10)
  127. ->select();
  128. $list2 = $dao2->alias("t")
  129. ->where("t.status", "=", "normal")
  130. ->join("csminvite_qduser a1", " a1.csminvite_qd_id=t.id and a1.userstatus='registed' and a1.status='normal'",'LEFT')
  131. ->group('t.id,t.name')
  132. ->field("t.id,t.name,count(a1.id) cnt")
  133. ->order("t.id", "desc")
  134. ->limit(0, 10)
  135. ->select();
  136. $list3 = $dao3->alias("t")
  137. ->where("t.status", "=", "normal")
  138. ->join("csminvite_invcodeuser a1", " a1.csminvite_invcode_id=t.id and a1.codestatus='used' and a1.status='normal'",'LEFT')
  139. ->group('t.id,t.name')
  140. ->field("t.id,t.name,count(a1.id) cnt")
  141. ->order("t.id", "desc")
  142. ->limit(0, 10)
  143. ->select();
  144. $list4 = array();
  145. if($has4=='Y'){
  146. $dao4 = new \addons\invite\model\Invite();
  147. $list4 = $dao4->alias("t")
  148. ->join("user a1", "t.user_id=a1.id",'LEFT')
  149. ->group("a1.username ")
  150. ->field("a1.username name,count(a1.id) cnt")
  151. ->order("cnt", "desc")
  152. ->limit(0, 10)
  153. ->select();
  154. }
  155. $param = [
  156. 'has4' => $has4,
  157. 'countregistertotal' => $countregistertotal, // 总注册人数
  158. 'countregister1' => $countregister1, // 三种方式的注册人数和访问访问链接人数
  159. 'countsee1' => $countsee1,
  160. 'countregister2' => $countregister2,
  161. 'countsee2' => $countsee2,
  162. 'countregister3' => $countregister3,
  163. 'countregister4' => $countregister4,
  164. 'list1' => $list1,
  165. 'list2' => $list2,
  166. 'list3' => $list3,
  167. 'list4' => $list4
  168. ];
  169. // var_dump($param);
  170. // die();
  171. $this->view->assign($param);
  172. return $this->view->fetch();
  173. }
  174. }