mirror of
https://github.com/lkddi/Xboard.git
synced 2026-04-24 20:17:32 +08:00
chore: code style and type declaration improvements
This commit is contained in:
@@ -266,9 +266,9 @@ class XboardInstall extends Command
|
|||||||
/**
|
/**
|
||||||
* 配置 MySQL 数据库
|
* 配置 MySQL 数据库
|
||||||
*
|
*
|
||||||
* @return array|null
|
* @return array
|
||||||
*/
|
*/
|
||||||
private function configureMysql(): ?array
|
private function configureMysql(): array
|
||||||
{
|
{
|
||||||
while (true) {
|
while (true) {
|
||||||
$envConfig = [
|
$envConfig = [
|
||||||
@@ -312,9 +312,9 @@ class XboardInstall extends Command
|
|||||||
/**
|
/**
|
||||||
* 配置 PostgreSQL 数据库
|
* 配置 PostgreSQL 数据库
|
||||||
*
|
*
|
||||||
* @return array|null
|
* @return array
|
||||||
*/
|
*/
|
||||||
private function configurePostgresql(): ?array
|
private function configurePostgresql(): array
|
||||||
{
|
{
|
||||||
while (true) {
|
while (true) {
|
||||||
$envConfig = [
|
$envConfig = [
|
||||||
|
|||||||
@@ -111,22 +111,30 @@ class GiftCardController extends Controller
|
|||||||
->orderBy('created_at', 'desc')
|
->orderBy('created_at', 'desc')
|
||||||
->paginate($perPage);
|
->paginate($perPage);
|
||||||
|
|
||||||
$data = $usages->getCollection()->map(function ($usage) {
|
$data = $usages->getCollection()->map(function (GiftCardUsage $usage) {
|
||||||
return [
|
return [
|
||||||
'id' => $usage->id,
|
'id' => $usage->id,
|
||||||
'code' => substr($usage->code->code, 0, 8) . '****', // 脱敏处理
|
'code' => ($usage->code instanceof \App\Models\GiftCardCode && $usage->code->code)
|
||||||
'template_name' => $usage->template->name,
|
? (substr($usage->code->code, 0, 8) . '****')
|
||||||
'template_type' => $usage->template->type,
|
: '',
|
||||||
'template_type_name' => $usage->template->type_name,
|
'template_name' => $usage->template->name ?? '',
|
||||||
|
'template_type' => $usage->template->type ?? '',
|
||||||
|
'template_type_name' => $usage->template->type_name ?? '',
|
||||||
'rewards_given' => $usage->rewards_given,
|
'rewards_given' => $usage->rewards_given,
|
||||||
'invite_rewards' => $usage->invite_rewards,
|
'invite_rewards' => $usage->invite_rewards,
|
||||||
'multiplier_applied' => $usage->multiplier_applied,
|
'multiplier_applied' => $usage->multiplier_applied,
|
||||||
'created_at' => $usage->created_at,
|
'created_at' => $usage->created_at,
|
||||||
];
|
];
|
||||||
});
|
})->values();
|
||||||
$usages->setCollection($data);
|
return response()->json([
|
||||||
|
'data' => $data,
|
||||||
return $this->paginate($usages);
|
'pagination' => [
|
||||||
|
'current_page' => $usages->currentPage(),
|
||||||
|
'last_page' => $usages->lastPage(),
|
||||||
|
'per_page' => $usages->perPage(),
|
||||||
|
'total' => $usages->total(),
|
||||||
|
],
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -149,20 +157,20 @@ class GiftCardController extends Controller
|
|||||||
|
|
||||||
return $this->success([
|
return $this->success([
|
||||||
'id' => $usage->id,
|
'id' => $usage->id,
|
||||||
'code' => $usage->code->code,
|
'code' => $usage->code->code ?? '',
|
||||||
'template' => [
|
'template' => [
|
||||||
'name' => $usage->template->name,
|
'name' => $usage->template->name ?? '',
|
||||||
'description' => $usage->template->description,
|
'description' => $usage->template->description ?? '',
|
||||||
'type' => $usage->template->type,
|
'type' => $usage->template->type ?? '',
|
||||||
'type_name' => $usage->template->type_name,
|
'type_name' => $usage->template->type_name ?? '',
|
||||||
'icon' => $usage->template->icon,
|
'icon' => $usage->template->icon ?? '',
|
||||||
'theme_color' => $usage->template->theme_color,
|
'theme_color' => $usage->template->theme_color ?? '',
|
||||||
],
|
],
|
||||||
'rewards_given' => $usage->rewards_given,
|
'rewards_given' => $usage->rewards_given,
|
||||||
'invite_rewards' => $usage->invite_rewards,
|
'invite_rewards' => $usage->invite_rewards,
|
||||||
'invite_user' => $usage->inviteUser ? [
|
'invite_user' => $usage->inviteUser ? [
|
||||||
'id' => $usage->inviteUser->id,
|
'id' => $usage->inviteUser->id ?? '',
|
||||||
'email' => substr($usage->inviteUser->email, 0, 3) . '***@***',
|
'email' => isset($usage->inviteUser->email) ? (substr($usage->inviteUser->email, 0, 3) . '***@***') : '',
|
||||||
] : null,
|
] : null,
|
||||||
'user_level_at_use' => $usage->user_level_at_use,
|
'user_level_at_use' => $usage->user_level_at_use,
|
||||||
'plan_id_at_use' => $usage->plan_id_at_use,
|
'plan_id_at_use' => $usage->plan_id_at_use,
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ use App\Models\GiftCardUsage;
|
|||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
use Illuminate\Validation\Rule;
|
use Illuminate\Validation\Rule;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class GiftCardController extends Controller
|
class GiftCardController extends Controller
|
||||||
{
|
{
|
||||||
@@ -62,10 +63,17 @@ class GiftCardController extends Controller
|
|||||||
'codes_count' => $template->codes()->count(),
|
'codes_count' => $template->codes()->count(),
|
||||||
'used_count' => $template->usages()->count(),
|
'used_count' => $template->usages()->count(),
|
||||||
];
|
];
|
||||||
});
|
})->values();
|
||||||
|
|
||||||
$templates->setCollection($data);
|
return response()->json([
|
||||||
return $this->paginate($templates);
|
'data' => $data,
|
||||||
|
'pagination' => [
|
||||||
|
'current_page' => $templates->currentPage(),
|
||||||
|
'last_page' => $templates->lastPage(),
|
||||||
|
'per_page' => $templates->perPage(),
|
||||||
|
'total' => $templates->total(),
|
||||||
|
],
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -287,15 +295,7 @@ class GiftCardController extends Controller
|
|||||||
$templateType = $template->type ?? '';
|
$templateType = $template->type ?? '';
|
||||||
$templateRewards = $template->rewards ? json_encode($template->rewards, JSON_UNESCAPED_UNICODE) : '';
|
$templateRewards = $template->rewards ? json_encode($template->rewards, JSON_UNESCAPED_UNICODE) : '';
|
||||||
// 状态判断
|
// 状态判断
|
||||||
if ($code->disabled) {
|
$status = $code->status_name;
|
||||||
$status = '已禁用';
|
|
||||||
} elseif ($code->used_at) {
|
|
||||||
$status = '已使用';
|
|
||||||
} elseif ($code->expires_at && $code->expires_at < time()) {
|
|
||||||
$status = '已过期';
|
|
||||||
} else {
|
|
||||||
$status = '未使用';
|
|
||||||
}
|
|
||||||
$usedBy = $code->user_id ?? '';
|
$usedBy = $code->user_id ?? '';
|
||||||
$usedAt = $code->used_at ? date('Y-m-d H:i:s', $code->used_at) : '';
|
$usedAt = $code->used_at ? date('Y-m-d H:i:s', $code->used_at) : '';
|
||||||
$remark = $code->remark ?? '';
|
$remark = $code->remark ?? '';
|
||||||
@@ -376,23 +376,30 @@ class GiftCardController extends Controller
|
|||||||
return [
|
return [
|
||||||
'id' => $code->id,
|
'id' => $code->id,
|
||||||
'template_id' => $code->template_id,
|
'template_id' => $code->template_id,
|
||||||
'template_name' => $code->template->name,
|
'template_name' => $code->template->name ?? '',
|
||||||
'code' => $code->code,
|
'code' => $code->code,
|
||||||
'batch_id' => $code->batch_id,
|
'batch_id' => $code->batch_id,
|
||||||
'status' => $code->status,
|
'status' => $code->status,
|
||||||
'status_name' => $code->status_name,
|
'status_name' => $code->status_name,
|
||||||
'user_id' => $code->user_id,
|
'user_id' => $code->user_id,
|
||||||
'user_email' => $code->user ? substr($code->user->email, 0, 3) . '***@***' : null,
|
'user_email' => $code->user ? (substr($code->user->email ?? '', 0, 3) . '***@***') : null,
|
||||||
'used_at' => $code->used_at,
|
'used_at' => $code->used_at,
|
||||||
'expires_at' => $code->expires_at,
|
'expires_at' => $code->expires_at,
|
||||||
'usage_count' => $code->usage_count,
|
'usage_count' => $code->usage_count,
|
||||||
'max_usage' => $code->max_usage,
|
'max_usage' => $code->max_usage,
|
||||||
'created_at' => $code->created_at,
|
'created_at' => $code->created_at,
|
||||||
];
|
];
|
||||||
});
|
})->values();
|
||||||
|
|
||||||
$codes->setCollection($data);
|
return response()->json([
|
||||||
return $this->paginate($codes);
|
'data' => $data,
|
||||||
|
'pagination' => [
|
||||||
|
'current_page' => $codes->currentPage(),
|
||||||
|
'last_page' => $codes->lastPage(),
|
||||||
|
'per_page' => $codes->perPage(),
|
||||||
|
'total' => $codes->total(),
|
||||||
|
],
|
||||||
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -476,18 +483,16 @@ class GiftCardController extends Controller
|
|||||||
$data = $usages->getCollection()->map(function ($usage) {
|
$data = $usages->getCollection()->map(function ($usage) {
|
||||||
return [
|
return [
|
||||||
'id' => $usage->id,
|
'id' => $usage->id,
|
||||||
'code' => $usage->code->code,
|
'code' => $usage->code->code ?? '',
|
||||||
'template_name' => $usage->template->name,
|
'template_name' => $usage->template->name ?? '',
|
||||||
'user_email' => $usage->user->email,
|
'user_email' => $usage->user->email ?? '',
|
||||||
'invite_user_email' => $usage->inviteUser ? substr($usage->inviteUser->email, 0, 3) . '***@***' : null,
|
'invite_user_email' => $usage->inviteUser ? (substr($usage->inviteUser->email ?? '', 0, 3) . '***@***') : null,
|
||||||
'rewards_given' => $usage->rewards_given,
|
'rewards_given' => $usage->rewards_given,
|
||||||
'invite_rewards' => $usage->invite_rewards,
|
'invite_rewards' => $usage->invite_rewards,
|
||||||
'multiplier_applied' => $usage->multiplier_applied,
|
'multiplier_applied' => $usage->multiplier_applied,
|
||||||
// 'ip_address' => $usage->ip_address,
|
|
||||||
'created_at' => $usage->created_at,
|
'created_at' => $usage->created_at,
|
||||||
];
|
];
|
||||||
});
|
})->values();
|
||||||
|
|
||||||
return response()->json([
|
return response()->json([
|
||||||
'data' => $data,
|
'data' => $data,
|
||||||
'pagination' => [
|
'pagination' => [
|
||||||
@@ -522,7 +527,7 @@ class GiftCardController extends Controller
|
|||||||
];
|
];
|
||||||
|
|
||||||
// 每日使用统计
|
// 每日使用统计
|
||||||
$driver = GiftCardUsage::query()->getConnection()->getDriverName();
|
$driver = DB::connection()->getDriverName();
|
||||||
$dateExpression = "date(created_at, 'unixepoch')"; // Default for SQLite
|
$dateExpression = "date(created_at, 'unixepoch')"; // Default for SQLite
|
||||||
if ($driver === 'mysql') {
|
if ($driver === 'mysql') {
|
||||||
$dateExpression = 'DATE(FROM_UNIXTIME(created_at))';
|
$dateExpression = 'DATE(FROM_UNIXTIME(created_at))';
|
||||||
@@ -543,9 +548,9 @@ class GiftCardController extends Controller
|
|||||||
->get()
|
->get()
|
||||||
->map(function ($item) {
|
->map(function ($item) {
|
||||||
return [
|
return [
|
||||||
'template_name' => $item->template->name,
|
'template_name' => $item->template->name ?? '',
|
||||||
'type_name' => $item->template->type_name,
|
'type_name' => $item->template->type_name ?? '',
|
||||||
'count' => $item->count,
|
'count' => $item->count ?? 0,
|
||||||
];
|
];
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -172,7 +172,8 @@ class GiftCardCode extends Model
|
|||||||
public static function generateCode(string $prefix = 'GC'): string
|
public static function generateCode(string $prefix = 'GC'): string
|
||||||
{
|
{
|
||||||
do {
|
do {
|
||||||
$code = $prefix . strtoupper(substr(md5(uniqid(mt_rand(), true)), 0, 12));
|
$safePrefix = (string) $prefix;
|
||||||
|
$code = $safePrefix . strtoupper(substr(md5(uniqid($safePrefix . mt_rand(), true)), 0, 12));
|
||||||
} while (self::where('code', $code)->exists());
|
} while (self::where('code', $code)->exists());
|
||||||
|
|
||||||
return $code;
|
return $code;
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace App\Models;
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Dflydev\DotAccessData\Data;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
use Illuminate\Database\Eloquent\Relations\HasMany;
|
use Illuminate\Database\Eloquent\Relations\HasMany;
|
||||||
|
|
||||||
@@ -200,7 +201,7 @@ class GiftCardTemplate extends Model
|
|||||||
|
|
||||||
if (isset($festivalConfig['start_time']) && isset($festivalConfig['end_time'])) {
|
if (isset($festivalConfig['start_time']) && isset($festivalConfig['end_time'])) {
|
||||||
if ($now >= $festivalConfig['start_time'] && $now <= $festivalConfig['end_time']) {
|
if ($now >= $festivalConfig['start_time'] && $now <= $festivalConfig['end_time']) {
|
||||||
$bonus = (float) ($festivalConfig['festival_bonus'] ?? 1.0);
|
$bonus = data_get($festivalConfig, 'festival_bonus', 1.0);
|
||||||
if ($bonus > 1.0) {
|
if ($bonus > 1.0) {
|
||||||
foreach ($actualRewards as $key => &$value) {
|
foreach ($actualRewards as $key => &$value) {
|
||||||
if (is_numeric($value)) {
|
if (is_numeric($value)) {
|
||||||
@@ -240,7 +241,7 @@ class GiftCardTemplate extends Model
|
|||||||
->orderBy('created_at', 'desc')
|
->orderBy('created_at', 'desc')
|
||||||
->first();
|
->first();
|
||||||
|
|
||||||
if ($lastUsage) {
|
if ($lastUsage && isset($lastUsage->created_at)) {
|
||||||
$cooldownTime = $lastUsage->created_at + ($conditions['cooldown_hours'] * 3600);
|
$cooldownTime = $lastUsage->created_at + ($conditions['cooldown_hours'] * 3600);
|
||||||
if (time() < $cooldownTime) {
|
if (time() < $cooldownTime) {
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -38,7 +38,6 @@ class OrderService
|
|||||||
* @param Plan $plan
|
* @param Plan $plan
|
||||||
* @param string $period
|
* @param string $period
|
||||||
* @param string|null $couponCode
|
* @param string|null $couponCode
|
||||||
* @param array|null $telegramMessageIds
|
|
||||||
* @return Order
|
* @return Order
|
||||||
* @throws ApiException
|
* @throws ApiException
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user