JpOrderJob.php 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. /**
  3. * 会员订单相关队列
  4. */
  5. namespace jobs;
  6. use app\common\model\ShopOrderModel;
  7. use app\common\model\YgOrderModel;
  8. use think\facade\Db;
  9. use utils\Queue;
  10. class JpOrderJob extends BaseJob
  11. {
  12. protected $model = null;
  13. public function __construct (YgOrderModel $model)
  14. {
  15. $this->model = $model;
  16. }
  17. public function YgOrderExpired ($yg_orderid)
  18. {
  19. return true;
  20. Db::startTrans();
  21. try {
  22. $time = time();
  23. $yg_orderinfo = $this->model->where('id', $yg_orderid)->find();
  24. if (!$yg_orderinfo){
  25. return true;
  26. }
  27. if ($yg_orderinfo['status'] == 2){
  28. // 竞拍结束直接返回true
  29. return true;
  30. }
  31. // 如果延迟 延迟在执行队列
  32. // $end_time = strtotime($yg_orderinfo['end_time']);
  33. // $ext = $end_time-$time;
  34. // if ($end_time > $time){
  35. // Queue::instance()->log('竞拍过期执行成功:'.$yg_orderid.'延迟'.$ext.'执行')->job(JpOrderJob::class)->do('YgOrderExpired')->secs()->push([$yg_orderid]);
  36. // return true;
  37. // }
  38. if ($yg_orderinfo['jp_count'] == 0){
  39. // 流拍
  40. $this->model->where('id', $yg_orderid)->save(['status'=>3]);
  41. // 改变物流
  42. Db::name('shop_order')->where('order_sn', $yg_orderinfo['order_sn'])->save(['status'=>1, 'hg_status'=>4, 'hg_enable'=>2]);
  43. }
  44. if ($yg_orderinfo['jp_count'] > 0){
  45. // 正常的流程
  46. $this->model->where('id', $yg_orderid)->save(['status'=>2]);
  47. // 改变物流
  48. Db::name('shop_order')->where('order_sn', $yg_orderinfo['order_sn'])->save(['status'=>5, 'hg_status'=>3, 'hg_enable'=>2]);
  49. // 找到记录的最大id
  50. $max_recordid = Db::name('yg_buy_record')->where('yg_id', $yg_orderid)->where('type', 2)->where('status', 1)->max('id');
  51. Db::name('yg_buy_record')->where('id', $max_recordid)->save(['status'=>3]);
  52. $record_info = Db::name('yg_buy_record')->where('id', $max_recordid)->find();
  53. // 给卖家结算
  54. edit_user_xz(12, $yg_orderinfo['uid'], $yg_orderinfo['cur_price'], $yg_orderinfo['order_sn'], 0);
  55. }
  56. Db::commit();
  57. }catch (\Exception $e){
  58. Db::rollback();
  59. Db::name('failed_jobs')->save(['connection'=>'redis', 'queue'=>'aa', 'payload'=>'aa', 'failed_at'=>sr_getcurtime(time()), 'attempts'=>2, 'exception'=>$e->getMessage()]);
  60. return false;
  61. }
  62. return true;
  63. }
  64. }