RetaineGameChannel.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437
  1. <?php
  2. /**
  3. * 留存统计 - 游戏渠道推广
  4. */
  5. namespace app\admin\controller;
  6. use app\service\RetaineService;
  7. use think\Controller;
  8. use think\Db;
  9. class RetaineGameChannel extends Controller
  10. {
  11. /**
  12. * 玩家总数
  13. *
  14. * @return string
  15. * @throws \think\db\exception\DataNotFoundException
  16. * @throws \think\db\exception\ModelNotFoundException
  17. * @throws \think\exception\DbException
  18. */
  19. public function reg_total()
  20. {
  21. $day = input('day', '');
  22. if (!$day) {
  23. $day = date('Y-m-d', strtotime('-1 day'));
  24. }
  25. $retaineService = new RetaineService();
  26. // $list = $retaineService->regNumNew($day,0,0,1, 0, 'reg_total');
  27. $list = $retaineService->regNumV2($day,1,0, 'reg_total');
  28. // 清除当天数据
  29. Db::table('cy_retaine_game')
  30. ->where(['type_id' => 2, 'day' => $day])
  31. ->update(['update_time' => time(), 'reg_total' => 0]);
  32. // $retaineService->insertOrUpdatev2($list, 2, $day, 'reg_total');
  33. $retaineService->syncGameStatData($list, 2, $day, 'reg_total');
  34. return 'ok';
  35. }
  36. /**
  37. * 留存表-游戏-渠道-新增玩家
  38. * @return string
  39. */
  40. public function reg_num()
  41. {
  42. $day = input('day', '');
  43. if (!$day) {
  44. $day = date('Y-m-d', strtotime('-1 day'));
  45. }
  46. $retaineService = new RetaineService();
  47. //当天注册账号
  48. // $mebmers = $retaineService->getMembers($day);
  49. // $list = $retaineService->regNumNew($day, $mebmers, 0, 1);
  50. $list = $retaineService->regNumV2($day, 1, 0, 'reg_num');
  51. // 清除当天数据
  52. Db::table('cy_retaine_game')
  53. ->where(['type_id' => 2, 'day' => $day])
  54. ->update(['update_time' => time(), 'reg_num' => 0]);
  55. // $retaineService->insertOrUpdatev2($list, 2, $day, 'reg_num');
  56. $retaineService->syncGameStatData($list, 2, $day, 'reg_num');
  57. return 'ok';
  58. }
  59. /**
  60. * 留存表-游戏-渠道-新增角色
  61. * @return string
  62. */
  63. public function role_num()
  64. {
  65. $day = input('day', '');
  66. if (!$day) {
  67. $day = date('Y-m-d', strtotime('-1 day'));
  68. }
  69. $retaineService = new RetaineService();
  70. //当天新增角色
  71. $list = $retaineService->getFirstRoleMember($day, 0, 1, 0, 'role_num');
  72. // 清除当天数据
  73. Db::table('cy_retaine_game')
  74. ->where(['type_id' => 2, 'day' => $day])
  75. ->update(['update_time' => time(), 'role_num' => 0]);
  76. // $retaineService->insertOrUpdatev2($list, 2, $day, 'role_num');
  77. $retaineService->syncGameStatData($list, 2, $day, 'role_num');
  78. return 'ok';
  79. }
  80. /**
  81. * 留存表-游戏-渠道-活跃玩家
  82. * @return string
  83. */
  84. public function act_num()
  85. {
  86. $day = input('day', '');
  87. if (!$day) {
  88. $day = date('Y-m-d', strtotime('-1 day'));
  89. }
  90. $retaineService = new RetaineService();
  91. //当天活跃玩家
  92. // $list = $retaineService->activeMember($day, 'act_num', 0, 1);
  93. $list = $retaineService->activeMemberV2($day, 'act_num', 1);
  94. // 清除当天数据
  95. Db::table('cy_retaine_game')
  96. ->where(['type_id' => 2, 'day' => $day])
  97. ->update(['update_time' => time(), 'act_num' => 0]);
  98. // $retaineService->insertOrUpdatev2($list, 2, $day, 'act_num');
  99. $retaineService->syncGameStatData($list, 2, $day, 'act_num');
  100. return 'ok';
  101. }
  102. /**
  103. * 留存表-游戏-渠道-充值金额-付费人数
  104. * @return string
  105. */
  106. public function recharge_num()
  107. {
  108. $day = input('day', '');
  109. if (!$day) {
  110. $day = date('Y-m-d', strtotime('-1 day'));
  111. }
  112. $retaineService = new RetaineService();
  113. //充值金额
  114. $list = $retaineService->rechargeMoney($day, 0, 1);
  115. // 清除当天数据
  116. Db::table('cy_retaine_game')
  117. ->where(['type_id' => 2, 'day' => $day])
  118. ->update(['update_time' => time(), 'recharge_num' => 0, 'pay_num' => 0]);
  119. // $retaineService->insertOrUpdatev2($list, 2, $day, 'pay_num');
  120. $retaineService->syncGameStatData($list, 2, $day, 'pay_num');
  121. // $retaineService->insertOrUpdatev2($list, 2, $day, 'recharge_num');
  122. $retaineService->syncGameStatData($list, 2, $day, 'recharge_num');
  123. return 'ok';
  124. }
  125. /**
  126. * 留存表-游戏-渠道-次留(处理的是前一天的数据)
  127. * @return string
  128. */
  129. public function one_stay()
  130. {
  131. $day = input('day', '');
  132. if (!$day) {
  133. $day = date('Y-m-d', strtotime('-1 day'));
  134. }
  135. $handleTime = $this->getTime($day, 1);
  136. $retaineService = new RetaineService();
  137. //当天活跃玩家
  138. $list = $retaineService->activeMemberV2($day, 'one_stay', 1, [], "", ['reg_time' => ['between time', [strtotime($handleTime), strtotime($handleTime . ' 23:59:59')]]]);
  139. // 清除当天数据
  140. Db::table('cy_retaine_game')
  141. ->where(['type_id' => 2, 'day' => $handleTime])
  142. ->update(['update_time' => time(), 'one_stay' => 0]);
  143. // $retaineService->insertOrUpdate($list, 2, $handleTime, 'one_stay');
  144. $retaineService->syncGameStatData($list, 2, $handleTime, 'one_stay');
  145. return 'ok';
  146. }
  147. /**
  148. * 留存表-游戏-渠道-三留
  149. * @return string
  150. */
  151. public function three_stay()
  152. {
  153. $day = input('day', '');
  154. if (!$day) {
  155. $day = date('Y-m-d', strtotime('-1 day'));
  156. }
  157. $handleTime = $this->getTime($day, 2);
  158. $retaineService = new RetaineService();
  159. //当天活跃玩家
  160. $list = $retaineService->activeMemberV2($day, 'three_stay', 1, [], "", ['reg_time' => ['between time', [strtotime($handleTime), strtotime($handleTime . ' 23:59:59')]]]);
  161. // 清除当天数据
  162. Db::table('cy_retaine_game')
  163. ->where(['type_id' => 2, 'day' => $handleTime])
  164. ->update(['update_time' => time(), 'three_stay' => 0]);
  165. // $retaineService->insertOrUpdate($list, 2, $handleTime, 'three_stay');
  166. $retaineService->syncGameStatData($list, 2, $handleTime, 'three_stay');
  167. return 'ok';
  168. }
  169. /**
  170. * 留存表-游戏-渠道-四留
  171. * @return string
  172. */
  173. public function four_stay()
  174. {
  175. $day = input('day', '');
  176. if (!$day) {
  177. $day = date('Y-m-d', strtotime('-1 day'));
  178. }
  179. $handleTime = $this->getTime($day, 3);
  180. $retaineService = new RetaineService();
  181. //当天活跃玩家
  182. $list = $retaineService->activeMemberV2($day, 'four_stay', 1, [], "", ['reg_time' => ['between time', [strtotime($handleTime), strtotime($handleTime . ' 23:59:59')]]]);
  183. // 清除当天数据
  184. Db::table('cy_retaine_game')
  185. ->where(['type_id' => 2, 'day' => $handleTime])
  186. ->update(['update_time' => time(), 'four_stay' => 0]);
  187. // $retaineService->insertOrUpdate($list, 2, $handleTime, 'four_stay');
  188. $retaineService->syncGameStatData($list, 2, $handleTime, 'four_stay');
  189. return 'ok';
  190. }
  191. /**
  192. * 留存表-游戏-渠道-五留
  193. * @return string
  194. */
  195. public function five_stay()
  196. {
  197. $day = input('day', '');
  198. if (!$day) {
  199. $day = date('Y-m-d', strtotime('-1 day'));
  200. }
  201. $handleTime = $this->getTime($day, 4);
  202. $retaineService = new RetaineService();
  203. //那天创角用户数
  204. $members = $retaineService->getSubIds($handleTime);
  205. if ($members) {
  206. //当天活跃玩家
  207. $list = $retaineService->activeMemberV2($day, 'five_stay', 1, [], "", ['reg_time' => ['between time', [strtotime($handleTime), strtotime($handleTime . ' 23:59:59')]]]);
  208. // 清除当天数据
  209. Db::table('cy_retaine_game')
  210. ->where(['type_id' => 2, 'day' => $handleTime])
  211. ->update(['update_time' => time(), 'five_stay' => 0]);
  212. // $retaineService->insertOrUpdate($list, 2, $handleTime, 'five_stay');
  213. $retaineService->syncGameStatData($list, 2, $handleTime, 'five_stay');
  214. }
  215. return 'ok';
  216. }
  217. /**
  218. * 留存表-游戏-渠道-六留
  219. * @return string
  220. */
  221. public function six_stay()
  222. {
  223. $day = input('day', '');
  224. if (!$day) {
  225. $day = date('Y-m-d', strtotime('-1 day'));
  226. }
  227. $handleTime = $this->getTime($day, 5);
  228. $retaineService = new RetaineService();
  229. //当天活跃玩家
  230. $list = $retaineService->activeMemberV2($day, 'six_stay', 1, [], "", ['reg_time' => ['between time', [strtotime($handleTime), strtotime($handleTime . ' 23:59:59')]]]);
  231. // 清除当天数据
  232. Db::table('cy_retaine_game')
  233. ->where(['type_id' => 2, 'day' => $handleTime])
  234. ->update(['update_time' => time(), 'six_stay' => 0]);
  235. // $retaineService->insertOrUpdate($list, 2, $handleTime, 'six_stay');
  236. $retaineService->syncGameStatData($list, 2, $handleTime, 'six_stay');
  237. return 'ok';
  238. }
  239. /**
  240. * 留存表-游戏-渠道-七留
  241. * @return string
  242. */
  243. public function seven_stay()
  244. {
  245. $day = input('day', '');
  246. if (!$day) {
  247. $day = date('Y-m-d', strtotime('-1 day'));
  248. }
  249. $handleTime = $this->getTime($day, 6);
  250. $retaineService = new RetaineService();
  251. //当天活跃玩家
  252. $list = $retaineService->activeMemberV2($day, 'seven_stay', 1, [], "", ['reg_time' => ['between time', [strtotime($handleTime), strtotime($handleTime . ' 23:59:59')]]]);
  253. Db::table('cy_retaine_game')
  254. ->where(['type_id' => 2, 'day' => $handleTime])
  255. ->update(['update_time' => time(), 'seven_stay' => 0]);
  256. // $retaineService->insertOrUpdate($list, 2, $handleTime, 'seven_stay');
  257. $retaineService->syncGameStatData($list, 2, $handleTime, 'seven_stay');
  258. return 'ok';
  259. }
  260. /**
  261. * 留存表-游戏-渠道-十五留
  262. * @return string
  263. */
  264. public function fifteen_stay()
  265. {
  266. $day = input('day', '');
  267. if (!$day) {
  268. $day = date('Y-m-d', strtotime('-1 day'));
  269. }
  270. $handleTime = $this->getTime($day, 14);
  271. $retaineService = new RetaineService();
  272. //当天活跃玩家
  273. $list = $retaineService->activeMemberV2($day, 'fifteen_stay', 1, [], "", ['reg_time' => ['between time', [strtotime($handleTime), strtotime($handleTime . ' 23:59:59')]]]);
  274. Db::table('cy_retaine_game')
  275. ->where(['type_id' => 2, 'day' => $handleTime])
  276. ->update(['update_time' => time(), 'fifteen_stay' => 0]);
  277. // $retaineService->insertOrUpdate($list, 2, $handleTime, 'fifteen_stay');
  278. $retaineService->syncGameStatData($list, 2, $handleTime, 'fifteen_stay');
  279. return 'ok';
  280. }
  281. /**
  282. * 留存表-游戏-渠道-三十留
  283. * @return string
  284. */
  285. public function thirty_stay()
  286. {
  287. $day = input('day', '');
  288. if (!$day) {
  289. $day = date('Y-m-d', strtotime('-1 day'));
  290. }
  291. $handleTime = $this->getTime($day, 29);
  292. $retaineService = new RetaineService();
  293. //当天活跃玩家
  294. $list = $retaineService->activeMemberV2($day, 'thirty_stay', 1, [], "", ['reg_time' => ['between time', [strtotime($handleTime), strtotime($handleTime . ' 23:59:59')]]]);
  295. Db::table('cy_retaine_game')->where(['type_id' => 2, 'day' => $handleTime])->update(['update_time' => time(), 'thirty_stay' => 0]);
  296. // $retaineService->insertOrUpdate($list, 2, $handleTime, 'thirty_stay');
  297. $retaineService->syncGameStatData($list, 2, $handleTime, 'thirty_stay');
  298. return 'ok';
  299. }
  300. private function getTime($day, $num)
  301. {
  302. return date('Y-m-d', strtotime($day) - 86400 * $num);
  303. }
  304. // 新活跃玩家
  305. public function new_act_num(){
  306. $day = input('day', '');
  307. if (!$day) {
  308. $day = date('Y-m-d', strtotime('-1 day'));
  309. }
  310. $retaineService = new RetaineService();
  311. // $members = $retaineService->getMembers($day);
  312. // ['ns.create_time' => ['between', [strtotime($day), strtotime($day . ' 23:59:59')]]]
  313. $list = $retaineService->activeMemberV2($day, 'new_act_num', 1, [], "", ['ns.create_time' => ['between time', [strtotime($day), strtotime($day . ' 23:59:59')]]]);
  314. // dump($list);
  315. Db::table('cy_retaine_game')->where(['type_id' => 2, 'day' => $day])->update(['update_time' => time(), 'new_act_num' => 0]);
  316. // $retaineService->insertOrUpdate($list, 2, $day, 'new_act_num');
  317. $retaineService->syncGameStatData($list, 2, $day, 'new_act_num');
  318. return 'ok';
  319. }
  320. // 新付费玩家+新玩家付费金额
  321. public function new_recharge_num(){
  322. $day = input('day', '');
  323. if (!$day) {
  324. $day = date('Y-m-d', strtotime('-1 day'));
  325. }
  326. $retaineService = new RetaineService();
  327. $members = $retaineService->getMembers($day);
  328. $list = $retaineService->rechargeMoney($day, 0, 1, 0, $members, ['new_pay_num', 'new_recharge_num']);
  329. // dump($list);
  330. Db::table('cy_retaine_game')->where(['type_id' => 2, 'day' => $day])->update(['update_time' => time(), 'new_pay_num' => 0, 'new_recharge_num' => 0]);
  331. // $retaineService->insertOrUpdatev2($list, 2, $day, 'new_pay_num');
  332. $retaineService->syncGameStatData($list, 2, $day, 'new_pay_num');
  333. // $retaineService->insertOrUpdatev2($list, 2, $day, 'new_recharge_num');
  334. $retaineService->syncGameStatData($list, 2, $day, 'new_recharge_num');
  335. return 'ok';
  336. }
  337. }