Przeglądaj źródła

Merge branch 'zhongqi-memberLevel'

shish 5 miesięcy temu
rodzic
commit
6f66326ad2

+ 35 - 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;
@@ -131,6 +130,7 @@ class CustomController extends BaseController
         $params = [
             'style' => 1,//手动修改
             'staffId' => $staffId,
+            'adminId' => $this->adminId,
             'staffName' => $staffName,
         ];
         $shop = $this->shop;
@@ -703,4 +703,38 @@ class CustomController extends BaseController
         $hd->save();
         util::complete('删除成功');
     }
+
+    //重新统计客户的消费总额
+    public function actionUpdateBuyAmount()
+    {
+        $post = Yii::$app->request->post();
+        $customId = $post['customId'];
+
+        $c = CustomClass::getLockById($customId);
+
+        // 1.重新统计客户的消费总额
+        $orderList = OrderClass::getAllByCondition(['customId' => $customId], null, 'id, forward, actPrice');
+
+        $buyAmount= 0;
+        if (!empty($orderList)) {
+            foreach ($orderList as $order) {
+                if ($order['forward'] == 0) { //0 常规订单
+                    $buyAmount = bcadd($buyAmount, $order['actPrice'], 2);
+                } elseif ($order['forward'] == 1) { //1 售后付款单(红冲)
+                    $buyAmount = bcsub($buyAmount, $order['actPrice'], 2);
+                } else {
+                    Yii::info('订单类型不存在');
+                    continue;
+                }
+            }
+        }
+        $c->buyAmount = $buyAmount;
+        $c->listend = false;
+        $c->save();
+
+        // 2.更新此客户所对应花店的消费金额 expendAmount ---- xhHd -> expendAmount
+        HdClass::updateById($c->hdId, ['expendAmount'=>$buyAmount]);
+
+        util::success(['customId'=>$customId, 'buyAmount'=>$buyAmount]);
+    }
 }

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

@@ -2,16 +2,14 @@
 
 namespace hd\controllers;
 
+use bizHd\custom\classes\CustomClass as HdCustomClass;
 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 +87,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();

+ 29 - 1
app-hd/controllers/RefundController.php

@@ -4,7 +4,9 @@ namespace hd\controllers;
 
 use biz\shop\classes\ShopExtClass;
 use bizHd\custom\classes\CustomClass;
+use bizHd\custom\classes\HdClass;
 use bizHd\hb\classes\HbClass;
+use bizHd\member\classes\MemberLevelClass;
 use bizHd\order\classes\OrderClass;
 use bizHd\order\services\OrderService;
 use bizHd\refund\classes\HdRefundClass;
@@ -259,7 +261,32 @@ class RefundController extends BaseController
                 //走正常售后
                 HdRefundService::addRefund($post, $order);
             }
-            $transaction->commit();
+
+            //售后之后,累计消费、积分、成长值回退 -- 表:xhCustom -> buyAmount、integral、growth,xhHd -> expendAmount
+            $custom = CustomClass::getLockById($order->customId);
+            if (!empty($custom)) {
+                $custom->buyAmount = bcsub($custom->buyAmount, $post['price'], 2);
+                $customName = $custom->name ?? $order->customName ?? '';
+                $orderSnText = $order->orderSn ?? '';
+                $shopAdminName = $this->shopAdminName;
+                $eventPrefix = $customName;
+                if ($eventPrefix === '' && $orderSnText !== '') {
+                    $eventPrefix = '客户';
+                }
+                $custom->eventRemark = $eventPrefix . '售后' . $orderSnText;
+                $custom->relateId = $order->id;
+                $custom->relateType = 1; //关联零售订单
+                $custom->staffId = $this->shopAdminId;
+                $custom->staffName = $shopAdminName;
+                $custom->mainId = $this->mainId;
+                $custom->save();
+
+                $hd = HdClass::getLockById($custom->hdId);
+                if (!empty($hd)) {
+                    $hd->expendAmount = bcsub($hd->expendAmount, $post['price'], 2);
+                    $hd->save();
+                }
+            }
 
             //红包退款
             $refundHb = $post['refundHb'] ?? 0;
@@ -270,6 +297,7 @@ class RefundController extends BaseController
                     hbClass::hbBack($updatedOrder);
                 }
             }
+            $transaction->commit();
 
             //制作单取消通知
             $shopId = $this->shopId ?? 0;

+ 25 - 16
app-hd/controllers/ShopController.php

@@ -13,11 +13,9 @@ use bizHd\merchant\classes\SjClass;
 use bizHd\merchant\services\ShopService;
 use bizHd\purchase\classes\PurchaseClass;
 use bizHd\saas\services\RegionService;
-use bizHd\shop\classes\MainClass;
 use common\components\dict;
 use common\components\dirUtil;
 use common\components\imgUtil;
-use common\components\IntraCityExpress;
 use common\components\stringUtil;
 use common\components\util;
 use common\components\wxUtil;
@@ -40,21 +38,32 @@ class ShopController extends BaseController
         if (empty($name)) {
             util::fail('请填写名称');
         }
-        $shop = $this->shop;
-        $shop->merchantName = $name;
-        $shop->save();
-        $sjId = $shop->sjId;
-        $sj = SjClass::getById($sjId, true);
-        if (empty($sj)) {
-            util::fail('门店信息缺失呢');
+
+        //开启事务
+        $connection = Yii::$app->db;
+        $transaction = $connection->beginTransaction();
+        try {
+            $shop = $this->shop;
+            $shop->merchantName = $name;
+            $shop->save();
+            $sj = SjClass::getById($shop->sjId, true);
+            if (empty($sj)) {
+                util::fail('门店信息缺失呢');
+            }
+            $sj->name = $name;
+            $sj->save();
+            $fullName = $shop->shopName == '首店' ? $name : $name . ' ' . $shop->shopName;
+            $shopId = $shop->id;
+            HdClass::updateByCondition(['shopId' => $shopId], ['name' => $fullName]);
+            CustomClass::updateByCondition(['shopId' => $shopId], ['originName' => $fullName]);
+
+            $transaction->commit();
+            util::complete('修改成功');
+        } catch (\Exception $exception) {
+            $transaction->rollBack();
+            Yii::error("修改门店名称失败:" . $exception->getMessage());
+            util::fail('修改门店名称失败');
         }
-        $sj->name = $name;
-        $sj->save();
-        $fullName = $shop->shopName == '首店' ? $name : $name . ' ' . $shop->shopName;
-        $shopId = $shop->id;
-        HdClass::updateByCondition(['shopId' => $shopId], ['name' => $fullName]);
-        CustomClass::updateByCondition(['shopId' => $shopId], ['originName' => $fullName]);
-        util::complete('修改成功');
     }
 
     //我的可以进入的门店 ssh 20230424

