quanwei
2 days ago 04102f7237efefa744090ed7c25f7b5d0807b679
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,21 +108,25 @@
            //获取直推上级
            $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) {
                    //获取起始横向排位
                    $level_num_first = ($parent['level_num'] - 1) * 3 + 1;
                    $parent = self::checkUserChild($level_num_first, 3, $parent['tree_level'] + 1);
                }
            } else {*/
            } 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'];
            $data['order_num'] = $parent['child_num'] + 1; //三叉树内的位置
            $data['tree_level'] = $parent['tree_level'] + 1; //竖向层级
@@ -145,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);
    }
    /**
     * 添加第一个分红用户
     */
@@ -210,6 +226,48 @@
        }
        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;
    }
    /**
     * 查找横向位置内符合条件的用户
@@ -250,7 +308,10 @@
        $is_expire = User::isExpire($user_id);
        // 队长详情
        $model = static::detail($user_id);
        if (!$model || $model['is_delete']) {
        if (!$model) {
            return false;
        }
        if ($model['is_delete']){
            return false;
        }
        if ($money_type == 20){
@@ -393,6 +454,9 @@
    public static function isExpire($user_id)
    {
        $team = self::detail($user_id);
        if (!$team) {
            return false;
        }
        $setting = Setting::getItem('basic', $team['app_id']);
        return !!$team && $team['is_expire'] && $team['is_permanent'] == 0 && $setting['expire_day'] > 0;
    }