shish 11 месяцев назад
Родитель
Сommit
e05fd437fa

+ 4 - 4
app-hd/controllers/OrderController.php

@@ -725,9 +725,9 @@ class OrderController extends BaseController
     public function actionBalancePay()
     {
         $post = Yii::$app->request->post();
-        $orderSn = isset($post['orderSn']) ? $post['orderSn'] : 0;
-        $payPassword = isset($post['payPassword']) ? $post['payPassword'] : 0;
-        $couponId = isset($post['couponId']) ? $post['couponId'] : 0;
+        $orderSn = $post['orderSn'] ?? 0;
+        $payPassword = $post['payPassword'] ?? 0;
+        $couponId = $post['couponId'] ?? 0;
 
         $order = OrderService::getByOrderSn($orderSn);
         $userId = $this->adminId;
@@ -743,7 +743,7 @@ class OrderController extends BaseController
         $actPrice = $discountData['price'];
         $callbackParams = [];
         $respond = xhPayToolService::balancePay($callbackParams, $orderSn, $actPrice, $capitalType, $couponId);
-        $balance = isset($respond['balance']) ? $respond['balance'] : 0;
+        $balance = $respond['balance'] ?? 0;
         util::success(['discountAmount' => $discountData['discountAmount'], 'discountType' => $discountData['discountType'], 'balance' => $balance]);
     }
 

+ 1 - 1
app-mall/controllers/NoticeController.php

@@ -153,7 +153,7 @@ class NoticeController extends PublicController
 
             echo "SUCCESS";
 
-            //解决重复通知
+            //解决重复通知,重要
             if ($capitalType == dict::getDict('capitalType', 'xhOrder', 'id')) {
                 $cacheKey = 'mall_order_pay_' . $orderSn;
                 $has = Yii::$app->redis->executeCommand('GET', [$cacheKey]);

+ 26 - 1
app-mall/controllers/OrderController.php

@@ -3,6 +3,8 @@
 namespace mall\controllers;
 
 use biz\product\classes\ProductClass;
+use biz\shop\classes\ShopClass;
+use biz\wx\classes\WxMessageClass;
 use bizHd\custom\classes\HdClass;
 use bizHd\wx\classes\WxOpenClass;
 use bizMall\custom\classes\CustomClass;
@@ -605,7 +607,7 @@ class OrderController extends BaseController
         $post = Yii::$app->request->post();
         $orderSn = $post['orderSn'] ?? '';
         //避免重复提交
-        util::checkRepeatCommit($orderSn, 10);
+        util::checkRepeatCommit($orderSn, 5);
         $connection = Yii::$app->db;
         $transaction = $connection->beginTransaction();
         try {
@@ -619,6 +621,29 @@ class OrderController extends BaseController
             $payWay = dict::getDict('payWay', 'balancePay');
             \bizHd\order\classes\OrderClass::payAfter($order, $payWay);
             $transaction->commit();
+
+            //解决重复通知,重要
+            $cacheKey = 'mall_order_balance_pay_' . $orderSn;
+            $has = Yii::$app->redis->executeCommand('GET', [$cacheKey]);
+            if (empty($has)) {
+                Yii::$app->redis->executeCommand('SETEX', [$cacheKey, 864000, 'has']);
+
+                //打印小票和语音播报
+                $order = \bizHd\order\classes\OrderClass::getByCondition(['orderSn' => $orderSn], true);
+                \bizHd\order\classes\OrderClass::onlinePrint($order);
+
+                $shopId = $order->shopId ?? 0;
+                $shop = ShopClass::getById($shopId, true);
+                if (in_array($order->fromType, [1, 3])) {
+                    //您有新的收入提醒
+                    WxMessageClass::gatheringIncomeInform($shop, $order);
+                }
+                if ($order->fromType == 2) {
+                    //来自商城的新订单微信通知
+                    WxMessageClass::hdNewOrderInform($shop, $order);
+                }
+            }
+
             util::complete('支付成功');
         } catch (\Exception $e) {
             $transaction->rollBack();