RecordScoreInfo.php 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace App\Models;
  3. use App\Facade\TableName;
  4. use App\Http\helper\NumConfig;
  5. use Illuminate\Database\Eloquent\Model;
  6. use Illuminate\Support\Facades\DB;
  7. use Yansongda\Pay\Log;
  8. class RecordScoreInfo extends Model
  9. {
  10. const TABLE = 'QPRecordDB.dbo.YN_RecordScoreInfo';
  11. protected $table = self::TABLE;
  12. public $timestamps = false;
  13. protected $guarded = [];
  14. // 彩金----21:绑定手机赠送--33:注册赠送--44:签到--45:充值--49:月卡--42:邮件附件(彩金) 51:首充彩金 36:推广充值彩金
  15. protected static $Reason = [21, 33, 36, 37, 42, 44, 45, 49, 51, 52, 72];
  16. public static function addScore($user_id, $ChangeScore, $Reason,$currentScore = 0)
  17. {
  18. // 增加用户金币变化记录
  19. if ($currentScore > 0) {
  20. $AfterScore = $currentScore;
  21. }else{
  22. $AfterScore = DB::connection('read')->table('QPTreasureDB.dbo.GameScoreInfo')
  23. ->where('UserID', $user_id)
  24. ->select('Score')
  25. ->lockForUpdate()
  26. ->first()->Score ?? 0;
  27. }
  28. if ($ChangeScore > 0 && $Reason > 0) {
  29. $RecordScoreInfo = [
  30. 'BeforeScore' => $AfterScore,
  31. 'AfterScore' => $AfterScore + $ChangeScore,
  32. 'ChangeScore' => $ChangeScore,
  33. 'UserID' => $user_id,
  34. 'Reason' => $Reason,
  35. 'UpdateTime' => date('Y-m-d H:i:s'),
  36. ];
  37. DB::connection('write')->table(TableName::QPRecordDB() . 'RecordUserScoreChange')->lockForUpdate()->insertGetId($RecordScoreInfo);
  38. // 写分总数
  39. $first = DB::connection('write')->table('QPRecordDB.dbo.RecordUserScoreStatisticsNew')->where('ScoreType', $Reason)
  40. ->where('UserID', $user_id)
  41. ->where('DateID', date('Ymd'))
  42. ->first();
  43. if ($first) {
  44. $data = [
  45. 'ScoreType' => $Reason,
  46. 'Score' => $first->Score + $ChangeScore,
  47. 'ScoreCount' => $first->ScoreCount + 1
  48. ];
  49. DB::connection('write')->table('QPRecordDB.dbo.RecordUserScoreStatisticsNew')->where('ScoreType', $Reason)
  50. ->where('UserID', $user_id)
  51. ->where('DateID', date('Ymd'))
  52. ->update($data);
  53. } else {
  54. $data = [
  55. 'ScoreType' => $Reason,
  56. 'UserID' => $user_id,
  57. 'Score' => $ChangeScore,
  58. 'ScoreCount' => 1,
  59. 'DateID' => date('Ymd')
  60. ];
  61. DB::connection('write')->table('QPRecordDB.dbo.RecordUserScoreStatisticsNew')->insert($data);
  62. }
  63. if (in_array($Reason, self::$Reason)) {
  64. RecordUserDataStatistics::updateOrAdd($user_id, 0, 0, 0, $ChangeScore);
  65. }
  66. }
  67. return $AfterScore + $ChangeScore;
  68. }
  69. // 全部彩金
  70. public static function totalLottery($UserID = '')
  71. {
  72. $sql = DB::connection('read')->table(TableName::QPRecordDB() . 'RecordUserScoreChange')->whereIn('Reason', self::$Reason)
  73. ->selectRaw('Isnull(SUM(ChangeScore),0) as ChangeScore');
  74. !empty($UserID) && $sql->where('UserID', $UserID);
  75. return $sql->first()->ChangeScore;
  76. }
  77. // 今日彩金 -- 分渠道
  78. public static function todayLottery($date, $UserID = '')
  79. {
  80. $ChannelLottery = DB::connection('read')->table(TableName::QPRecordDB() . 'RecordUserScoreChange as rc')
  81. ->whereDate('UpdateTime', $date)
  82. ->whereIn('Reason', self::$Reason)
  83. ->join(TableName::QPAccountsDB() . 'AccountsInfo as ai', 'ai.UserID', 'rc.UserID')
  84. ->selectRaw('Isnull(SUM(ChangeScore),0) as ChangeScore,Channel')
  85. ->groupBy('Channel')
  86. ->get();
  87. return $ChannelLottery;
  88. }
  89. }