| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388 |
- <?php
- /**
- * 留存统计 - 游戏
- */
- namespace app\admin\controller;
- use app\service\RetaineService;
- use think\Controller;
- use think\Db;
- use think\Exception;
- use think\Model;
- class RetaineGame extends Controller
- {
- /**
- * 玩家总数
- *
- * @return string
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- */
- public function reg_total()
- {
- $day = input('day', '');
- if (!$day) {
- $day = date('Y-m-d', strtotime('-1 day'));
- }
- $retaineService = new RetaineService();
- // $list = $retaineService->regNumNew($day,0,0,0, 0, 'reg_total');
- $list = $retaineService->regNumV2($day,0,0, 'reg_total');
- $retaineService->insertorupdate($list, 1, $day, 'reg_total');
- return 'ok';
- }
- /**
- * 留存表-游戏-新增玩家
- * @return string
- */
- public function reg_num()
- {
- $day = input('day', '');
- if (!$day) {
- $day = date('Y-m-d', strtotime('-1 day'));
- }
- $retaineService = new RetaineService();
- //当天注册账号
- // $mebmers = $retaineService->getMembers($day);
- // $list = $retaineService->regNumNew($day, $mebmers);
- $list = $retaineService->regNumV2($day);
- $retaineService->insertorupdate($list, 1, $day, 'reg_num');
- return 'ok';
- }
- /**
- * 留存表-游戏-新增角色
- * @return string
- */
- public function role_num()
- {
- $day = input('day', '');
- if (!$day) {
- $day = date('Y-m-d', strtotime('-1 day'));
- }
- $retaineService = new RetaineService();
- // 当天新增角色
- $list = $retaineService->getFirstRoleMember($day);
- $retaineService->insertOrUpdate($list, 1, $day, 'role_num');
- return 'ok';
- }
- /**
- * 留存表-游戏-活跃玩家
- * @return string
- */
- public function act_num()
- {
- $day = input('day', '');
- if (!$day) {
- $day = date('Y-m-d', strtotime('-1 day'));
- }
- $retaineService = new RetaineService();
- //当天活跃玩家
- // $list = $retaineService->activeMember($day, 'act_num');
- $list = $retaineService->activeMemberV2($day, 'act_num');
- $retaineService->insertOrUpdate($list, 1, $day, 'act_num');
- return 'ok';
- }
- /**
- * 留存表-游戏-充值金额-付费人数
- * @return string
- */
- public function recharge_num()
- {
- $day = input('day', '');
- if (!$day) {
- $day = date('Y-m-d', strtotime('-1 day'));
- }
- $retaineService = new RetaineService();
- //充值金额
- $list = $retaineService->rechargeMoney($day);
- $retaineService->insertOrUpdate($list, 1, $day, 'recharge_num');
- $retaineService->insertOrUpdate($list, 1, $day, 'pay_num');
- return 'ok';
- }
- public function retentionHandle()
- {
- // ## 次留 = 获取某天创建玩家数据,根据数据去查询今天的活跃
- $day = "2025-12-17";
- $handleTime = $this->getTime($day, 1);
- // dump($day, $handleTime);
- $retaineService = new RetaineService();
- echo "<pre>";
- // ### 创建用户数
- $members = Db::table('nw_member_game_server')
- ->where('game_id', 507)
- ->whereBetween('create_time', [strtotime($handleTime), strtotime($handleTime . ' 23:59:59')])->column(' DISTINCT member_id');
- // ### 活跃玩家
- $stay_1 = $retaineService->activeMember($day, 'one_stay', 0, 0, $members);
- echo "1. day=".$day.",h_day=".$handleTime.", count = ".count($members).', act='.count($stay_1).PHP_EOL;
- $handleTime = $this->getTime($day, 2);
- $members = Db::table('nw_member_game_server')
- ->where('game_id', 507)
- ->whereBetween('create_time', [strtotime($handleTime), strtotime($handleTime . ' 23:59:59')])->column(' DISTINCT member_id');
- $stay_2 = $retaineService->activeMember($day, 'three_stay', 0, 0, $members);
- echo "2. day=".$day.",h_day=".$handleTime.", count = ".count($members).', act='.count($stay_2).PHP_EOL;
- $handleTime = $this->getTime($day, 3);
- $members = Db::table('nw_member_game_server')
- ->where('game_id', 507)
- ->whereBetween('create_time', [strtotime($handleTime), strtotime($handleTime . ' 23:59:59')])->column(' DISTINCT member_id');
- $stay_3 = $retaineService->activeMember($day, 'three_stay', 0, 0, $members);
- echo "3. day=".$day.",h_day=".$handleTime.", count = ".count($members).', act='.count($stay_3).PHP_EOL;
- $handleTime = $this->getTime($day, 4);
- $members = Db::table('nw_member_game_server')
- ->where('game_id', 507)
- ->whereBetween('create_time', [strtotime($handleTime), strtotime($handleTime . ' 23:59:59')])->column(' DISTINCT member_id');
- $stay_4 = $retaineService->activeMember($day, 'three_stay', 0, 0, $members);
- echo "4. day=".$day.",h_day=".$handleTime.", count = ".count($members).', act='.count($stay_4).PHP_EOL;
- // dump(count($members), count($stay_1), count($stay_2));
- }
- /**
- * 留存表-游戏-次留
- * @return string
- */
- public function one_stay()
- {
- $day = input('day', '');
- if (!$day) {
- $day = date('Y-m-d', strtotime('-1 day'));
- }
- $handleTime = $this->getTime($day, 1);
- $retaineService = new RetaineService();
- // 获取那天注册用户
- // $members = $retaineService->getFirstRoleMemberList($handleTime);
- $members = $retaineService->getSubIds($handleTime);
- // $members = ["266264","266260","266257","266250","266248","266242","266238","266236","266231","266228","266222","266220","266219","266215","266213","266212","266209","266204","266203","266202","266201","266200","266199","266197","266195","266190","266189","266174","266168","266167","266166","266162","266158","266156","266139","266138","266137","266128","266126","266121","266119","266110","266107","266083","266073","266064","266063","266052","266045","266043","266027","266025","266024","266023","265999","265989","265984","265963","265961","265959","265955","265953","265952","265945","265929","265923","265917","265915","265914","265908","265907","265898","265897","265893","265886","265885","265884","265881","265880","265876"];
- if($members) {
- // 今天仍然活跃的玩家
- $list = $retaineService->activeMemberV2($day, 'one_stay', 0, $members);
- $retaineService->insertOrUpdate($list, 1, $handleTime, 'one_stay');
- }
- return 'ok';
- }
- /**
- * 留存表-游戏-三留
- * @return string
- */
- public function three_stay()
- {
- $day = input('day', '');
- if (!$day) {
- $day = date('Y-m-d', strtotime('-1 day'));
- }
- $handleTime = $this->getTime($day, 2);
- $retaineService = new RetaineService();
- // 那天创角用户数
- // $members = $retaineService->getFirstRoleMemberList($handleTime);
- $members = $retaineService->getSubIds($handleTime);
- if($members) {
- //当天活跃玩家
- $list = $retaineService->activeMemberV2($day, 'three_stay', 0, $members);
- $retaineService->insertOrUpdate($list, 1, $handleTime, 'three_stay');
- }
- return 'ok';
- }
- /**
- * 留存表-游戏-四留
- * @return string
- */
- public function four_stay()
- {
- $day = input('day', '');
- if (!$day) {
- $day = date('Y-m-d', strtotime('-1 day'));
- }
- $handleTime = $this->getTime($day, 3);
- $retaineService = new RetaineService();
- // 那天创角用户数
- // $members = $retaineService->getFirstRoleMemberList($handleTime);
- $members = $retaineService->getSubIds($handleTime);
- if($members) {
- //当天活跃玩家
- $list = $retaineService->activeMemberV2($day, 'four_stay', 0, $members);
- $retaineService->insertOrUpdate($list, 1, $handleTime, 'four_stay');
- }
- return 'ok';
- }
- /**
- * 留存表-游戏-五留
- * @return string
- */
- public function five_stay()
- {
- $day = input('day', '');
- if (!$day) {
- $day = date('Y-m-d', strtotime('-1 day'));
- }
- $handleTime = $this->getTime($day, 4);
- $retaineService = new RetaineService();
- // 那天创角用户数
- // $members = $retaineService->getFirstRoleMemberList($handleTime);
- $members = $retaineService->getSubIds($handleTime);
- if($members) {
- //当天活跃玩家
- $list = $retaineService->activeMemberV2($day, 'five_stay', 0, $members);
- $retaineService->insertOrUpdate($list, 1, $handleTime, 'five_stay');
- }
- return 'ok';
- }
- /**
- * 留存表-游戏-六留
- * @return string
- */
- public function six_stay()
- {
- $day = input('day', '');
- if (!$day) {
- $day = date('Y-m-d', strtotime('-1 day'));
- }
- $handleTime = $this->getTime($day, 5);
- $retaineService = new RetaineService();
- // 那天创角用户数
- // $members = $retaineService->getFirstRoleMemberList($handleTime);
- $members = $retaineService->getSubIds($handleTime);
- if($members) {
- //当天活跃玩家
- $list = $retaineService->activeMemberV2($day, 'six_stay', 0, $members);
- $retaineService->insertOrUpdate($list, 1, $handleTime, 'six_stay');
- }
- return 'ok';
- }
- /**
- * 留存表-游戏-七留
- * @return string
- */
- public function seven_stay()
- {
- $day = input('day', '');
- if (!$day) {
- $day = date('Y-m-d', strtotime('-1 day'));
- }
- $handleTime = $this->getTime($day, 6);
- $retaineService = new RetaineService();
- // 那天创角用户数
- // $members = $retaineService->getFirstRoleMemberList($handleTime);
- $members = $retaineService->getSubIds($handleTime);
- if($members) {
- //当天活跃玩家
- $list = $retaineService->activeMemberV2($day, 'seven_stay', 0, $members);
- $retaineService->insertOrUpdate($list, 1, $handleTime, 'seven_stay');
- }
- return 'ok';
- }
- /**
- * 留存表-游戏-十五留
- * @return string
- */
- public function fifteen_stay()
- {
- $day = input('day', '');
- if (!$day) {
- $day = date('Y-m-d', strtotime('-1 day'));
- }
- $handleTime = $this->getTime($day, 14);
- $retaineService = new RetaineService();
- // 那天创角用户数
- // $members = $retaineService->getFirstRoleMemberList($handleTime);
- $members = $retaineService->getSubIds($handleTime);
- if($members) {
- //当天活跃玩家
- $list = $retaineService->activeMemberV2($day, 'fifteen_stay', 0, $members);
- $retaineService->insertOrUpdate($list, 1, $handleTime, 'fifteen_stay');
- }
- return 'ok';
- }
- /**
- * 留存表-游戏-三十留
- * @return string
- */
- public function thirty_stay()
- {
- $day = input('day', '');
- if (!$day) {
- $day = date('Y-m-d', strtotime('-1 day'));
- }
- $handleTime = $this->getTime($day, 29);
- $retaineService = new RetaineService();
- // 那天创角用户数
- // $members = $retaineService->getFirstRoleMemberList($handleTime);
- $members = $retaineService->getSubIds($handleTime);
- if($members) {
- //当天活跃玩家
- $list = $retaineService->activeMemberV2($day, 'thirty_stay', 0, $members);
- $retaineService->insertOrUpdate($list, 1, $handleTime, 'thirty_stay');
- }
- return 'ok';
- }
- private function getTime($day, $num)
- {
- return date('Y-m-d', strtotime($day) - 86400 * $num);
- }
- }
|