| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- <?php
- namespace addons\DepositPresale\backend\controllers;
- use addons\DepositPresale\common\enums\DepositPresaleEnum;
- use addons\DepositPresale\common\models\DepositPresaleActive;
- use addons\DepositPresale\common\models\DepositPresaleActiveGoodsAttr;
- use addons\DepositPresale\common\models\DepositPresaleOrder;
- use common\enums\MarketingTypeEnum;
- use common\enums\OrderStatusEnum;
- use common\enums\PayTypeEnum;
- use common\enums\ShippingTypeEnum;
- use common\enums\StatusEnum;
- use common\models\goods\Goods;
- use common\models\order\Order;
- use common\models\order\OrderAction;
- use common\models\order\OrderExpressLog;
- use Yii;
- use yii\helpers\Json;
- /**
- * 默认控制器
- *
- * Class DefaultController
- * @package addons\DepositPresale\backend\controllers
- */
- class OrderController extends BaseController
- {
- public $enableCsrfValidation = false;
- /**
- * 订单详情
- *
- */
- public function actionDetail()
- {
- if (\Yii::$app->request->isAjax) {
- if (\Yii::$app->request->isGet) {
- //商品列表筛选
- $get = Yii::$app->request->get();
- $order_status_list = OrderStatusEnum::getMap();
- $payment_type_list = PayTypeEnum::getMap();
- $shipping_type_list = ShippingTypeEnum::getMap();
- $rules = [[['id'], 'required']];
- $res = Yii::$app->services->validate->validate($get, $rules);
- $where = [['mall_id' => $this->mall_id]];
- $where[] = ['=', 'id', $get['id']];
- $where[] = ['=', 'marketing_type', DepositPresaleEnum::ADDONS_NAME];
- $where[] = ['>=', 'status', StatusEnum::DISABLED];
- $with = [
- 'base_user',
- 'express',
- 'express_log',
- 'detail'
- ];
- $params = compact('where', 'with');
- $order = Order::getOne($where, true, $with);
- if ($order === false) return $this->error(Goods::getStaticError());
- $express_log = [];
-
- if($order['express_log']){
- foreach ($order['express_log'] as $item){
- $item['status'] = OrderExpressLog::statusMap[$item['status']];
- $express_log[$item['order_express_id']] = $item;
- }
- }
- if (!empty($order['express'])) {
- foreach ($order['express'] as &$key){
- if(isset($express_log[$key['id']])){
- $express_list = Json::decode($express_log[$key['id']]['list']);
- $key['now_state'] = $express_log[$key['id']]['status'];
- $key['express_log'] = is_null($express_list)?'':array_reverse($express_list['Traces']);
- }
- }
- }
- if (!empty($order['detail'])) {
- foreach ($order['detail'] as &$detail) {
- if (!empty($detail['attr_groups_format'])) {
- $attr_groups_format = json_decode($detail['attr_groups_format'], true);
- $attr_list = $attr_groups_format[$detail['sign_id']];
- $attr_group_name_list = array_column($attr_list, 'attr_group_name');
- $attr_name_list = array_column($attr_list, 'attr_name');
- $detail['attr_list'] = [];
- foreach ($attr_group_name_list as $index => $attr_group_name) {
- $detail['attr_list'][] = $attr_group_name . ':' . $attr_name_list[$index];
- }
- }
- }
- }
- $presale_order = DepositPresaleOrder::findOne(['order_id' => $order['id'], 'status' => 1]);
- $order['deposit_start_at'] = $presale_order->depositPresaleActive ? date('Y-m-d', $presale_order->depositPresaleActive->deposit_start_at) : '';
- $order['deposit_end_at'] = $presale_order->depositPresaleActive ? date('Y-m-d', $presale_order->depositPresaleActive->deposit_end_at) : '';
- $order['final_payment_start_at'] = $presale_order->depositPresaleActive ? date('Y-m-d', $presale_order->depositPresaleActive->final_payment_start_at) : '';
- $order['final_payment_end_at'] =$presale_order->depositPresaleActive ? date('Y-m-d', $presale_order->depositPresaleActive->final_payment_end_at) : '';
- $order['presale_order_status'] = $presale_order->order_status;
- $order['deposite_pay_time'] = $presale_order->pay_time;
- $order['final_payment_time'] = $presale_order->final_payment_time;
- $order['actual_deposit_paid'] = $presale_order->actual_deposit_paid;
- $all_need_pay = bcmul($presale_order->deposit_presale_price, $presale_order->num, 2) ;
- $order['final_payment'] = bcsub($all_need_pay, $order['actual_deposit_paid'] , 2);
- $step_arr = DepositPresaleEnum::setpArrMap();
- $order_action = OrderAction::getOrderAction([['order_id' => $get['id']]]);
- $marketing_type_map = MarketingTypeEnum::getMap();
- $order['new_order_status'] = DepositPresaleOrder::getOrderStatus($order, $presale_order);
- return $this->success('操作成功', compact('order', 'order_status_list', 'payment_type_list', 'shipping_type_list', 'step_arr', 'order_action','marketing_type_map'));
- }
- }
- return $this->render($this->action->id);
- }
- }
|