self::earningsData(), 'distribution_data' => self::distributionData() ]; } /** * @notes 佣金概览 * @return array * @author Tab * @date 2021/7/28 10:12 */ public static function earningsData() { $cumulativeRebatedCommission = DistributionOrderGoods::where(['status' => DistributionOrderGoodsEnum::RETURNED])->sum('earnings'); $todayRebatedCommission = DistributionOrderGoods::where(['status' => DistributionOrderGoodsEnum::RETURNED])->whereDay('settlement_time')->sum('earnings'); $cumulativeUnrefundedCommission = DistributionOrderGoods::where(['status' => DistributionOrderGoodsEnum::UN_RETURNED])->sum('earnings'); $todayUnrefundedCommission = DistributionOrderGoods::where(['status' => DistributionOrderGoodsEnum::UN_RETURNED])->whereDay('create_time')->sum('earnings'); return [ 'cumulative_rebated_commission' => $cumulativeRebatedCommission, 'today_rebated_commission' => $todayRebatedCommission, 'cumulative_unrefunded_commission' => $cumulativeUnrefundedCommission, 'today_unrefunded_commission' => $todayUnrefundedCommission, ]; } /** * @notes 分销概览 * @return array * @author Tab * @date 2021/7/28 10:18 */ public static function distributionData() { $members = Distribution::count(); $distributionMembers = Distribution::where(['is_distribution' => YesNoEnum::YES])->count(); $distributionMemberPercentage = $members ? (round(($distributionMembers / $members), 2) * 100) : 0; return [ 'distribution_members' => $distributionMembers, 'distribution_member_percentage' => $distributionMemberPercentage, ]; } /** * @notes 分销商收入排行榜 * @return mixed * @author Tab * @date 2021/7/28 10:28 */ public static function topMemberEarnings($params) { $lists = DistributionOrderGoods::alias('dog') ->leftJoin('distribution d', 'd.user_id = dog.user_id') ->leftJoin('user u', 'u.id = dog.user_id') ->field('sum(dog.earnings) as sum_earnings, dog.user_id, u.avatar, u.nickname') ->where('dog.status', DistributionOrderGoodsEnum::RETURNED) ->group('dog.user_id') ->order('sum_earnings', 'desc') ->limit(50) ->page($params['page_no'], $params['page_size']) ->select() ->toArray(); $count = DistributionOrderGoods::alias('dog') ->leftJoin('distribution d', 'd.user_id = dog.user_id') ->leftJoin('user u', 'u.id = dog.user_id') ->field('sum(dog.earnings) as sum_earnings, dog.user_id, u.avatar, u.nickname') ->where('dog.status', DistributionOrderGoodsEnum::RETURNED) ->group('dog.user_id') ->order('sum_earnings', 'desc') ->limit(50) ->count(); foreach($lists as &$item) { $item['avatar'] = FileService::getFileUrl($item['avatar']); } return [ 'lists' => $lists, 'count' => $count, 'page_no' => $params['page_no'], 'page_size' => $params['page_size'], ]; } /** * @notes 分销商下级人数排行榜 * @return array * @author Tab * @date 2021/9/14 15:10 */ public static function topMemberFans($params) { $field = [ 'u.id', 'u.sn', 'u.nickname', 'u.avatar', 'u.id' => 'fans' ]; $lists = User::alias('u') ->Join('distribution d', 'u.id = d.user_id') ->field($field) ->where('d.is_distribution', YesNoEnum::YES) ->order('fans', 'desc') ->select() ->toArray(); // 获取排序列 $sortColumn = array_column($lists, 'fans'); // 根据下级人数排序 array_multisort($sortColumn, SORT_DESC, SORT_NUMERIC, $lists); // 截取前50个 $index = ($params['page_no'] - 1) * $params['page_size']; $newLists = array_slice($lists, $index, $params['page_size']); $count = count(array_slice($lists, 0, 50)); return [ 'lists' => $newLists, 'count' => $count, 'page_no' => $params['page_no'], 'page_size' => $params['page_size'], ]; } }