|
@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Game;
|
|
|
|
|
|
|
|
|
|
|
|
|
use App\Facade\TableName;
|
|
use App\Facade\TableName;
|
|
|
|
|
+use App\Game\GlobalUserInfo;
|
|
|
use App\Game\Services\OuroGameService;
|
|
use App\Game\Services\OuroGameService;
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Http\Controllers\Controller;
|
|
|
use App\Http\helper\NumConfig;
|
|
use App\Http\helper\NumConfig;
|
|
@@ -13,11 +14,24 @@ use App\Services\OrderServices;
|
|
|
use App\Utility\SetNXLock;
|
|
use App\Utility\SetNXLock;
|
|
|
use App\Util;
|
|
use App\Util;
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Http\Request;
|
|
|
|
|
+use Illuminate\Support\Facades\App;
|
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
use Illuminate\Support\Facades\Redis;
|
|
use Illuminate\Support\Facades\Redis;
|
|
|
|
|
|
|
|
class PayRechargeController extends Controller
|
|
class PayRechargeController extends Controller
|
|
|
{
|
|
{
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 设置用户语言环境
|
|
|
|
|
+ */
|
|
|
|
|
+ private function setUserLocale($request)
|
|
|
|
|
+ {
|
|
|
|
|
+ $user = $request->user();
|
|
|
|
|
+ if ($user) {
|
|
|
|
|
+ $locale = GlobalUserInfo::getLocaleByUserID($user->UserID, 'en');
|
|
|
|
|
+ App::setLocale($locale);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
// 充值记录
|
|
// 充值记录
|
|
|
public function orderList(Request $request)
|
|
public function orderList(Request $request)
|
|
|
{
|
|
{
|
|
@@ -108,13 +122,15 @@ class PayRechargeController extends Controller
|
|
|
{
|
|
{
|
|
|
$user = $request->user();
|
|
$user = $request->user();
|
|
|
|
|
|
|
|
|
|
+ $this->setUserLocale($request);
|
|
|
|
|
+
|
|
|
// 获取礼包配置
|
|
// 获取礼包配置
|
|
|
$giftConfig = DB::table('agent.dbo.recharge_gift')
|
|
$giftConfig = DB::table('agent.dbo.recharge_gift')
|
|
|
->where('gift_id', 301)
|
|
->where('gift_id', 301)
|
|
|
->first();
|
|
->first();
|
|
|
|
|
|
|
|
if (!$giftConfig) {
|
|
if (!$giftConfig) {
|
|
|
- return apiReturnFail('礼包配置不存在');
|
|
|
|
|
|
|
+ return apiReturnFail(['web.gift.config_not_exists', __('web.gift.config_not_exists')]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 检查用户是否购买了首充礼包
|
|
// 检查用户是否购买了首充礼包
|
|
@@ -442,6 +458,7 @@ class PayRechargeController extends Controller
|
|
|
$user = $request->user();
|
|
$user = $request->user();
|
|
|
$userId = $user->UserID;
|
|
$userId = $user->UserID;
|
|
|
$rewardType = $request->input('reward_type'); // 'day_reward', 'betting_bonus', 'betting_task'
|
|
$rewardType = $request->input('reward_type'); // 'day_reward', 'betting_bonus', 'betting_task'
|
|
|
|
|
+ $this->setUserLocale($request);
|
|
|
|
|
|
|
|
// 获取礼包记录
|
|
// 获取礼包记录
|
|
|
$giftRecord = DB::table('agent.dbo.first_pay_gift_records')
|
|
$giftRecord = DB::table('agent.dbo.first_pay_gift_records')
|
|
@@ -449,7 +466,7 @@ class PayRechargeController extends Controller
|
|
|
->first();
|
|
->first();
|
|
|
|
|
|
|
|
if (!$giftRecord) {
|
|
if (!$giftRecord) {
|
|
|
- return apiReturnFail('未购买首充礼包');
|
|
|
|
|
|
|
+ return apiReturnFail(['web.gift.not_purchased', __('web.gift.not_purchased')]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
$rewardAmount = 0;
|
|
$rewardAmount = 0;
|
|
@@ -459,7 +476,7 @@ class PayRechargeController extends Controller
|
|
|
if ($rewardType === 'day_reward') {
|
|
if ($rewardType === 'day_reward') {
|
|
|
$dayRewardsData = json_decode($giftRecord->day_rewards_data, true);
|
|
$dayRewardsData = json_decode($giftRecord->day_rewards_data, true);
|
|
|
if (!$dayRewardsData) {
|
|
if (!$dayRewardsData) {
|
|
|
- return apiReturnFail('没有每日奖励配置');
|
|
|
|
|
|
|
+ return apiReturnFail(['web.gift.no_day_rewards_config', __('web.gift.no_day_rewards_config')]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
$bonusDay = $dayRewardsData['bonus_day'] ?? 0;
|
|
$bonusDay = $dayRewardsData['bonus_day'] ?? 0;
|
|
@@ -469,7 +486,7 @@ class PayRechargeController extends Controller
|
|
|
|
|
|
|
|
// 检查是否还有可领取的天数
|
|
// 检查是否还有可领取的天数
|
|
|
if ($claimedDays >= $bonusDay) {
|
|
if ($claimedDays >= $bonusDay) {
|
|
|
- return apiReturnFail('每日奖励已全部领取');
|
|
|
|
|
|
|
+ return apiReturnFail(['web.gift.day_rewards_all_claimed', __('web.gift.day_rewards_all_claimed')]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 计算当前是购买后的第几天
|
|
// 计算当前是购买后的第几天
|
|
@@ -479,7 +496,7 @@ class PayRechargeController extends Controller
|
|
|
|
|
|
|
|
// 检查是否到了可以领取的天数(从第start_day天开始)
|
|
// 检查是否到了可以领取的天数(从第start_day天开始)
|
|
|
if ($daysPassed < $startDay-1) {
|
|
if ($daysPassed < $startDay-1) {
|
|
|
- return apiReturnFail('还未到可领取时间,需要从第' . $startDay . '天开始');
|
|
|
|
|
|
|
+ return apiReturnFail(['web.gift.day_rewards_not_time', str_replace(':day', $startDay, __('web.gift.day_rewards_not_time'))]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 计算今天应该领取第几天的奖励
|
|
// 计算今天应该领取第几天的奖励
|
|
@@ -488,13 +505,13 @@ class PayRechargeController extends Controller
|
|
|
|
|
|
|
|
// 检查是否超过奖励天数
|
|
// 检查是否超过奖励天数
|
|
|
if ($todayRewardIndex >= $bonusDay) {
|
|
if ($todayRewardIndex >= $bonusDay) {
|
|
|
- return apiReturnFail('每日奖励已过期');
|
|
|
|
|
|
|
+ return apiReturnFail(['web.gift.day_rewards_expired', __('web.gift.day_rewards_expired')]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 检查今天是否已领取
|
|
// 检查今天是否已领取
|
|
|
$lastClaimDate = $giftRecord->day_last_claim_date;
|
|
$lastClaimDate = $giftRecord->day_last_claim_date;
|
|
|
if ($lastClaimDate && $lastClaimDate === $currentDate) {
|
|
if ($lastClaimDate && $lastClaimDate === $currentDate) {
|
|
|
- return apiReturnFail('今天已经领取过了');
|
|
|
|
|
|
|
+ return apiReturnFail(['web.gift.day_rewards_claimed_today', __('web.gift.day_rewards_claimed_today')]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 检查是否跳过了某些天(过期不补领)
|
|
// 检查是否跳过了某些天(过期不补领)
|
|
@@ -521,7 +538,7 @@ class PayRechargeController extends Controller
|
|
|
elseif ($rewardType === 'betting_bonus') {
|
|
elseif ($rewardType === 'betting_bonus') {
|
|
|
$bettingBonusData = json_decode($giftRecord->betting_bonus_data, true);
|
|
$bettingBonusData = json_decode($giftRecord->betting_bonus_data, true);
|
|
|
if (!$bettingBonusData) {
|
|
if (!$bettingBonusData) {
|
|
|
- return apiReturnFail('没有下注奖励配置');
|
|
|
|
|
|
|
+ return apiReturnFail(['web.gift.no_betting_bonus_config', __('web.gift.no_betting_bonus_config')]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 检查是否过期(购买后7天)
|
|
// 检查是否过期(购买后7天)
|
|
@@ -529,7 +546,7 @@ class PayRechargeController extends Controller
|
|
|
$currentDate = date('Y-m-d');
|
|
$currentDate = date('Y-m-d');
|
|
|
$daysPassed = floor((strtotime($currentDate) - strtotime($purchaseDate)) / 86400);
|
|
$daysPassed = floor((strtotime($currentDate) - strtotime($purchaseDate)) / 86400);
|
|
|
if ($daysPassed >= 7) {
|
|
if ($daysPassed >= 7) {
|
|
|
- return apiReturnFail('下注奖励已过期');
|
|
|
|
|
|
|
+ return apiReturnFail(['web.gift.betting_bonus_expired', __('web.gift.betting_bonus_expired')]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 获取最新的下注次数
|
|
// 获取最新的下注次数
|
|
@@ -545,7 +562,7 @@ class PayRechargeController extends Controller
|
|
|
|
|
|
|
|
// 检查是否还有剩余奖励
|
|
// 检查是否还有剩余奖励
|
|
|
if ($remainingBonus <= 0) {
|
|
if ($remainingBonus <= 0) {
|
|
|
- return apiReturnFail('下注奖励已全部领取');
|
|
|
|
|
|
|
+ return apiReturnFail(['web.gift.betting_bonus_all_claimed', __('web.gift.betting_bonus_all_claimed')]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 每次可领取的金额(直接使用配置的值,不是百分比计算)
|
|
// 每次可领取的金额(直接使用配置的值,不是百分比计算)
|
|
@@ -562,7 +579,8 @@ class PayRechargeController extends Controller
|
|
|
|
|
|
|
|
// 检查是否可以领取
|
|
// 检查是否可以领取
|
|
|
if ($canClaimTimes <= 0) {
|
|
if ($canClaimTimes <= 0) {
|
|
|
- return apiReturnFail('下注次数不足,还需下注 ' . (($claimedTimes + 1) * $perBet - $currentBetCount) . ' 次才能领取');
|
|
|
|
|
|
|
+ $neededBets = (($claimedTimes + 1) * $perBet - $currentBetCount);
|
|
|
|
|
+ return apiReturnFail(['web.gift.betting_bonus_insufficient', str_replace(':times', $neededBets, __('web.gift.betting_bonus_insufficient'))]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// ✅ 一次性领取所有已达成的奖励(但不能超过剩余总额)
|
|
// ✅ 一次性领取所有已达成的奖励(但不能超过剩余总额)
|
|
@@ -589,12 +607,12 @@ class PayRechargeController extends Controller
|
|
|
// 下注任务领取(使用下注金额)
|
|
// 下注任务领取(使用下注金额)
|
|
|
elseif ($rewardType === 'betting_task') {
|
|
elseif ($rewardType === 'betting_task') {
|
|
|
if ($giftRecord->betting_task_claimed == 1) {
|
|
if ($giftRecord->betting_task_claimed == 1) {
|
|
|
- return apiReturnFail('下注任务奖励已领取');
|
|
|
|
|
|
|
+ return apiReturnFail(['web.gift.betting_task_claimed', __('web.gift.betting_task_claimed')]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
$bettingTaskData = json_decode($giftRecord->betting_task_data, true);
|
|
$bettingTaskData = json_decode($giftRecord->betting_task_data, true);
|
|
|
if (!$bettingTaskData) {
|
|
if (!$bettingTaskData) {
|
|
|
- return apiReturnFail('没有下注任务配置');
|
|
|
|
|
|
|
+ return apiReturnFail(['web.gift.no_betting_task_config', __('web.gift.no_betting_task_config')]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 检查是否过期(购买后7天)
|
|
// 检查是否过期(购买后7天)
|
|
@@ -602,7 +620,7 @@ class PayRechargeController extends Controller
|
|
|
$currentDate = date('Y-m-d');
|
|
$currentDate = date('Y-m-d');
|
|
|
$daysPassed = floor((strtotime($currentDate) - strtotime($purchaseDate)) / 86400);
|
|
$daysPassed = floor((strtotime($currentDate) - strtotime($purchaseDate)) / 86400);
|
|
|
if ($daysPassed >= 7) {
|
|
if ($daysPassed >= 7) {
|
|
|
- return apiReturnFail('下注任务奖励已过期');
|
|
|
|
|
|
|
+ return apiReturnFail(['web.gift.betting_task_expired', __('web.gift.betting_task_expired')]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 获取最新的下注金额
|
|
// 获取最新的下注金额
|
|
@@ -616,7 +634,7 @@ class PayRechargeController extends Controller
|
|
|
$requiredBet = $giftRecord->pay_amount * $betPayTimes;
|
|
$requiredBet = $giftRecord->pay_amount * $betPayTimes;
|
|
|
|
|
|
|
|
if ($currentBetAmount < $requiredBet) {
|
|
if ($currentBetAmount < $requiredBet) {
|
|
|
- return apiReturnFail('下注金额不足,需要下注 ' . $requiredBet);
|
|
|
|
|
|
|
+ return apiReturnFail(['web.gift.betting_task_insufficient', str_replace(':amount', $requiredBet, __('web.gift.betting_task_insufficient'))]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
$rewardAmount = $giftRecord->betting_task_total;
|
|
$rewardAmount = $giftRecord->betting_task_total;
|
|
@@ -630,7 +648,7 @@ class PayRechargeController extends Controller
|
|
|
]);
|
|
]);
|
|
|
}
|
|
}
|
|
|
else {
|
|
else {
|
|
|
- return apiReturnFail('无效的奖励类型');
|
|
|
|
|
|
|
+ return apiReturnFail(['web.gift.invalid_reward_type', __('web.gift.invalid_reward_type')]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 添加奖励到用户账户
|
|
// 添加奖励到用户账户
|
|
@@ -646,7 +664,7 @@ class PayRechargeController extends Controller
|
|
|
|
|
|
|
|
return apiReturnSuc([
|
|
return apiReturnSuc([
|
|
|
'amount' => $rewardAmount,
|
|
'amount' => $rewardAmount,
|
|
|
- 'message' => '成功领取 ' . $rewardAmount . ' 奖励'
|
|
|
|
|
|
|
+ 'message' => str_replace(':amount', $rewardAmount, __('web.gift.claim_success'))
|
|
|
]);
|
|
]);
|
|
|
|
|
|
|
|
} catch (\Exception $e) {
|
|
} catch (\Exception $e) {
|
|
@@ -654,7 +672,7 @@ class PayRechargeController extends Controller
|
|
|
'user_id' => $userId,
|
|
'user_id' => $userId,
|
|
|
'error' => $e->getMessage()
|
|
'error' => $e->getMessage()
|
|
|
]);
|
|
]);
|
|
|
- return apiReturnFail('领取失败:' . $e->getMessage());
|
|
|
|
|
|
|
+ return apiReturnFail(['web.gift.claim_failed', str_replace(':error', $e->getMessage(), __('web.gift.claim_failed'))]);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -745,6 +763,7 @@ class PayRechargeController extends Controller
|
|
|
public function bankruptcyGift(Request $request)
|
|
public function bankruptcyGift(Request $request)
|
|
|
{
|
|
{
|
|
|
$user = $request->user();
|
|
$user = $request->user();
|
|
|
|
|
+ $this->setUserLocale($request);
|
|
|
|
|
|
|
|
// 判断用户是否充值
|
|
// 判断用户是否充值
|
|
|
$user_recharge = DB::table(TableName::QPAccountsDB() . 'YN_VIPAccount')
|
|
$user_recharge = DB::table(TableName::QPAccountsDB() . 'YN_VIPAccount')
|
|
@@ -752,7 +771,7 @@ class PayRechargeController extends Controller
|
|
|
->value('Recharge') ?: 0;
|
|
->value('Recharge') ?: 0;
|
|
|
|
|
|
|
|
if ($user_recharge <= 0) {
|
|
if ($user_recharge <= 0) {
|
|
|
- return apiReturnFail('用户未充值');
|
|
|
|
|
|
|
+ return apiReturnFail(['web.gift.user_not_recharged', __('web.gift.user_not_recharged')]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 获取所有破产礼包配置 (gift_id=302)
|
|
// 获取所有破产礼包配置 (gift_id=302)
|
|
@@ -761,7 +780,7 @@ class PayRechargeController extends Controller
|
|
|
->get();
|
|
->get();
|
|
|
|
|
|
|
|
if ($bankruptcyGifts->isEmpty()) {
|
|
if ($bankruptcyGifts->isEmpty()) {
|
|
|
- return apiReturnFail('破产礼包配置不存在');
|
|
|
|
|
|
|
+ return apiReturnFail(['web.gift.bankruptcy_gift_not_exists', __('web.gift.bankruptcy_gift_not_exists')]);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
$result = [];
|
|
$result = [];
|
|
@@ -793,6 +812,265 @@ class PayRechargeController extends Controller
|
|
|
return apiReturnSuc($result);
|
|
return apiReturnSuc($result);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ // 每日首充礼包
|
|
|
|
|
+ public function dailyFirstRechargeGift(Request $request)
|
|
|
|
|
+ {
|
|
|
|
|
+ $user = $request->user();
|
|
|
|
|
+ $this->setUserLocale($request);
|
|
|
|
|
+
|
|
|
|
|
+ // 检查用户今日是否已充值(完成任意档位充值后入口消失)
|
|
|
|
|
+ $todayStart = date('Y-m-d') . ' 00:00:00';
|
|
|
|
|
+ $todayEnd = date('Y-m-d') . ' 23:59:59';
|
|
|
|
|
+
|
|
|
|
|
+ $todayRecharge = DB::table('agent.dbo.order')
|
|
|
|
|
+ ->where('user_id', $user->UserID)
|
|
|
|
|
+ ->where('pay_status', 1)
|
|
|
|
|
+ ->where('pay_at', '>=', $todayStart)
|
|
|
|
|
+ ->where('pay_at', '<=', $todayEnd)
|
|
|
|
|
+ ->first();
|
|
|
|
|
+
|
|
|
|
|
+ // 如果今日已充值,返回入口消失标记
|
|
|
|
|
+ if ($todayRecharge) {
|
|
|
|
|
+ return apiReturnSuc([
|
|
|
|
|
+ 'has_recharged_today' => true,
|
|
|
|
|
+ 'message' => __('web.gift.recharged_today')
|
|
|
|
|
+ ]);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 获取每日首充礼包配置 (gift_id=303)
|
|
|
|
|
+ $dailyGifts = DB::table('agent.dbo.recharge_gift')
|
|
|
|
|
+ ->where('gift_id', 303)
|
|
|
|
|
+ ->get();
|
|
|
|
|
+
|
|
|
|
|
+ if ($dailyGifts->isEmpty()) {
|
|
|
|
|
+ return apiReturnFail(['web.gift.daily_first_recharge_not_exists', __('web.gift.daily_first_recharge_not_exists')]);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ $result = [];
|
|
|
|
|
+
|
|
|
|
|
+ // 遍历每条礼包配置,根据 recommend 关联 recharge_gear
|
|
|
|
|
+ foreach ($dailyGifts as $gift) {
|
|
|
|
|
+ $gear = DB::table('agent.dbo.recharge_gear')
|
|
|
|
|
+ ->select('money', 'favorable_price', 'gear', 'give')
|
|
|
|
|
+ ->where('money', $gift->recommend)
|
|
|
|
|
+ ->where('status', 1)
|
|
|
|
|
+ ->first();
|
|
|
|
|
+
|
|
|
|
|
+ if ($gear) {
|
|
|
|
|
+ $gear->gift_id = $gift->gift_id;
|
|
|
|
|
+ $gear->total_bonus = $gift->total_bonus;
|
|
|
|
|
+ $gear->bonus = $gift->total_bonus - 100;
|
|
|
|
|
+ if (!empty($gear->gear)) {
|
|
|
|
|
+ $gear->gear = Util::filterGearByDevice($gear->gear);
|
|
|
|
|
+ }
|
|
|
|
|
+ $result[] = $gear;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 按 money 排序
|
|
|
|
|
+ usort($result, function($a, $b) {
|
|
|
|
|
+ return $a->money <=> $b->money;
|
|
|
|
|
+ });
|
|
|
|
|
+
|
|
|
|
|
+ return apiReturnSuc([
|
|
|
|
|
+ 'has_recharged_today' => false,
|
|
|
|
|
+ 'list' => $result
|
|
|
|
|
+ ]);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 每日礼包(三档充值)
|
|
|
|
|
+ public function dailyGift(Request $request)
|
|
|
|
|
+ {
|
|
|
|
|
+ $user = $request->user();
|
|
|
|
|
+ $this->setUserLocale($request);
|
|
|
|
|
+
|
|
|
|
|
+ // 获取每日礼包配置 (gift_id=304),应该有3档
|
|
|
|
|
+ $dailyGifts = DB::table('agent.dbo.recharge_gift')
|
|
|
|
|
+ ->where('gift_id', 304)
|
|
|
|
|
+ ->orderBy('recommend', 'asc')
|
|
|
|
|
+ ->get();
|
|
|
|
|
+
|
|
|
|
|
+ if ($dailyGifts->isEmpty()) {
|
|
|
|
|
+ return apiReturnFail(['web.gift.daily_gift_not_exists', __('web.gift.daily_gift_not_exists')]);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if ($dailyGifts->count() > 3) {
|
|
|
|
|
+ // 如果配置超过3档,只取前3档
|
|
|
|
|
+ $dailyGifts = $dailyGifts->take(3);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 检查用户今日每档的充值状态
|
|
|
|
|
+ $todayStart = date('Y-m-d') . ' 00:00:00';
|
|
|
|
|
+ $todayEnd = date('Y-m-d') . ' 23:59:59';
|
|
|
|
|
+
|
|
|
|
|
+ $todayRecharges = DB::table('agent.dbo.order')
|
|
|
|
|
+ ->where('user_id', $user->UserID)
|
|
|
|
|
+ ->where('GiftsID', 304)
|
|
|
|
|
+ ->where('pay_status', 1)
|
|
|
|
|
+ ->where('pay_at', '>=', $todayStart)
|
|
|
|
|
+ ->where('pay_at', '<=', $todayEnd)
|
|
|
|
|
+ ->pluck('amount')
|
|
|
|
|
+ ->toArray();
|
|
|
|
|
+
|
|
|
|
|
+ $result = [];
|
|
|
|
|
+ $completedCount = 0;
|
|
|
|
|
+
|
|
|
|
|
+ // 遍历每档配置
|
|
|
|
|
+ foreach ($dailyGifts as $index => $gift) {
|
|
|
|
|
+ $gear = DB::table('agent.dbo.recharge_gear')
|
|
|
|
|
+ ->select('money', 'favorable_price', 'gear', 'give')
|
|
|
|
|
+ ->where('money', $gift->recommend)
|
|
|
|
|
+ ->where('status', 1)
|
|
|
|
|
+ ->first();
|
|
|
|
|
+
|
|
|
|
|
+ if ($gear) {
|
|
|
|
|
+ // 检查该档位今日是否已充值(使用浮点数比较,允许小数点精度差异)
|
|
|
|
|
+ $isCompleted = false;
|
|
|
|
|
+ foreach ($todayRecharges as $rechargeAmount) {
|
|
|
|
|
+ if (abs($rechargeAmount - $gift->recommend) < 0.01) {
|
|
|
|
|
+ $isCompleted = true;
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if ($isCompleted) {
|
|
|
|
|
+ $completedCount++;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ $gear->gift_id = $gift->gift_id;
|
|
|
|
|
+ $gear->total_bonus = $gift->total_bonus;
|
|
|
|
|
+ $gear->bonus = $gift->total_bonus - 100;
|
|
|
|
|
+ $gear->is_completed = $isCompleted; // 是否已完成
|
|
|
|
|
+ $gear->gear_index = $index + 1; // 档位序号(1,2,3)
|
|
|
|
|
+
|
|
|
|
|
+ if (!empty($gear->gear)) {
|
|
|
|
|
+ $gear->gear = Util::filterGearByDevice($gear->gear);
|
|
|
|
|
+ }
|
|
|
|
|
+ $result[] = $gear;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 获取额外奖励金额(从任意一档的 task_bonus 字段获取,task_bonus 是数字字段)
|
|
|
|
|
+ $taskBonus = null;
|
|
|
|
|
+ $firstGift = $dailyGifts->first();
|
|
|
|
|
+ if ($firstGift && $firstGift->task_bonus !== null) {
|
|
|
|
|
+ $taskBonus = round((float)$firstGift->task_bonus, 2);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 检查是否可以领取额外奖励(三档都完成)
|
|
|
|
|
+ $canClaimBonus = ($completedCount >= 3 && $taskBonus > 0);
|
|
|
|
|
+
|
|
|
|
|
+ // 检查是否已领取过额外奖励
|
|
|
|
|
+ $hasClaimedBonus = false;
|
|
|
|
|
+ if ($canClaimBonus) {
|
|
|
|
|
+ $redisKey = "daily_gift_bonus_claimed_{$user->UserID}_" . date('Y-m-d');
|
|
|
|
|
+ $hasClaimedBonus = Redis::exists($redisKey);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ return apiReturnSuc([
|
|
|
|
|
+ 'list' => $result,
|
|
|
|
|
+ 'completed_count' => $completedCount,
|
|
|
|
|
+ 'total_count' => count($result),
|
|
|
|
|
+ 'can_claim_bonus' => $canClaimBonus && !$hasClaimedBonus,
|
|
|
|
|
+ 'has_claimed_bonus' => $hasClaimedBonus,
|
|
|
|
|
+ 'task_bonus' => $taskBonus
|
|
|
|
|
+ ]);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 领取每日礼包三档完成后的额外奖励
|
|
|
|
|
+ public function claimDailyGiftBonus(Request $request)
|
|
|
|
|
+ {
|
|
|
|
|
+ $user = $request->user();
|
|
|
|
|
+ $userId = $user->UserID;
|
|
|
|
|
+ $this->setUserLocale($request);
|
|
|
|
|
+
|
|
|
|
|
+ // 检查三档是否都已完成
|
|
|
|
|
+ $todayStart = date('Y-m-d') . ' 00:00:00';
|
|
|
|
|
+ $todayEnd = date('Y-m-d') . ' 23:59:59';
|
|
|
|
|
+
|
|
|
|
|
+ // 获取每日礼包配置
|
|
|
|
|
+ $dailyGifts = DB::table('agent.dbo.recharge_gift')
|
|
|
|
|
+ ->where('gift_id', 304)
|
|
|
|
|
+ ->orderBy('recommend', 'asc')
|
|
|
|
|
+ ->get()
|
|
|
|
|
+ ->take(3);
|
|
|
|
|
+
|
|
|
|
|
+ if ($dailyGifts->isEmpty()) {
|
|
|
|
|
+ return apiReturnFail(['web.gift.daily_gift_not_exists', __('web.gift.daily_gift_not_exists')]);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 检查每档今日是否都已充值
|
|
|
|
|
+ $todayRecharges = DB::table('agent.dbo.order')
|
|
|
|
|
+ ->where('user_id', $userId)
|
|
|
|
|
+ ->where('GiftsID', 304)
|
|
|
|
|
+ ->where('pay_status', 1)
|
|
|
|
|
+ ->where('pay_at', '>=', $todayStart)
|
|
|
|
|
+ ->where('pay_at', '<=', $todayEnd)
|
|
|
|
|
+ ->pluck('amount')
|
|
|
|
|
+ ->toArray();
|
|
|
|
|
+
|
|
|
|
|
+ $completedCount = 0;
|
|
|
|
|
+ foreach ($dailyGifts as $gift) {
|
|
|
|
|
+ // 检查该档位是否已充值(使用浮点数比较)
|
|
|
|
|
+ $isCompleted = false;
|
|
|
|
|
+ foreach ($todayRecharges as $rechargeAmount) {
|
|
|
|
|
+ if (abs($rechargeAmount - $gift->recommend) < 0.01) {
|
|
|
|
|
+ $isCompleted = true;
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if ($isCompleted) {
|
|
|
|
|
+ $completedCount++;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if ($completedCount < 3) {
|
|
|
|
|
+ return apiReturnFail(['web.gift.three_tiers_not_completed', __('web.gift.three_tiers_not_completed')]);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 检查是否已领取过
|
|
|
|
|
+ $redisKey = "daily_gift_bonus_claimed_{$userId}_" . date('Y-m-d');
|
|
|
|
|
+ if (Redis::exists($redisKey)) {
|
|
|
|
|
+ return apiReturnFail(['web.gift.bonus_already_claimed_today', __('web.gift.bonus_already_claimed_today')]);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // 获取奖励金额(从任意一档的 task_bonus 获取,task_bonus 是数字字段)
|
|
|
|
|
+ $firstGift = $dailyGifts->first();
|
|
|
|
|
+ $rewardAmount = 0;
|
|
|
|
|
+
|
|
|
|
|
+ if ($firstGift && $firstGift->task_bonus !== null) {
|
|
|
|
|
+ $rewardAmount = round((float)$firstGift->task_bonus, 2);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if ($rewardAmount <= 0) {
|
|
|
|
|
+ return apiReturnFail(['web.gift.bonus_config_not_exists', __('web.gift.bonus_config_not_exists')]);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ try {
|
|
|
|
|
+ // 发放奖励
|
|
|
|
|
+ OuroGameService::AddScore($userId, $rewardAmount * NumConfig::NUM_VALUE, 52, true); // 52=礼包奖励
|
|
|
|
|
+
|
|
|
|
|
+ // 标记已领取
|
|
|
|
|
+ Redis::setex($redisKey, 86400, 1); // 24小时过期
|
|
|
|
|
+
|
|
|
|
|
+ \Log::info('每日礼包额外奖励领取成功', [
|
|
|
|
|
+ 'user_id' => $userId,
|
|
|
|
|
+ 'reward_amount' => $rewardAmount
|
|
|
|
|
+ ]);
|
|
|
|
|
+
|
|
|
|
|
+ return apiReturnSuc([
|
|
|
|
|
+ 'amount' => $rewardAmount,
|
|
|
|
|
+ 'message' => str_replace(':amount', $rewardAmount, __('web.gift.claim_success'))
|
|
|
|
|
+ ]);
|
|
|
|
|
+
|
|
|
|
|
+ } catch (\Exception $e) {
|
|
|
|
|
+ \Log::error('每日礼包额外奖励领取失败', [
|
|
|
|
|
+ 'user_id' => $userId,
|
|
|
|
|
+ 'error' => $e->getMessage()
|
|
|
|
|
+ ]);
|
|
|
|
|
+ return apiReturnFail(['web.gift.claim_failed', str_replace(':error', $e->getMessage(), __('web.gift.claim_failed'))]);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
public function getSecondGive(Request $request)
|
|
public function getSecondGive(Request $request)
|
|
|
{
|
|
{
|
|
|
$user = $request->user();
|
|
$user = $request->user();
|