| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437 |
- <?php
- /**
- * 留存统计 - 游戏渠道推广
- */
- namespace app\admin\controller;
- use app\service\RetaineService;
- use think\Controller;
- use think\Db;
- class RetaineGameChannel 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,1, 0, 'reg_total');
- $list = $retaineService->regNumV2($day,1,0, 'reg_total');
- // 清除当天数据
- Db::table('cy_retaine_game')
- ->where(['type_id' => 2, 'day' => $day])
- ->update(['update_time' => time(), 'reg_total' => 0]);
- // $retaineService->insertOrUpdatev2($list, 2, $day, 'reg_total');
- $retaineService->syncGameStatData($list, 2, $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, 0, 1);
- $list = $retaineService->regNumV2($day, 1, 0, 'reg_num');
- // 清除当天数据
- Db::table('cy_retaine_game')
- ->where(['type_id' => 2, 'day' => $day])
- ->update(['update_time' => time(), 'reg_num' => 0]);
- // $retaineService->insertOrUpdatev2($list, 2, $day, 'reg_num');
- $retaineService->syncGameStatData($list, 2, $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, 0, 1, 0, 'role_num');
- // 清除当天数据
- Db::table('cy_retaine_game')
- ->where(['type_id' => 2, 'day' => $day])
- ->update(['update_time' => time(), 'role_num' => 0]);
- // $retaineService->insertOrUpdatev2($list, 2, $day, 'role_num');
- $retaineService->syncGameStatData($list, 2, $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', 0, 1);
- $list = $retaineService->activeMemberV2($day, 'act_num', 1);
- // 清除当天数据
- Db::table('cy_retaine_game')
- ->where(['type_id' => 2, 'day' => $day])
- ->update(['update_time' => time(), 'act_num' => 0]);
- // $retaineService->insertOrUpdatev2($list, 2, $day, 'act_num');
- $retaineService->syncGameStatData($list, 2, $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, 0, 1);
- // 清除当天数据
- Db::table('cy_retaine_game')
- ->where(['type_id' => 2, 'day' => $day])
- ->update(['update_time' => time(), 'recharge_num' => 0, 'pay_num' => 0]);
- // $retaineService->insertOrUpdatev2($list, 2, $day, 'pay_num');
- $retaineService->syncGameStatData($list, 2, $day, 'pay_num');
- // $retaineService->insertOrUpdatev2($list, 2, $day, 'recharge_num');
- $retaineService->syncGameStatData($list, 2, $day, 'recharge_num');
- return 'ok';
- }
- /**
- * 留存表-游戏-渠道-次留(处理的是前一天的数据)
- * @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();
- //当天活跃玩家
- $list = $retaineService->activeMemberV2($day, 'one_stay', 1, [], "", ['reg_time' => ['between time', [strtotime($handleTime), strtotime($handleTime . ' 23:59:59')]]]);
- // 清除当天数据
- Db::table('cy_retaine_game')
- ->where(['type_id' => 2, 'day' => $handleTime])
- ->update(['update_time' => time(), 'one_stay' => 0]);
- // $retaineService->insertOrUpdate($list, 2, $handleTime, 'one_stay');
- $retaineService->syncGameStatData($list, 2, $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();
- //当天活跃玩家
- $list = $retaineService->activeMemberV2($day, 'three_stay', 1, [], "", ['reg_time' => ['between time', [strtotime($handleTime), strtotime($handleTime . ' 23:59:59')]]]);
- // 清除当天数据
- Db::table('cy_retaine_game')
- ->where(['type_id' => 2, 'day' => $handleTime])
- ->update(['update_time' => time(), 'three_stay' => 0]);
- // $retaineService->insertOrUpdate($list, 2, $handleTime, 'three_stay');
- $retaineService->syncGameStatData($list, 2, $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();
- //当天活跃玩家
- $list = $retaineService->activeMemberV2($day, 'four_stay', 1, [], "", ['reg_time' => ['between time', [strtotime($handleTime), strtotime($handleTime . ' 23:59:59')]]]);
- // 清除当天数据
- Db::table('cy_retaine_game')
- ->where(['type_id' => 2, 'day' => $handleTime])
- ->update(['update_time' => time(), 'four_stay' => 0]);
- // $retaineService->insertOrUpdate($list, 2, $handleTime, 'four_stay');
- $retaineService->syncGameStatData($list, 2, $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->getSubIds($handleTime);
- if ($members) {
- //当天活跃玩家
- $list = $retaineService->activeMemberV2($day, 'five_stay', 1, [], "", ['reg_time' => ['between time', [strtotime($handleTime), strtotime($handleTime . ' 23:59:59')]]]);
- // 清除当天数据
- Db::table('cy_retaine_game')
- ->where(['type_id' => 2, 'day' => $handleTime])
- ->update(['update_time' => time(), 'five_stay' => 0]);
- // $retaineService->insertOrUpdate($list, 2, $handleTime, 'five_stay');
- $retaineService->syncGameStatData($list, 2, $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();
- //当天活跃玩家
- $list = $retaineService->activeMemberV2($day, 'six_stay', 1, [], "", ['reg_time' => ['between time', [strtotime($handleTime), strtotime($handleTime . ' 23:59:59')]]]);
- // 清除当天数据
- Db::table('cy_retaine_game')
- ->where(['type_id' => 2, 'day' => $handleTime])
- ->update(['update_time' => time(), 'six_stay' => 0]);
- // $retaineService->insertOrUpdate($list, 2, $handleTime, 'six_stay');
- $retaineService->syncGameStatData($list, 2, $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();
- //当天活跃玩家
- $list = $retaineService->activeMemberV2($day, 'seven_stay', 1, [], "", ['reg_time' => ['between time', [strtotime($handleTime), strtotime($handleTime . ' 23:59:59')]]]);
- Db::table('cy_retaine_game')
- ->where(['type_id' => 2, 'day' => $handleTime])
- ->update(['update_time' => time(), 'seven_stay' => 0]);
- // $retaineService->insertOrUpdate($list, 2, $handleTime, 'seven_stay');
- $retaineService->syncGameStatData($list, 2, $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();
- //当天活跃玩家
- $list = $retaineService->activeMemberV2($day, 'fifteen_stay', 1, [], "", ['reg_time' => ['between time', [strtotime($handleTime), strtotime($handleTime . ' 23:59:59')]]]);
- Db::table('cy_retaine_game')
- ->where(['type_id' => 2, 'day' => $handleTime])
- ->update(['update_time' => time(), 'fifteen_stay' => 0]);
- // $retaineService->insertOrUpdate($list, 2, $handleTime, 'fifteen_stay');
- $retaineService->syncGameStatData($list, 2, $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();
- //当天活跃玩家
- $list = $retaineService->activeMemberV2($day, 'thirty_stay', 1, [], "", ['reg_time' => ['between time', [strtotime($handleTime), strtotime($handleTime . ' 23:59:59')]]]);
- Db::table('cy_retaine_game')->where(['type_id' => 2, 'day' => $handleTime])->update(['update_time' => time(), 'thirty_stay' => 0]);
- // $retaineService->insertOrUpdate($list, 2, $handleTime, 'thirty_stay');
- $retaineService->syncGameStatData($list, 2, $handleTime, 'thirty_stay');
- return 'ok';
- }
- private function getTime($day, $num)
- {
- return date('Y-m-d', strtotime($day) - 86400 * $num);
- }
- // 新活跃玩家
- public function new_act_num(){
- $day = input('day', '');
- if (!$day) {
- $day = date('Y-m-d', strtotime('-1 day'));
- }
- $retaineService = new RetaineService();
- // $members = $retaineService->getMembers($day);
- // ['ns.create_time' => ['between', [strtotime($day), strtotime($day . ' 23:59:59')]]]
- $list = $retaineService->activeMemberV2($day, 'new_act_num', 1, [], "", ['ns.create_time' => ['between time', [strtotime($day), strtotime($day . ' 23:59:59')]]]);
- // dump($list);
- Db::table('cy_retaine_game')->where(['type_id' => 2, 'day' => $day])->update(['update_time' => time(), 'new_act_num' => 0]);
- // $retaineService->insertOrUpdate($list, 2, $day, 'new_act_num');
- $retaineService->syncGameStatData($list, 2, $day, 'new_act_num');
- return 'ok';
- }
- // 新付费玩家+新玩家付费金额
- public function new_recharge_num(){
- $day = input('day', '');
- if (!$day) {
- $day = date('Y-m-d', strtotime('-1 day'));
- }
- $retaineService = new RetaineService();
- $members = $retaineService->getMembers($day);
- $list = $retaineService->rechargeMoney($day, 0, 1, 0, $members, ['new_pay_num', 'new_recharge_num']);
- // dump($list);
- Db::table('cy_retaine_game')->where(['type_id' => 2, 'day' => $day])->update(['update_time' => time(), 'new_pay_num' => 0, 'new_recharge_num' => 0]);
- // $retaineService->insertOrUpdatev2($list, 2, $day, 'new_pay_num');
- $retaineService->syncGameStatData($list, 2, $day, 'new_pay_num');
- // $retaineService->insertOrUpdatev2($list, 2, $day, 'new_recharge_num');
- $retaineService->syncGameStatData($list, 2, $day, 'new_recharge_num');
- return 'ok';
- }
- }
|