移除套餐/支付
This commit is contained in:
@@ -4,22 +4,16 @@ namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\Enums\UserType;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Jobs\PayVip;
|
||||
use App\Models\Domain;
|
||||
use App\Models\Link;
|
||||
use App\Models\LinkVisitLog;
|
||||
use App\Models\MiniProgram;
|
||||
use App\Models\Notice;
|
||||
use App\Models\User;
|
||||
use App\Models\VipLogs;
|
||||
use App\Models\VipPackage;
|
||||
use App\Services\SystemConfig;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Ugly\Base\Enums\PaymentStatus;
|
||||
use Ugly\Base\Models\Payment;
|
||||
use Ugly\Base\Traits\ApiResource;
|
||||
|
||||
class IndexController extends Controller
|
||||
@@ -32,15 +26,31 @@ class IndexController extends Controller
|
||||
$user = auth('api')->user();
|
||||
// 超级管理的首页统计
|
||||
if ($user->type === UserType::Admin) {
|
||||
$res['user_count'] = (string) User::query()->where('type', UserType::MEMBER)->count();
|
||||
$res['pay_count'] = User::query()->where('type', UserType::MEMBER)->whereNotNull('vip_id')->count();
|
||||
$res['pay_vip'] = bcdiv(Payment::query()
|
||||
->where('status', PaymentStatus::Success)
|
||||
->where('job', PayVip::class)
|
||||
->sum('amount'), 100, 2);
|
||||
|
||||
// 用户增长曲线 按月统计
|
||||
$type = $request->integer('type', 1); // 1 最近30天;2 最近12个月
|
||||
|
||||
$res['user_count'] = User::query()
|
||||
->where('type', UserType::MEMBER)
|
||||
->where('created_at', '>=',
|
||||
$type === 1 ?
|
||||
now()->subDays(30)->startOfDay()
|
||||
: now()->subYear()->startOfDay()
|
||||
)
|
||||
->count();
|
||||
$res['card_count'] = Link::query()
|
||||
->where('created_at', '>=',
|
||||
$type === 1 ?
|
||||
now()->subDays(30)->startOfDay()
|
||||
: now()->subYear()->startOfDay()
|
||||
)
|
||||
->count();
|
||||
$res['uv_count'] = LinkVisitLog::query()
|
||||
->where('created_at', '>=',
|
||||
$type === 1 ?
|
||||
now()->subDays(30)->startOfDay()
|
||||
: now()->subYear()->startOfDay()
|
||||
)
|
||||
->count();
|
||||
$res['user_growth'] = User::query()
|
||||
->select([
|
||||
DB::raw('DATE_FORMAT(`created_at`, '.($type === 1 ? "'%Y-%m-%d'" : "'%Y-%m'").') AS date'),
|
||||
@@ -62,39 +72,14 @@ class IndexController extends Controller
|
||||
|
||||
// 会员的统计
|
||||
if ($user->type === UserType::MEMBER) {
|
||||
$vip = VipPackage::query()->find($user->vip_id);
|
||||
$res = [];
|
||||
$res['link_count'] = Link::query()->where('user_id', $user->id)->count();
|
||||
|
||||
if ($vip) {
|
||||
$res['used_uv'] = LinkVisitLog::query()
|
||||
->where('user_id', $user->id)
|
||||
->when($user->start_at, function ($query, $start_at) {
|
||||
$query->where('created_at', '>=', $start_at);
|
||||
})
|
||||
->when($user->end_at, function ($query, $end_at) {
|
||||
$query->where('created_at', '>=', $end_at);
|
||||
})
|
||||
->groupBy('device_uid')
|
||||
->count();
|
||||
}
|
||||
$res['vip_logs'] = VipLogs::with(['payment', 'vipPackage'])
|
||||
$res['used_uv'] = LinkVisitLog::query()
|
||||
->where('user_id', $user->id)
|
||||
->orderByDesc('id')
|
||||
->limit(30)
|
||||
->get()->transform(function ($item) {
|
||||
return [
|
||||
'id' => $item->id,
|
||||
'amount' => $item->payment?->amount ?: 0,
|
||||
'start_at' => $item->start_at,
|
||||
'end_at' => $item->end_at,
|
||||
'status' => $item->status,
|
||||
'vip_package' => [
|
||||
'id' => $item->vipPackage?->id,
|
||||
'name' => $item->vipPackage?->name,
|
||||
],
|
||||
];
|
||||
});
|
||||
->count();
|
||||
$res['month_uv'] = LinkVisitLog::query()
|
||||
->where('user_id', $user->id)
|
||||
->whereBetween('created_at', [now()->startOfMonth(), now()])
|
||||
->count();
|
||||
|
||||
$res['notices'] = Notice::query()
|
||||
->where('type', UserType::MEMBER)
|
||||
@@ -114,7 +99,6 @@ class IndexController extends Controller
|
||||
$configs = [
|
||||
'code_mode' => SystemConfig::get('send_code_mode'),
|
||||
'verify_code_is_open' => SystemConfig::get('verify_code_is_open'),
|
||||
'package' => VipPackage::query()->orderBy('level')->get(['id', 'name', 'price', 'config']),
|
||||
'web_site_customer_service' => SystemConfig::get('web_site_customer_service'),
|
||||
'web_site_title' => SystemConfig::get('web_site_title'),
|
||||
'web_site_logo' => SystemConfig::get('web_site_logo'),
|
||||
@@ -130,7 +114,6 @@ class IndexController extends Controller
|
||||
$configs['mini_programs'] = MiniProgram::query()
|
||||
->where(
|
||||
fn ($query) => $query->where('user_id', $user->id)
|
||||
->when($user->getPackageConfig('pre_min'), fn ($query) => $query->orWhere('is_pre_min', true))
|
||||
)
|
||||
->get(['id', 'name']);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user