VoteJob.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. namespace crmeb\jobs;
  3. use app\models\vote\Vote;
  4. use app\models\vote\VoteSub;
  5. use crmeb\interfaces\JobInterface;
  6. use think\facade\Db;
  7. use think\queue\Job;
  8. class VoteJob implements JobInterface
  9. {
  10. public function fire(Job $job, $data): void
  11. {
  12. $doDefaultJod = $data['method'] ?? null;
  13. $beforeMethod = $data['beforeMethod'] ?? null;
  14. $jobData = $data['data'] ?? null;
  15. $errorTimes = $data['errorTimes'] ?? 0;
  16. $release = $data['release'] ?? 0;
  17. if (method_exists($this, $beforeMethod)) {
  18. $isJobStillNeedToBeDone = $this->{$beforeMethod}($jobData);
  19. if ($isJobStillNeedToBeDone) {
  20. $job->delete();
  21. return;
  22. }
  23. }
  24. if (method_exists($this, $doDefaultJod)) {
  25. $isJobDone = $this->{$doDefaultJod}($jobData);
  26. if ($isJobDone) {
  27. $job->delete();
  28. return;
  29. } else {
  30. if ($job->attempts() > $errorTimes && $errorTimes) {
  31. $job->delete();
  32. return;
  33. } else {
  34. $job->release($release);
  35. }
  36. }
  37. }
  38. }
  39. public function doDefaultJod($data): bool
  40. {
  41. try {
  42. // var_dump(111);
  43. // exit;
  44. return VoteSub::doVote($data);
  45. //TODO 参加投票处理
  46. } catch (\Throwable $e) {
  47. }
  48. return true;
  49. }
  50. }