LogDayStatisticalByDayAndChannel.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. <?php
  2. namespace App\Services;
  3. use App\Http\helper\NumConfig;
  4. use Illuminate\Support\Facades\DB;
  5. class LogDayStatisticalByDayAndChannel
  6. {
  7. public function updateData($UserID, $type = 1)
  8. {
  9. $UserRegisterInfo = DB::connection('write')->table('QPAccountsDB.dbo.UserRegisterInfo')
  10. ->where('UserID', $UserID)
  11. ->select('RegisterTime')
  12. ->first();
  13. if ($UserRegisterInfo) {
  14. $RegisterTime = $UserRegisterInfo->RegisterTime;
  15. } else {
  16. return true;
  17. }
  18. if ($type == 1) { // 充值
  19. $list = DB::connection('write')->table('agent.dbo.order as o')
  20. ->join('QPAccountsDB.dbo.UserRegisterInfo as ai', 'o.user_id', '=', 'ai.UserID')
  21. ->where('RegisterTime', $RegisterTime)
  22. ->where('pay_status', 1)
  23. ->selectRaw('count(distinct(ai.UserID)) count,count(o.id) as FuFeiBi,sum(amount) amount,Channel')
  24. ->groupBy('Channel')
  25. ->lock('with(nolock)')
  26. ->get();
  27. $channels = [];
  28. $item = [];
  29. foreach ($list as &$value) {
  30. $channels[] = $value->Channel;
  31. $value->amount = (int)($value->amount / NumConfig::NUM_VALUE);
  32. if (isset($item[$RegisterTime])) {
  33. $item[$RegisterTime]['NewPayCount'] += $value->count;
  34. $item[$RegisterTime]['NewPayBi'] += $value->FuFeiBi;
  35. $item[$RegisterTime]['NewPaySum'] += $value->amount;
  36. } else {
  37. $item[$RegisterTime]['NewPayCount'] = $value->count;
  38. $item[$RegisterTime]['NewPayBi'] = $value->FuFeiBi;
  39. $item[$RegisterTime]['NewPaySum'] = $value->amount;
  40. }
  41. // 修改渠道
  42. DB::connection('write')->table('QPRecordDB.dbo.logDayStatisticalByDayAndChannel')
  43. ->whereDate('RecordDate', DB::raw("cast('{$RegisterTime}' as date)"))
  44. ->where('Channel', $value->Channel)
  45. ->update(['NewPayCount' => $value->count, 'NewPaySum' => $value->amount, 'NewPayBi' => $value->FuFeiBi]);
  46. }
  47. // 归因问题导致的渠道不准的数据 清0
  48. if (count($channels) > 0) {
  49. $channels[] = -1;
  50. DB::connection('write')->table('QPRecordDB.dbo.logDayStatisticalByDayAndChannel')
  51. ->whereNotIn('Channel', $channels)
  52. ->whereDate('RecordDate', $RegisterTime)
  53. ->update(['NewPayCount' => 0, 'NewPaySum' => 0, 'NewPayBi' => 0]);
  54. }
  55. // 修改总得
  56. // foreach ($item as $key => $value) {
  57. //
  58. // DB::connection('write')->table('QPRecordDB.dbo.logDayStatisticalByDayAndChannel')
  59. // ->whereDate('RecordDate', DB::raw("cast('{$RegisterTime}' as date)"))
  60. // ->where('Channel', -1)
  61. // ->update(['NewPayCount' => $value['NewPayCount'], 'NewPaySum' => $value['NewPaySum'], 'NewPayBi' => $value['NewPayBi']]);
  62. // }
  63. } else { // 提现
  64. $list = DB::connection('write')->table('QPAccountsDB.dbo.OrderWithDraw as o')
  65. ->join('QPAccountsDB.dbo.UserRegisterInfo as ai', 'o.UserID', 'ai.UserID')
  66. ->where('RegisterTime', $RegisterTime)
  67. ->where('State', 2)
  68. ->selectRaw('count(distinct(ai.UserID)) count,sum(WithDraw) WithDraw,count(o.RecordID) TiXianBi,Channel,sum(ServiceFee) ServiceFee')
  69. ->groupBy('Channel')
  70. ->get();
  71. $channels = [];
  72. $item = [];
  73. foreach ($list as &$value) {
  74. $channels[] = $value->Channel;
  75. if (isset($item[$RegisterTime])) {
  76. $item[$RegisterTime]['TiXianCount'] += $value->count;
  77. $item[$RegisterTime]['TiXianBi'] += $value->TiXianBi;
  78. $item[$RegisterTime]['TiXianOkSum'] += $value->WithDraw;
  79. $item[$RegisterTime]['TiXianShouXu'] += $value->ServiceFee;
  80. } else {
  81. $item[$RegisterTime]['TiXianCount'] = $value->count;
  82. $item[$RegisterTime]['TiXianBi'] = $value->TiXianBi;
  83. $item[$RegisterTime]['TiXianOkSum'] = $value->WithDraw;
  84. $item[$RegisterTime]['TiXianShouXu'] = $value->ServiceFee;
  85. }
  86. $TiXianOkSum = intval(round($value->WithDraw / 100));
  87. $TiXianShouXu = intval(round($value->ServiceFee / 100));
  88. // 修改渠道
  89. DB::connection('write')->table('QPRecordDB.dbo.logDayStatisticalByDayAndChannel')
  90. ->whereDate('RecordDate', DB::raw("cast('{$RegisterTime}' as date)"))
  91. ->where('Channel', $value->Channel)
  92. ->update(['TiXianCount' => $value->count, 'TiXianBi' => $value->TiXianBi, 'TiXianOkSum' => $TiXianOkSum, 'TiXianShouXu' => $TiXianShouXu]);
  93. }
  94. // 归因问题导致的渠道不准的数据 清0
  95. if (count($channels) > 0) {
  96. $channels[] = -1;
  97. DB::connection('write')->table('QPRecordDB.dbo.logDayStatisticalByDayAndChannel')
  98. ->whereNotIn('Channel', $channels)
  99. ->whereDate('RecordDate', $RegisterTime)
  100. ->update(['TiXianCount' => 0, 'TiXianBi' => 0, 'TiXianOkSum' => 0, 'TiXianShouXu' => 0]);
  101. }
  102. // 修改总得
  103. // foreach ($item as $key => $value) {
  104. // $TiXianOkSum = intval(round($value['TiXianOkSum'] / 100));
  105. // $TiXianShouXu = intval(round($value['TiXianShouXu'] / 100));
  106. // DB::connection('write')->table('QPRecordDB.dbo.logDayStatisticalByDayAndChannel')
  107. // ->whereDate('RecordDate', DB::raw("cast('{$RegisterTime}' as date)"))
  108. // ->where('Channel', -1)
  109. // ->update(['TiXianCount' => $value['TiXianCount'], 'TiXianOkSum' => $TiXianOkSum, 'TiXianBi' => $value['TiXianBi'], 'TiXianShouXu' => $TiXianShouXu]);
  110. // }
  111. }
  112. return true;
  113. }
  114. }