PcPrediction.php 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. namespace App\Models;
  3. class PcPrediction extends BaseModel
  4. {
  5. protected $table = 'pc_prediction';
  6. protected $fillable = ['issue_no', 'size', 'odd_or_even', 'is_valid', 'winning_numbers', 'time'];
  7. const SIZE_BIG = 1;//预测大小:大
  8. const SIZE_SMALL = 0;//预测大小:小
  9. const ODD = 0;//预测单双:单
  10. const EVEN = 1;//预测单双:双
  11. const VALID_CORRECT = 1;//预测结果:正确
  12. const VALID_ERROR = 0;//预测结果:错误
  13. //预测
  14. static function prediction($issueNo): PcPrediction
  15. {
  16. $issue = PcIssue::where('issue_no', $issueNo)->first();
  17. $size = mt_rand(static::SIZE_SMALL, static::SIZE_BIG);
  18. $oddOrEven = mt_rand(static::ODD, static::EVEN);
  19. return static::create([
  20. 'issue_no' => $issueNo,
  21. 'size' => $size,
  22. 'odd_or_even' => $oddOrEven,
  23. 'time' => $issue->end_time
  24. ]);
  25. }
  26. //预测结果
  27. static function result($issueNo, $winningNumbers, $awards): void
  28. {
  29. $data = static::where('issue_no', $issueNo)->first();
  30. if (!$data) $data = static::prediction($issueNo);
  31. $size = in_array("大", $awards) ? "大" : "小";
  32. $oddOrEven = in_array("双", $awards) ? "双" : "单";
  33. $size = $size == '大' ? static::SIZE_BIG : static::SIZE_SMALL;
  34. $oddOrEven = $oddOrEven == '双' ? static::EVEN : static::ODD;
  35. $data->is_valid = static::VALID_ERROR;
  36. if ($data->size == $size || $data->odd_or_even == $oddOrEven) {
  37. $data->is_valid = static::VALID_CORRECT;
  38. }
  39. $data->winning_numbers = $winningNumbers;
  40. $data->save();
  41. }
  42. function getWinningNumbersAttribute($value)
  43. {
  44. if (!empty($value)) {
  45. $value = explode(',', $value);
  46. $value = array_map('intval', $value);
  47. $value[] = array_sum($value);
  48. return $value;
  49. }
  50. return [];
  51. }
  52. }