RecordPlatformData.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  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 30:
  75. // 注册三十日留存
  76. $service->Retain($value->DateID, Carbon::parse($value->DateID)->addDay(29), 'RetainThirty');
  77. // 活跃三十日留存
  78. $service->activeRetain($value->DateID, Carbon::parse($value->DateID)->addDay(29), 'ActiveRetainThirty');
  79. // 付费三十日留存
  80. $service->payRetain($value->DateID, Carbon::parse($value->DateID)->addDay(29), 'PayRetainThirty');
  81. break;
  82. }
  83. }
  84. // 分渠道修改
  85. $this->affixation($date, $dateID);
  86. }
  87. public function affixation($date, $dateID)
  88. {
  89. $RecordPlatformDataModel = new \App\Models\RecordPlatformData();
  90. $dao = new \App\dao\RecordPlatformData\RecordPlatformData();
  91. // 申请提现金额,申请人数,申请笔数
  92. $OrderWithDraw = $dao->ApplyWithDraw($date);
  93. // 总申请提现金额
  94. $TotalOrderWithDraw = $dao->TotalOrderWithDraw($date);
  95. // 提现成功的手续费
  96. $ServiceFee = $dao->WithDrawOkFree($dateID);
  97. // 游戏人数
  98. $GameUserCounts = $dao->GameUserCount($dateID);
  99. // 新增参游人数
  100. $NewGameUserCounts = $dao->NewGameUserCount($date);
  101. // 赠送金币 ===== 增加赠送金币
  102. //$GiveGolds = RecordScoreInfo::todayLottery($date->format('Y-m-d'));
  103. // 充值彩金
  104. // $RechargeWinnings = $dao->RechargeWinnings($dateID);
  105. // 分享彩金
  106. //$ShareWinnings = $dao->ShareWinnings($dateID);
  107. // 低保
  108. //$Dibao = $dao->dibao($dateID);
  109. // 付费低保
  110. //$payDibao = $dao->payDibao($dateID);
  111. // 签到人数、金额
  112. //$signIn = $dao->signIn($dateID);
  113. $list = $RecordPlatformDataModel->where('DateID', $dateID)->where('Channel', '>=', 0)->get();
  114. foreach ($list as $value) {
  115. if ($OrderWithDraw->isNotEmpty()) {
  116. foreach ($OrderWithDraw as $item) {
  117. $data = ['DateID' => $dateID, 'ApplyWithdraw' => (int)$item->WithDraw, 'ApplyWithdrawCount' => $item->UserCount, 'ApplyWithdrawBi' => $item->CountBi];
  118. // 申请提现渠道修改
  119. $dao->Update($data, $value->Channel, $item->Channel, $dateID);
  120. }
  121. }
  122. if ($ServiceFee->isNotEmpty()) {
  123. // 提现完成手续费渠道修改
  124. foreach ($ServiceFee as $item) {
  125. $data = ['DateID' => $dateID, 'WithdrawFree' => (int)$item->ServiceFee];
  126. $dao->Update($data, $value->Channel, $item->Channel, $dateID);
  127. }
  128. }
  129. // 游戏人数
  130. if ($GameUserCounts->isNotEmpty()) {
  131. foreach ($GameUserCounts as $item) {
  132. $data = ['DateID' => $dateID, 'GameUserCount' => $item->UserCount];
  133. $dao->Update($data, $value->Channel, $item->Channel, $dateID);
  134. }
  135. }
  136. // if ($GiveGolds->isNotEmpty()) {
  137. // // 赠送金币
  138. // foreach ($GiveGolds as $item) {
  139. // $data = ['DateID' => $dateID, 'GiveGold' => $item->ChangeScore];
  140. //
  141. // $dao->Update($data, $value->Channel, $item->Channel, $dateID);
  142. //
  143. // }
  144. // }
  145. if ($NewGameUserCounts->isNotEmpty()) {
  146. // 新增游戏人数
  147. foreach ($NewGameUserCounts as $item) {
  148. $data = ['DateID' => $dateID, 'NewGameUserCount' => $item->UserCount];
  149. $dao->Update($data, $value->Channel, $item->Channel, $dateID);
  150. }
  151. }
  152. // if ($RechargeWinnings->isNotEmpty()) {
  153. // // 充值彩金
  154. // foreach ($RechargeWinnings as $item) {
  155. //
  156. // $data = ['DateID' => $dateID, 'RechargeWinnings' => $item->Score];
  157. //
  158. // $dao->Update($data, $value->Channel, $item->Channel, $dateID);
  159. // }
  160. // }
  161. // if ($ShareWinnings->isNotEmpty()) {
  162. // // 分享彩金
  163. // foreach ($ShareWinnings as $item) {
  164. //
  165. // $data = ['DateID' => $dateID, 'ShareWinnings' => $item->Score];
  166. //
  167. // $dao->Update($data, $value->Channel, $item->Channel, $dateID);
  168. // }
  169. // }
  170. // if ($Dibao->isNotEmpty()) {
  171. // // 低保彩金
  172. // foreach ($Dibao as $item) {
  173. //
  174. // $data = ['DateID' => $dateID, 'Dibao' => $item->Score,'TotalDibaoCount'=>$item->TotalDibaoCount];
  175. //
  176. // $dao->Update($data, $value->Channel, $item->Channel, $dateID);
  177. // }
  178. // }
  179. // if ($payDibao->isNotEmpty()) {
  180. // // 付费低保人数
  181. // foreach ($payDibao as $item) {
  182. //
  183. // $data = ['DateID' => $dateID, 'PayDibao' => $item->PayDibao];
  184. //
  185. // $dao->Update($data, $value->Channel, $item->Channel, $dateID);
  186. // }
  187. // }
  188. // if ($signIn->isNotEmpty()) {
  189. // // 付费低保人数
  190. // foreach ($signIn as $item) {
  191. //
  192. // $data = ['DateID' => $dateID, 'SignInSum' => $item->SignInSum,'SignInCount'=>$item->SignInCount];
  193. //
  194. // $dao->Update($data, $value->Channel, $item->Channel, $dateID);
  195. // }
  196. // }
  197. $ARPU = $value->ActivePeple > 0 ? number_format(($value->PayTotal / $value->ActivePeple) / NumConfig::NUM_VALUE,2,'.','') : 0;
  198. $ARPPU = $value->PayPeple > 0 ? number_format(($value->PayTotal / $value->PayPeple) / NumConfig::NUM_VALUE,2,'.','') : 0;
  199. // 申请提现金额 、 人数 、 笔数
  200. $ApplyWithdraw = (int)$TotalOrderWithDraw->WithDraw ?? 0;
  201. $ApplyWithdrawCount = $TotalOrderWithDraw->UserCount ?? 0;
  202. $ApplyWithdrawBi = $TotalOrderWithDraw->CountBi ?? 0;
  203. // 提现成功手续费
  204. $WithdrawFree = $ServiceFee->sum('ServiceFee');
  205. $GameUserCount = $GameUserCounts->sum('UserCount');
  206. $NewGameUserCount = $NewGameUserCounts->sum('UserCount');
  207. // $GiveGold = $GiveGolds->sum('ChangeScore');
  208. // $RechargeWinningsScore = $RechargeWinnings->sum('Score');
  209. //
  210. //
  211. // $ShareWinningsScore = $ShareWinnings->sum('Score');
  212. // $DibaoScore = $Dibao->sum('Score');
  213. // $TotalDibaoCount = $Dibao->sum('TotalDibaoCount');
  214. // $PayDibaoCont = $payDibao->sum('PayDibao');
  215. // $SignInSum = $signIn->sum('SignInSum');
  216. // $SignInCount = $signIn->sum('SignInCount');
  217. $GiveGold = 0;
  218. $RechargeWinningsScore = 0;
  219. $ShareWinningsScore = 0;
  220. $DibaoScore = 0;
  221. $TotalDibaoCount = 0;
  222. $PayDibaoCont = 0;
  223. $SignInSum = 0;
  224. $SignInCount = 0;
  225. $data = compact('ARPPU', 'ARPU', 'ApplyWithdraw', 'WithdrawFree', 'GameUserCount', 'NewGameUserCount', 'GiveGold', 'ApplyWithdrawBi',
  226. 'ApplyWithdrawCount','TotalDibaoCount','SignInSum','SignInCount');
  227. $data['RechargeWinnings'] = $RechargeWinningsScore;
  228. $data['ShareWinnings'] = $ShareWinningsScore;
  229. $data['Dibao'] = $DibaoScore;
  230. $data['PayDibao'] = $PayDibaoCont;
  231. $RecordPlatformDataModel->where('DateID', $dateID)->where('Channel', -1)->update($data);
  232. }
  233. }
  234. // 日期差
  235. public function dateDiff($time1, $time2)
  236. {
  237. $datetime_start = date_create(date('Y-m-d', strtotime($time1, 1)));
  238. $datetime_end = date_create(date('Y-m-d', strtotime($time2)));
  239. $days = date_diff($datetime_start, $datetime_end)->days;
  240. return $days;
  241. }
  242. }