request = $request; $this->orderService = $orderService; $this->account = $request->user('company'); } /** * 订单列表 */ public function paginate(Dicts $dicts) { $conditions = $this->request->all(); $conditions['company_id'] = $this->account->company_id; $conditions['source'] = 0; $conditions['type'] = 0; $res = $this->orderService->paginate($conditions); $carrierOperators = $dicts->get('carrier_operator'); $orderStatues = $dicts->get('order_status'); $transactionStatuses = $dicts->get('transaction_status'); $res->transform(function ($item) use ($carrierOperators, $orderStatues, $transactionStatuses) { return [ 'id' => $item->id, 'sn' => $item->sn, 'package_name' => $item->package->name, 'pay_channel' => CommonService::namePayChannel($item->pay_channel), 'carrier_operator' => $carrierOperators[$item->package->carrier_operator], 'unit_price' => $item->unit_price, 'counts' => $item->counts, 'total_price' => $item->total_price, 'custom_price' => $item->custom_price, 'order_status' => $item->order_status, 'order_status_name' => $orderStatues[$item->order_status], 'transaction_status' => $item->transaction_status, 'transaction_status_name' => $transactionStatuses[$item->transaction_status], 'order_at' => (string)$item->order_at, ]; }); if (empty($res)) { return err('没有更多数据'); } if ($last = $res->last()) { $order_at = Carbon::parse($last['order_at']); $conditions['starttime'] = $order_at->copy()->startOfMonth()->startOfDay()->format('Y-m-d H:i:s'); $conditions['endtime'] = $order_at->copy()->endOfMonth()->endOfDay()->format('Y-m-d H:i:s'); } $count = $this->orderService->count($conditions); $count['starttime'] = $conditions['starttime']; $count['endtime'] = $conditions['endtime']; return res(['count' => $count, 'orders' => $res], '订单列表', 201); } /** * 订单详情 */ public function show(Dicts $dicts, $id) { if (!$order = app(OrderRepository::class)->find($id)) { throw new NotExistException('订单不存在或已删除'); } $carrierOperators = $dicts->get('carrier_operator'); $orderStatues = $dicts->get('order_status'); $transactionStatuses = $dicts->get('company_transaction_status'); $order->package = app(PackageService::class)->load($order->package_id); $order->pay_channel = CommonService::namePayChannel($order->pay_channel); $order->carrier_operator = $carrierOperators[$order->package->carrier_operator]; $order->order_status = $order->order_status; $order->order_status_name = $orderStatues[$order->order_status]; $order->transaction_status = $order->transaction_status; $order->transaction_status_name = $transactionStatuses[$order->transaction_status]; $order->unit_price = sprintf('%.02f', $order->unit_price/100); $order->total_price = sprintf('%.02f', $order->total_price/100); $order->custom_price = sprintf('%.02f', $order->custom_price/100); $order->extends = [ 'cancel_remark' => $order->extends['cancel_remark'] ?? '', 'refund_channel' => $order->extends['refund_channel'] ?? '', 'refund_account' => $order->extends['refund_account'] ?? '', 'refund_remark' => $order->extends['refund_remark'] ?? '', ]; return res($order, '订单详情', 201); } /** * 下单 */ public function store() { $attributes = $this->request->all(); $attributes['company_id'] = $this->account->company_id; $attributes['source'] = 0; $res = $this->orderService->store($attributes); return res($res, '下单成功'); } /** * 取消订单 */ public function cancel() { $ids = $this->request->ids(); foreach ($ids as $id) { $res = $this->orderService->cancel($id); } return res(true, '取消成功'); } /** * 确认收货 */ public function received() { $ids = $this->request->ids(); foreach ($ids as $id) { $res = $this->orderService->received($id); } return res(true, '修改成功'); } }