quanwei
7 days ago 30563323a53b0d0260c97d08a9e8bd4cc8227a95
admin/app/common/model/plus/vip/User.php
@@ -183,4 +183,102 @@
        }
        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;
    }
}