SendNewsJob.php 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <?php
  2. /**
  3. * @package merchant
  4. *
  5. * @author xaboy
  6. * @day 2020-05-11
  7. *
  8. *
  9. */
  10. namespace crmeb\jobs;
  11. use app\common\repositories\user\UserRepository;
  12. use app\common\repositories\wechat\WechatUserRepository;
  13. use crmeb\interfaces\JobInterface;
  14. use crmeb\services\WechatService;
  15. use think\queue\Job;
  16. class SendNewsJob implements JobInterface
  17. {
  18. public function fire($job, $data)
  19. {
  20. $wechatUserRepository = app()->make(WechatUserRepository::class);
  21. [$id, $news] = $data;
  22. $wechatUid = app()->make(UserRepository::class)->uidByWechatUserId(intval($id));
  23. if (!$wechatUid || !($openId = $wechatUserRepository->idByOpenId((int)$wechatUid))) {
  24. $job->delete();
  25. return;
  26. }
  27. try {
  28. WechatService::create()->staffTo($openId, WechatService::newsMessage($news));
  29. } catch (\Exception $e) {
  30. $job->failed($e);
  31. }
  32. $job->delete();
  33. }
  34. public function failed($data)
  35. {
  36. // TODO: Implement failed() method.
  37. }
  38. }