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/common/model/plus/vip/User.php | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 117 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..6167cda 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,120 @@
'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