Order.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  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\shop\model\store\Store as StoreModel;
  6. use app\common\enum\settings\DeliveryTypeEnum;
  7. use app\shop\model\settings\Express as ExpressModel;
  8. use app\shop\model\store\Clerk as ShopClerkModel;
  9. use app\common\model\order\OrderAddress;
  10. use app\common\model\settings\Region as RegionModel;
  11. use think\facade\Validate;
  12. /**
  13. * 订单控制器
  14. */
  15. class Order extends Controller
  16. {
  17. /**
  18. * 订单列表
  19. */
  20. public function index($dataType = 'all')
  21. {
  22. // 订单列表
  23. $model = new OrderModel();
  24. $list = $model->getList($dataType, $this->postData());
  25. $order_count = [
  26. 'order_count' => [
  27. 'payment' => $model->getCount('payment', $this->postData()),
  28. 'delivery' => $model->getCount('delivery', $this->postData()),
  29. 'received' => $model->getCount('received', $this->postData()),
  30. 'cancel' => $model->getCount('cancel', $this->postData()),
  31. ],];
  32. // 自提门店列表
  33. $shop_list = StoreModel::getAllList();
  34. $ex_style = DeliveryTypeEnum::data();
  35. return $this->renderSuccess('', compact('list', 'ex_style', 'shop_list', 'order_count'));
  36. }
  37. /**
  38. * 订单详情
  39. */
  40. public function detail($order_id)
  41. {
  42. // 订单详情
  43. $detail = OrderModel::detail($order_id);
  44. if (isset($detail['pay_time']) && $detail['pay_time'] != '') {
  45. $detail['pay_time'] = date('Y-m-d H:i:s', $detail['pay_time']);
  46. }
  47. if (isset($detail['delivery_time']) && $detail['delivery_time'] != '') {
  48. $detail['delivery_time'] = date('Y-m-d H:i:s', $detail['delivery_time']);
  49. }
  50. // 物流公司列表
  51. $model = new ExpressModel();
  52. $expressList = $model->getAll();
  53. // 门店店员列表
  54. $shopClerkList = (new ShopClerkModel)->getClerk($detail['extract_store_id']);
  55. return $this->renderSuccess('', compact('detail', 'expressList', 'shopClerkList'));
  56. }
  57. /**
  58. * 确认发货
  59. */
  60. public function delivery($order_id)
  61. {
  62. $model = OrderModel::detail($order_id);
  63. if ($model->delivery($this->postData('param'))) {
  64. return $this->renderSuccess('发货成功');
  65. }
  66. return $this->renderError('发货失败');
  67. }
  68. /**
  69. * 修改订单价格
  70. */
  71. public function updatePrice($order_id)
  72. {
  73. $model = OrderModel::detail($order_id);
  74. if ($model->updatePrice($this->postData('order'))) {
  75. return $this->renderSuccess('修改成功');
  76. }
  77. return $this->renderError($model->getError() ?: '修改失败');
  78. }
  79. /**
  80. * 取消订单
  81. */
  82. public function orderCancel($order_no)
  83. {
  84. // 订单信息
  85. $model = OrderModel::detail(['order_no' => $order_no]);
  86. if ($model->orderCancel($this->postData())) {
  87. return $this->renderSuccess('操作成功');
  88. }
  89. return $this->renderError($model->getError() ?: '操作失败');
  90. }
  91. /**
  92. * 虚拟商品发货
  93. */
  94. public function virtual($order_id)
  95. {
  96. // 订单信息
  97. $model = OrderModel::detail($order_id);
  98. if ($model->virtual($this->postData())) {
  99. return $this->renderSuccess('操作成功');
  100. }
  101. return $this->renderError($model->getError() ?: '操作失败');
  102. }
  103. /**
  104. * 获取收货地址
  105. */
  106. public function orderaddress($order_id)
  107. {
  108. $order = (new OrderAddress)->where('order_id',$order_id)->find();
  109. $regionData = RegionModel::getCacheTree();
  110. return $this->renderSuccess('', compact('order','regionData'));
  111. }
  112. /**
  113. * 修改收货地址
  114. */
  115. public function addressedit()
  116. {
  117. $data = $this->postData();
  118. if (empty($data['name']) || empty($data['phone']) ||empty($data['detail']) ||empty($data['province_id'])||empty($data['city_id']) ||empty($data['region_id']) ) {
  119. return $this->renderError('请补全收货地址信息');
  120. }
  121. if (!Validate::regex($data['phone'], "/^1[3456789]{1}\d{9}$/")) {
  122. return $this->renderError('手机号格式不正确');
  123. }
  124. $vall = [
  125. 'name' => $data['name'],
  126. 'phone' => $data['phone'],
  127. 'detail' => $data['detail'],
  128. 'province_id'=> $data['province_id'],
  129. 'city_id' => $data['city_id'],
  130. 'region_id' => $data['region_id'],
  131. ];
  132. (new OrderAddress)->where('order_address_id',$data['order_address_id'])->update($vall);
  133. return $this->renderSuccess('操作成功');
  134. }
  135. }