1
0
mirror of https://gitee.com/koogua/course-tencent-cloud.git synced 2025-06-24 20:06:09 +08:00
2020-03-16 15:33:36 +08:00

63 lines
1.4 KiB
PHP

<?php
namespace App\Validators;
use App\Exceptions\BadRequest as BadRequestException;
use App\Models\Refund as RefundModel;
use App\Models\Trade as TradeModel;
use App\Repos\Trade as TradeRepo;
class Trade extends Validator
{
public function checkTrade($id)
{
$tradeRepo = new TradeRepo();
$trade = $tradeRepo->findById($id);
if (!$trade) {
throw new BadRequestException('trade.not_found');
}
return $trade;
}
public function checkChannel($channel)
{
$list = TradeModel::channelTypes();
if (!isset($list[$channel])) {
throw new BadRequestException('trade.invalid_channel');
}
}
public function checkIfAllowClose($trade)
{
if ($trade->status != TradeModel::STATUS_PENDING) {
throw new BadRequestException('trade.close_not_allowed');
}
}
public function checkIfAllowRefund($trade)
{
if ($trade->status != TradeModel::STATUS_FINISHED) {
throw new BadRequestException('trade.refund_not_allowed');
}
$tradeRepo = new TradeRepo();
$refund = $tradeRepo->findLastRefund($trade->id);
$scopes = [
RefundModel::STATUS_PENDING,
RefundModel::STATUS_APPROVED,
];
if ($refund && in_array($refund->status, $scopes)) {
throw new BadRequestException('trade.refund_existed');
}
}
}