dongxiaoqin пре 1 година
родитељ
комит
a9c0e365c3

+ 3 - 2
app/api/controller/GroupActivityController.php

@@ -32,7 +32,8 @@ class GroupActivityController extends BaseApiController
      */
     public function orderDetail(){
         $sn = $this->request->param('sn');
-        $result = GroupActivityLogic::orderDetail($sn,$this->request->domain());
+        $order_id = $this->request->param('order_id');
+        $result = GroupActivityLogic::orderDetail($sn,$order_id,$this->request->domain());
         return $this->data($result);
     }
 
@@ -84,7 +85,7 @@ class GroupActivityController extends BaseApiController
         }
         //支付流程
         $redirectUrl = $params['redirect'] ?? '/pages/payment/payment';
-        $result = PaymentLogic::pay($params['pay_way'], 'group', $order, $this->userInfo['terminal'], $redirectUrl);
+        $result = PaymentLogic::pay($params['pay_way'], 'group', $order, 2, $redirectUrl);
         if (false === $result) {
             return $this->fail(PaymentLogic::getError());
         }

+ 49 - 42
app/api/logic/GroupActivityLogic.php

@@ -51,10 +51,13 @@ class GroupActivityLogic extends BaseLogic
     /**
      * @notes 拼团订单详情
      */
