RecordPlatformData.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310
  1. <?php
  2. namespace App\Console\Commands;
  3. use App\Facade\TableName;
  4. use App\Http\helper\NumConfig;
  5. use App\Models\AccountsInfo;
  6. use App\Models\RecordScoreInfo;
  7. use Carbon\Carbon;
  8. use Illuminate\Console\Command;
  9. use Illuminate\Support\Facades\DB;
  10. class RecordPlatformData extends Command
  11. {
  12. /**
  13. * The name and signature of the console command.
  14. *
  15. * @var string
  16. */
  17. protected $signature = 'RecordPlatformData';
  18. /**
  19. * The console command description.
  20. *
  21. * @var string
  22. */
  23. protected $description = '数据统计';
  24. /**
  25. * Create a new command instance.
  26. *
  27. * @return void
  28. */
  29. public function __construct()
  30. {
  31. parent::__construct();
  32. }
  33. /**
  34. * Execute the console command.
  35. *
  36. * @return mixed
  37. */
  38. public function handle()
  39. {
  40. $date = Carbon::yesterday();
  41. // $date = Carbon::parse('20220525');
  42. // $RecordPlatformDataModel = new \App\Models\RecordPlatformData();
  43. $dateID = $date->format('Ymd');
  44. $service = new \App\Services\RecordPlatformData();
  45. $dayBefore = Carbon::now()->subDays(30)->format('Ymd');
  46. $list = DB::table(TableName::QPRecordDB() . 'RecordPlatformData')
  47. ->where('DateID', '>=', $dayBefore)
  48. ->get();
  49. $now = Carbon::now()->format('Ymd');
  50. foreach ($list as $value) {
  51. $dateDay = $this->dateDiff($value->DateID, $now);
  52. switch ($dateDay) {
  53. case 2:
  54. $service->Retain($value->DateID, Carbon::parse($value->DateID)->addDay(1), 'RetainOne');
  55. // $service->activeRetain($value->DateID, Carbon::parse($value->DateID)->addDay(1), 'ActiveRetainOne');
  56. $service->payRetain($value->DateID, Carbon::parse($value->DateID)->addDay(1), 'PayRetainOne');
  57. break;
  58. case 3:
  59. // 注册三日留存
  60. $service->Retain($value->DateID, Carbon::parse($value->DateID)->addDay(2), 'RetainThree');
  61. // 活跃三日留存
  62. // $service->activeRetain($value->DateID, Carbon::parse($value->DateID)->addDay(2), 'ActiveRetainThree');
  63. // 付费三日留存
  64. $service->payRetain($value->DateID, Carbon::parse($value->DateID)->addDay(2), 'PayRetainThree');
  65. break;
  66. case 7:
  67. // 注册七日留存
  68. $service->Retain($value->DateID, Carbon::parse($value->DateID)->addDay(6), 'RetainSeven');
  69. // 活跃七日留存
  70. // $service->activeRetain($value->DateID, Carbon::parse($value->DateID)->addDay(6), 'ActiveRetainSeven');
  71. // 付费七日留存
  72. $service->payRetain($value->DateID, Carbon::parse($value->DateID)->addDay(6), 'PayRetainSeven');
  73. break;
  74. case 15:
  75. // 注册七日留存
  76. $service->Retain($value->DateID, Carbon::parse($value->DateID)->addDay(14), 'RetainFifteen');
  77. // 活跃七日留存
  78. // $service->activeRetain($value->DateID, Carbon::parse($value->DateID)->addDay(14), 'ActiveRetainSeven');
  79. // 付费七日留存
  80. $service->payRetain($value->DateID, Carbon::parse($value->DateID)->addDay(14), 'RetainFifteen');
  81. break;
  82. case 30:
  83. // 注册三十日留存
  84. $service->Retain($value->DateID, Carbon::parse($value->DateID)->addDay(29), 'RetainThirty');
  85. // 活跃三十日留存
  86. // $service->activeRetain($value->DateID, Carbon::parse($value->DateID)->addDay(29), 'ActiveRetainThirty');
  87. // 付费三十日留存
  88. $service->payRetain($value->DateID, Carbon::parse($value->DateID)->addDay(29), 'PayRetainThirty');
  89. break;
  90. }
  91. }
  92. // 分渠道修改
  93. $this->affixation($date, $dateID);
  94. }
  95. public function affixation($date, $dateID)
  96. {
  97. $RecordPlatformDataModel = new \App\Models\RecordPlatformData();
  98. $dao = new \App\dao\RecordPlatformData\RecordPlatformData();
  99. // 申请提现金额,申请人数,申请笔数
  100. $OrderWithDraw = $dao->ApplyWithDraw($date);
  101. // 总申请提现金额
  102. $TotalOrderWithDraw = $dao->TotalOrderWithDraw($date);
  103. // 提现成功的手续费
  104. $ServiceFee = $dao->WithDrawOkFree($dateID);
  105. // 游戏人数
  106. $GameUserCounts = $dao->GameUserCount($dateID);
  107. // 新增参游人数
  108. $NewGameUserCounts = $dao->NewGameUserCount($date);
  109. $NewGameWinTopCounts = $dao->NewGameWinTopCount($date);
  110. // 赠送金币 ===== 增加赠送金币
  111. //$GiveGolds = RecordScoreInfo::todayLottery($date->format('Y-m-d'));
  112. // 充值彩金
  113. // $RechargeWinnings = $dao->RechargeWinnings($dateID);
  114. // 分享彩金
  115. //$ShareWinnings = $dao->ShareWinnings($dateID);
  116. // 低保
  117. //$Dibao = $dao->dibao($dateID);
  118. // 付费低保
  119. //$payDibao = $dao->payDibao($dateID);
  120. // 签到人数、金额
  121. //$signIn = $dao->signIn($dateID);
  122. $list = $RecordPlatformDataModel->where('DateID', $dateID)->where('Channel', '>=', 0)->get();
  123. foreach ($list as $value) {
  124. if ($OrderWithDraw->isNotEmpty()) {
  125. foreach ($OrderWithDraw as $item) {
  126. $data = ['DateID' => $dateID, 'ApplyWithdraw' => (int)$item->WithDraw, 'ApplyWithdrawCount' => $item->UserCount, 'ApplyWithdrawBi' => $item->CountBi];
  127. // 申请提现渠道修改
  128. $dao->Update($data, $value->Channel, $item->Channel, $dateID);
  129. }
  130. }
  131. if ($ServiceFee->isNotEmpty()) {
  132. // 提现完成手续费渠道修改
  133. foreach ($ServiceFee as $item) {
  134. $data = ['DateID' => $dateID, 'WithdrawFree' => (int)$item->ServiceFee];
  135. $dao->Update($data, $value->Channel, $item->Channel, $dateID);
  136. }
  137. }
  138. // 游戏人数
  139. if ($GameUserCounts->isNotEmpty()) {
  140. foreach ($GameUserCounts as $item) {
  141. $data = ['DateID' => $dateID, 'GameUserCount' => $item->UserCount];
  142. $dao->Update($data, $value->Channel, $item->Channel, $dateID);
  143. }
  144. }
  145. if ($NewGameWinTopCounts->isNotEmpty()) {
  146. //
  147. foreach ($NewGameWinTopCounts as $item) {
  148. $data = ['DateID' => $dateID, 'NewWinTop' => $item->UserCount];
  149. $dao->Update($data, $value->Channel, $item->Channel, $dateID);
  150. }
  151. }
  152. if ($NewGameUserCounts->isNotEmpty()) {
  153. // 新增游戏人数
  154. foreach ($NewGameUserCounts as $item) {
  155. $data = ['DateID' => $dateID, 'NewGameUserCount' => $item->UserCount];
  156. $dao->Update($data, $value->Channel, $item->Channel, $dateID);
  157. }
  158. }
  159. // if ($RechargeWinnings->isNotEmpty()) {
  160. // // 充值彩金
  161. // foreach ($RechargeWinnings as $item) {
  162. //
  163. // $data = ['DateID' => $dateID, 'RechargeWinnings' => $item->Score];
  164. //
  165. // $dao->Update($data, $value->Channel, $item->Channel, $dateID);
  166. // }
  167. // }
  168. // if ($ShareWinnings->isNotEmpty()) {
  169. // // 分享彩金
  170. // foreach ($ShareWinnings as $item) {
  171. //
  172. // $data = ['DateID' => $dateID, 'ShareWinnings' => $item->Score];
  173. //
  174. // $dao->Update($data, $value->Channel, $item->Channel, $dateID);
  175. // }
  176. // }
  177. // if ($Dibao->isNotEmpty()) {
  178. // // 低保彩金
  179. // foreach ($Dibao as $item) {
  180. //
  181. // $data = ['DateID' => $dateID, 'Dibao' => $item->Score,'TotalDibaoCount'=>$item->TotalDibaoCount];
  182. //
  183. // $dao->Update($data, $value->Channel, $item->Channel, $dateID);
  184. // }
  185. // }
  186. // if ($payDibao->isNotEmpty()) {
  187. // // 付费低保人数
  188. // foreach ($payDibao as $item) {
  189. //
  190. // $data = ['DateID' => $dateID, 'PayDibao' => $item->PayDibao];
  191. //
  192. // $dao->Update($data, $value->Channel, $item->Channel, $dateID);
  193. // }
  194. // }
  195. // if ($signIn->isNotEmpty()) {
  196. // // 付费低保人数
  197. // foreach ($signIn as $item) {
  198. //
  199. // $data = ['DateID' => $dateID, 'SignInSum' => $item->SignInSum,'SignInCount'=>$item->SignInCount];
  200. //
  201. // $dao->Update($data, $value->Channel, $item->Channel, $dateID);
  202. // }
  203. // }
  204. $ARPU = $value->ActivePeple > 0 ? number_format(($value->PayTotal / $value->ActivePeple) / NumConfig::NUM_VALUE,2,'.','') : 0;
  205. $ARPPU = $value->PayPeple > 0 ? number_format(($value->PayTotal / $value->PayPeple) / NumConfig::NUM_VALUE,2,'.','') : 0;
  206. // 申请提现金额 、 人数 、 笔数
  207. $ApplyWithdraw = (int)$TotalOrderWithDraw->WithDraw ?? 0;
  208. $ApplyWithdrawCount = $TotalOrderWithDraw->UserCount ?? 0;
  209. $ApplyWithdrawBi = $TotalOrderWithDraw->CountBi ?? 0;
  210. // 提现成功手续费
  211. $WithdrawFree = $ServiceFee->sum('ServiceFee');
  212. $GameUserCount = $GameUserCounts->sum('UserCount');
  213. $NewGameUserCount = $NewGameUserCounts->sum('UserCount');
  214. $NewWinTop = $NewGameWinTopCounts->sum('UserCount');
  215. // $GiveGold = $GiveGolds->sum('ChangeScore');
  216. // $RechargeWinningsScore = $RechargeWinnings->sum('Score');
  217. //
  218. //
  219. // $ShareWinningsScore = $ShareWinnings->sum('Score');
  220. // $DibaoScore = $Dibao->sum('Score');
  221. // $TotalDibaoCount = $Dibao->sum('TotalDibaoCount');
  222. // $PayDibaoCont = $payDibao->sum('PayDibao');
  223. // $SignInSum = $signIn->sum('SignInSum');
  224. // $SignInCount = $signIn->sum('SignInCount');
  225. $GiveGold = 0;
  226. $RechargeWinningsScore = 0;
  227. $ShareWinningsScore = 0;
  228. $DibaoScore = 0;
  229. $TotalDibaoCount = 0;
  230. $PayDibaoCont = 0;
  231. $SignInSum = 0;
  232. $SignInCount = 0;
  233. $data = compact('ARPPU', 'ARPU', 'ApplyWithdraw', 'WithdrawFree', 'GameUserCount', 'NewGameUserCount', 'GiveGold', 'ApplyWithdrawBi',
  234. 'ApplyWithdrawCount','TotalDibaoCount','SignInSum','SignInCount','NewWinTop');
  235. $data['RechargeWinnings'] = $RechargeWinningsScore;
  236. $data['ShareWinnings'] = $ShareWinningsScore;
  237. $data['Dibao'] = $DibaoScore;
  238. $data['PayDibao'] = $PayDibaoCont;
  239. $RecordPlatformDataModel->where('DateID', $dateID)->where('Channel', -1)->update($data);
  240. }
  241. }
  242. // 日期差
  243. public function dateDiff($time1, $time2)
  244. {
  245. $datetime_start = date_create(date('Y-m-d', strtotime($time1, 1)));
  246. $datetime_end = date_create(date('Y-m-d', strtotime($time2)));
  247. $days = date_diff($datetime_start, $datetime_end)->days;
  248. return $days;
  249. }
  250. }