From 30563323a53b0d0260c97d08a9e8bd4cc8227a95 Mon Sep 17 00:00:00 2001
From: quanwei <419654421@qq.com>
Date: Sat, 13 Dec 2025 18:03:52 +0800
Subject: [PATCH] 完成级差奖 完成平级奖

---
 admin/app/shop/model/user/User.php |   43 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 43 insertions(+), 0 deletions(-)

diff --git a/admin/app/shop/model/user/User.php b/admin/app/shop/model/user/User.php
index 14a3878..948f542 100644
--- a/admin/app/shop/model/user/User.php
+++ b/admin/app/shop/model/user/User.php
@@ -9,6 +9,7 @@
 use app\common\enum\user\grade\ChangeTypeEnum;
 use app\common\enum\user\balanceLog\BalanceLogSceneEnum as SceneEnum;
 use app\shop\model\user\PointsLog as PointsLogModel;
+use app\shop\model\user\ConsumptionLog as ConsumptionLogModel;
 use app\shop\model\plus\agent\User as AgentUserModel;
 /**
  * 用户模型
@@ -203,6 +204,8 @@
             return $this->rechargeToBalance($storeUserName, $data['balance']);
         } elseif ($source == 1) {
             return $this->rechargeToPoints($storeUserName, $data['points']);
+        } elseif ($source == 2) {
+            return $this->rechargeToconCumption($storeUserName, $data['consumption']);
         }
         return false;
     }
@@ -282,6 +285,46 @@
         event('UserGrade', $this['user_id']);
         return true;
     }
+    /**
+     *  用户充值:消费券
+    */
+    private function rechargeToconCumption($storeUserName, $data)
+    {
+        if (!isset($data['value']) || $data['value'] === '' || $data['value'] < 0) {
+            $this->error = '请输入正确的消费券数量';
+            return false;
+        }
+        $consumer_coupon = 0;
+        // 判断充值方式,计算最终消费券
+        if ($data['mode'] === 'inc') {
+            $diffMoney = $this['consumer_coupon'] + $data['value'];
+            $consumer_coupon = $data['value'];
+        } elseif ($data['mode'] === 'dec') {
+            $diffMoney = $this['consumer_coupon'] - $data['value'] <= 0 ? 0 : $this['consumer_coupon'] - $data['value'];
+            $consumer_coupon = -$data['value'];
+        } else {
+            $diffMoney = $data['value'];
+            $consumer_coupon= $data['value'] - $this['consumer_coupon'];
+        }
+        // 更新记录
+        $this->transaction(function () use ($storeUserName, $data, $diffMoney, $consumer_coupon) {
+            $total_expend_money = $this['total_expend_money'] + $consumer_coupon <= 0? 0 : $this['total_expend_money'] + $consumer_coupon;
+            // 更新账户消费券
+            $this->where('user_id', '=', $this['user_id'])->update([
+                'consumer_coupon' => $diffMoney,
+                'total_expend_money' => $total_expend_money
+            ]);
+            // 新增消费券变动记录
+            ConsumptionLogModel::add([
+                'user_id' => $this['user_id'],
+                'value' => $consumer_coupon,
+                'describe' => "后台管理员 [{$storeUserName}] 操作",
+                'remark' => $data['remark'],
+            ]);
+        });
+        event('UserGrade', $this['user_id']);
+        return true;
+    }
 
 
     /**

--
Gitblit v1.9.2