递归统计推荐人

<?php
function getall($tabile,$where,$flid='*'){
    $data = $GLOBALS['db']->getall('select '.$flid.' from '.$GLOBALS['ecs']->table($tabile) . ' where '.$where);
    return $data;
}
function getrow($tabile,$where,$flid='*'){

    $data = $GLOBALS['db']->getRow('select '.$flid.' from '.$GLOBALS['ecs']->table($tabile) . '  where  '.$where);
    return $data;
}
function getone($tabile,$where,$flid='*'){
    $data = $GLOBALS['db']->getone('select '.$flid.' from '.$GLOBALS['ecs']->table($tabile) . '  where  '.$where);
    return $data;
}

/** 所有推荐人
 * @param $user_id
 */
function GetUserParentAll($user_id){
    return getAll('users',' parent_id = '.$user_id,'*');

}

/**获得推荐人
 * @param $user_id
 * @return bool
 */
function Getparent($user_id){
    return getone('users','user_id = '.$user_id,'parent_id');

}

/**递归统计该用户下推荐人数量
 * @param string $user_id
 * @param int $times
 * @param int $dividend_sum
 * @param int $sum
 * @return int
 */

function GetRecommendCount ( $user_id = '' , $times = 0 , $dividend_sum = 0 , $sum = 0 ){ if ( empty ( $user_id )){ return $dividend_sum ; } $parent_data = GetUserParentAll( $user_id ) ; //所有推荐人 foreach ( $parent_data as $v ) { $goods_amount = getOne( 'users' , 'user_id=' . $v [ 'user_id' ] , 'count(*)' ) ; $dividend_sum += $goods_amount ; $dividend_sum = GetRecommendCount( $v [ 'user_id' ] , 0 , $dividend_sum ) ; } return $dividend_sum ; }

    /**往上递推所有推荐人id
     * @param string $user_id
     * @param int $times
     * @param array $dividend_sum
     * @param int $sum
     * @return array
     */
    function Getparent_id($user_id='',$times=0,$dividend_sum=[],$sum=0){
        if(empty($user_id)){
            return $dividend_sum;
        }
        $goods_amount = Getparent($user_id); //上推所有推荐人
        array_push($dividend_sum,$user_id);
        if($goods_amount==0){
            return $dividend_sum;
        }
        array_push($dividend_sum,$goods_amount);
        $dividend_sum = Getparent_id($goods_amount, 0, $dividend_sum);
        return array_flip(array_flip($dividend_sum));
    }

/** 下推所有推荐人的user_id
 * @param $user_id
 */

function GetBelowParentAll($user_id){
    return getAll('users',' parent_id = '.$user_id,'user_id');

}

/**往下推所有推荐人id
 * @param string $user_id
 * @param int $times
 * @param array $dividend_sum
 * @param int $sum
 * @return array
 */
function GetUserparent_id($user_id='',$times=0,$dividend_sum=[],$sum=0){
    if(empty($user_id)){
        return $dividend_sum;
    }
    $goods_amount = GetBelowParentAll($user_id); //上推所有推荐人
    foreach ($goods_amount  as $v) {
        array_push($dividend_sum, $v['user_id']);
        $dividend_sum = GetUserparent_id($v['user_id'], 0, $dividend_sum);
    }
    return $dividend_sum;
}
/**往上递推所有推荐人id(不包括自己)
 * @param string $user_id
 * @param int $times
 * @param array $dividend_sum
 * @param int $sum
 * @return array
 */
function GetNoparent_id($user_id='',$times=0,$dividend_sum=[],$sum=0){
    if(empty($user_id)){
        return $dividend_sum;
    }
    $goods_amount = Getparent($user_id); //上推所有推荐人
    if($goods_amount==0){
        return $dividend_sum;
    }
    array_push($dividend_sum,$goods_amount);
    $dividend_sum = Getparent_id($goods_amount, 0, $dividend_sum);
    return array_flip(array_flip($dividend_sum));
}
/**获得推荐所有关系值(user_id) * @param $user_id * @return array|bool */ function GetAllparent ( $user_id ){ if ( empty ( $user_id )){ return false ; } $allparent = [] ; $allparent_name = [] ; $below = GetUserparent_id( $user_id ) ; // 下推获得所有id array_push( $allparent , $below ) ; $up = GetNoparent_id ( $user_id ) ; // 上推获得所有id array_push( $allparent , $up ) ; foreach ( $allparent as $value ){ foreach ( $value as $v ){ array_push( $allparent_name , $v ) ; } } return $allparent_name ; }?>
<

猜你喜欢

转载自blog.csdn.net/qq_39240830/article/details/77678683