<?php
namespace app\api\controller\sharp;
use app\api\controller\Controller;
use app\api\model\sharp\Setting as SettingModel;
use app\api\service\order\Checkout as CheckoutModel;
use app\api\service\sharp\Active as ActiveService;
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([
'active_time_id' => 0,
'sharp_goods_id' => 0,
'goods_sku_id' => '',
'goods_num' => 0,
]));
$service = new ActiveService;
$goodsList = $service->getCheckoutGoodsList(
$params['active_time_id'],
$params['sharp_goods_id'],
$params['goods_sku_id'],
$params['goods_num']
);
if ($goodsList === false) {
return $this->renderError($service->getError());
}
$Checkout->setOrderSource([
'source' => OrderSourceEnum::SHARP,
'source_id' => $params['active_time_id'],
])
->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() ?: '订单创建失败');
}
$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());
}
}