+ 36 - 8
app-hd/controllers/UserController.php

@@ -4,19 +4,14 @@ namespace hd\controllers;
 
 use bizHd\admin\services\AdminService;
 use bizHd\custom\classes\CustomClass;
+use bizHd\custom\classes\UserBuyAmountClass;
 use bizHd\custom\services\CustomService;
 use biz\sj\classes\MerchantExtendClass;
-use biz\sj\services\MerchantAssetService;
 use biz\sj\services\MerchantRemarkService;
+use bizHd\user\classes\UserGrowthClass;
+use bizHd\user\classes\UserIntegralClass;
 use bizHd\user\services\UserAssetService;
-use bizHd\user\services\UserGrowthService;
 use bizHd\user\services\UserService;
-use bizHd\user\services\UserUpgradeService;
-use common\components\wxUtil;
-use common\services\xhMerchantExtendService;
-use common\services\xhRechargeService;
-use common\services\xhTMessageService;
-use common\services\xhUserIntegralService;
 use Yii;
 use common\components\stringUtil;
 use common\components\util;
@@ -332,4 +327,37 @@ class UserController extends BaseController
         util::success($user);
     }
 
+    //消费记录列表
+    public function actionBuyAmountList()
+    {
+        $get = Yii::$app->request->get();
+        $where = [];
+        $where['shopId'] = $this->shopId;
+        $where['userId'] = $get['userId'];
+        $list = UserBuyAmountClass::getBuyAmountList($where);
+        util::success($list);
+    }
+    
+
+    //成长值列表
+    public function actionGrowthList()
+    {
+        $get = Yii::$app->request->get();
+        $where = [];
+        $where['shopId'] = $this->shopId;
+        $where['userId'] = $get['userId'];
+        $list = UserGrowthClass::getGrowthList($where);
+        util::success($list);
+    }
+
+    //积分列表
+    public function actionIntegralList()
+    {
+        $get = Yii::$app->request->get();
+        $where = [];
+        $where['shopId'] = $this->shopId;
+        $where['userId'] = $get['userId'];
+        $list = UserIntegralClass::getIntegralList($where);
+        util::success($list);
+    }
 }

+ 21 - 1
app-mall/controllers/UserController.php

@@ -7,6 +7,8 @@ use bizHd\custom\classes\CustomClass;
 use bizHd\wx\classes\WxOpenClass;
 use bizMall\message\services\SmsService;
 use bizMall\user\classes\UserClass;
+use bizMall\user\classes\UserGrowthClass;
+use bizMall\user\classes\UserIntegralClass;
 use bizMall\user\services\UserAssetService;
 use bizMall\user\services\UserService;
 use biz\shop\classes\ShopClass;
@@ -70,7 +72,6 @@ class UserController extends BaseController
             util::fail('农历没有31号');
         }
         $user = $this->user;
-        $userId = $this->userId;
         if ($user->birthdaySet == 1) {
             util::fail('你已经设置过了');
         }
@@ -372,4 +373,23 @@ class UserController extends BaseController
         util::success($user);
     }
 
+    //成长值列表
+    public function actionGrowthList()
+    {
+        $where = [];
+        $where['shopId'] = $this->shopId;
+        $where['userId'] = $this->userId;
+        $list = UserGrowthClass::getGrowthList($where);
+        util::success($list);
+    }
+
+    //积分列表
+    public function actionIntegralList()
+    {
+        $where = [];
+        $where['shopId'] = $this->shopId;
+        $where['userId'] = $this->userId;
+        $list = UserIntegralClass::getIntegralList($where);
+        util::success($list);
+    }
 }

+ 1 - 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;

+ 5 - 1
biz-ghs/order/classes/OrderClass.php

@@ -1492,6 +1492,8 @@ class OrderClass extends BaseClass
         $refundNum = $current['refundNum'] ?? 0;
         $unitName = $current['unitName'] ?? '扎';
         $remark = $current['remark'] ?? '';
+        $ratioType = $current['ratioType'] === null ? -1 : intval($current['ratioType']);
+        $ratio = $current['ratio'];
 
         $lastNum = bcsub($itemNum, $refundNum);
 
@@ -1509,7 +1511,7 @@ class OrderClass extends BaseClass
             if (floatval($unitPrice) == 0.01) {
                 $content .= $productNum . ' = ' . $productPrice . '元 赠送价<BR>';
             }else{
-                $content .= $productNum . ' = ' . $productPrice . '元<BR>';
+                $content .= $productNum . ' = ' . $productPrice . '元  ' . ($ratioType==0 ? $ratio.'支装' : ($ratioType==1 ? '若干支装' : '')) . '<BR>';
             }
         }
         $content .= '--------------------------------<BR>';
@@ -2130,6 +2132,8 @@ class OrderClass extends BaseClass
                         'unitName' => $xhUnitName,
                         'itemNum' => $bigNum,
                         'remark' => $remark,
