|
|
@@ -160,7 +160,7 @@ class PayRechargeController extends Controller
|
|
|
|
|
|
if ($expireDate !== $currentDate) {
|
|
|
// 进入阶段2
|
|
|
- $nextDayStart = strtotime($expireDate . ' +1 day 00:00:00');
|
|
|
+ $nextDayStart = time();
|
|
|
$newExpireTime = $nextDayStart + ($giftConfig->valid_h_2 * 3600);
|
|
|
|
|
|
$newTimerData = [
|
|
|
@@ -187,7 +187,7 @@ class PayRechargeController extends Controller
|
|
|
$currentDate = date('Y-m-d', $currentTime);
|
|
|
|
|
|
if ($expireDate !== $currentDate) {
|
|
|
- $todayStart = strtotime($currentDate . ' 00:00:00');
|
|
|
+ $todayStart = time();
|
|
|
$newExpireTime = $todayStart + ($giftConfig->valid_h_2 * 3600);
|
|
|
|
|
|
$newTimerData = [
|
|
|
@@ -271,27 +271,64 @@ class PayRechargeController extends Controller
|
|
|
|
|
|
// 每日奖励进度
|
|
|
if ($dayRewardsData) {
|
|
|
+ // 计算当前是购买后的第几天
|
|
|
+ $purchaseDate = date('Y-m-d', strtotime($giftRecord->created_at));
|
|
|
+ $today = date('Y-m-d');
|
|
|
+ $daysPassed = floor((strtotime($today) - strtotime($purchaseDate)) / 86400);
|
|
|
+
|
|
|
+ $startDay = $dayRewardsData['start_day'] ?? 1;
|
|
|
+ $bonusDay = $dayRewardsData['bonus_day'] ?? 0;
|
|
|
+ $claimedDays = $giftRecord->day_rewards_claimed;
|
|
|
+
|
|
|
+ // 判断每日奖励状态
|
|
|
+ // 0=不可领取, 1=可领取, 2=已领取, 3=过期
|
|
|
+ $dayRewardStatus = 0; // 默认不可领取
|
|
|
+
|
|
|
+ // 检查是否过期(购买后7天)
|
|
|
+ if ($daysPassed >= 7) {
|
|
|
+ $dayRewardStatus = 3; // 过期
|
|
|
+ } elseif ($daysPassed >= $startDay) {
|
|
|
+ // 计算今天是第几个奖励日(从起始天数开始)
|
|
|
+ $rewardIndex = $daysPassed - $startDay;
|
|
|
+
|
|
|
+ if ($rewardIndex < $bonusDay) {
|
|
|
+ // 在奖励期内
|
|
|
+ if ($claimedDays > $rewardIndex) {
|
|
|
+ $dayRewardStatus = 2; // 已领取
|
|
|
+ } elseif ($claimedDays == $rewardIndex) {
|
|
|
+ $dayRewardStatus = 1; // 可领取
|
|
|
+ } else {
|
|
|
+ $dayRewardStatus = 0; // 不可领取(前面的天数未领或已过期)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 超过奖励天数
|
|
|
+ $dayRewardStatus = 2; // 已领取完
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
$giftInfo['day_rewards'] = [
|
|
|
'total_bonus' => (float)$giftRecord->day_rewards_total,
|
|
|
- 'bonus_day' => $dayRewardsData['bonus_day'] ?? 0,
|
|
|
- 'start_day' => $dayRewardsData['start_day'] ?? 1,
|
|
|
+ 'bonus_day' => $bonusDay,
|
|
|
+ 'start_day' => $startDay,
|
|
|
'bonus' => $dayRewardsData['bonus'] ?? [],
|
|
|
- 'claimed_days' => $giftRecord->day_rewards_claimed, // 已领取天数
|
|
|
- 'progress' => $giftRecord->day_rewards_claimed . '/' . ($dayRewardsData['bonus_day'] ?? 0)
|
|
|
+ 'claimed_days' => $claimedDays,
|
|
|
+ 'progress' => $claimedDays . '/' . $bonusDay,
|
|
|
+ 'status' => $dayRewardStatus, // 0=不可领取, 1=可领取, 2=已领取, 3=过期
|
|
|
+ 'status_text' => ['不可领取', '可领取', '已领取', '过期'][$dayRewardStatus] ?? '未知'
|
|
|
];
|
|
|
}
|
|
|
|
|
|
// 下注奖励进度
|
|
|
if ($bettingBonusData) {
|
|
|
$perBet = $bettingBonusData['per_bet'] ?? 100; // 每次下注要求
|
|
|
- $perBetBonus = $bettingBonusData['per_bet_bonus'] ?? 2; // 每次奖励百分比
|
|
|
+ $perBetBonus = $bettingBonusData['per_bet_bonus'] ?? 2; // 每次奖励金额(不是百分比)
|
|
|
$currentBet = $giftRecord->betting_current_bet; // 当前累计下注
|
|
|
$totalBonusLimit = $giftRecord->betting_bonus_total; // 总奖励上限
|
|
|
$claimedAmount = $giftRecord->betting_bonus_claimed; // 已领取金额
|
|
|
$remainingBonus = $totalBonusLimit - $claimedAmount; // 剩余可领取金额
|
|
|
|
|
|
- // 每次可领取的金额
|
|
|
- $perReward = round($giftRecord->pay_amount * $perBetBonus / 100, 2);
|
|
|
+ // 每次可领取的金额(直接使用配置的值,不是百分比计算)
|
|
|
+ $perReward = (float)$perBetBonus;
|
|
|
|
|
|
// 根据当前下注计算已达成的次数
|
|
|
$completedTimes = floor($currentBet / $perBet);
|
|
|
@@ -304,6 +341,9 @@ class PayRechargeController extends Controller
|
|
|
$maxCanClaimTimes = floor($remainingBonus / $perReward); // 剩余总额最多可领次数
|
|
|
$canClaimTimes = min($canClaimTimes, $maxCanClaimTimes);
|
|
|
|
|
|
+ // 当前可领取金额
|
|
|
+ $canClaimAmount = min($canClaimTimes * $perReward, $remainingBonus);
|
|
|
+
|
|
|
// 计算下次领取需要的下注金额
|
|
|
$nextClaimBet = 0;
|
|
|
if ($remainingBonus > 0 && $canClaimTimes == 0) {
|
|
|
@@ -311,17 +351,35 @@ class PayRechargeController extends Controller
|
|
|
$nextClaimBet = ($claimedTimes + 1) * $perBet - $currentBet;
|
|
|
}
|
|
|
|
|
|
+ // 判断下注奖励状态
|
|
|
+ // 0=不可领取(可领取金额为0), 1=可领取, 2=已领取(所有奖励都领完), 3=过期
|
|
|
+ $bettingBonusStatus = 0; // 默认不可领取
|
|
|
+
|
|
|
+ // 检查是否过期(购买后7天)
|
|
|
+ if ($daysPassed >= 7) {
|
|
|
+ $bettingBonusStatus = 3; // 过期
|
|
|
+ } elseif ($remainingBonus <= 0) {
|
|
|
+ $bettingBonusStatus = 2; // 已领取完
|
|
|
+ } elseif ($canClaimAmount > 0) {
|
|
|
+ $bettingBonusStatus = 1; // 可领取
|
|
|
+ } else {
|
|
|
+ $bettingBonusStatus = 0; // 不可领取(下注不足)
|
|
|
+ }
|
|
|
+
|
|
|
$giftInfo['betting_bonus'] = [
|
|
|
'total_bonus' => (float)$totalBonusLimit, // 总奖励上限
|
|
|
'per_bet' => $perBet, // 每次下注要求
|
|
|
- 'per_bet_bonus' => $perBetBonus, // 每次奖励百分比
|
|
|
- 'per_reward' => $perReward, // 每次奖励金额
|
|
|
+ 'per_bet_bonus' => $perReward, // 每次奖励金额(实际金额)
|
|
|
+// 'per_reward' => $perReward, // 每次奖励金额(保持兼容)
|
|
|
'current_bet' => (float)$currentBet, // 当前累计下注
|
|
|
'claimed_amount' => (float)$claimedAmount, // 已领取金额
|
|
|
'remaining_bonus' => (float)$remainingBonus, // 剩余可领金额
|
|
|
+ 'can_claim_amount' => (float)$canClaimAmount, // 当前可领取金额
|
|
|
'can_claim_times' => max(0, $canClaimTimes), // 当前可领取次数
|
|
|
'next_claim_bet' => max(0, $nextClaimBet), // 下次领取还需下注
|
|
|
- 'progress' => round($currentBet, 2) . '/' . round($claimedTimes * $perBet + $perBet, 2) // 当前进度/下次领取目标
|
|
|
+ 'progress' => round($currentBet, 2) . '/' . round($claimedTimes * $perBet + $perBet, 2), // 当前进度/下次领取目标
|
|
|
+ 'status' => $bettingBonusStatus, // 0=不可领取, 1=可领取, 2=已领取, 3=过期
|
|
|
+ 'status_text' => ['不可领取', '可领取', '已领取', '过期'][$bettingBonusStatus] ?? '未知'
|
|
|
];
|
|
|
}
|
|
|
|
|
|
@@ -331,15 +389,31 @@ class PayRechargeController extends Controller
|
|
|
$requiredBet = $giftRecord->pay_amount * $betPayTimes;
|
|
|
$currentProgress = $giftRecord->betting_current_bet;
|
|
|
$taskCompleted = $currentProgress >= $requiredBet;
|
|
|
+ $isClaimed = $giftRecord->betting_task_claimed == 1;
|
|
|
+
|
|
|
+ // 判断下注任务状态
|
|
|
+ // 0=不可领取, 1=可领取, 2=已领取, 3=过期
|
|
|
+ $bettingTaskStatus = 0; // 默认不可领取
|
|
|
+
|
|
|
+ // 检查是否过期(购买后7天)
|
|
|
+ if ($daysPassed >= 7) {
|
|
|
+ $bettingTaskStatus = 3; // 过期
|
|
|
+ } elseif ($isClaimed) {
|
|
|
+ $bettingTaskStatus = 2; // 已领取
|
|
|
+ } elseif ($taskCompleted) {
|
|
|
+ $bettingTaskStatus = 1; // 可领取(任务完成且未领取)
|
|
|
+ } else {
|
|
|
+ $bettingTaskStatus = 0; // 不可领取(任务未完成)
|
|
|
+ }
|
|
|
|
|
|
$giftInfo['betting_task'] = [
|
|
|
'total_bonus' => (float)$giftRecord->betting_task_total,
|
|
|
'bet_pay_times' => $betPayTimes,
|
|
|
'required_bet' => $requiredBet, // 需要下注的金额
|
|
|
'current_bet' => (float)$currentProgress, // 当前累计下注
|
|
|
- 'claimed' => $giftRecord->betting_task_claimed == 1, // 是否已领取
|
|
|
- 'can_claim' => $taskCompleted && $giftRecord->betting_task_claimed == 0, // 可否领取
|
|
|
- 'progress' => round($currentProgress, 2) . '/' . $requiredBet
|
|
|
+ 'progress' => round($currentProgress, 2) . '/' . $requiredBet,
|
|
|
+ 'status' => $bettingTaskStatus, // 0=不可领取, 1=可领取, 2=已领取, 3=过期
|
|
|
+ 'status_text' => ['不可领取', '可领取', '已领取', '过期'][$bettingTaskStatus] ?? '未知'
|
|
|
];
|
|
|
}
|
|
|
|
|
|
@@ -441,7 +515,7 @@ class PayRechargeController extends Controller
|
|
|
}
|
|
|
|
|
|
$perBet = $bettingBonusData['per_bet'] ?? 100; // 每次下注要求
|
|
|
- $perBetBonus = $bettingBonusData['per_bet_bonus'] ?? 2; // 每次奖励百分比
|
|
|
+ $perBetBonus = $bettingBonusData['per_bet_bonus'] ?? 2; // 每次奖励金额(不是百分比)
|
|
|
$currentBet = $giftRecord->betting_current_bet; // 当前累计下注
|
|
|
$totalBonusLimit = $giftRecord->betting_bonus_total; // 总奖励上限
|
|
|
$claimedAmount = $giftRecord->betting_bonus_claimed; // 已领取金额
|
|
|
@@ -452,8 +526,8 @@ class PayRechargeController extends Controller
|
|
|
return apiReturnFail('下注奖励已全部领取');
|
|
|
}
|
|
|
|
|
|
- // 每次可领取的金额
|
|
|
- $perReward = round($giftRecord->pay_amount * $perBetBonus / 100, 2);
|
|
|
+ // 每次可领取的金额(直接使用配置的值,不是百分比计算)
|
|
|
+ $perReward = (float)$perBetBonus;
|
|
|
|
|
|
// 根据当前下注计算已达成的次数
|
|
|
$completedTimes = floor($currentBet / $perBet);
|