RecordScoreInfo.php 4.1 KB

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