| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- <?php
- namespace app\jobs;
- use app\common\model\profit\ZeroUserProfits as ZeroUserProfitsModel;
- use app\common\repositories\profits\ProfitsRepository;
- use app\common\utils\QueueLogger;
- use crmeb\interfaces\JobInterface;
- class ZeroUserProfits implements JobInterface
- {
- public function fire($job, $data)
- {
- // 记录任务开始日志
- QueueLogger::start('ZeroUserProfits', $job, $data);
- // 数据仓库
- $repository = new ProfitsRepository();
- try {
- // 记录业务执行开始
- QueueLogger::businessStart('用户收益计算', $data);
-
- // 执行业务
- $res = $repository->profits($data);
-
- if (!is_string($res)) {
- // 记录成功日志
- QueueLogger::success('ZeroUserProfits', $job, $data, $res);
- $job->delete();
- } else {
- // 记录业务执行失败但未异常的情况
- QueueLogger::warning('ZeroUserProfits', $job, $data, '业务执行返回false,错误信息:' . $res);
-
- if ($job->attempts() > 3) {
- // 超过重试次数,调用failed方法记录异常状态
- $this->failed($data);
- $job->delete();
- }
- }
- } catch (\Exception $e) {
- // 记录异常日志
- QueueLogger::error('ZeroUserProfits', $job, $data, $e);
-
- if ($job->attempts() > 3) {
- // 超过重试次数,调用failed方法记录异常状态
- $this->failed($data);
- $job->delete();
- }
- }
-
- // 记录任务结束日志
- QueueLogger::end('ZeroUserProfits', $job, $data);
- }
- public function failed($data)
- {
- try {
- // 记录任务失败日志
- QueueLogger::failed('ZeroUserProfits', $data);
-
- // 在数据库中标记数据异常状态
- if (isset($data['logId']) && !empty($data['logId'])) {
- // 更新ZeroUserProfits表的status字段为异常状态
- ZeroUserProfitsModel::where('id', $data['logId'])
- ->update([
- 'status' => 3, // 假设2表示异常状态
- 'update_time' => time()
- ]);
-
- QueueLogger::info('ZeroUserProfits任务失败状态已更新', [
- 'data_id' => $data['logId'],
- 'status' => 2
- ]);
- }
- } catch (\Exception $e) {
- // 记录数据库更新异常
- QueueLogger::error('ZeroUserProfits任务失败状态更新异常', null, $data, $e);
- }
- }
- }
|