ZeroUserProfits.php 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace app\jobs;
  3. use app\common\model\profit\ZeroUserProfits as ZeroUserProfitsModel;
  4. use app\common\repositories\profits\ProfitsRepository;
  5. use app\common\utils\QueueLogger;
  6. use crmeb\interfaces\JobInterface;
  7. class ZeroUserProfits implements JobInterface
  8. {
  9. public function fire($job, $data)
  10. {
  11. // 记录任务开始日志
  12. QueueLogger::start('ZeroUserProfits', $job, $data);
  13. // 数据仓库
  14. $repository = new ProfitsRepository();
  15. try {
  16. // 记录业务执行开始
  17. QueueLogger::businessStart('用户收益计算', $data);
  18. // 执行业务
  19. $res = $repository->profits($data);
  20. if (!is_string($res)) {
  21. // 记录成功日志
  22. QueueLogger::success('ZeroUserProfits', $job, $data, $res);
  23. $job->delete();
  24. } else {
  25. // 记录业务执行失败但未异常的情况
  26. QueueLogger::warning('ZeroUserProfits', $job, $data, '业务执行返回false,错误信息:' . $res);
  27. if ($job->attempts() > 3) {
  28. // 超过重试次数,调用failed方法记录异常状态
  29. $this->failed($data);
  30. $job->delete();
  31. }
  32. }
  33. } catch (\Exception $e) {
  34. // 记录异常日志
  35. QueueLogger::error('ZeroUserProfits', $job, $data, $e);
  36. if ($job->attempts() > 3) {
  37. // 超过重试次数,调用failed方法记录异常状态
  38. $this->failed($data);
  39. $job->delete();
  40. }
  41. }
  42. // 记录任务结束日志
  43. QueueLogger::end('ZeroUserProfits', $job, $data);
  44. }
  45. public function failed($data)
  46. {
  47. try {
  48. // 记录任务失败日志
  49. QueueLogger::failed('ZeroUserProfits', $data);
  50. // 在数据库中标记数据异常状态
  51. if (isset($data['logId']) && !empty($data['logId'])) {
  52. // 更新ZeroUserProfits表的status字段为异常状态
  53. ZeroUserProfitsModel::where('id', $data['logId'])
  54. ->update([
  55. 'status' => 3, // 假设2表示异常状态
  56. 'update_time' => time()
  57. ]);
  58. QueueLogger::info('ZeroUserProfits任务失败状态已更新', [
  59. 'data_id' => $data['logId'],
  60. 'status' => 2
  61. ]);
  62. }
  63. } catch (\Exception $e) {
  64. // 记录数据库更新异常
  65. QueueLogger::error('ZeroUserProfits任务失败状态更新异常', null, $data, $e);
  66. }
  67. }
  68. }