userId = $userId; } ##################################################################################################### ##### 退款 ######################################################################################### ##################################################################################################### /** * 申请退款 */ public function setApplyRefund() { $requestData = Request::all(); $product_type = $requestData['product_type'] ?? ''; $product_mid = $requestData['product_id'] ?? ''; $order_no = $requestData['order_no'] ?? ''; $desc = $requestData['desc'] ?? ''; //退款原因 $images = $requestData['images'] ?? ''; //退款图片 if (empty($order_no)) { return responseMessage(2001, '参数错误!'); } if (empty($product_type) || $product_type <= 0 || $product_type > 3) { return responseMessage(2002, '非法提交,type参数错误!'); } if (empty($desc)) { return responseMessage(2003, '请输入退款原因!'); } if (empty($product_mid)) { return responseMessage(2004, '请选择需要退款退货的产品'); } //判断该产品是否存在 if ($product_type == 1) { $alias = $this->setAliasCommerceRefund; $aliasOrder = $this->setAliasCommerceOrder; $aliasOrderProduct = $this->setAliasCommerceOrderProduct; $refund_no = 'TC' . createNewOrderNo(); // 退款单号 } elseif ($product_type == 2) { $alias = $this->setAliasTostoreRefund; $aliasOrder = $this->setAliasTostoreOrder; $aliasOrderProduct = $this->setAliasTostoreOrderProduct; $refund_no = 'TS' . createNewOrderNo(); // 退款单号 } elseif ($product_type == 3) { $alias = $this->setAliasTakeoutRefund; $aliasOrder = $this->setAliasTakeoutOrder; $aliasOrderProduct = $this->setAliasTakeoutOrderProduct; $refund_no = 'TO' . createNewOrderNo(); // 退款单号 } else { return responseMessage(2014, '参数错误,产品类型不存在!'); } //判断该订单是否存在 $orderService = new MaterialService(new EavSetService($aliasOrder)); $orderInfo = $orderService->elasticClientService()->queryOne(['order_no' => $order_no, 'store_id' => $this->storeId, 'member_id' => $this->userId]); if (empty($orderInfo)) { return responseMessage(2005, '该订单不存在,或已删除!'); } if ($orderInfo['order_status'] != 2 && $orderInfo['order_status'] != 3) { return responseMessage(2005, '该订单状态不正确,不允许退款!'); } // 获取需要退款的产品信息 $orderProductService = new MaterialService(new EavSetService($aliasOrderProduct)); $productInfo = $orderProductService->elasticClientService()->queryOne(['order_id' => $orderInfo['id'], 'mid' => $product_mid]); if (empty($productInfo)) { return responseMessage(2006, '该产品不存在,请重试!'); } // 保存售后信息 // status 1 退款申请中 2 拒绝退款 3 退款完成 4 取消退款 5 退款中 $refundService = new MaterialService(new EavSetService($alias)); $is_success = $refundService->addProduct([ 'refund_no' => $refund_no, // 退款单号 'order_id' => $orderInfo['id'], 'member_id' => $this->userId, 'store_id' => $this->storeId, 'refund_reason' => $desc, 'refund_images' => $images, 'refund_price' => $productInfo['appot_prefe_price'], // 优惠平台之后的价格 'product_id' => $productInfo['id'], 'status' => 1, ]); if ($is_success) { // 更新总订单的状态 if ($orderInfo['order_status'] == 2) { $orderService->update($orderInfo['id'], ['order_status' => 6]); } elseif ($orderInfo['order_status'] == 3) { $orderService->update($orderInfo['id'], ['order_status' => 7]); } // 设置订单产品的退款状态 $orderProductService->update($productInfo['id'], ['status' => 1, 'refund_id' => $is_success]); // 消息通知 dispatch(new SendMessage($this->storeId, 'REFUND_APPLY', [ 'orderNo' => $orderInfo['order_no'] ], $this->userId)); return responseMessage(1001, '操作成功'); } else { return responseMessage(2007, '操作失败,请重试!'); } } /** * 取消退款 */ public function setCancelRefund() { $requestData = Request::all(); $product_type = $requestData['product_type'] ?? ''; $refund_mid = $requestData['mid'] ?? ''; if (empty($refund_mid)) { return responseMessage(2001, '参数错误!'); } if (empty($product_type) || $product_type <= 0 || $product_type > 3) { return responseMessage(2002, '非法提交,type参数错误!'); } //判断该产品是否存在 if ($product_type == 1) { $alias = $this->setAliasCommerceRefund; $aliasOrder = $this->setAliasCommerceOrder; $aliasOrderProduct = $this->setAliasCommerceOrderProduct; } elseif ($product_type == 2) { $alias = $this->setAliasTostoreRefund; $aliasOrder = $this->setAliasTostoreOrder; $aliasOrderProduct = $this->setAliasTostoreOrderProduct; } elseif ($product_type == 3) { $alias = $this->setAliasTakeoutRefund; $aliasOrder = $this->setAliasTakeoutOrder; $aliasOrderProduct = $this->setAliasTakeoutOrderProduct; } else { return responseMessage(2004, '非法提交!'); } $refundService = new MaterialService(new EavSetService($alias)); $refundInfo = $refundService->elasticClientService()->queryOne(['mid' => $refund_mid, 'member_id' => $this->userId]); if (empty($refundInfo)) { return responseMessage(2005, '退款订单不存在,请重试!'); } // status 1 退款申请中 2 拒绝退款 3 退款完成 4 取消退款 if ($refundInfo['status'] == 1) { $is_success = $refundService->update($refundInfo['id'], ['status' => 4]); if ($is_success) { //更新总订单 $orderService = new MaterialService(new EavSetService($aliasOrder)); $orderInfo = $orderService->elasticClientService()->getInfo($refundInfo['order_id']); if ($orderInfo) { if ($orderInfo['order_status'] == 6) { // 已支付 未发货 $orderService->update($orderInfo['id'], ['order_status' => 2]); } elseif ($orderInfo['order_status'] == 7) { // 已支付 已发货 $orderService->update($orderInfo['id'], ['order_status' => 3]); } } // 更新订单产品 $orderProductService = new MaterialService(new EavSetService($aliasOrderProduct)); $orderProductService->update($refundInfo['product_id'], ['status' => 0]); return responseMessage(1001, '操作成功!'); } else { return responseMessage(2007, '操作失败,请重试!'); } } else { return responseMessage(2006, '非法操作!'); } } }