RecordScoreInfo.php 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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, 73];
  16. /** @var int vip商城充值额外赠送 */
  17. const REASON_VIP_SEND_CHIPS = 73;
  18. public static function addScore($user_id, $ChangeScore, $Reason,$currentScore = 0)
  19. {
  20. // 增加用户金币变化记录
  21. if ($currentScore > 0) {
  22. $AfterScore = $currentScore;
  23. }else{
  24. $AfterScore = DB::connection('read')->table('QPTreasureDB.dbo.GameScoreInfo')
  25. ->where('UserID', $user_id)
  26. ->select('Score')
  27. ->lockForUpdate()
  28. ->first()->Score ?? 0;
  29. }
  30. if ($ChangeScore > 0 && $Reason > 0) {
  31. $RecordScoreInfo = [
  32. 'BeforeScore' => $AfterScore,
  33. 'AfterScore' => $AfterScore + $ChangeScore,
  34. 'ChangeScore' => $ChangeScore,
  35. 'UserID' => $user_id,
  36. 'Reason' => $Reason,
  37. 'UpdateTime' => date('Y-m-d H:i:s'),
  38. ];
  39. DB::connection('write')->table(TableName::QPRecordDB() . 'RecordUserScoreChange')->lockForUpdate()->insertGetId($RecordScoreInfo);
  40. // 写分总数
  41. $first = DB::connection('write')->table('QPRecordDB.dbo.RecordUserScoreStatisticsNew')->where('ScoreType', $Reason)
  42. ->where('UserID', $user_id)
  43. ->where('DateID', date('Ymd'))
  44. ->first();
  45. if ($first) {
  46. $data = [
  47. 'ScoreType' => $Reason,
  48. 'Score' => $first->Score + $ChangeScore,
  49. 'ScoreCount' => $first->ScoreCount + 1
  50. ];
  51. DB::connection('write')->table('QPRecordDB.dbo.RecordUserScoreStatisticsNew')->where('ScoreType', $Reason)
  52. ->where('UserID', $user_id)
  53. ->where('DateID', date('Ymd'))
  54. ->update($data);
  55. } else {
  56. $data = [
  57. 'ScoreType' => $Reason,
  58. 'UserID' => $user_id,
  59. 'Score' => $ChangeScore,
  60. 'ScoreCount' => 1,
  61. 'DateID' => date('Ymd')
  62. ];
  63. DB::connection('write')->table('QPRecordDB.dbo.RecordUserScoreStatisticsNew')->insert($data);
  64. }
  65. if (in_array($Reason, self::$Reason)) {
  66. RecordUserDataStatistics::updateOrAdd($user_id, 0, 0, 0, $ChangeScore);
  67. }
  68. }
  69. return $AfterScore + $ChangeScore;
  70. }
  71. // 全部彩金
  72. public static function totalLottery($UserID = '')
  73. {
  74. $sql = DB::connection('read')->table(TableName::QPRecordDB() . 'RecordUserScoreChange')->whereIn('Reason', self::$Reason)
  75. ->selectRaw('Isnull(SUM(ChangeScore),0) as ChangeScore');
  76. !empty($UserID) && $sql->where('UserID', $UserID);
  77. return $sql->first()->ChangeScore;
  78. }
  79. // 今日彩金 -- 分渠道
  80. public static function todayLottery($date, $UserID = '')
  81. {
  82. $ChannelLottery = DB::connection('read')->table(TableName::QPRecordDB() . 'RecordUserScoreChange as rc')
  83. ->whereDate('UpdateTime', $date)
  84. ->whereIn('Reason', self::$Reason)
  85. ->join(TableName::QPAccountsDB() . 'AccountsInfo as ai', 'ai.UserID', 'rc.UserID')
  86. ->selectRaw('Isnull(SUM(ChangeScore),0) as ChangeScore,Channel')
  87. ->groupBy('Channel')
  88. ->get();
  89. return $ChannelLottery;
  90. }
  91. }