Order.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <?php
  2. namespace app\shop\controller\order;
  3. use app\shop\controller\Controller;
  4. use app\shop\model\order\Order as OrderModel;
  5. use app\common\enum\settings\DeliveryTypeEnum;
  6. use app\shop\model\settings\Express as ExpressModel;
  7. use app\shop\model\store\Clerk as ShopClerkModel;
  8. /**
  9. * 订单控制器
  10. */
  11. class Order extends Controller
  12. {
  13. /**
  14. * 订单列表
  15. */
  16. public function index($dataType = 'all')
  17. {
  18. // 订单列表
  19. $model = new OrderModel();
  20. $list = $model->getList($dataType, $this->postData());
  21. $order_count = [
  22. 'order_count' => [
  23. 'payment' => $model->getCount('payment'),
  24. 'delivery' => $model->getCount('delivery'),
  25. 'received' => $model->getCount('received'),
  26. 'cancel' => $model->getCount('cancel'),
  27. ],];
  28. $ex_style = DeliveryTypeEnum::data();
  29. return $this->renderSuccess('', compact('list', 'ex_style', 'order_count'));
  30. }
  31. /**
  32. * 订单详情
  33. */
  34. public function detail($order_id)
  35. {
  36. // 订单详情
  37. $detail = OrderModel::detail($order_id);
  38. if (isset($detail['pay_time']) && $detail['pay_time'] != '') {
  39. $detail['pay_time'] = date('Y-m-d H:i:s', $detail['pay_time']);
  40. }
  41. if (isset($detail['delivery_time']) && $detail['delivery_time'] != '') {
  42. $detail['delivery_time'] = date('Y-m-d H:i:s', $detail['delivery_time']);
  43. }
  44. $detail['buy_remark'] = json_decode($detail['buy_remark'],1);
  45. // 物流公司列表
  46. $model = new ExpressModel();
  47. $expressList = $model->getAll();
  48. // 门店店员列表
  49. $shopClerkList = (new ShopClerkModel)->getAll(true);
  50. return $this->renderSuccess('', compact('detail', 'expressList', 'shopClerkList'));
  51. }
  52. /**
  53. * 确认发货
  54. */
  55. public function delivery($order_id)
  56. {
  57. $model = OrderModel::detail($order_id);
  58. if ($model->delivery($this->postData('param'))) {
  59. return $this->renderSuccess('发货成功');
  60. }
  61. return $this->renderError('发货失败');
  62. }
  63. /**
  64. * 修改订单价格
  65. */
  66. public function updatePrice($order_id)
  67. {
  68. $model = OrderModel::detail($order_id);
  69. if ($model->updatePrice($this->postData('order'))) {
  70. return $this->renderSuccess('修改成功');
  71. }
  72. return $this->renderError($model->getError() ?: '修改失败');
  73. }
  74. /**
  75. * 获取物流信息
  76. */
  77. public function express($order_id)
  78. {
  79. // 订单信息
  80. $order = OrderModel::detail($order_id);
  81. if (!$order['express_no']) {
  82. return $this->renderError('没有物流信息');
  83. }
  84. // 获取物流信息
  85. $model = $order['express'];
  86. $express = $model->dynamic($model['express_name'], $model['express_code'], $order['express_no']);
  87. if ($express === false) {
  88. return $this->renderError($model->getError());
  89. }
  90. return $this->renderSuccess('', compact('express'));
  91. }
  92. /**
  93. * 订单改地址
  94. */
  95. public function updateAddress($order_id)
  96. {
  97. // 订单信息
  98. $order = OrderModel::detail($order_id);
  99. if ($order['delivery_type']==10&&$order['delivery_status']==20) {
  100. return $this->renderError('订单已发货不允许修改');
  101. }
  102. // 获取物流信息
  103. $model = $order['address'];
  104. if (!$model->updateAddress($this->postData())) {
  105. return $this->renderError($model->getError());
  106. }
  107. return $this->renderSuccess('', compact('express'));
  108. }
  109. }