123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- <?php
- namespace addons\shopro\job;
- use think\queue\Job;
- use think\Db;
- use think\exception\HttpResponseException;
- use app\admin\model\shopro\order\Order;
- use addons\shopro\service\StockSale;
- use app\admin\model\shopro\user\User;
- use app\admin\model\shopro\order\Invoice as OrderInvoice;
- use addons\shopro\service\order\OrderOper;
- use addons\shopro\facade\Activity as ActivityFacade;
- /**
- * 订单自动操作
- */
- class OrderPaid extends BaseJob
- {
- /**
- * 订单支付完成
- */
- public function paid(Job $job, $data)
- {
- try {
- $order = $data['order'];
- $user = $data['user'];
- $order = Order::with('items')->where('id', $order['id'])->find();
- $user = User::get($user['id']);
- // 数据库删订单的问题常见,这里被删的订单直接把队列移除
- if ($order) {
- Db::transaction(function () use ($order, $user, $data) {
- // 订单减库存
- $stockSale = new StockSale();
- $stock_rs = $stockSale->forwardStockSale($order);
- // 处理发票审核改为等待开具
- if ($order->invoice_status == 1) {
- $invoice = OrderInvoice::where('order_id', $order->id)->find();
- if ($invoice) {
- $invoice->status = 'waiting';
- $invoice->save();
- }
- }
- // 处理活动,加入拼团,完成拼团,添加赠品记录等
- ActivityFacade::buyOk($order, $user);
- // 将订单参与活动信息改为已支付
- $orderOper = new OrderOper();
- $orderOper->activityOrderPaid($order);
- //直播间增加销量等数据
- if($order['room_log_id'])
- {
- $room_data = [
- 'order_paidnum' => ['inc',1],
- 'order_total_amount' => ['inc',$order->pay_fee],
- 'goods_sales' => ['inc',$stock_rs['goods_num_sum']],
- ];
- Db::name('live_room_log')->where('id',$order['room_log_id'])->update($room_data);
- }
- // 触发订单支付完成事件
- $data = ['order' => $order, 'user' => $user];
- \think\Hook::listen('order_paid_after', $data);//orderPaidAfter
- });
- }
- // 删除 job
- $job->delete();
- } catch (HttpResponseException $e) {
- $data = $e->getResponse()->getData();
- $message = $data ? ($data['msg'] ?? '') : $e->getMessage();
- format_log_error($e, 'OrderPaid.paid.HttpResponseException', $message);
- } catch (\Exception $e) {
- // 队列执行失败
- format_log_error($e, 'OrderPaid.paid');
- }
- }
- /**
- * 订单选择线下支付(货到付款)完成
- */
- public function offline(Job $job, $data)
- {
- try {
- $order = $data['order'];
- $user = $data['user'];
- $order = Order::with('items')->where('id', $order['id'])->find();
- $user = User::get($user['id']);
- // 数据库删订单的问题常见,这里被删的订单直接把队列移除
- if ($order) {
- Db::transaction(function () use ($order, $user, $data) {
- // 订单减库存
- $stockSale = new StockSale();
- $stockSale->forwardStockSale($order);
- // 处理活动,加入拼团,完成拼团,添加赠品记录等
- ActivityFacade::buyOk($order, $user);
- // 触发订单选择线下支付(货到付款)完成事件
- $data = ['order' => $order, 'user' => $user];
- \think\Hook::listen('order_offline_after', $data);
- });
- }
- // 删除 job
- $job->delete();
- } catch (HttpResponseException $e) {
- $data = $e->getResponse()->getData();
- $message = $data ? ($data['msg'] ?? '') : $e->getMessage();
- format_log_error($e, 'OrderPaid.offline.HttpResponseException', $message);
- } catch (\Exception $e) {
- // 队列执行失败
- format_log_error($e, 'OrderPaid.offline');
- }
- }
- }
|