浏览代码

订单表冗余groupon_id,方便搜索拼团中的订单

lizhen_gitee 4 月之前
父节点
当前提交
95a492d1e2

+ 6 - 2
addons/shopro/controller/order/Order.php

@@ -29,6 +29,9 @@ class Order extends Common
             case 'unpaid':
                 $orders = $orders->unpaid();
                 break;
+            case 'groupon_ing':
+                $orders = $orders->pretendPaid()->nosend();
+                break;
             case 'nosend':
                 $orders = $orders->pretendPaid()->nosend();
                 break;
@@ -213,15 +216,16 @@ class Order extends Common
     {
         $user = auth_user();
         $id = $this->request->param('id');
+        $reason = $this->request->param('reason');
 
-        $order = Db::transaction(function () use ($id, $user) {
+        $order = Db::transaction(function () use ($id, $user, $reason) {
             $order = OrderModel::canCancel()->where('user_id', $user->id)->with(['items', 'invoice'])->lock(true)->where('id', $id)->find();
             if (!$order) {
                 $this->error(__('No Results were found'));
             }
 
             $orderOper = new OrderOper();
-            $order = $orderOper->cancel($order, $user, 'user');
+            $order = $orderOper->cancel($order, $user, 'user', $reason);
 
             return $order;
         });

+ 3 - 1
addons/shopro/library/activity/traits/Groupon.php

@@ -260,7 +260,7 @@ trait Groupon
             extract($grouponCb($rules, $item['ext']));
         }
 
-        // 开团
+        // 开
         $activityGroupon = new ActivityGroupon();
         $activityGroupon->user_id = $user['id'];
         $activityGroupon->goods_id = $item['goods_id'];
@@ -272,6 +272,8 @@ trait Groupon
         $activityGroupon->save();
 
         // 记录团 id
+        //订单表冗余groupon_id
+        $order->groupon_id = $activityGroupon->id;
         $order->ext = array_merge($order->ext, ['groupon_id' => $activityGroupon->id]);
         $order->save();
 

+ 3 - 0
addons/shopro/listener/Order.php

@@ -113,6 +113,9 @@ class Order
             // 如果是拼团, ext 中存储拼团相关信息(这里拼团肯定是成功了,否则下单前已被拦截)
             $order_ext['buy_type'] = request()->param('buy_type', 'groupon');     // 购买方式,alone: 单独购买, groupon: 拼团
             $order_ext['groupon_id'] = request()->param('groupon_id', 0);        // 如果是拼团,团 id
+
+            //订单表冗余groupon_id
+            $order->groupon_id = $order_ext['groupon_id'];
         }
 
         if ($order->status == OrderModel::STATUS_UNPAID) {

+ 13 - 0
application/admin/model/shopro/order/traits/OrderScope.php

@@ -4,6 +4,7 @@ namespace app\admin\model\shopro\order\traits;
 
 use app\admin\model\shopro\order\Order;
 use app\admin\model\shopro\order\OrderItem;
+use app\admin\model\shopro\activity\Groupon;
 
 trait OrderScope
 {
@@ -101,6 +102,18 @@ trait OrderScope
         return $query->where('apply_refund_status',  Order::APPLY_REFUND_STATUS_APPLY);
     }
 
+    //拼团待分享
+    public function scopegroupon_ing($query){
+        $self_name = (new Order())->getQuery()->getTable();
+        $groupon_name = (new Groupon())->getQuery()->getTable();
+
+        return $query->where('activity_type','groupon')->where('activity_id','NEQ',0)->whereExists(function ($query) use ($self_name,$groupon_name) {
+                $query->table($groupon_name)->where('id=' . $self_name . '.groupon_id')->where('status','ing');
+
+            }
+        );
+    }
+
 
     // 未发货
     public function scopeNosend($query)