+                        'ratioType' => $itemVal['ratioType'],
+                        'ratio' => $itemVal['ratio']
                     ];
                 }
                 if ($smallNum > 0) {

+ 104 - 7
biz-hd/custom/classes/CustomClass.php

@@ -8,17 +8,16 @@ use bizHd\balance\classes\BalanceGiveChangeClass;
 use bizHd\balance\classes\BalancePayChangeClass;
 use bizHd\member\classes\MemberChangeClass;
 use bizHd\member\classes\MemberLevelClass;
-use bizHd\member\classes\MemberWealClass;
 use bizHd\order\classes\OrderClass;
 use bizHd\order\classes\SettleClass;
 use bizHd\shop\classes\ShopClass;
+use bizHd\user\classes\UserGrowthClass;
 use common\components\dict;
 use common\components\imgUtil;
 use common\components\noticeUtil;
 use common\components\stringUtil;
 use common\components\util;
 use Overtrue\ChineseCalendar\Calendar;
-use Yii;
 use bizHd\base\classes\BaseClass;
 
 class CustomClass extends BaseClass
@@ -184,11 +183,13 @@ class CustomClass extends BaseClass
     //会员等级变化,包括手动修改、自动降会员和充值升会员等 ssh 20250324
     public static function levelChange($oldLevel, $newLevel, $shop, $custom, $hd, $params)
     {
+        $adminId = $params['adminId'];
         $staffId = $params['staffId'] ?? 0;
         $staffName = $params['staffName'] ?? '';
         $style = $params['style'] ?? 0;
         $target = $params['target'] ?? [];
         $rechargeAmount = $params['rechargeAmount'] ?? 0;
+
         $targetId = $target->id ?? 0;
         $mainId = $shop->mainId;
         $shopId = $shop->id;
@@ -198,11 +199,7 @@ class CustomClass extends BaseClass
         $beforeName = $before['name'] ?? '普通客户';
         $discount = $current['discount'] ?? 1;
         $memberName = $current['name'] ?? '';
-
-        $custom->member = $newLevel;
-        $custom->discount = $discount;
-        $custom->memberName = $memberName;
-        $custom->save();
+        $oldGrowth = $custom->growth;
 
         $hd->member = $newLevel;
         $hd->discount = $discount;
@@ -236,6 +233,30 @@ class CustomClass extends BaseClass
             'staffName' => $staffName,
         ];
         MemberChangeClass::add($change);
+
+        $custom->member = $newLevel;
+        $custom->discount = $discount;
+        $custom->memberName = $memberName;
+        //成长值变更
+        $growth = $current['amount'] ?? 0;
+        $custom->growth = $growth;
+        $custom->save();
+
+        //成长值变动记录
+         $growthData = [
+             'userId' => $custom->userId,
+             'userName' => $custom->name,
+             'event' => "管理员变更{$memberName}级,成长值从{$oldGrowth}变更为{$growth}",
+             'relateId' => 0,
+             'relateType' => 0,
+             'num' => $custom->growth - $oldGrowth,
+             'growth' => $growth,
+             //'operatorId' => $adminId,
+             'staffId' => $staffId, //操作人(员工id)
+             'staffName' => $staffName, //员工名称
+             'createTime' => date('Y-m-d H:i:s')
+         ];
+         UserGrowthClass::add($growthData);
     }
 
     //客户采购欠款金额增加,如果有余额时,要进行欠款销账 ssh 20250715
@@ -867,4 +888,80 @@ class CustomClass extends BaseClass
         return $list;
     }
 
+    // 客户消费等级批量变更
+    public static function updateCustomExpenseLevel($data)
+    {
+        $shopId = $data['shopId'];
+        $mainId = $data['mainId'];
+        $customs = self::getAllByCondition(['shopId' => $shopId], null, 'id, name, hdId, userId, buyAmount, growth, member, memberName', null, true);
+        $levelDatas = MemberLevelClass::getAllByCondition(['mainId' => $mainId], 'amount DESC', 'id, name, level, amount');
+        if (!empty($customs) && !empty($levelDatas)) {
+            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;
+
+                // 根据 growth 设置等级
+                $memberData = self::getCustomExpenseLevel($c->growth, $mainId, $levelDatas); // 设置等级多处需要同步修改的,请搜索:getCustomExpenseLevel
+                $newMember = intval($memberData['level']);
+                $customMember = $c->member;
+                if ($customMember != $newMember) {
+                    $hdId = $c->hdId;
+                    $hd = HdClass::getById($hdId, true);
+
+                    $change = [
+                        'customId' => $c->id,
+                        'customName' => $c->name,
+                        'hdId' => $hd->id,
+                        'hdName' => $hd->name,
+                        'mainId' => $mainId,
+                        'shopId' => $shopId,
+                        'targetId' => 0,
+                        'rechargeAmount' => 0,
+                        'days' => 0,
+                        'daysBefore' => '0000-00-00 00:00:00',
+                        'daysAfter' => '0000-00-00 00:00:00',
+                        'beforeLevel' => $c->member,
+                        'afterLevel' => $memberData['level'],
+                        'beforeName' => $c->memberName,
+                        'afterName' => $memberData['name'],
+                        'style' => 1, //手动修改会员,脚本执行
+                        'event' => '系统脚本修改',
+                        'staffId' => 0,
+                        'staffName' => '',
+                    ];
+                    MemberChangeClass::add($change);
+
+                    $c->member = $memberData['level'];
+                    $c->memberName = $memberData['name'];
+                    $c->save();
+                }
+
+                // 更新客户所对应花店的消费金额
+                // HdClass::updateByCondition(['shopId'=>$shopId, 'userId'=>$c->userId], ['expendAmount'=>$buyAmount]);
+            }
+        }
+        return true;
+    }
+
+    // 获取客户消费等级
+    public static function getCustomExpenseLevel($growth, $mainId, $levelDatas=[])
+    {
+        if (empty($levelDatas)) {
+            $levelDatas = MemberLevelClass::getAllByCondition(['mainId' => $mainId], 'amount DESC', 'id, name, level, amount');
+        }
+        foreach ($levelDatas as $data) {
+            if ($growth >= $data['amount']) {
+                return $data;
+            }
+        }
+
+        return ['level'=>0, 'name'=>''];
+    }
 }

+ 19 - 0
biz-hd/custom/classes/UserBuyAmountClass.php

