159 lines
5.9 KiB
PHP
159 lines
5.9 KiB
PHP
<?php
|
|
|
|
namespace App\Endpoint\Api\Http\Controllers\Merchant;
|
|
|
|
use App\Endpoint\Api\Http\Controllers\Controller;
|
|
use App\Models\UserInfo;
|
|
use Illuminate\Http\Request;
|
|
|
|
class AgentController extends Controller
|
|
{
|
|
/**
|
|
* 代理晋升条件
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @return \Illuminate\Http\JsonResponse
|
|
*/
|
|
public function upgradeConditions(Request $request)
|
|
{
|
|
$userInfo = $request->user()->userInfo;
|
|
|
|
// 升级规则
|
|
$rules = config('agent.upgrade_rules');
|
|
|
|
switch ($userInfo->agent_level) {
|
|
case UserInfo::AGENT_LEVEL_VIP:
|
|
$data = [
|
|
// 是否显示
|
|
'display' => true,
|
|
// 业绩
|
|
'team_sales_value' => [
|
|
'label' => '业绩',
|
|
'current_team_sales_value' => $userInfo->team_sales_value,
|
|
'upgrade_team_sales_value' => '-1',
|
|
],
|
|
// 代理
|
|
'agents_count' => [
|
|
'label' => '会员',
|
|
'current_agents_count' => $userInfo->getVipAgentsCount(),
|
|
'upgrade_agents_count' => $rules['community']['vips_agents_count'],
|
|
],
|
|
];
|
|
break;
|
|
|
|
case UserInfo::AGENT_LEVEL_COMMUNITY:
|
|
$data = [
|
|
'display' => true,
|
|
'team_sales_value' => [
|
|
'label' => '业绩',
|
|
'current_team_sales_value' => $userInfo->team_sales_value,
|
|
'upgrade_team_sales_value' => (string) $rules['district']['team_sales_value'],
|
|
],
|
|
'agents_count' => [
|
|
'label' => '会员',
|
|
'current_agents_count' => $userInfo->getVipAgentsCount(),
|
|
'upgrade_agents_count' => $rules['district']['vips_agents_count'],
|
|
],
|
|
];
|
|
break;
|
|
|
|
case UserInfo::AGENT_LEVEL_DISTRICT:
|
|
$data = [
|
|
'display' => true,
|
|
'team_sales_value' => [
|
|
'label' => '业绩',
|
|
'current_team_sales_value' => $userInfo->team_sales_value,
|
|
'upgrade_team_sales_value' => (string) $rules['city']['team_sales_value'],
|
|
],
|
|
'agents_count' => [
|
|
'label' => '铜牌会员',
|
|
'current_agents_count' => $userInfo->getDistrictAgentsCountOnDifferentLines(),
|
|
'upgrade_agents_count' => $rules['city']['district_agents_count'],
|
|
],
|
|
];
|
|
break;
|
|
|
|
case UserInfo::AGENT_LEVEL_CITY:
|
|
$data = [
|
|
'display' => true,
|
|
'team_sales_value' => [
|
|
'label' => '业绩',
|
|
'current_team_sales_value' => $userInfo->team_sales_value,
|
|
'upgrade_team_sales_value' => (string) $rules['province']['team_sales_value'],
|
|
],
|
|
'agents_count' => [
|
|
'label' => '银牌会员',
|
|
'current_agents_count' => $userInfo->getCityAgentsCountOnDifferentLines(),
|
|
'upgrade_agents_count' => $rules['province']['city_agents_count'],
|
|
],
|
|
];
|
|
break;
|
|
|
|
case UserInfo::AGENT_LEVEL_PROVINCE:
|
|
$data = [
|
|
'display' => true,
|
|
'team_sales_value' => [
|
|
'label' => '业绩',
|
|
'current_team_sales_value' => $userInfo->team_sales_value,
|
|
'upgrade_team_sales_value' => (string) $rules['branch']['team_sales_value'],
|
|
],
|
|
'agents_count' => [
|
|
'label' => '金牌会员',
|
|
'current_agents_count' => $userInfo->getProvinceAgentsCountOnDifferentLines(),
|
|
'upgrade_agents_count' => $rules['branch']['province_agents_count'],
|
|
],
|
|
];
|
|
break;
|
|
|
|
default:
|
|
$data = [
|
|
'display' => false,
|
|
'team_sales_value' => [
|
|
'label' => '',
|
|
'current_team_sales_value' => '0',
|
|
'upgrade_team_sales_value' => '-1',
|
|
],
|
|
'agents_count' => [
|
|
'label' => '',
|
|
'current_agents_count' => 0,
|
|
'upgrade_agents_count' => -1,
|
|
],
|
|
];
|
|
break;
|
|
}
|
|
|
|
return response()->json($data);
|
|
}
|
|
|
|
/**
|
|
* 代理统计
|
|
*
|
|
* @param \Illuminate\Http\Request $request
|
|
* @return \Illuminate\Http\JsonResponse
|
|
*/
|
|
public function statistics(Request $request)
|
|
{
|
|
$path = $request->user()->userInfo->full_path;
|
|
|
|
$statistics = UserInfo::selectRaw('count(1) as aggregate, agent_level')
|
|
->where('agent_level', '>=', 0)
|
|
->where('path', 'like', "{$path}%")
|
|
->groupBy('agent_level')
|
|
->pluck('aggregate', 'agent_level');
|
|
$data = [];
|
|
|
|
foreach ([
|
|
UserInfo::AGENT_LEVEL_VIP => 'vip',
|
|
UserInfo::AGENT_LEVEL_COMMUNITY => 'community',
|
|
UserInfo::AGENT_LEVEL_DISTRICT => 'district',
|
|
UserInfo::AGENT_LEVEL_CITY => 'city',
|
|
UserInfo::AGENT_LEVEL_PROVINCE => 'province',
|
|
UserInfo::AGENT_LEVEL_BRANCH => 'branch',
|
|
] as $k => $v) {
|
|
$data[$v] = $statistics[$k] ?? 0;
|
|
}
|
|
|
|
return response()->json($data);
|
|
}
|
|
}
|