shish пре 3 месеци
родитељ
комит
f306f45383
2 измењених фајлова са 18 додато и 28 уклоњено
  1. 17 7
      biz-ghs/order/classes/OrderClass.php
  2. 1 21
      biz-ghs/order/services/OrderService.php

+ 17 - 7
biz-ghs/order/classes/OrderClass.php

@@ -3113,6 +3113,7 @@ XL;
         $id = $order->id ?? 0;
         $customId = $order->customId ?? 0;
         $mainId = $order->mainId ?? 0;
+        $showAddress = $order->showAddress ?? '';
         $oldSameTimeIds = $order->sameTimeIds ?? '';
 
         //找到当前订单客户的账单日期为 $date 的所有订单,然后更新同天内的所有订单的 sameTimeIds(加此次要改变的订单的订单号$id)
@@ -3121,6 +3122,7 @@ XL;
         $dayOrders = self::getAllByCondition([
             'mainId' => $mainId,
             'customId' => $customId,
+            'showAddress' => $showAddress,
             'payTime' => ['between', [$startTime, $endTime]]
         ], 'id ASC', 'id, sameTimeIds');
 
@@ -3135,19 +3137,27 @@ XL;
         // 排序并去重
         sort($ids);
         $ids = array_unique($ids);
+        
+        // 限制最多 90 单,避免 someTimeIds 过长(兼容原先业务逻辑限制)
+        if (count($ids) > 90) {
+            $ids = array_slice($ids, 0, 90);
+        }
+        
         $sameTimeIdsStr = implode(',', $ids);
         // 更新所有相关订单
-        if (!empty($ids)) {
+        if (!empty($ids) && in_array($id, $ids)) {
             self::updateByIds($ids, ['sameTimeIds' => $sameTimeIdsStr]);
         }
 
         //从原先同天内的订单中删除此次要改变的订单的订单号$id
-        $oldSameTimeIdsArr = explode(',', $oldSameTimeIds);
-        if (in_array($id, $oldSameTimeIdsArr)) {
-            $oldSameTimeIdsArr = array_diff($oldSameTimeIdsArr, [$id]);
-            $oldSameTimeIdsStr = implode(',', $oldSameTimeIdsArr);
-            if (!empty($oldSameTimeIdsArr)) {
-                self::updateByIds($oldSameTimeIdsArr, ['sameTimeIds' => $oldSameTimeIdsStr]);
+        if (!empty($oldSameTimeIds) && $oldSameTimeIds != $sameTimeIdsStr) {
+            $oldSameTimeIdsArr = explode(',', $oldSameTimeIds);
+            if (in_array($id, $oldSameTimeIdsArr)) {
+                $oldSameTimeIdsArr = array_diff($oldSameTimeIdsArr, [$id]);
+                $oldSameTimeIdsStr = implode(',', $oldSameTimeIdsArr);
+                if (!empty($oldSameTimeIdsArr)) {
+                    self::updateByIds($oldSameTimeIdsArr, ['sameTimeIds' => $oldSameTimeIdsStr]);
+                }
             }
         }
     }

+ 1 - 21
biz-ghs/order/services/OrderService.php

@@ -902,27 +902,7 @@ class OrderService extends BaseService
         StatKhCgClass::replace($order, $amount);
 
         //当天同个人同地址的订单汇总
-        $sameDate = date("Y_m_d");
-        $sameAddress = $order->showAddress ?? '';
-        $addressMd5 = md5($sameAddress);
-        $sameKey = $customId . '_' . $addressMd5 . '_' . $sameDate;
-        $sameString = Yii::$app->redis->executeCommand('GET', [$sameKey]);
-        if (!empty($sameString)) {
-            $newString = $sameString . ',' . $orderId;
-            $newIdsArray = explode(',', $newString);
-            if (count($newIdsArray) <= 90) {
-                Yii::$app->redis->executeCommand('SETEX', [$sameKey, 186400, $newString]);
-                foreach ($newIdsArray as $currentOrderId) {
-                    OrderClass::updateById($currentOrderId, ['sameTimeIds' => $newString]);
-                }
-                //noticeUtil::push($sameKey . '' . $sameAddress . " 当天汇总ids:" . $newString, '15280215347');
-            }
-        } else {
-            Yii::$app->redis->executeCommand('SETEX', [$sameKey, 186400, $orderId]);
-            $order->sameTimeIds = $orderId;
-            $order->save();
-            //noticeUtil::push($sameKey . '' . $sameAddress . " 当天汇总ids:" . $orderId, '15280215347');
-        }
+        OrderClass::updateSameTimeIds($order, date("Y-m-d"));
 
     }