Explorar el Código

避免重复操作

shish hace 1 año
padre
commit
98f562a266

+ 13 - 15
app-hd/controllers/SettleController.php

@@ -112,18 +112,6 @@ class SettleController extends BaseController
             $orderSn = orderSn::getRechargeSn();
             $shop = $this->shop;
 
-            $hasSettle = SettleClass::getByCondition(['customId' => $customId, 'status' => 1], true);
-            if (!empty($hasSettle)) {
-                util::fail('这个客户名下有待结账单,请先取消');
-            }
-
-            //创建待账单
-            $settleParams = ['staffId' => $staffId, 'staffName' => $staffName];
-            $settle = SettleClass::addSettle($clearData, $shop, $custom, $hd, $settleParams);
-            $settleId = $settle->id;
-            $settleAmount = $settle->actPrice;
-            $settleNo = $settle->orderSn ?? '';
-
             $addData = [
                 'orderSn' => $orderSn,
                 'modPrice' => 1,
@@ -140,9 +128,6 @@ class SettleController extends BaseController
                 'payStatus' => 0,
                 'payTime' => '0000-00-00 00:00:00',
                 'status' => 0,
-                'settleId' => $settleId,
-                'settleAmount' => $settleAmount,
-                'settleNo' => $settleNo,
                 'remark' => '',
                 'customId' => $customId,
                 'customName' => $customName,
@@ -150,6 +135,19 @@ class SettleController extends BaseController
             ];
             $respond = RechargeClass::addRecharge($addData);
             $retId = $respond->id;
+
+            //创建待结账单
+            $settleParams = ['staffId' => $staffId, 'staffName' => $staffName];
+            $settle = SettleClass::addSettle($clearData, $shop, $custom, $hd, $settleParams);
+            $settleId = $settle->id;
+            $settleAmount = $settle->actPrice;
+            $settleNo = $settle->orderSn ?? '';
+
+            $respond->settleId = $settleId;
+            $respond->settleAmount = $settleAmount;
+            $respond->settleNo = $settleNo;
+            $respond->save();
+
             //充值成功并且销账成功
             $recharge = RechargeClass::getLockById($retId);
             $params = ['onlinePay' => 1, 'side' => 0];

+ 0 - 1
app-mall/controllers/RechargeController.php

@@ -77,7 +77,6 @@ class RechargeController extends BaseController
                 }
             } else {
                 //收银台关单
-                $closeParams = ['orderSn' => $closeOrderSn];
                 $response = $laResource->cashClose($closeParams);
                 if (!isset($response['code']) || $response['code'] != '000000') {
                     $msg = $response['msg'] ?? '';

+ 65 - 2
biz-hd/recharge/classes/RechargeClass.php

@@ -10,8 +10,10 @@ use bizHd\member\classes\MemberWealClass;
 use bizHd\order\classes\OrderClass;
 use bizHd\order\classes\SettleClass;
 use bizHd\shop\classes\MainClass;
+use bizHd\wx\classes\WxOpenClass;
 use common\components\arrayUtil;
 use common\components\dict;
+use common\components\lakala\Lakala;
 use common\components\noticeUtil;
 use common\components\util;
 use Yii;
@@ -24,6 +26,67 @@ class RechargeClass extends BaseClass
 
     public static function addRecharge($data)
     {
+        //创建充值单时,要把过去的充值单和结账单取消掉
+        $customId = $data['customId'] ?? 0;
+        if (empty($customId)) {
+            util::fail('没有客户信息');
+        }
+        $shopId = $data['shopId'] ?? 0;
+        $hasList = self::getAllByCondition(['customId' => $customId, 'status' => 0], null, '*', null, true);
+        if (!empty($hasList)) {
+            $shop = \bizHd\merchant\classes\ShopClass::getById($shopId, true);
+            if (empty($shop)) {
+                util::fail('没有找到门店');
+            }
+            foreach ($hasList as $k => $recharge) {
+                $payRequest = $recharge->payRequest ?? 0;
+                if ($payRequest == 0) {
+                    $recharge->status = 2;
+                    $recharge->save();
+                } else {
+                    $closeOrderSn = $recharge->orderSn;
+                    $merchantPrivateKeyPath = Yii::getAlias("@vendor/lakala") . '/production/api_private_key.pem';
+                    $lklCertificatePath = Yii::getAlias("@vendor/lakala") . '/production/lkl-apigw-v1.cer';
+                    $params = [
+                        'appid' => 'OP00002119',
+                        'serial_no' => '018b08cfddbd',
+                        'merchant_no' => $shop->lklSjNo,
+                        'term_no' => $shop->lklScanTermNo,
+                        'merchantPrivateKeyPath' => $merchantPrivateKeyPath,
+                        'lklCertificatePath' => $lklCertificatePath,
+                    ];
+                    $laResource = new Lakala($params);
+                    $closeParams = ['orderSn' => $closeOrderSn];
+                    if ($payRequest == 1) {
+                        //聚合支付
+                        $response = $laResource->close($closeParams);
+                        if (!isset($response['code']) || $response['code'] != 'BBS00000') {
+                            $msg = $response['msg'] ?? '';
+                            noticeUtil::push('重点注意,充值换单号没有成功,单号:' . $closeOrderSn . ',关单没有成功,编号966558,' . $msg, '15280215347');
+                            util::fail('老订单取消失败,请联系管理员');
+                        } else {
+                            noticeUtil::push('充值,聚合支付关单成功,编号636996,', '15280215347');
+                        }
+                    } else {
+                        //收银台支付
+                        $response = $laResource->cashClose($closeParams);
+                        if (!isset($response['code']) || $response['code'] != '000000') {
+                            $msg = $response['msg'] ?? '';
+                            noticeUtil::push('重点注意,充值换单,收银台的单号:' . $closeOrderSn . ',关单没有成功,编号66996,' . $msg, '15280215347');
+                            util::fail('旧订单取消失败,请联系管理员');
+                        } else {
+                            noticeUtil::push('充值,收银台关单成功,编号665996,', '15280215347');
+                        }
+                    }
+                }
+                $settleId = $recharge->settleId ?? 0;
+                $settle = SettleClass::getById($settleId, true);
+                if (!empty($settle)) {
+                    $settle->status = 3;
+                    $settle->save();
+                }
+            }
+        }
         return self::add($data, true);
     }
 
@@ -116,8 +179,8 @@ class RechargeClass extends BaseClass
                             'style' => 0,
                             'rechargeAmount' => floatval($amount),
                             'onlinePay' => $onlinePay,
-                            'staffId'=>$staffId,
-                            'staffName'=>$staffName,
+                            'staffId' => $staffId,
+                            'staffName' => $staffName,
                         ];
                         if ($newLevel > $oldLevel) {
                             CustomClass::levelChange($oldLevel, $newLevel, $shop, $custom, $hd, $params);