<?php
namespace app\api\controller\bargain;
use app\api\controller\Controller;
use app\api\model\bargain\Task as TaskModel;
use app\api\model\bargain\Setting as SettingModel;
use app\api\service\order\Checkout as CheckoutModel;
use app\common\enum\order\OrderSource as OrderSourceEnum;
class Order extends Controller
{
private $user;
public function _initialize()
{
parent::_initialize();
$this->user = $this->getUser();
}
public function checkout()
{
$Checkout = new CheckoutModel;
$params = $Checkout->setParam($this->getParam([
'task_id' => 0
]));
$task = TaskModel::detail($params['task_id']);
$goodsList = $task->getTaskGoods($params['task_id']);
if ($goodsList === false) {
return $this->renderError($task->getError());
}
$Checkout->setOrderSource([
'source' => OrderSourceEnum::BARGAIN,
'source_id' => $params['task_id'],
]);
$Checkout->setCheckoutRule([
'is_user_grade' => false,
'is_coupon' => false,
'is_use_points' => false,
'is_dealer' => SettingModel::getIsDealer(),
]);
$orderInfo = $Checkout->onCheckout($this->user, $goodsList);
if ($this->request->isGet()) {
return $this->renderSuccess($orderInfo);
}
if ($Checkout->hasError()) {
return $this->renderError($Checkout->getError());
}
if (!$Checkout->createOrder($orderInfo)) {
return $this->renderError($Checkout->getError() ?: '订单创建失败');
}
$task->setTaskEnd();
$payment = $Checkout->onOrderPayment();
$message = ['success' => '支付成功', 'error' => '订单未支付'];
return $this->renderSuccess([
'order_id' => $Checkout->model['order_id'], 'pay_type' => $params['pay_type'], 'payment' => $payment ], $message);
}
private function getParam($define = [])
{
return array_merge($define, $this->request->param());
}
}