123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- <?php
- namespace App\Services\OrderService;
- use App\Http\Home\OrderService\EavSetService;
- use App\Http\Home\OrderService\MaterialService;
- use App\Jobs\SendMessage;
- use Illuminate\Support\Facades\Request;
- class OrderBase
- {
- public $userId;
- public function __construct($userId)
- {
- $this->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, '非法操作!');
- }
- }
- }
|