添加:获取指定用户的团队概况

This commit is contained in:
wuhui_zzw 2024-04-21 16:53:04 +08:00
parent 94cbebc1b8
commit 405600a047
2 changed files with 112 additions and 0 deletions

View File

@ -3318,4 +3318,23 @@ class MemberController extends ApiController
return $this->successJson('小程序码', ['qr_code_url' => $qrCodeUrl]);
}
// 会员概况及关系
public function myRelationShip(){
// 参数获取
$uid = (int)request()->input('uid', 0);
if($uid <= 0) return $this->errorJson('无有效用户!');
$memberReferral = new MemberReferralService();
// 获取当前用户基本信息
$self_info = $memberReferral->getAgentData($uid);
$children = $memberReferral->getAgentData($self_info['member_children_ids']);
return $this->successJson('success', compact('self_info','children'));
}
}

View File

@ -375,4 +375,97 @@ class MemberReferralService
}
}
// 获取指定的团队信息
public function getAgentData($uid){
$orderStatus = Setting::get('shop.relation_base.member_order_status') == 1 ? [1, 2, 3] : [3];
$model = MemberModel::select(['mobile','createtime','avatar','nickname','uid','realname'])
->when(is_array($uid),function($query) use ($uid){
$query->whereIn('uid',$uid);
},function($query) use ($uid){
$query->where('uid',$uid);
})
->with([
'yzMember' => function($builder){
$builder->select(['member_id','is_agent','status','wechat','deleted_at','inviter','yz_openid']);
},
'orders' => function($order) use ($orderStatus){
$order->select(['id','uid','price','status','order_sn'])
->whereIn('status',$orderStatus)
->with(['hasManyOrderGoods'=>function($orderGoods){
$orderGoods->select(['id','goods_id','order_id','total','title','thumb','price']);
}]);
},
'memberChildren' => function($member) use ($orderStatus){
$member->select(['id','child_id','level','member_id'])
->where('level',1)
->with([
'orders' => function($order) use ($orderStatus){
$order->select(['id','uid','price','status'])
->whereIn('status',$orderStatus);
}
]);
}
])
->orderBy('uid','desc');
// 根据查询类型 进行对应的处理
if(is_array($uid)){
// 多个
$list = $model->get()->toArray();
foreach($list as &$itemInfo){
// 当前用户信息
$itemInfo['child_order_total'] = collect($itemInfo['orders'])->count();// 订单数
$itemInfo['team_total'] = collect($itemInfo['member_children'])->count();// 直推下级总数
$itemInfo['child_order_money'] = round(collect($itemInfo['orders'])->sum('price'),2);// 订单总额
// 客户订单总额
$itemInfo['team_order_money'] = round(collect($itemInfo['member_children'])->sum(function($memberChildren){
return collect($memberChildren['orders'])->sum('price');
}),2);
$itemInfo['createtime'] = date('Y-m-d H:i:s', $itemInfo['createtime']);
unset($itemInfo['member_children']);
unset($itemInfo['yz_member']);
}
return $list;
}
else{
// 单个
$info = $model->first();
$info = $info ? $info->toArray() : [];
// 当前用户信息
$info['child_order_total'] = collect($info['orders'])->count();// 订单数
$info['team_total'] = collect($info['member_children'])->count();// 直推下级总数
$info['child_order_money'] = round(collect($info['orders'])->sum('price'),2);// 订单总额
// 客户订单总额
$info['team_order_money'] = round(collect($info['member_children'])->sum(function($memberChildren){
return collect($memberChildren['orders'])->sum('price');
}),2);
$info['member_children_ids'] = $info['member_children'] ? array_column($info['member_children'], 'child_id') : [];// 直推下级ids
unset($info['member_children']);
unset($info['yz_member']);
// 订单处理
$info['orders'] = array_map(function($orderItem){
$orderItem['has_many_order_goods'] = array_map(function($orderGoods){
unset($orderGoods['buttons']);
unset($orderGoods['after_sales']);
unset($orderGoods['order']);
return $orderGoods;
}, $orderItem['has_many_order_goods']);
return $orderItem;
},$info['orders']);
return $info;
}
}
}