195 lines
6.6 KiB
PHP
195 lines
6.6 KiB
PHP
<?php
|
|
/**
|
|
* Author:
|
|
* Date: 2018/11/9
|
|
* Time: 9:49 AM
|
|
*/
|
|
|
|
namespace Yunshop\TeamDividend\Api;
|
|
|
|
|
|
use app\common\components\ApiController;
|
|
use app\common\models\Order;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Yunshop\TeamDividend\models\MemberChild;
|
|
use Yunshop\TeamDividend\models\TeamDividendAgencyModel;
|
|
use Yunshop\TeamDividend\models\TeamDividendLevelModel;
|
|
use Yunshop\TeamDividend\services\SettingService;
|
|
|
|
class TeamController extends ApiController
|
|
{
|
|
/**
|
|
* @name 获取栏目
|
|
* @return \Illuminate\Http\JsonResponse
|
|
* @author
|
|
*/
|
|
public function getColumns()
|
|
{
|
|
$set_lang = \setting::get('shop.lang');
|
|
$level_name = $set_lang['zh_cn']['team_dividend']['client'];
|
|
|
|
$child_uids = DB::table('yz_member_children')
|
|
->join('yz_team_dividend_agency', 'yz_member_children.child_id', 'yz_team_dividend_agency.uid')
|
|
->where(['yz_member_children.member_id' => \YunShop::app()->getMemberId(), 'yz_member_children.uniacid' => \YunShop::app()->uniacid])
|
|
->whereNull('yz_team_dividend_agency.deleted_at')
|
|
->pluck('child_id');
|
|
|
|
$child_all = MemberChild::uniacid()
|
|
->where('member_id', \YunShop::app()->getMemberId())
|
|
->count();
|
|
|
|
$customer_count = $child_all - $child_uids->count();
|
|
|
|
|
|
$columns[] = [
|
|
'id' => '0',
|
|
'level_name' => $level_name ?: '顾客',
|
|
'count' => $customer_count
|
|
];
|
|
$levels = TeamDividendLevelModel::select(['id', 'level_name'])
|
|
->uniacid()
|
|
->orderBy('level_weight', 'desc')
|
|
->get();
|
|
if (!$levels->isEmpty()) {
|
|
foreach ($levels as $level) {
|
|
$level->count = TeamDividendAgencyModel::select(['id', 'level'])
|
|
->whereIn('uid', $child_uids->toArray())
|
|
->where('level', $level->id)
|
|
->uniacid()
|
|
->count();
|
|
$columns[] = $level->toArray();
|
|
}
|
|
}
|
|
|
|
return $this->successJson('成功', [
|
|
'columns' => $columns
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* @name 获取下级总人数
|
|
* @return \Illuminate\Http\JsonResponse
|
|
* @author
|
|
*/
|
|
public function getTeamChildCount()
|
|
{
|
|
// plugin.team-dividend.api.team.getTeamChildCount
|
|
// $child_count = MemberChild::select(['child_id', 'member_id'])
|
|
// ->whereHas('hasOneTeam')
|
|
// ->where('member_id', \YunShop::app()->getMemberId())
|
|
// ->uniacid()
|
|
// ->count();
|
|
|
|
$child_count = DB::table('yz_member_children')
|
|
->join('yz_team_dividend_agency', 'yz_member_children.child_id', 'yz_team_dividend_agency.uid')
|
|
->where(['yz_member_children.member_id' => \YunShop::app()->getMemberId(), 'yz_member_children.uniacid' => \YunShop::app()->uniacid])
|
|
->count('yz_member_children.child_id');
|
|
|
|
return $this->successJson('成功', [
|
|
'child_count' => $child_count
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* @name 获取下线列表通过level_id
|
|
* @return \Illuminate\Http\JsonResponse
|
|
* @author
|
|
*/
|
|
public function getList()
|
|
{
|
|
$page_size = 20;
|
|
$level_id = intval(request()->id);
|
|
$member_info = request()->member_info;
|
|
|
|
if ($level_id == 0) {
|
|
$child_uids = DB::table('yz_member_children')
|
|
->join('yz_team_dividend_agency', 'yz_member_children.child_id', 'yz_team_dividend_agency.uid')
|
|
->where(['yz_member_children.member_id' => \YunShop::app()->getMemberId(), 'yz_member_children.uniacid' => \YunShop::app()->uniacid])
|
|
->whereNull('yz_team_dividend_agency.deleted_at')
|
|
->pluck('child_id');
|
|
|
|
$list = MemberChild::whereNotIn('child_id', $child_uids->toArray());
|
|
} else {
|
|
$child_uids_level = DB::table('yz_member_children')
|
|
->join('yz_team_dividend_agency', function ($q) use ($level_id) {
|
|
$q->on('yz_member_children.child_id', 'yz_team_dividend_agency.uid')
|
|
->where('yz_team_dividend_agency.level', $level_id)
|
|
->where('yz_team_dividend_agency.deleted_at', null);
|
|
})
|
|
->where(['yz_member_children.member_id' => \YunShop::app()->getMemberId(), 'yz_member_children.uniacid' => \YunShop::app()->uniacid])
|
|
->whereNull('yz_team_dividend_agency.deleted_at')
|
|
->pluck('child_id');
|
|
|
|
$list = MemberChild::whereIn('child_id', $child_uids_level->toArray());
|
|
}
|
|
|
|
if (!empty($member_info)) {
|
|
$list = $list->whereHas('hasOneMember', function ($query) use ($member_info) {
|
|
$query->where('nickname', 'like', "%{$member_info}%")
|
|
->orWhere('mobile','like',"%{$member_info}%");
|
|
});
|
|
}
|
|
|
|
$list = $list->with([
|
|
'hasOneMember' => function ($q) {
|
|
$q->select(['uid', 'avatar', 'nickname']);
|
|
}
|
|
])
|
|
->where('member_id', \YunShop::app()->getMemberId())
|
|
->uniacid()
|
|
->orderBy('child_id', 'desc')
|
|
->paginate($page_size);
|
|
|
|
return $this->successJson('成功', [
|
|
'list' => $list
|
|
]);
|
|
}
|
|
|
|
/**
|
|
* @name 获取下线信息
|
|
* @return \Illuminate\Http\JsonResponse
|
|
* @author
|
|
*/
|
|
public function getInfo()
|
|
{
|
|
$uid = intval(request()->uid);
|
|
if (!$uid) {
|
|
return $this->errorJson('UID参数错误');
|
|
}
|
|
|
|
// 粉丝数量
|
|
$child_count = MemberChild::select(['child_id', 'member_id'])
|
|
->whereHas('hasOneTeam')
|
|
->where('member_id', $uid)
|
|
->uniacid()
|
|
->count();
|
|
|
|
// 自购订单金额
|
|
$self_buy_price = Order::select(['uid', 'status', 'price'])
|
|
->where('uid', $uid)
|
|
->where('status','>=',SettingService::getIncludingOrderStatus())
|
|
->uniacid()
|
|
->sum('price');
|
|
|
|
// 推广角色
|
|
$role = '普通会员';
|
|
$team_agent = TeamDividendAgencyModel::select(['uid', 'level'])
|
|
->with([
|
|
'hasOneLevel' => function ($level) {
|
|
$level->select(['id', 'level_name'])->uniacid();
|
|
}
|
|
])
|
|
->where('uid', $uid)
|
|
->uniacid()
|
|
->first();
|
|
if ($team_agent && $team_agent->hasOneLevel) {
|
|
$role = $team_agent->hasOneLevel->level_name;
|
|
}
|
|
|
|
return $this->successJson('成功', [
|
|
'child_count' => $child_count,
|
|
'self_buy_price' => $self_buy_price,
|
|
'role' => $role
|
|
]);
|
|
}
|
|
} |