OrderController.php 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. <?php
  2. namespace addons\DepositPresale\backend\controllers;
  3. use addons\DepositPresale\common\enums\DepositPresaleEnum;
  4. use addons\DepositPresale\common\models\DepositPresaleActive;
  5. use addons\DepositPresale\common\models\DepositPresaleActiveGoodsAttr;
  6. use addons\DepositPresale\common\models\DepositPresaleOrder;
  7. use common\enums\MarketingTypeEnum;
  8. use common\enums\OrderStatusEnum;
  9. use common\enums\PayTypeEnum;
  10. use common\enums\ShippingTypeEnum;
  11. use common\enums\StatusEnum;
  12. use common\models\goods\Goods;
  13. use common\models\order\Order;
  14. use common\models\order\OrderAction;
  15. use common\models\order\OrderExpressLog;
  16. use Yii;
  17. use yii\helpers\Json;
  18. /**
  19. * 默认控制器
  20. *
  21. * Class DefaultController
  22. * @package addons\DepositPresale\backend\controllers
  23. */
  24. class OrderController extends BaseController
  25. {
  26. public $enableCsrfValidation = false;
  27. /**
  28. * 订单详情
  29. *
  30. */
  31. public function actionDetail()
  32. {
  33. if (\Yii::$app->request->isAjax) {
  34. if (\Yii::$app->request->isGet) {
  35. //商品列表筛选
  36. $get = Yii::$app->request->get();
  37. $order_status_list = OrderStatusEnum::getMap();
  38. $payment_type_list = PayTypeEnum::getMap();
  39. $shipping_type_list = ShippingTypeEnum::getMap();
  40. $rules = [[['id'], 'required']];
  41. $res = Yii::$app->services->validate->validate($get, $rules);
  42. $where = [['mall_id' => $this->mall_id]];
  43. $where[] = ['=', 'id', $get['id']];
  44. $where[] = ['=', 'marketing_type', DepositPresaleEnum::ADDONS_NAME];
  45. $where[] = ['>=', 'status', StatusEnum::DISABLED];
  46. $with = [
  47. 'base_user',
  48. 'express',
  49. 'express_log',
  50. 'detail'
  51. ];
  52. $params = compact('where', 'with');
  53. $order = Order::getOne($where, true, $with);
  54. if ($order === false) return $this->error(Goods::getStaticError());
  55. $express_log = [];
  56. if($order['express_log']){
  57. foreach ($order['express_log'] as $item){
  58. $item['status'] = OrderExpressLog::statusMap[$item['status']];
  59. $express_log[$item['order_express_id']] = $item;
  60. }
  61. }
  62. if (!empty($order['express'])) {
  63. foreach ($order['express'] as &$key){
  64. if(isset($express_log[$key['id']])){
  65. $express_list = Json::decode($express_log[$key['id']]['list']);
  66. $key['now_state'] = $express_log[$key['id']]['status'];
  67. $key['express_log'] = is_null($express_list)?'':array_reverse($express_list['Traces']);
  68. }
  69. }
  70. }
  71. if (!empty($order['detail'])) {
  72. foreach ($order['detail'] as &$detail) {
  73. if (!empty($detail['attr_groups_format'])) {
  74. $attr_groups_format = json_decode($detail['attr_groups_format'], true);
  75. $attr_list = $attr_groups_format[$detail['sign_id']];
  76. $attr_group_name_list = array_column($attr_list, 'attr_group_name');
  77. $attr_name_list = array_column($attr_list, 'attr_name');
  78. $detail['attr_list'] = [];
  79. foreach ($attr_group_name_list as $index => $attr_group_name) {
  80. $detail['attr_list'][] = $attr_group_name . ':' . $attr_name_list[$index];
  81. }
  82. }
  83. }
  84. }
  85. $presale_order = DepositPresaleOrder::findOne(['order_id' => $order['id'], 'status' => 1]);
  86. $order['deposit_start_at'] = $presale_order->depositPresaleActive ? date('Y-m-d', $presale_order->depositPresaleActive->deposit_start_at) : '';
  87. $order['deposit_end_at'] = $presale_order->depositPresaleActive ? date('Y-m-d', $presale_order->depositPresaleActive->deposit_end_at) : '';
  88. $order['final_payment_start_at'] = $presale_order->depositPresaleActive ? date('Y-m-d', $presale_order->depositPresaleActive->final_payment_start_at) : '';
  89. $order['final_payment_end_at'] =$presale_order->depositPresaleActive ? date('Y-m-d', $presale_order->depositPresaleActive->final_payment_end_at) : '';
  90. $order['presale_order_status'] = $presale_order->order_status;
  91. $order['deposite_pay_time'] = $presale_order->pay_time;
  92. $order['final_payment_time'] = $presale_order->final_payment_time;
  93. $order['actual_deposit_paid'] = $presale_order->actual_deposit_paid;
  94. $all_need_pay = bcmul($presale_order->deposit_presale_price, $presale_order->num, 2) ;
  95. $order['final_payment'] = bcsub($all_need_pay, $order['actual_deposit_paid'] , 2);
  96. $step_arr = DepositPresaleEnum::setpArrMap();
  97. $order_action = OrderAction::getOrderAction([['order_id' => $get['id']]]);
  98. $marketing_type_map = MarketingTypeEnum::getMap();
  99. $order['new_order_status'] = DepositPresaleOrder::getOrderStatus($order, $presale_order);
  100. return $this->success('操作成功', compact('order', 'order_status_list', 'payment_type_list', 'shipping_type_list', 'step_arr', 'order_action','marketing_type_map'));
  101. }
  102. }
  103. return $this->render($this->action->id);
  104. }
  105. }