瀏覽代碼

修改会员等级之后,触发rabbitMq更新所有客户的等级

shizhongqi 5 月之前
父節點
當前提交
e8bce7b26e

+ 0 - 1
app-hd/controllers/CustomController.php

@@ -8,7 +8,6 @@ use bizHd\custom\classes\HdClass;
 use bizHd\custom\services\CustomService;
 use biz\sj\services\MerchantAssetService;
 use biz\sj\services\MerchantRemarkService;
-use bizHd\member\classes\MemberWealClass;
 use bizHd\order\classes\OrderClass;
 use bizHd\stat\classes\StatVisitClass;
 use bizHd\user\services\UserAssetService;

+ 6 - 3
app-hd/controllers/MemberLevelController.php

@@ -3,15 +3,12 @@
 namespace hd\controllers;
 
 use bizHd\member\classes\MemberLevelClass;
-use bizHd\member\classes\MemberWealClass;
-use bizHd\shop\classes\ShopClass;
 use common\components\dict;
 use common\components\util;
 use Yii;
 
 class MemberLevelController extends BaseController
 {
-
     public $guestAccess = [];
 
     //初始化数据 ssh 20250831
@@ -89,6 +86,12 @@ class MemberLevelController extends BaseController
                 }
             }
             $transaction->commit();
+
+            // 客户消费等级变更
+            $producer = Yii::$app->rabbitmq->getProducer('customProducer');
+            $msg = serialize(['type' => 'hd_change_custom_expense_level', 'mainId' => $mainId, 'shopId' => $shopId]);
+            $producer->publish($msg, 'customExchange', 'customRoute', ['delivery_mode' => 2, 'content_type' => 'application/octet-stream']);
+
             util::complete('设置成功');
         } catch (\Exception $e) {
             $transaction->rollBack();

+ 42 - 2
biz-ghs/custom/classes/CustomClass.php

@@ -3,7 +3,6 @@
 namespace bizGhs\custom\classes;
 
 use biz\ghs\classes\GhsClass;
-use biz\sj\classes\MerchantClass;
 use biz\sj\classes\SjClass;
 use bizGhs\admin\classes\AdminClass;
 use bizGhs\book\classes\BookCustomClass;
@@ -15,9 +14,9 @@ use bizGhs\shop\classes\TotalDebtChangeClass;
 use bizGhs\ghs\classes\GhsBalanceClass;
 use bizGhs\ghs\classes\GhsRechargeClass;
 use bizGhs\shop\classes\ShopClass;
+use bizHd\member\classes\MemberLevelClass;
 use bizHd\saas\classes\ApplyClass;
 use bizHd\saas\services\ApplyService;
-use common\components\business;
 use common\components\dict;
 use common\components\imgUtil;
 use common\components\noticeUtil;
@@ -902,4 +901,45 @@ class CustomClass extends BaseClass
         return ['pfAmount' => $pfAmount, 'lsAmount' => $lsAmount];
     }
 
+    // 客户消费等级变更
+    public static function updateCustomExpenseLevel($data)
+    {
+        $shopId = $data['shopId'];
+        $mainId = $data['mainId'];
+        $customs = CustomClass::getAllByCondition(['shopId' => $shopId], null, '*', null, true);
+        if (!empty($customs)) {
+            foreach ($customs as $c) {
+                $buyAmount = 0;
+
+                // 获取所有零售订单,计算消费金额
+                $orderList = \bizHd\order\classes\OrderClass::getAllByCondition(['customId' => $c->id], null, 'id, actPrice');
+                if (!empty($orderList)) {
+                    foreach ($orderList as $order) {
+                        $buyAmount = bcadd($buyAmount, $order['actPrice'], 2);
+                    }
+                }
+                $c->buyAmount = $buyAmount;
+
+                // 根据 byuAmount 设置等级
+                $level = self::getCustomExpenseLevel($mainId, $buyAmount);
+                $c->level = $level;
+                $c->save();
+            }
+        }
+        return true;
+    }
+
+    // 获取客户消费等级
+    public static function getCustomExpenseLevel($mainId, $buyAmount)
+    {
+        $levelDatas = MemberLevelClass::getAllByCondition(['mainId' => $mainId], null, '*', 'amount DESC');
+        foreach ($levelDatas as $data) {
+            if ($buyAmount >= $data['amount']) {
+                return $data['level'];
+            }
+        }
+
+        return 0;
+    }
+
 }

+ 1 - 1
biz-hd/staff/classes/StaffClass.php

@@ -115,7 +115,6 @@ class StaffClass extends BaseClass
         $staff->save();
 
         $mobile = $admin->mobile;
-
         $hasShop = 0;
 
         // 检查管理员是否有自己的门店
@@ -162,6 +161,7 @@ class StaffClass extends BaseClass
                     util::fail('账号异常,请联系管理,编号006835');
                 }
             }
+
             $adminId = $admin->id;
             $staffList = StaffClass::getAllByCondition(['mainId' => $hdMainId, 'adminId' => $adminId], null, '*', null, true);
             if (empty($staffList)) {

+ 4 - 0
common/components/rabbitmq/customConsumer.php

@@ -44,6 +44,10 @@ class customConsumer implements ConsumerInterface
                     //从分店拉取客户
                     $result = CustomClass::pullOtherShopCustom($data);
                     break;
+                case 'hd_change_custom_expense_level':
+                    //客户消费等级变更
+                    $result = CustomClass::updateCustomExpenseLevel($data);
+                    break;
                 default:
                     noticeUtil::push("客户的消费者报错,不存在的类型: {$type}");
                     $result = false;