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/plus/vip/User.php |  119 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 119 insertions(+), 0 deletions(-)

diff --git a/admin/app/common/model/plus/vip/User.php b/admin/app/common/model/plus/vip/User.php
index e019cdd..84abd66 100644
--- a/admin/app/common/model/plus/vip/User.php
+++ b/admin/app/common/model/plus/vip/User.php
@@ -3,6 +3,7 @@
 namespace app\common\model\plus\vip;
 
 use app\common\model\BaseModel;
+use app\common\model\order\OrderProduct;
 use app\common\model\plus\vip\GradeLog as GradeLogModel;
 use app\common\enum\user\grade\ChangeTypeEnum;
 
@@ -164,4 +165,122 @@
             'freeze_money' => $model['freeze_money'] + $money,
         ]);
     }
+
+    /**
+     * 获取用户是否符合复购专区佣金条件
+     */
+    public function getViewpointMoneyQualification($user_id,$setting)
+    {
+        $userNum=$this->where('referee_id','=',$user_id)->count();
+        $consumption=(new OrderProduct())
+            ->alias('order_product')
+            ->where('order_product.user_id','=',$user_id)
+            ->join('order','order_product.order_id=order.order_id')
+            ->where('order.order_status','=',30)
+            ->where('order_product.create_time','>=',strtotime(date('Y-m-01 00:00:00')))
+            ->where('order_product.create_time','<',strtotime('+1 month',strtotime(date('Y-m-01 00:00:00'))))
+            ->where('order_product.is_repurchase','=',1)->sum('order_product.total_pay_price');
+        if($userNum>=$setting['viewpoint_buy_count']&&$consumption>=$setting['repurchase_consumption']){
+            return true;
+        }
+        return false;
+    }
+    /**
+
+     * 获取用户所有级差上级
+
+     */
+
+    public static function getAllJcUser($user_id, $jcUser = [], $percent_total = 0, $is_add = true)
+
+    {
+
+        $user = User::detail($user_id);
+        $is_add && $percent_total += $user['grade']['differential_prize'] - $percent_total;
+        if($user['referee_id']) {
+            $is_add = false;
+            $parent = User::detail($user['referee_id']);
+            if (!$parent){
+                return $jcUser;
+            }
+            if ($parent['grade']['weight'] > $user['grade']['weight'] && $parent['grade']['differential_prize'] > $percent_total) {
+                $jcUser[] = [
+                    'user_id' => $parent['user_id'],
+                    'bonus_percent' => $parent['grade']['differential_prize'] - $percent_total //分红比例
+                ];
+                $is_add = true;
+
+            }
+            if($parent['user_id']) {
+                return self::getAllJcUser($parent['user_id'], $jcUser, $percent_total, $is_add);
+            }
+
+        }
+        return $jcUser;
+
+    }
+
+    /**
+
+     * 获取用户所有平级
+
+     * 每个级别都发放$pjaward_level层平级奖
+
+     */
+
+    public static function getAllPjUser($user_id, $pjaward_level, $pjUser = [])
+
+    {
+
+        $user = User::detail($user_id);
+        $pj_user[$user['grade_id']][] = [];
+        $pj_user = self::getPjUser($user_id, $pj_user);
+        if ($pj_user) {
+            foreach ($pj_user as $u) {
+                foreach ($u as $k => $item) {
+                    if ($k > 0 && $k <= $pjaward_level) {
+                        $pjUser[] = $item;
+                    }
+                }
+            }
+
+        }
+        return $pjUser;
+
+    }
+    /**
+
+     * 获取所有平级
+
+     */
+
+    private static function getPjUser($user_id, $pj_user = [])
+
+    {
+
+        $user = User::detail($user_id);
+        if($user['referee_id']) {
+            $parent = User::detail($user['referee_id']);
+            if (!$parent){
+                return $pj_user;
+            }
+            // 记录平级用户
+            if($parent && $parent['grade']['weight'] >= $user['grade']['weight']) {
+                if ( $parent['grade']['equal_level_award']){
+                    $pj_user[$parent['grade_id']][] = [
+                        'user_id' => $parent['user_id'],
+                        'bonus_percent' => $parent['grade']['equal_level_award'], // 平级分红比例
+                    ];
+                }
+            }
+            if($parent['referee_id']) {
+                return self::getPjUser($parent['user_id'], $pj_user);
+
+            }
+
+        }
+
+        return $pj_user;
+
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.2