middleware('checkUserPermission'); $this->service = $service; } /** * 列表 * @param Request $request * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Prettus\Repository\Exceptions\RepositoryException */ public function index(Request $request) { $this->validateData($request, ['user_id' => 'required|integer']); $lists = $this->service->handleList($request); return $this->response->success($lists); } /** * 新增 * @param Request $request * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function store(Request $request) { $data = $this->validateData($request, [ 'address_id' => 'required|integer', 'nums' => 'required|integer', 'jifen' => 'required|integer', 'goods.*.id' => 'required|integer', 'goods.*.nums' => 'required|integer', 'goods.*.jifen' => 'required|integer', ], [ 'address_id' => '收件人地址', 'nums' => '商品总数量', 'jifen' => '商品总积分', 'goods.*.id' => '商品 id', 'goods.*.nums' => '商品数量', 'goods.*.jifen' => '商品消耗积分', ]); $data['goods'] = $request->get('goods'); $data['user_id'] = login_user_id(); $this->isRepeat('shopOrderStore', $data, 3); $model = $this->service->handleStore($data); return $this->response->created($model, '创建成功'); } /** * 详情 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource */ public function show(Request $request) { $this->validate($request, ['id' => 'required|integer']); $model = $this->service->handleProfile($request->get('id')); return $this->response->success($model); } /** * 更新地址 * @param Request $request * * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Prettus\Validator\Exceptions\ValidatorException */ public function updateAddress(Request $request) { $data = $this->validateData($request, [ 'id' => 'required|integer', 'address_id' => 'required|integer', ], [ 'id' => '订单 id', 'address_id' => '地址 id', ]); $this->service->handleUpdateAddress($data); return $this->response->ok('修改成功'); } /** * 作废订单 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * @throws \Illuminate\Validation\ValidationException */ public function closeOrder(Request $request) { $data = $this->validateData($request, [ 'id' => 'required|integer', 'close_order_reason' => 'required|string', ], [ 'id' => '订单 id', 'close_order_reason' => '作废原因', ]); $this->isRepeat('shopOrder:closeOrder', ['id' => $data['id']], 3); $this->service->handleCloseOrder($data['id'], $data['close_order_reason']); return $this->response->ok('作废成功'); } /** * 查询快递 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource */ public function express(Request $request) { $data = $this->validateData($request, [ 'id' => 'required|integer', ], [ 'id' => '订单 id', ]); $order = ShopOrder::query()->where('id', $data['id'])->where('user_id', login_user_id())->select(['id', 'status', 'wuliu_no', 'wuliu_type'])->first(); if (!$order) abort(ResponseCodeEnum::SERVICE_OPERATION_ERROR, '找不到该订单'); $data = false; $isOk = false; try { if (in_array($order->status, [ShopOrderStatusEnum::wait_shou, ShopOrderStatusEnum::complete])) { $code = Express::nameToCode($order['wuliu_type']); if ($code) { $data = (new Express())->search($order['wuliu_no'], $code); if (array_key_exists('Traces', $data)) { if ((int)$data['State'] === (int)3) { //签收完成 $order->status = ShopOrderStatusEnum::complete; $order->save(); } $isOk = true; } } } if (!$isOk) { $data['State'] = false; } } catch (\Exception $exception) { $this->exception($exception, '获取物流信息失败'); } return $this->response->success($data); } }