@@ -0,0 +1,19 @@
+<?php
+namespace bizHd\custom\classes;
+use bizHd\base\classes\BaseClass;
+
+class UserBuyAmountClass extends BaseClass
+{
+    public static $baseFile = '\bizHd\custom\models\UserBuyAmount';
+
+    public static function getBuyAmountList($where)
+    {
+        $data = self::getList('*', $where, 'createTime DESC,id DESC');
+        if (!empty($data['list'])) {
+            foreach ($data['list'] as $k => $v) {
+
+            }
+        }
+        return $data;
+    }
+}

+ 62 - 0
biz-hd/custom/models/Custom.php

@@ -1,9 +1,71 @@
 <?php
 namespace bizHd\custom\models;
 use bizHd\base\models\Base;
+use bizHd\custom\observers\BuyAmountObserver;
 
 class Custom extends Base
 {
+    /**
+     * xhCustom 的 buyAmount 变动监听的开关(默认是开启)
+     *
+     * @var bool
+     */
+    public $listend = true;
+
+    /**
+     * mainId(运行时临时属性,不入库)。
+     * 传递必要参数 mainId
+     * @var int
+     */
+    public $mainId = 0;
+
+    /**
+     * 关联id(运行时临时属性,不入库)。
+     *
+     * @var int
+     */
+    public $relateId = 0;
+
+    /**
+     * 关联的表或类别(运行时临时属性,不入库)。
+     *
+     * 关联的表或类别:0.无关联 1.零售订单  --  具体请查看 xhUserGrowth表的 relateType 字段
+     *
+     * @var int
+     */
+    public $relateType = 0;
+
+	/**
+	 * 流水事件文案(运行时临时属性,不入库)。
+	 *
+	 * 业务侧可在 save() 前赋值,供 BuyAmountObserver 使用。
+	 *
+	 * @var string
+	 */
+	public $eventRemark = '';
+
+	/**
+	 * 操作员工 id(运行时临时属性,不入库)。
+	 *
+	 * @var int
+	 */
+	public $staffId = 0;
+
+	/**
+	 * 操作员工名称(运行时临时属性,不入库)。
+	 *
+	 * @var string
+	 */
+	public $staffName = '';
+
+	// 加上了 xhCustom 的 buyAmount 变动监听(观察者模式),并处理了联动增减逻辑 -- 该监听依赖 AR 事件触发(如 $model->save())。
+	// 若某处直接用 updateAll()/updateByCondition() 直接改 buyAmount,不会触发该观察者。
+	public function behaviors()
+	{
+		return [
+			BuyAmountObserver::class,
+		];
+	}
 
 	public static function tableName()
 	{

+ 11 - 0
biz-hd/custom/models/UserBuyAmount.php

@@ -0,0 +1,11 @@
+<?php
+namespace bizHd\custom\models;
+use bizHd\base\models\Base;
+
+class UserBuyAmount extends Base
+{
+    public static function tableName()
+    {
+        return 'xhUserBuyAmount';
+    }
+}

+ 126 - 0
biz-hd/custom/observers/BuyAmountObserver.php

@@ -0,0 +1,126 @@
+<?php
+
+namespace bizHd\custom\observers;
+
+use bizHd\custom\classes\CustomClass;
+use bizHd\user\classes\UserIntegralClass;
+use yii\base\Behavior;
+use yii\db\ActiveRecord;
+use yii\db\AfterSaveEvent;
+use bizHd\user\classes\UserGrowthClass;
+use bizHd\custom\classes\UserBuyAmountClass;
+
+class BuyAmountObserver extends Behavior
+{
+	public function events()
+	{
+		return [
+			ActiveRecord::EVENT_AFTER_INSERT => 'onAfterSave',
+			ActiveRecord::EVENT_AFTER_UPDATE => 'onAfterSave',
+		];
+	}
+
+	public function onAfterSave(AfterSaveEvent $event)
+	{
+		/** @var ActiveRecord $model */
+		$model = $this->owner;
+		if ($model->listend === false) { //根据总开关判断是否执行记录积分与成长值变动
+		    return;
+        }
+
+		$oldBuyAmount = array_key_exists('buyAmount',$event->changedAttributes) ? $event->changedAttributes['buyAmount'] : $model->getAttribute('buyAmount');
+		$newBuyAmount = $model->getAttribute('buyAmount');
+		if (bccomp($newBuyAmount, $oldBuyAmount, 2) === 0) {
+			return;
+		}
+		
+		$buyAmountDelta = bcsub($newBuyAmount, $oldBuyAmount, 2);
+		$shopId = $model->getAttribute('shopId');
+		$userId = $model->getAttribute('userId');
+		$userName = $model->getAttribute('name');
+		$relateId = $model->relateId;
+		$relateType = $model->relateType;
+		$eventRemark = isset($model->eventRemark) ? $model->eventRemark : '';
+		$staffId = isset($model->staffId) ? (int) $model->staffId : 0;
+		$staffName = isset($model->staffName) ? trim((string) $model->staffName) : '';
+		//buyAmount变动记录
+		$consumeData = [
+			'shopId' => $shopId,
+			'userId' => $userId,
+			'userName' => $userName,
+			'event' => $eventRemark,
+			'relateId' => $relateId,
+			'relateType' => $relateType,
+			'num' => $buyAmountDelta,
+			'buyAmount' => $newBuyAmount,
+            'staffId' => $staffId, //操作人(员工id)
+            'staffName' => $staffName, //员工名称
+			'createTime' => date('Y-m-d H:i:s'),
+		];
+		UserBuyAmountClass::add($consumeData);
+
+		$oldGrowth = array_key_exists('growth', $event->changedAttributes)
+			? $event->changedAttributes['growth']
+			: $model->getAttribute('growth'); // changedAttributes 里没有 growth 时,说明这次更新没改 growth,这时直接取模型当前值即可(它就等于旧值)。
+		$newGrowth = bcadd($oldGrowth, $buyAmountDelta, 2);
+
+		$oldIntegral = array_key_exists('integral', $event->changedAttributes)
+			? $event->changedAttributes['integral']
+			: $model->getAttribute('integral');
+		$newIntegral = bcadd($oldIntegral, $buyAmountDelta, 2);
+
+		$model::updateAll([
+			'growth' => $newGrowth,
+			'integral' => $newIntegral,
+		], ['id' => $model->getPrimaryKey()]);
+
+
+        $mainId = $model->mainId;
+        if ($mainId > 0) {
+            $memberData = CustomClass::getCustomExpenseLevel($newGrowth, $mainId); // 设置等级多处需要同步修改的,请搜索:getCustomExpenseLevel
+            $model::updateAll([
+                'member' => (int) ($memberData['level'] ?? 0),
+                'memberName' => (string) ($memberData['name'] ?? ''),
+            ], ['id' => $model->getPrimaryKey()]);
+        }else{
+            throw new \Exception('mainId is required');
+        }
+
+		if ($buyAmountDelta == 0 || $buyAmountDelta == 0.00) {
+			return;
+		}
+
+		$createTime = date('Y-m-d H:i:s');
+		//成长值变动记录
+		$growthData = [
+		    'shopId' => $shopId,
+			'userId' => $userId,
+			'userName' => $userName,
+			'event' => $eventRemark !== '' ? $eventRemark . ',成长值同步变更' : '累计消费变更同步成长值',
+			'relateId' => $relateId,
+			'relateType' => $relateType,
+			'num' => $buyAmountDelta,
+			'growth' => $newGrowth,
+            'staffId' => $staffId, //操作人(员工id)
+            'staffName' => $staffName, //员工名称
+			'createTime' => $createTime,
+		];
+		UserGrowthClass::add($growthData);
+
+		//积分变动记录
+		$integralData = [
+            'shopId' => $shopId,
+			'userId' => $userId,
+			'userName' => $userName,
+			'event' => $eventRemark !== '' ? $eventRemark . ',积分同步变更' : '累计消费变更同步积分',
+			'relateId' => $relateId,
+			'relateType' => $relateType,
+			'num' => $buyAmountDelta,
+			'integral' => $newIntegral,
+            'staffId' => $staffId, //操作人(员工id)
+            'staffName' => $staffName, //员工名称
+			'createTime' => $createTime,
+		];
+		UserIntegralClass::add($integralData);
+	}
+}

+ 37 - 2
biz-hd/order/classes/OrderClass.php

@@ -13,8 +13,10 @@ use bizGhs\order\classes\CheckOrderClass;
 use bizGhs\product\classes\ProductClass;
 use bizGhs\stock\classes\StockRecordClass;
 use bizHd\custom\classes\CustomClass;
+use bizHd\custom\classes\HdClass;
 use bizHd\hb\classes\HbClass;
 use bizHd\item\classes\ItemClass;
+use bizHd\member\classes\MemberLevelClass;
 use bizHd\merchant\classes\SjClass;
 use bizHd\refund\classes\HdRefundClass;
 use bizHd\shop\classes\MainClass;
@@ -451,10 +453,43 @@ class OrderClass extends BaseClass
 
         $myCustom = CustomClass::getLockById($customId);
         if (!empty($myCustom)) {
-            if ($order->forward == 0) {
+            $customName = $myCustom->name ?? $order->customName ?? '';
+            $orderSnText = $order->orderSn ?? '';
+            $shopAdminId = $order->shopAdminId ?? 0;
+            $shopAdminName = $order->shopAdminName ?? '';
+            $eventPrefix = $customName;
+            if ($eventPrefix === '' && $orderSnText !== '') {
+                $eventPrefix = '客户';
+            }
+            if ($order->forward == 0) { //0 常规订单
                 $myCustom->recentExpend = date("Y-m-d H:i:s");
                 $myCustom->visitTime = date("Y-m-d H:i:s");
-                $myCustom->save();
+                $myCustom->buyAmount = bcadd($myCustom->buyAmount, $order->realPrice, 2);
+                $myCustom->eventRemark = trim($eventPrefix . '下单' . $orderSnText);
+            } elseif ($order->forward == 1) { //1 售后付款单(红冲)
+                $myCustom->buyAmount = bcsub($myCustom->buyAmount, $order->realPrice, 2);
+                $myCustom->eventRemark = trim($eventPrefix . '红冲' . $orderSnText);
+            } else {
+                util::fail('订单类型不存在');
+            }
+            $myCustom->relateId = $orderId;
+            $myCustom->relateType = 1; //关联的表或类别:0.无关联 1.零售订单
+            $myCustom->staffId = $shopAdminId;
+            $myCustom->staffName = $shopAdminName;
+            $myCustom->mainId = $order->mainId;
+            $myCustom->save();
+
+            $hd = HdClass::getLockById($myCustom->hdId);
+            //$hd = HdClass::getByCondition(['shopId'=>$order->shopId, 'userId'=>$order->userId], true, false, 'id,customId,expendAmount');
+            if (!empty($hd)) {
+                if ($order->forward == 0) { //0 常规订单
+                    $hd->expendAmount = bcadd($hd->expendAmount, $order->realPrice, 2);
+                } elseif ($order->forward == 1) { //1 售后付款单(红冲)
+                    $hd->expendAmount = bcsub($hd->expendAmount, $order->realPrice, 2);
+                } else {
+                    util::fail('订单类型不存在');
+                }
+                $hd->save();
             }
         }
 

+ 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)) {

+ 11 - 15
biz-hd/user/classes/UserGrowthClass.php

@@ -2,24 +2,20 @@
 
 namespace bizHd\user\classes;
 
-use biz\sj\classes\MerchantAssetClass;
-use biz\sj\services\MerchantService;
-use bizHd\message\classes\ChatClass;
-use bizHd\user\services\UserIntegralService;
-use common\components\business;
-use common\components\dict;
-use common\components\util;
-use common\services\ImageService;
-use common\services\xhMerchantExtendService;
-use common\services\xhUserCapitalService;
-use common\services\xhUserIntegralService;
-use common\services\xhUserMergeService;
-use Yii;
 use bizHd\base\classes\BaseClass;
 
 class UserGrowthClass extends BaseClass
 {
-	
 	public static $baseFile = '\bizHd\user\models\UserGrowth';
-	
+
+    public static function getGrowthList($where)
+    {
+        $data = self::getList('*', $where, 'createTime DESC,id DESC');
+        if (!empty($data['list'])) {
+            foreach ($data['list'] as $k => $v) {
+
+            }
+        }
+        return $data;
+    }
 }

+ 11 - 4
biz-hd/user/classes/UserIntegralClass.php

@@ -2,13 +2,20 @@
 
 namespace bizHd\user\classes;
 
-use common\services\ImageService;
-use Yii;
 use bizHd\base\classes\BaseClass;
 
 class UserIntegralClass extends BaseClass
 {
-	
 	public static $baseFile = '\bizHd\user\models\UserIntegral';
-	
+
+    public static function getIntegralList($where)
+    {
+        $data = self::getList('*', $where, 'createTime DESC,id DESC');
+        if (!empty($data['list'])) {
+            foreach ($data['list'] as $k => $v) {
+
+            }
+        }
+        return $data;
+    }
 }

+ 0 - 3
biz-hd/user/models/UserGrowth.php

@@ -1,15 +1,12 @@
 <?php
-
 namespace bizHd\user\models;
 
 use bizHd\base\models\Base;
 
 class UserGrowth extends Base
 {
-	
 	public static function tableName()
 	{
 		return 'xhUserGrowth';
 	}
-	
 }

+ 6 - 34
biz-hd/user/models/UserIntegral.php

@@ -1,28 +1,7 @@
 <?php
 namespace bizHd\user\models;
 use bizHd\base\models\Base;
-/**
- * This is the model class for table "xhUserIntegral".
- *
- * @property int $id
- * @property int $userId
- * @property string $userName 用户名
- * @property string $alipayId 支付宝的uid
- * @property int $sjId 商家id
- * @property string $relateId 关联id
- * @property string $amount 涉及金额
- * @property int $integral 剩余可兑换积分
- * @property int $num 积分数量
- * @property int $io 收支类型0收入 1支出
- * @property int $payWay 资金收支方式0微信1支付宝2余额3现金,具体请查看配置文件configDict payWay
- * @property int $capitalType 流水订单的类型 参考configDict capitalType
- * @property string $event 原由,事项,解释
- * @property int $operatorId 操作人,adminId
- * @property string $remark 备注
- * @property int $addTime 添加时间,时间戳格式
- * @property string $createTime 创建时间
- * @property string $updateTime
- */
+
 class UserIntegral extends Base
 {
 	/**
@@ -39,12 +18,12 @@ class UserIntegral extends Base
 	public function rules()
 	{
 		return [
-			[['userId', 'sjId', 'integral', 'num', 'io', 'payWay', 'capitalType', 'operatorId', 'addTime'], 'integer'],
-			[['amount'], 'number'],
-			[['capitalType', 'createTime'], 'required'],
+			[['userId', 'relateId', 'relateType', 'staffId'], 'integer'],
+			[['integral', 'num'], 'number'],
+			//[['capitalType', 'createTime'], 'required'],
 			[['createTime', 'updateTime'], 'safe'],
-			[['userName', 'alipayId'], 'string', 'max' => 50],
-			[['relateId'], 'string', 'max' => 100],
+			[['userName'], 'string', 'max' => 50],
+            ['staffName', 'string', 'max' => 100],
 			[['event'], 'string', 'max' => 200],
 			[['remark'], 'string', 'max' => 1000],
 		];
@@ -59,19 +38,12 @@ class UserIntegral extends Base
 			'id' => 'ID',
 			'userId' => 'User ID',
 			'userName' => 'User Name',
-			'alipayId' => 'Alipay ID',
-			'sjId' => 'Merchant ID',
 			'relateId' => 'Relate ID',
-			'amount' => 'Amount',
 			'integral' => 'Integral',
 			'num' => 'Num',
-			'io' => 'Io',
-			'payWay' => 'Pay Way',
-			'capitalType' => 'Capital Type',
 			'event' => 'Event',
 			'operatorId' => 'Operator ID',
 			'remark' => 'Remark',
-			'addTime' => 'Add Time',
 			'createTime' => 'Create Time',
 			'updateTime' => 'Update Time',
 		];

+ 0 - 14
biz-hd/user/services/UserGrowthService.php

@@ -3,22 +3,8 @@
 namespace bizHd\user\services;
 
 use bizHd\base\services\BaseService;
-use biz\sj\classes\MerchantAssetClass;
-use biz\sj\services\MerchantAssetService;
-use biz\sj\services\MerchantExtendService;
-use bizHd\order\services\OrderService;
-use bizHd\user\classes\UserClass;
-use common\components\util;
-use common\components\validate;
-use common\services\ImageService;
-use common\services\xhMerchantExtendService;
-use common\services\xhMerchantService;
-use Yii;
-use common\components\wxUtil;
 
 class UserGrowthService extends BaseService
 {
-	
 	public static $baseFile = '\bizHd\user\classes\UserGrowthClass';
-	
 }

+ 0 - 1
biz-mall/balance/classes/BalanceChangeClass.php

@@ -2,7 +2,6 @@
 
 namespace bizMall\balance\classes;
 
-use Yii;
 use bizMall\base\classes\BaseClass;
 
 class BalanceChangeClass extends BaseClass

+ 11 - 14
biz-mall/user/classes/UserGrowthClass.php

@@ -2,24 +2,21 @@
 
 namespace bizMall\user\classes;
 
-use bizMall\merchant\classes\MerchantAssetClass;
-use bizMall\merchant\services\MerchantService;
-use bizMall\message\classes\ChatClass;
-use bizMall\user\services\UserIntegralService;
-use common\components\business;
-use common\components\dict;
-use common\components\util;
-use common\services\ImageService;
-use common\services\xhMerchantExtendService;
-use common\services\xhUserCapitalService;
-use common\services\xhUserIntegralService;
-use common\services\xhUserMergeService;
-use Yii;
 use bizMall\base\classes\BaseClass;
 
 class UserGrowthClass extends BaseClass
 {
 	
 	public static $baseFile = '\bizMall\user\models\UserGrowth';
-	
+
+    public static function getGrowthList($where)
+    {
+        $data = self::getList('*', $where, 'createTime DESC,id DESC');
+        if (!empty($data['list'])) {
+            foreach ($data['list'] as $k => $v) {
+
+            }
+        }
+        return $data;
+    }
 }

+ 11 - 4
biz-mall/user/classes/UserIntegralClass.php

@@ -2,13 +2,20 @@
 
 namespace bizMall\user\classes;
 
-use common\services\ImageService;
-use Yii;
 use bizMall\base\classes\BaseClass;
 
 class UserIntegralClass extends BaseClass
 {
-	
 	public static $baseFile = '\bizMall\user\models\UserIntegral';
-	
+
+    public static function getIntegralList($where)
+    {
+        $data = self::getList('*', $where, 'createTime DESC,id DESC');
+        if (!empty($data['list'])) {
+            foreach ($data['list'] as $k => $v) {
+
+            }
+        }
+        return $data;
+    }
 }

+ 19 - 48
biz-mall/user/models/UserIntegral.php

@@ -1,28 +1,7 @@
 <?php
 namespace bizMall\user\models;
 use bizMall\base\models\Base;
-/**
- * This is the model class for table "xhUserIntegral".
- *
- * @property int $id
- * @property int $userId
- * @property string $userName 用户名
- * @property string $alipayId 支付宝的uid
- * @property int $sjId 商家id
- * @property string $relateId 关联id
- * @property string $amount 涉及金额
- * @property int $integral 剩余可兑换积分
- * @property int $num 积分数量
- * @property int $io 收支类型0收入 1支出
- * @property int $payWay 资金收支方式0微信1支付宝2余额3现金,具体请查看配置文件configDict payWay
- * @property int $capitalType 流水订单的类型 参考configDict capitalType
- * @property string $event 原由,事项,解释
- * @property int $operatorId 操作人,adminId
- * @property string $remark 备注
- * @property int $addTime 添加时间,时间戳格式
- * @property string $createTime 创建时间
- * @property string $updateTime
- */
+
 class UserIntegral extends Base
 {
 	/**
@@ -39,14 +18,13 @@ class UserIntegral extends Base
 	public function rules()
 	{
 		return [
-			[['userId', 'sjId', 'integral', 'num', 'io', 'payWay', 'capitalType', 'operatorId', 'addTime'], 'integer'],
-			[['amount'], 'number'],
-			[['capitalType', 'createTime'], 'required'],
-			[['createTime', 'updateTime'], 'safe'],
-			[['userName', 'alipayId'], 'string', 'max' => 50],
-			[['relateId'], 'string', 'max' => 100],
-			[['event'], 'string', 'max' => 200],
-			[['remark'], 'string', 'max' => 1000],
+            [['userId', 'relateId', 'relateType', 'operatorId'], 'integer'],
+            [['integral', 'num'], 'number'],
+            //[['capitalType', 'createTime'], 'required'],
+            [['createTime', 'updateTime'], 'safe'],
+            [['userName'], 'string', 'max' => 50],
+            [['event'], 'string', 'max' => 200],
+            [['remark'], 'string', 'max' => 1000],
 		];
 	}
 	
@@ -56,24 +34,17 @@ class UserIntegral extends Base
 	public function attributeLabels()
 	{
 		return [
-			'id' => 'ID',
-			'userId' => 'User ID',
-			'userName' => 'User Name',
-			'alipayId' => 'Alipay ID',
-			'sjId' => 'Merchant ID',
-			'relateId' => 'Relate ID',
-			'amount' => 'Amount',
-			'integral' => 'Integral',
-			'num' => 'Num',
-			'io' => 'Io',
-			'payWay' => 'Pay Way',
-			'capitalType' => 'Capital Type',
-			'event' => 'Event',
-			'operatorId' => 'Operator ID',
-			'remark' => 'Remark',
-			'addTime' => 'Add Time',
-			'createTime' => 'Create Time',
-			'updateTime' => 'Update Time',
+            'id' => 'ID',
+            'userId' => 'User ID',
+            'userName' => 'User Name',
+            'relateId' => 'Relate ID',
+            'integral' => 'Integral',
+            'num' => 'Num',
+            'event' => 'Event',
+            'operatorId' => 'Operator ID',
+            'remark' => 'Remark',
+            'createTime' => 'Create Time',
+            'updateTime' => 'Update Time',
 		];
 	}
 }

+ 6 - 5
common/components/delivery/services/adapter/FengniaoAdapter.php

@@ -1051,11 +1051,12 @@ class FengniaoAdapter extends Fengniao implements Adapter
         // 验证 third_index_id(幂等标识)
         if (!isset($data['third_index_id'])) {
             Yii::warning("[FengniaoAdapter] addTip failed: third_index_id is required");
-            return [
-                'code' => -1,
-                'msg' => 'third_index_id is required for idempotency',
-                'data' => null
-            ];
+            $data['third_index_id'] = time();
+            // return [
+            //     'code' => -1,
+            //     'msg' => 'third_index_id is required for idempotency',
+            //     'data' => null
+            // ];
         }
 
         // 验证 add_tip_amount_cent(加小费金额)

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

@@ -7,6 +7,7 @@
 namespace common\components\rabbitmq;
 
 use bizGhs\custom\classes\CustomClass;
+use bizHd\custom\classes\CustomClass as HdCustomClass;
 use common\components\noticeUtil;
 use mikemadisonweb\rabbitmq\components\ConsumerInterface;
 use PhpAmqpLib\Message\AMQPMessage;
@@ -44,6 +45,10 @@ class customConsumer implements ConsumerInterface
                     //从分店拉取客户
                     $result = CustomClass::pullOtherShopCustom($data);
                     break;
+                case 'hd_change_custom_expense_level':
+                    //客户消费等级变更
+                    $result = HdCustomClass::updateCustomExpenseLevel($data);
+                    break;
                 default:
                     noticeUtil::push("客户的消费者报错,不存在的类型: {$type}");
                     $result = false;

+ 99 - 10
console/controllers/CustomController.php

@@ -2,23 +2,19 @@
 
 namespace console\controllers;
 
-use biz\ghs\classes\GhsClass;
 use biz\shop\classes\ShopClass;
-use biz\shop\services\ShopAdminService;
-use biz\sj\classes\SjClass;
-use bizGhs\admin\classes\AdminClass;
-use bizGhs\custom\classes\CustomClass;
 use bizGhs\custom\models\Custom;
 use bizGhs\order\classes\OrderClass;
+use bizHd\custom\classes\CustomClass;
+use bizHd\custom\classes\HdClass;
+use bizHd\member\classes\MemberLevelClass;
 use bizHd\purchase\classes\PurchaseClass;
-use bizHd\saas\classes\ApplyClass;
-use bizHd\saas\services\ApplyService;
-use common\components\dict;
 use common\components\noticeUtil;
-use common\components\stringUtil;
 use common\components\util;
-use yii\console\Controller;
+use bizHd\user\classes\UserClass;
+use Overtrue\ChineseCalendar\Calendar;
 use Yii;
+use yii\console\Controller;
 
 class CustomController extends Controller
 {
@@ -110,6 +106,99 @@ class CustomController extends Controller
 
     }
 
+    //每天凌晨3点35分执行,取出所有 lunar==1 的 且 birthdayTime 小于当前时间的客户,然后把他们的阴历转阳历,然后更新他们的 birthdayTime
+    public function actionUpdateBirthday()
+    {
+        try{
+            $calendar = new Calendar();
+            $customList = CustomClass::getAllByCondition(['lunar' => 1, 'birthdayTime<' => time()], null, 'id, userId, birthday, birthdayTime, birthdayMonth, birthdayDate', null, true);
+            foreach ($customList as $custom) {
+                $birthdayMonth = $custom->birthdayMonth;
+                $birthdayDate = $custom->birthdayDate;
+                $year = date("Y");
+                // 农历转公历
+                $result = $calendar->lunar($year, $birthdayMonth, $birthdayDate);
+                $month = $result['gregorian_month'];
+                $day = $result['gregorian_day'];
+                $birthday = $year . '-' . $month . '-' . $day;
+
+                // 如果今年的生日已经过去,则计算明年的生日
+                if (strtotime($birthday) < strtotime(date('Y-m-d'))) {
+                    $year++;
+                    $result = $calendar->lunar($year, $birthdayMonth, $birthdayDate);
+                    $month = $result['gregorian_month'];
+                    $day = $result['gregorian_day'];
+                    $birthday = $year . '-' . $month . '-' . $day;
+                }
+                $custom->birthday = $birthday;
+                $custom->birthdayTime = strtotime($birthday);
+                $custom->save();
+
+                UserClass::updateById($custom->userId, [
+                    'birthday' => $birthday,
+                    'birthdayTime' => $custom->birthdayTime
+                ]);
+            }
+            Yii::info('阴历转阳历脚本成功执行');
+        }catch(\Exception $e){
+            Yii::error('阴历转阳历脚本执行失败,原因:'.$e->getMessage());
+        }
+    }
+
+    // 把所有客户的累计消费和成长值、积分都刷新一下
+    public function actionRefreshCustomData()
+    {
+        try{
+            // 1. 查询 xhShop 表,获取所有 ptStyle = 1 的门店数据
+            $allShops = \bizHd\shop\classes\ShopClass::getAllByCondition(['ptStyle'=>1, 'status'=>1], 'id ASC', 'id, mainId');
+            // 2. 把每个门店下的所有用户进行遍历,刷新他们的累计消费和成长值、积分
+            if (!empty($allShops)) {
+                foreach ($allShops as $shop) {
+                    $shopId = $shop['id'];
+                    $mainId = $shop['mainId'];
+                    $customs = CustomClass::getAllByCondition(['shopId' => $shopId], null, 'id, userId, buyAmount, growth, member, memberName', null, true);
+                    $levelDatas = MemberLevelClass::getAllByCondition(['mainId' => $mainId], 'amount DESC', 'id, name, level, amount');
+                    if (!empty($customs) && !empty($levelDatas)) {
+                        foreach ($customs as $c) {
+                            $buyAmount = 0;
+                            // 获取所有零售订单,计算消费金额
+                            $orderList = \bizHd\order\classes\OrderClass::getAllByCondition(['customId' => $c->id], null, 'id, forward, actPrice');
+                            if (!empty($orderList)) {
+                                foreach ($orderList as $order) {
+                                    if ($order['forward'] == 0) { //0 常规订单
+                                        $buyAmount = bcadd($buyAmount, $order['actPrice'], 2);
+                                    } elseif ($order['forward'] == 1) { //1 售后付款单(红冲)
+                                        $buyAmount = bcsub($buyAmount, $order['actPrice'], 2);
+                                    } else {
+                                        Yii::info('订单类型不存在,订单ID:'.$order['id']);
+                                        continue;
+                                    }
+                                }
+                            }
+                            $c->buyAmount = $buyAmount;
+                            $c->growth = $buyAmount;
+                            $c->integral = $buyAmount;
+
+                            // 根据 growth 设置等级
+                            $memberData = CustomClass::getCustomExpenseLevel($c->growth, $mainId, $levelDatas); // 设置等级多处需要同步修改的,请搜索:getCustomExpenseLevel
+                            $c->member = $memberData['level'];
+                            $c->memberName = $memberData['name'];
+                            $c->listend = false; //关闭对 xhCustom 的 buyAmount 变动监听
+                            $c->save();
+
+                            // 更新客户所对应花店的消费金额
+                            HdClass::updateByCondition(['shopId'=>$shopId, 'userId'=>$c->userId], ['expendAmount'=>$buyAmount]);
+                        }
+                    }
+                }
+            }
+
+            Yii::info('客户的累计消费和成长值、积分刷新脚本成功执行');
+        }catch(\Exception $e){
+            Yii::error('客户的累计消费和成长值、积分刷新脚本执行失败,原因:'.$e->getMessage());
+        }
+    }
+
     //批量创建客户
     private function createCustomer()
     {