-    public static function orderDetail($sn,$url){
-        $detail = GroupOrder::where(['sn'=>$sn])->findOrEmpty()->toArray();
+    public static function orderDetail($sn,$order_id,$url){
+        if (empty($sn) && empty($order_id)) {
+            return [];
+        }
+        $where = $sn ? ['sn'=>$sn] : ['id'=>$order_id];
+        $detail = GroupOrder::where($where)->findOrEmpty()->toArray();
         if(!empty($detail)){
-           
             $detail['activity'] = GroupActivity::with('goods')->where(['id'=>$detail['group_activity_id']])->visible([
                 'id','title','image','start_time','end_time','type','equity_id',
                 'participant_num','origin_price','price','form_time_limit'
@@ -138,63 +141,67 @@ class GroupActivityLogic extends BaseLogic
             
             //校验拼团活动
             if (empty($params['sn'])) {
+                //新开团
+                $activity = GroupActivity::findOrEmpty($params['group_activity_id']); //活动详情
+                if ($activity->isEmpty()) {
+                    throw new Exception('拼团活动不存在!'); //拼团活动不存在
+                }
+                //校验活动时间
+                if (time() < strtotime($activity['start_time'])) {
+                    throw new Exception('拼团活动未开始!'); //拼团活动未开始
+                }
+                if (time() > $activity['end_time']) {
+                    throw new Exception('拼团活动已结束!'); //拼团活动已结束
+                }
+                    
+                $order_amount = explode(",",$activity['price'])[0];
+                //生成拼团单
+                $data = [
+                    'sn' => generate_sn(GroupOrder::class, 'sn'),
+                    'group_activity_id' => $params['group_activity_id'],
+                    'equity_id' => $activity['equity_id'],
+                    'goods_id' => EquityConfig::where('id', $activity['equity_id'])->value('goods_id'),
+                    'user_id' => $params['user_id'],
+                    'origin_price' => $activity['origin_price'],
+                    'price' => $order_amount,
+                    'create_time' => time(),
+                    'end_time'   => time() + $activity['form_time_limit'] * 60 * 60,
+                ];
 
-                //如果已有团单,直接加入
+                //如果已有数据,直接覆盖
                 $groupOrder = GroupOrder::where(['group_activity_id' => $params['group_activity_id'],'user_id' => $params['user_id']])->findOrEmpty()->toArray();
                 if (!$groupOrder) {
-                    //新开团
-                    $activity = GroupActivity::findOrEmpty($params['group_activity_id']); //活动详情
-                    if ($activity->isEmpty()) {
-                        throw new Exception('拼团活动不存在!'); //拼团活动不存在
-                    }
-                    //校验活动时间
-                    if (time() < strtotime($activity['start_time'])) {
-                        throw new Exception('拼团活动未开始!'); //拼团活动未开始
-                    }
-                    if (time() > $activity['end_time']) {
-                        throw new Exception('拼团活动已结束!'); //拼团活动已结束
-                    }
-                        
-                    $order_amount = explode(",",$activity['price'])[0];
-                    //生成拼团单
-                    $data = [
-                        'sn' => generate_sn(GroupOrder::class, 'sn'),
-                        'group_activity_id' => $params['group_activity_id'],
-                        'equity_id' => $activity['equity_id'],
-                        'goods_id' => EquityConfig::where('id', $activity['equity_id'])->value('goods_id'),
-                        'user_id' => $params['user_id'],
-                        'origin_price' => $activity['origin_price'],
-                        'price' => $order_amount,
-                        'create_time' => time(),
-                        'end_time'   => time() + $activity['form_time_limit'] * 60 * 60,
-                    ];
-                    $group_order = GroupOrder::create($data);
+                    $groupOrder = GroupOrder::create($data);
+                } else {
+                    GroupOrder::where('id',$groupOrder['id'])->update($data); 
+                    $data['id'] = $groupOrder['id'];
+                    $groupOrder = $data;
                 }
             } else {
                 //加入已开的拼团单
-                $group_order = GroupOrder::where(['group_activity_id' => $params['group_activity_id'], 'sn' => $params['sn']])->findOrEmpty()->toArray();
-                if (empty($group_order)) {
+                $groupOrder = GroupOrder::where(['group_activity_id' => $params['group_activity_id'], 'sn' => $params['sn']])->findOrEmpty()->toArray();
+                if (empty($groupOrder)) {
                     throw new Exception('拼团订单不存在!'); //拼团活动不存在
                 }
-                if ($group_order['num'] >= 100) {
+                if ($groupOrder['num'] >= 100) {
                     throw new Exception('拼团人数已满!'); //拼团人数已满
                 }
-                if ($group_order['status'] == 1 ) {
+                if ($groupOrder['status'] == 1 ) {
                     throw new Exception('活动已成团');
                 }
-                if ($group_order['status'] >= 1 ) {
+                if ($groupOrder['status'] >= 1 ) {
                     throw new Exception('拼团已取消!');
                 }
-                if ($group_order['end_time'] < time()) {
+                if ($groupOrder['end_time'] < time()) {
                     throw new Exception('拼团活动已结束!'); //拼团活动已结束
                 }
-                $order_amount = $group_order['price'];
+                $order_amount = $groupOrder['price'];
             }
 
             //生成用户拼单订单
             $data = [
-                'sn' => $group_order['sn'],
-                'group_order_id' => $group_order['id'],
+                'sn' => $groupOrder['sn'],
+                'group_order_id' => $groupOrder['id'],
                 'group_activity_id' => $params['group_activity_id'],
                 'user_id' => $params['user_id'],
                 'remark' => isset($params['remark']) ?? '',
@@ -217,7 +224,7 @@ class GroupActivityLogic extends BaseLogic
 
         return [
             'order_id' => (int)$userOrder['id'],
-            'sn' => $group_order['sn']
+            'sn' => $groupOrder['sn']
         ];
     }
 
@@ -359,7 +366,7 @@ class GroupActivityLogic extends BaseLogic
             
             $scene_page = 'group';
             $response = (new WeChatMnpService())->getUnlimitedQRCode(
-                'page='.$scene_page.'&id='.$params['id'].'&sn='.$params['sn'],
+                'page='.$scene_page.'&id='.$params['id'].'&order_id='.$params['order_id'],
                 $mnp_page,
                 env('miniprogram.mini_env_version', 'release'),
                 false

+ 1 - 1
app/api/validate/GroupOrderValidate.php

@@ -63,7 +63,7 @@ class GroupOrderValidate extends BaseValidate
 
     public function sceneQrcode()
     {
-        return $this->only(['id','sn']);
+        return $this->only(['id','order_id']);
     }
 
 }

+ 5 - 2
app/common/logic/PaymentLogic.php

@@ -121,7 +121,7 @@ class PaymentLogic extends BaseLogic
                     break;
             }
             
-            $payTime = empty($order['pay_time']) ? '' : date('Y-m-d H:i:s', $order['pay_time']);
+            $payTime = empty($order['pay_time']) ? '' : date('Y-m-d H:i:s', strtotime($order['pay_time']));
             $orderInfo = [
                 'order_id' => $order['id'],
                 'order_sn' => $order['sn'],
@@ -279,7 +279,10 @@ class PaymentLogic extends BaseLogic
     //        PayNotifyLogic::handle($from, $order['sn']);
     //        return ['sn' => $order['sn'],'need_pay'=>0];
     //    }
-
+    if($from=='group'){
+        PayNotifyLogic::handle($from, $order['sn']);
+        return ['sn' => $order['sn'],'need_pay'=>0];
+    }
 
         $payService = null;
         switch ($payWay) {