From 3ea53e61cc23fdb3ddf8b38a199ca60a6da8c407 Mon Sep 17 00:00:00 2001
From: quanwei <419654421@qq.com>
Date: Fri, 28 Nov 2025 18:32:41 +0800
Subject: [PATCH] 添加商品

---
 admin/app/common/model/user/User.php |   82 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 81 insertions(+), 1 deletions(-)

diff --git a/admin/app/common/model/user/User.php b/admin/app/common/model/user/User.php
index e83649d..1cae6e5 100644
--- a/admin/app/common/model/user/User.php
+++ b/admin/app/common/model/user/User.php
@@ -3,12 +3,16 @@
 
 namespace app\common\model\user;
 
+use app\common\library\helper;
 use app\common\model\BaseModel;
+use app\common\model\plus\bonus\Setting as bonusSettingModel;
+use app\common\model\user\Grade as GradeModel;
 use app\common\model\user\PointsLog as PointsLogModel;
 use app\common\model\supplier\User as SupplierUserModel;
 use app\common\model\store\Clerk as StoreClerkModel;
+use app\common\model\user\User as UserModel;
 use think\facade\Db; // by lyzflash
-
+use app\common\model\plus\bonus\User as BonusUserModel;
 /**
  * 用户模型
  */
@@ -259,4 +263,80 @@
         }
         return $model->where('user_id', 'in', $ids)->select();
     }
+
+    /**
+     * 购买商品成功:累积购买商品次数
+     */
+    public static function setRepurchaseFrequency($user_id)
+    {
+        $user= self::detail($user_id);
+        $purchase_count=$user['purchase_count']+1;
+        if ($purchase_count>11){
+            return false;
+        }
+        self::where('user_id',$user_id)->update([
+            'purchase_count'=>$purchase_count
+        ]);
+        // 用户等级
+        event('UserGrade', $user_id);
+        $bonusUser=BonusUserModel::detail($user_id);
+        if ($bonusUser){
+            return BonusUserModel::detail($user_id)->save([
+                'purchase_count'=>$purchase_count
+            ]);
+        }
+        return true;
+    }
+    /**
+     * 取消订单:减少累积购买商品次数
+     */
+    public static function decreasePurchaseCount($user_id,$product,$app_id)
+    {
+        // 验证是否设置
+        $config = bonusSettingModel::getItem('basic', $app_id);
+        if (empty($config['become__buy_product_ids'])) {
+            return false;
+        }
+        // 整理商品id集
+        $productIds = helper::getArrayColumn($product, 'product_id');
+        // 判断商品是否在设置范围内
+        $intersect = array_intersect($productIds, $config['become__buy_product_ids']);
+        if (empty($intersect)) {
+            return false;
+        }
+        $quantity=0;
+        foreach ($product as $item){
+            // 检查商品是否是指定的分红商品
+            if (in_array($item['product_id'], $config['become__buy_product_ids'])) {
+                // 获取商品数量
+                $quantity+= $item['total_num'];
+            }
+        }
+        $user= self::detail($user_id);
+        $purchase_count=$user['purchase_count']-$quantity;
+        if ($purchase_count<0){
+            $purchase_count=0;
+        }
+        $grade=(new GradeModel())->where('purchase_count','<=',$purchase_count)->order('purchase_count','desc')->find();
+        self::where('user_id',$user_id)->update([
+            'purchase_count'=>$purchase_count,
+            'grade_id'=>$grade['grade_id']
+        ]);
+        // 用户等级
+        event('UserGrade', $user_id);
+        $bonusUser=BonusUserModel::detail($user_id);
+        if ($bonusUser){
+            return BonusUserModel::detail($user_id)->save([
+                'purchase_count'=>$purchase_count
+            ]);
+        }
+        return true;
+    }
+    /**
+     * 获取指定等级推荐人数量
+     */
+    public function getRefereeGradeCount($user_id,$referee_grade_ids)
+    {
+        return $this->where('referee_id', '=', $user_id)->where('grade_id', 'in', $referee_grade_ids)->count();
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.2