quanwei
2025-12-04 12913c1069347ea4b1f6ab87f480da0f8d8c646a
admin/app/common/model/plus/bonus/User.php
@@ -5,6 +5,7 @@
use app\common\model\BaseModel;
use app\common\model\plus\bonus\Order as OrderModel;
use app\common\model\plus\bonus\Referee as RefereeModel;
use app\common\model\user\Grade as GradeModel;
use app\common\model\user\User as UserModel;
//use app\common\model\plus\bonus\Order as OrderModel;
use app\common\model\plus\bonus\Performance as PerformanceModel;
@@ -107,9 +108,13 @@
            //获取直推上级
            $referee_id = agentRefereeModel::getRefereeUserId($user_id, 1);
            //获取直推上级推荐的人数
            $direct_child_num = $referee_id ? self::getDirectNum($referee_id) : 0;
            if ($referee_id && $direct_child_num < 2) {
                $parent = static::detail($referee_id);
            /*$direct_child_num = $referee_id ? self::getDirectNum($referee_id) : 0;*/
            $parent_id=0;
            if ($referee_id) {
                $parent_id=self::getParentId([$referee_id]);
            }
            if ($parent_id) {
                $parent = static::detail($parent_id);
                //如果自己名下已经被排满,继续往下找
                if ($parent['child_num'] == 3) {
                    //获取起始横向排位
@@ -119,7 +124,7 @@
            } else {
                //规则2:查找有空缺的三叉树
                $parent = (new static())->where('child_num', '<', 3)
                                        ->where('user_id', "<>", $referee_id)
                                        /*->where('user_id', "<>", $referee_id)*/
                                        ->order(['tree_level' => 'asc', 'level_num' => 'asc'])->find();
            }
            $data['parent_id'] = $parent['user_id'];
@@ -132,9 +137,11 @@
                'child_num' => $parent['child_num'] + 1
            ]);
        }
        $user=UserModel::detail($user_id);
        if ($model->save(array_merge([
            'user_id' => $user_id,
            'is_delete' => 0,
            'purchase_count' => $user['purchase_count'],
            'grade_id' => Grade::getDefaultGradeId(),
            'app_id' => $data['app_id']
        ], $data))) {
@@ -143,7 +150,18 @@
        }
        return true;
    }
    /**
     * 获取团队里公排下级未被排满的id
     */
    public static function getParentId($referee)
    {
        $user=(new static())->where('user_id', 'in', $referee)->where('child_num', '<', 3)->find();
        if ($user) {
            return $user['user_id'];
        }
        $subordinate=(new self())->where('parent_id', 'in', $referee)->column('user_id');
        return self::getParentId($subordinate);
    }
    /**
     * 添加第一个分红用户
     */
@@ -206,6 +224,48 @@
                RefereeModel::createRelation($child_user_id, $new_user_id);
            }
        }
        return true;
    }
    public  function addTheFirst4()
    {
        $model =  new self;
        $grade_id=GradeModel::getDefaultGradeId();
        if ($model->where('tree_level',4)->count()){
            return true;
        }
        //记录分红层级关系
        $i=4;
        $userList=$model->where('tree_level',3)->select();
        $k=0;
        foreach ($userList as $tree){
            $new_user_id=$tree['user_id'];
            for ($j=1; $j <= 3; $j++) {
                $k++;
                $user = UserModel::create([
                    'open_id' => $i . '_' .$k,
                    'reg_source' => 'sys',
                    'nickName' => '预留' . $i . '_' . $k,
                    'grade_id'=>$grade_id,
                    'app_id' => 10142
                ]);
                $child_user_id = $user->user_id;
                $model->create([
                    'user_id' => $child_user_id,
                    'is_delete' => 0,
                    'app_id' => 10142,
                    'parent_id' => $new_user_id,
                    'order_num' => $j,
                    'tree_level' => 4,
                    'level_num' => $k
                ]);
                $model->where('user_id',$new_user_id)->save([
                    'user_id' => $new_user_id,
                    'child_num' => $j
                ]);
                RefereeModel::createRelation($child_user_id, $new_user_id);
            }
        }
        return true;
    }
@@ -329,7 +389,6 @@
        // 复购n次:向上n级(最多不超过存在的层级)
        $targetUserId = $user_id;
        $levelsToGoUp = (new OrderModel)::getUserOrderCounti($user_id);
        // 逐级向上查找
        for ($i = 0; $i < $levelsToGoUp; $i++) {
            $currentUser = static::detail($targetUserId);
@@ -402,6 +461,9 @@
    public static function getExpireTime($user_id)
    {
        $user = self::detail($user_id);
        if (!$user) {
            return 0;
        }
        $setting = Setting::getItem('basic', $user['app_id']);
        if ($user['tree_level'] <= 3 || $user['is_permanent']) {
            $remain_time = '永久';