shish 2 lat temu
rodzic
commit
10f5be19cf

+ 8 - 0
app-ghs/controllers/NoticeController.php

@@ -43,6 +43,14 @@ class NoticeController extends PublicController
             util::end();
         }
 
+        //解决重复通知
+        $cacheKey = 'wx_pay_success_notice_' . $orderSn;
+        $has = Yii::$app->redis->executeCommand('GET', [$cacheKey]);
+        if (!empty($has)) {
+            Yii::$app->end();
+        }
+        Yii::$app->redis->executeCommand('SETEX', [$cacheKey, 864000, 'has']);
+
         $connection = Yii::$app->db;
         $transaction = $connection->beginTransaction();
         try {

+ 6 - 2
app-ghs/controllers/RenewController.php

@@ -43,7 +43,11 @@ class RenewController extends BaseController
         $pfLevel = $shop->pfLevel ?? 0;
         $deadline = $shop->deadline ?? '';
         $beforeDeadline = $shop->beforeDeadline ?? '';
-        $unitPrice = $pfLevel == 0 ? 980 : 1980;
+        if (getenv('YII_ENV') == 'production') {
+            $unitPrice = $pfLevel == 0 ? 980 : 1980;
+        } else {
+            $unitPrice = $pfLevel == 0 ? 0.1 : 0.2;
+        }
         $price = bcmul($unitPrice, $year, 2);
         $data = [
             'orderSn' => $orderSn,
@@ -71,7 +75,7 @@ class RenewController extends BaseController
         $admin = $this->admin;
         $openId = $admin->ghsMiniOpenId;
         $capitalType = dict::getDict('capitalType', 'xhRenew', 'id');
-        $attach = 'capitalType=' . $capitalType . '&couponId=0&shopId=' . $shopId;
+        $attach = 'capitalType=' . $capitalType;
         $wx = Yii::getAlias("@vendor/weixin");
         require_once($wx . '/lib/WxPay.Api.php');
         require_once($wx . '/example/WxPay.JsApiPay.php');

+ 33 - 29
biz/renew/classes/RenewClass.php

@@ -3,7 +3,9 @@
 namespace biz\renew\classes;
 
 use biz\base\classes\BaseClass;
+use biz\shop\classes\ShopClass;
 use biz\sj\classes\SjClass;
+use common\components\noticeUtil;
 use common\components\util;
 use Yii;
 
@@ -12,43 +14,45 @@ class RenewClass extends BaseClass
 
     public static $baseFile = '\biz\renew\models\Renew';
 
-    const STATUS_UN_PAY = 1;
-    const STATUS_HAS_PAY = 2;
-
     public static function thirdPay($payWay, $orderSn, $totalFee, $attach)
     {
-        $order = self::getByCondition(['orderSn' => $orderSn], true);
-        if (empty($order)) {
-            $msg = "没有找到购买续期订单 orderSn:{$orderSn}";
-            Yii::info($msg);
+        $renew = self::getByCondition(['orderSn' => $orderSn], true);
+        if (empty($renew)) {
+            $msg = "没有找到续费订单 orderSn:{$orderSn}";
+            noticeUtil::push($msg, '15280215347');
             util::fail($msg);
         }
-        if ($order->actPrice != $totalFee) {
-            $msg = "购买续期订单金额与回调通知金额不一致 orderSn:{$orderSn} {$order->actPrice} {$totalFee}";
-            Yii::info($msg);
+        if ($renew->actPrice != $totalFee) {
+            $msg = "续费订单金额与回调通知金额不一致 orderSn:{$orderSn} {$renew->actPrice} {$totalFee}";
+            noticeUtil::push($msg, '15280215347');
             util::fail($msg);
         }
-        if (isset($order->status) == false) {
-            util::fail('没有找到订单状态');
-        }
-        if ($order->status != self::STATUS_UN_PAY) {
-            util::fail('订单不是待付款状态');
+        if ($renew->status != self::STATUS_UN_PAY) {
+            $msg = '续费订单不是待付款状态 orderSn:' . $orderSn;
+            noticeUtil::push($msg, '15280215347');
+            util::fail($msg);
         }
 
-        //临时解决微信一秒内通知二次问题
-        $id = $order->id;
-        $order = self::getLockById($id);
-
-        parse_str($attach);
-        //是否充值免费续期
-        $sjId = isset($sjId) ? $sjId : 0;
-        $setId = isset($setId) ? $setId : 0;
-        $order->sjId = $sjId;
-        $order->setId = $setId;
-        $order->status = self::STATUS_HAS_PAY;
-        $order->payWay = $payWay;
-        $order->save();
-        SjClass::renewOneYear($sjId, 2, ['amount' => $order->actPrice, 'orderSn' => $orderSn]);
+        $shopId = $renew->shopId ?? 0;
+        $shop = ShopClass::getById($shopId, true);
+        if (empty($shop)) {
+            $msg = '续费订单没有找到门店 orderSn:' . $orderSn;
+            noticeUtil::push($msg, '15280215347');
+            util::fail($msg);
+        }
+        $year = $renew->year ?? 1;
+        $before = $shop->deadline ?? '';
+        $second = bcmul($year, 31536000);
+        $time = bcadd(strtotime($before), $second);
+        $newDate = date("Y-m-d H:i:s", $time);
+        $renew->status = 1;
+        $renew->deadline = $newDate;
+        $renew->beforeDeadline = $before;
+        $renew->save();
+
+        $shop->beforeDeadline = $before;
+        $shop->deadline = $newDate;
+        $shop->save();
     }
 
 }