Quellcode durchsuchen

更新客户信息脚本

shish vor 3 Monaten
Ursprung
Commit
666ef6a4d2
1 geänderte Dateien mit 39 neuen und 43 gelöschten Zeilen
  1. 39 43
      console/controllers/CustomController.php

+ 39 - 43
console/controllers/CustomController.php

@@ -9,6 +9,7 @@ use bizHd\custom\classes\CustomClass;
 use bizHd\custom\classes\HdClass;
 use bizHd\member\classes\MemberLevelClass;
 use bizHd\purchase\classes\PurchaseClass;
+use bizHd\shop\models\Shop;
 use common\components\dict;
 use common\components\noticeUtil;
 use common\components\util;
@@ -153,10 +154,8 @@ class CustomController extends Controller
             ini_set('memory_limit', '2045M');
             set_time_limit(0);
 
-            $redisKey = 'refresh_custom_data_processed_shops';
-
             // 1. 查询 xhShop 表,获取所有 ptStyle = 1 的门店数据,每次取出500个进行处理
-            $query = \bizHd\shop\models\Shop::find()
+            $query = Shop::find()
                 ->select('id, mainId')
                 ->where(['ptStyle' => 1])
                 ->orderBy('id DESC')
@@ -169,64 +168,61 @@ class CustomController extends Controller
                         $shopId = $shop['id'];
                         $mainId = $shop['mainId'];
 
-                        // 判断是否已经执行过,执行过则跳过
-                        $hasProcessed = Yii::$app->redis->executeCommand('SISMEMBER', [$redisKey, $shopId]);
-                        if ($hasProcessed) {
-                            continue;
-                        }
+                        echo '门店id:' . $shopId;
 
-                        $customs = CustomClass::getAllByCondition(['shopId' => $shopId], null, 'id, userId, balance, buyAmount, growth, integral, member, memberName', null, true);
-                        $levelDatas = MemberLevelClass::getAllByCondition(['mainId' => $mainId], 'amount DESC', 'id, name, level, amount');
-                        if (!empty($customs) && !empty($levelDatas)) {
-                            foreach ($customs as $c) {
+                        $customList = CustomClass::getAllByCondition(['shopId' => $shopId], null, 'id, userId, balance, buyAmount, growth, integral, member, memberName', null, true);
+                        $levelData = MemberLevelClass::getAllByCondition(['mainId' => $mainId], 'amount DESC', 'id, name, level, amount');
+                        if (!empty($customList)) {
+                            foreach ($customList as $custom) {
                                 $buyAmount = 0;
-                                $integral = 0;
                                 // 获取所有零售订单,计算消费金额
-                                $orderList = \bizHd\order\classes\OrderClass::getAllByCondition(['customId' => $c->id], null, 'id, forward, actPrice, payWay');
+                                $orderList = \bizHd\order\classes\OrderClass::getAllByCondition(['customId' => $custom->id, 'payStatus' => 1], null, 'id, forward, actPrice, payWay');
                                 if (!empty($orderList)) {
                                     foreach ($orderList as $order) {
                                         if ($order['forward'] == 0) { //0 常规订单
-                                            if ($order['payWay'] == dict::getDict('payWay', 'balancePay')) {
-                                                // 余额支付不计算积分与成长值
-                                            } else {
-                                                $integral = bcadd($integral, $order['actPrice'], 2);
-                                            }
                                             $buyAmount = bcadd($buyAmount, $order['actPrice'], 2);
-                                        } elseif ($order['forward'] == 1) { //1 售后付款单(红冲)
-                                            $integral = bcsub($integral, $order['actPrice'], 2);
+                                        } else { //1 红冲
                                             $buyAmount = bcsub($buyAmount, $order['actPrice'], 2);
-                                        } else {
-                                            Yii::info('订单类型不存在,订单ID:' . $order['id']);
-                                            continue;
                                         }
                                     }
                                 }
-                                $c->buyAmount = $buyAmount;
-                                $c->growth = $integral + ($c->balance > 0 ? $c->balance : 0);
-                                $c->integral = $integral  + ($c->balance > 0 ? $c->balance : 0);
-
+                                $custom->buyAmount = $buyAmount;
+                                $balance = $custom->balance ?? 0;
+                                if ($balance > 0) {
+                                    $total = bcadd($balance, $buyAmount, 2);
+                                } else {
+                                    $total = $buyAmount;
+                                }
+                                $custom->growth = $total;
+                                $custom->integral = $total;
+//echo " customId:" . $custom->id;
                                 // 根据 growth 设置等级
-                                $memberData = CustomClass::getCustomExpenseLevel($c->growth, $mainId, $levelDatas); // 设置等级多处需要同步修改的,请搜索:getCustomExpenseLevel
-                                $c->member = $memberData['level'];
-                                $c->memberName = $memberData['name'];
-                                $c->listend = false; //关闭对 xhCustom 的 buyAmount 变动监听
-                                $c->save();
-
+                                $memberData = CustomClass::getCustomExpenseLevel($custom->growth, $mainId, $levelData); // 设置等级多处需要同步修改的,请搜索:getCustomExpenseLevel
+//echo "--+--- ";
+                                $level = $memberData['level'] ?? 0;
+                                $level = trim($level);
+                                $level = floatval($level);
+                                $memberName = $memberData['name'] ?? '';
+                                $memberName = trim($memberName);
+//echo $level."+".$memberName;
+                                $custom->member = $level;
+                                $custom->memberName = $memberName;
+                                //$custom->listend = false; //关闭对 xhCustom 的 buyAmount 变动监听
+                                $custom->save();
+//echo " 0000 \n";
                                 // 更新客户所对应花店的消费金额
-                                HdClass::updateByCondition(['shopId' => $shopId, 'userId' => $c->userId], ['expendAmount' => $buyAmount]);
+                                $hdId = $custom->hdId;
+                                if (!empty($hdId)) {
+                                    HdClass::updateById($hdId, ['expendAmount' => $buyAmount]);
+                                }
+
                             }
                         }
-
-                        // 记录该 shopId 已经执行完成
-                        Yii::$app->redis->executeCommand('SADD', [$redisKey, $shopId]);
+//echo "\n";
                     }
                 }
+                echo "end\n";
             }
-
-            // 脚本执行完之后,清除缓存
-            Yii::$app->redis->executeCommand('DEL', [$redisKey]);
-
-            Yii::info('把所有客户的累计消费和成长值、积分都刷新一下脚本成功执行');
         } catch (\Exception $e) {
             Yii::error('把所有客户的累计消费和成长值、积分都刷新一下脚本执行失败,原因:' . $e->getMessage());
         }