6
0
Fork 0
jiqu-library-server/app/Endpoint/Api/Http/Controllers/Merchant/AgentController.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);
}
}