From abc7edc3c8ad59ff213c85413d0d6a10d7a0b6f7 Mon Sep 17 00:00:00 2001
From: quanwei <419654421@qq.com>
Date: Wed, 17 Dec 2025 18:03:09 +0800
Subject: [PATCH] 1.	发布供需消耗连盟币,连盟币数量在后台独立设置 2.	小程序供需个人中心可自由切换身份 3.	增加私信系统 4.	增加评论系统,用户可在发布者详情页进行评论操作,评论获得的连盟币可在后台设置 5.	增加发布者的等级,以好评个数为条件进行升级,小程序端会显示该等级的图标,如没有等级则不会显示图标 6.	增加设置消耗连盟币可以解锁、查看发布的信息,费用可在后台设置 7.	小程序供需大厅界面优化,以及增加了推荐栏目,该栏目按发布的分类相似进行匹配,比如A用户发布了 互联网 分类的需求,则会优先推荐匹配互联网分类的供应需求给他。

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

diff --git a/admin/app/common/model/user/User.php b/admin/app/common/model/user/User.php
index 1cae6e5..9d1b860 100644
--- a/admin/app/common/model/user/User.php
+++ b/admin/app/common/model/user/User.php
@@ -11,8 +11,10 @@
 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 app\common\model\settings\Setting as SettingModel;
 use think\facade\Db; // by lyzflash
 use app\common\model\plus\bonus\User as BonusUserModel;
+use app\common\model\user\ConsumptionLog as ConsumptionLogModel;
 /**
  * 用户模型
  */
@@ -20,6 +22,15 @@
 {
     protected $pk = 'user_id';
     protected $name = 'user';
+
+    public static function getOperatingSubsidy($referee_id, $setting)
+    {
+        $count=self::where('referee_id',$referee_id)->where('grade_id','in',$setting['referee_grade_ids'])->count();
+        if ($count>=$setting['referee_grade_count']){
+            return true;
+        }
+        return false;
+    }
 
     /**
      * 修改器
@@ -155,6 +166,20 @@
         }
         return true;
     }
+    /**
+     * 累积用户的可用消费券数量 (批量)
+     */
+    public function onBatchIncConsumption($data)
+    {
+        foreach ($data as $userId => $expendPoints) {
+            $this->where(['user_id' => $userId])
+                ->inc('consumer_coupon', $expendPoints)
+                ->inc('total_expend_money', $expendPoints)
+                ->update();
+            event('UserGrade', $this['user_id']);
+        }
+        return true;
+    }
 
     /**
      * 累积用户的可用积分
@@ -174,6 +199,31 @@
         // 用户总积分
         if ($points > 0) {
             $data['total_points'] = $this['total_points'] + $points;
+        }
+        $this->where('user_id', '=', $this['user_id'])->update($data);
+        if($upgrade) {
+            event('UserGrade', $this['user_id']);
+        }
+        return true;
+    }
+    /**
+     * 累积用户的可用消费券
+     */
+    public function setIncConsumption($consumption, $describe, $decConsumption = 0, $upgrade = true)
+    {
+        // 新增消费券变动明细
+        ConsumptionLogModel::add([
+            'user_id' => $this['user_id'],
+            'value' => $consumption,
+            'describe' => $describe,
+            'app_id' => $this['app_id'],
+        ]);
+
+        // 更新用户可用消费券
+        $data['consumer_coupon'] = ($this['consumer_coupon'] + $consumption + $decConsumption <= 0) ? 0 : $this['consumer_coupon'] + $consumption + $decConsumption;
+        // 用户总消费券
+        if ($consumption > 0) {
+            $data['total_expend_money'] = $this['total_expend_money'] + $consumption;
         }
         $this->where('user_id', '=', $this['user_id'])->update($data);
         if($upgrade) {
@@ -271,9 +321,18 @@
     {
         $user= self::detail($user_id);
         $purchase_count=$user['purchase_count']+1;
-        if ($purchase_count>11){
-            return false;
+        if ($purchase_count==1&&$user['referee_id']){
+            $referee= self::detail($user['referee_id']);
+            if ($referee){
+                $settingConsumption=SettingModel::getItem('consumption');
+                if ($settingConsumption['give_away']){
+                    $referee->setIncConsumption($settingConsumption['give_away'], '直推首单礼包');
+                }
+            }
         }
+        /*if ($purchase_count>11){
+            return false;
+        }*/
         self::where('user_id',$user_id)->update([
             'purchase_count'=>$purchase_count
         ]);
@@ -307,7 +366,7 @@
         $quantity=0;
         foreach ($product as $item){
             // 检查商品是否是指定的分红商品
-            if (in_array($item['product_id'], $config['become__buy_product_ids'])) {
+            if (in_array($item['product_id'], $config['become__buy_product_ids'])||$item['is_vip']==1) {
                 // 获取商品数量
                 $quantity+= $item['total_num'];
             }
@@ -337,6 +396,7 @@
      */
     public function getRefereeGradeCount($user_id,$referee_grade_ids)
     {
-        return $this->where('referee_id', '=', $user_id)->where('grade_id', 'in', $referee_grade_ids)->count();
+        return $this->where('referee_id', 'in', $user_id)->where('grade_id', 'in', $referee_grade_ids)->count();
     }
+
 }
\ No newline at end of file

--
Gitblit v1.9.2