| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- <?php
- /**
- * 会员订单相关队列
- */
- namespace jobs;
- use app\common\model\ShopOrderModel;
- use app\common\model\YgOrderModel;
- use think\facade\Db;
- use utils\Queue;
- class JpOrderJob extends BaseJob
- {
- protected $model = null;
- public function __construct (YgOrderModel $model)
- {
- $this->model = $model;
- }
- public function YgOrderExpired ($yg_orderid)
- {
- return true;
- Db::startTrans();
- try {
- $time = time();
- $yg_orderinfo = $this->model->where('id', $yg_orderid)->find();
- if (!$yg_orderinfo){
- return true;
- }
- if ($yg_orderinfo['status'] == 2){
- // 竞拍结束直接返回true
- return true;
- }
- // 如果延迟 延迟在执行队列
- // $end_time = strtotime($yg_orderinfo['end_time']);
- // $ext = $end_time-$time;
- // if ($end_time > $time){
- // Queue::instance()->log('竞拍过期执行成功:'.$yg_orderid.'延迟'.$ext.'执行')->job(JpOrderJob::class)->do('YgOrderExpired')->secs()->push([$yg_orderid]);
- // return true;
- // }
- if ($yg_orderinfo['jp_count'] == 0){
- // 流拍
- $this->model->where('id', $yg_orderid)->save(['status'=>3]);
- // 改变物流
- Db::name('shop_order')->where('order_sn', $yg_orderinfo['order_sn'])->save(['status'=>1, 'hg_status'=>4, 'hg_enable'=>2]);
- }
- if ($yg_orderinfo['jp_count'] > 0){
- // 正常的流程
- $this->model->where('id', $yg_orderid)->save(['status'=>2]);
- // 改变物流
- Db::name('shop_order')->where('order_sn', $yg_orderinfo['order_sn'])->save(['status'=>5, 'hg_status'=>3, 'hg_enable'=>2]);
- // 找到记录的最大id
- $max_recordid = Db::name('yg_buy_record')->where('yg_id', $yg_orderid)->where('type', 2)->where('status', 1)->max('id');
- Db::name('yg_buy_record')->where('id', $max_recordid)->save(['status'=>3]);
- $record_info = Db::name('yg_buy_record')->where('id', $max_recordid)->find();
- // 给卖家结算
- edit_user_xz(12, $yg_orderinfo['uid'], $yg_orderinfo['cur_price'], $yg_orderinfo['order_sn'], 0);
- }
- Db::commit();
- }catch (\Exception $e){
- Db::rollback();
- Db::name('failed_jobs')->save(['connection'=>'redis', 'queue'=>'aa', 'payload'=>'aa', 'failed_at'=>sr_getcurtime(time()), 'attempts'=>2, 'exception'=>$e->getMessage()]);
- return false;
- }
- return true;
- }
- }
|