6
0
Fork 0
release
李静 2022-01-05 15:19:07 +08:00
parent e24d907fa5
commit 683b3a5e7e
2 changed files with 21 additions and 18 deletions

View File

@ -27,7 +27,6 @@ use App\Services\WalletService;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Arr; use Illuminate\Support\Arr;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Validation\Rule;
use Throwable; use Throwable;
class WalletController extends Controller class WalletController extends Controller
@ -109,8 +108,10 @@ class WalletController extends Controller
{ {
$validated = $request->validate([ $validated = $request->validate([
'pay_sn' => ['bail', 'required'], 'pay_sn' => ['bail', 'required'],
'pay_way' => ['bail', 'required', Rule::in([PayLog::PAY_WAY_WALLET, PayLog::PAY_WAY_BALANCE])],
'pay_password' => ['bail', 'required'], 'pay_password' => ['bail', 'required'],
], [], [
'pay_sn' => '支付流水号',
'pay_password' => '支付密码',
]); ]);
$user = $request->user(); $user = $request->user();
@ -119,31 +120,30 @@ class WalletController extends Controller
throw new PayPasswordIncorrectException(); throw new PayPasswordIncorrectException();
} }
switch ($validated['pay_way']) {
case PayLog::PAY_WAY_WALLET:
if ($user->wallet->is_frozen) {
throw new WalletFrozenException();
}
break;
case PayLog::PAY_WAY_BALANCE:
if ($user->balance->is_frozen) {
throw new BalanceFrozenException();
}
break;
}
try { try {
DB::transaction(function () use ($user, $validated) { DB::transaction(function () use ($user, $validated) {
$payLog = PayLog::where('pay_sn', $validated['pay_sn']) $payLog = PayLog::where('pay_sn', $validated['pay_sn'])
->where('pay_way', $validated['pay_way'])
->lockForUpdate() ->lockForUpdate()
->first(); ->first();
if ($payLog === null) { if ($payLog === null || !in_array($payLog->pay_way, [PayLog::PAY_WAY_WALLET, PayLog::PAY_WAY_BALANCE])) {
throw new InvalidPaySerialNumberException(); throw new InvalidPaySerialNumberException();
} }
switch ($payLog->pay_way) {
case PayLog::PAY_WAY_WALLET:
if ($user->wallet->is_frozen) {
throw new WalletFrozenException();
}
break;
case PayLog::PAY_WAY_BALANCE:
if ($user->balance->is_frozen) {
throw new BalanceFrozenException();
}
break;
}
$payable = $payLog->payable; $payable = $payLog->payable;
if ($payable instanceof Order) { if ($payable instanceof Order) {

View File

@ -19,6 +19,9 @@ class WalletPasswordController extends Controller
$input = $request->validate([ $input = $request->validate([
'old_password' => ['bail', 'filled', 'string', 'size:6'], 'old_password' => ['bail', 'filled', 'string', 'size:6'],
'new_password' => ['bail', 'required', 'string', 'size:6'], 'new_password' => ['bail', 'required', 'string', 'size:6'],
], [], [
'old_password' => '旧密码',
'new_password' => '新密码',
]); ]);
$wallet = $request->user()->wallet; $wallet = $request->user()->wallet;