瀏覽代碼

售后问题

shish 3 年之前
父節點
當前提交
2b8c1c9534

+ 13 - 2
app-ghs/controllers/RefundController.php

@@ -3,6 +3,7 @@
 namespace ghs\controllers;
 
 use bizGhs\order\classes\RefundOrderItemClass;
+use bizGhs\order\services\RefundOrderService;
 use bizHd\purchase\classes\PurchaseClearClass;
 use common\components\imgUtil;
 use Yii;
@@ -23,8 +24,18 @@ class RefundController extends BaseController
         $id = $get['id'] ?? 0;
         $refund = RefundOrderClass::getById($id, true);
         RefundOrderClass::valid($refund, $this->mainId);
-        RefundOrderClass::passRefund($refund);
-        util::complete('操作成功');
+
+        $connection = Yii::$app->db;//事务处理
+        $transaction = $connection->beginTransaction();
+        try {
+            RefundOrderService::passRefund($refund);
+            $transaction->commit();
+            util::complete('操作成功');
+        } catch (\Exception $e) {
+            $transaction->rollBack();
+            Yii::info("操作失败原因:" . $e->getMessage());
+            util::fail('操作失败');
+        }
     }
 
     public function actionReject()

+ 71 - 1
biz-ghs/order/classes/RefundOrderClass.php

@@ -28,9 +28,79 @@ class RefundOrderClass extends BaseClass
     const REFUND_TYPE_MONEY_GOOD = 1; //退款退货
     const REFUND_TYPE_MONEY = 2; // 仅退款
 
-    public static function passRefund($refund)
+    //审核通过 ssh 20230811
+    public static function passRefund($refund, $order)
     {
+        if ($refund->status == 1) {
+            util::fail('已通过');
+        }
+        if ($refund->status == 2) {
+            util::fail('已驳回');
+        }
+        if ($refund->status == 3) {
+            util::fail('已取消');
+        }
+        $order->refund = OrderClass::REFUND_YES;
+        $order->save();
+        $orderSn = $order->orderSn ?? '';
+        $onlinePay = $order->onlinePay ?? 1;
+        $refundSn = $refund->orderSn ?? '';
+        $refundItemList = RefundOrderItemClass::getAllByCondition(['orderSn' => $refundSn], null, '*', null, true);
+        if (empty($refundItemList)) {
+            util::fail('没有找到售后订单的花材');
+        }
+        $refundData = [];
+        foreach ($refundItemList as $key => $val) {
+            $num = $val->xhNum ?? 0;
+            $orderItemId = $val->orderItemId ?? 0;
+            if (empty($orderItemId)) {
+                util::fail('旧订单无法售后,请联系管理员');
+            }
+            $refundData[$orderItemId] = $val;
+        }
+        $orderItemList = OrderItemClass::getAllByCondition(['orderSn' => $orderSn], null, '*', null, true);
+        if (empty($orderItemList)) {
+            util::fail('订单花材错误呢');
+        }
+        foreach ($orderItemList as $oneKey => $oneItem) {
+            $oneItemId = $oneItem->id;
+            $productId = $oneItem->productId ?? 0;
+            if (isset($refundData[$oneItemId])) {
+                $refundSingle = $refundData[$oneItemId];
+                $unitType = $refundSingle->xhUnitType ?? 0;
+                $num = $refundSingle->xhNum ?? 0;
+                if ($unitType == dict::getDict('unitType', 'small')) {
+                    $smallNum = $num;
+                    $bigNum = 0;
+                } else {
+                    $smallNum = 0;
+                    $bigNum = $num;
+                }
+                $oldStock = 0;
+                $newStock = 0;
+                if ($bigNum > 0) {
+                    //退货加库存
+                    $stockInfo = ProductClass::addStock($productId, $bigNum, $smallNum);
+                    $oldStock = $stockInfo['oldStock'] ?? 0;
+                    $newStock = $stockInfo['newStock'] ?? 0;
+                    //库存变动记录
+                    $recordData = [];
+                    $recordData['shopId'] = $data['shopId'];
+                    $recordData['relateName'] = $order->customName ?? '';
+                    $recordData['itemNum'] = $totalNum;
+                    $recordData['sjId'] = $data['sjId'] ?? 0;
+                    $recordData['shopId'] = $data['shopId'] ?? 0;
+                    $recordData['mainId'] = $data['mainId'] ?? 0;
+                    $recordData['orderSn'] = $orderSn;
+                    $recordData['itemId'] = $data['itemId'] ?? 0;
+                    $recordData['oldStock'] = $oldStock; //当时库存
+                    $recordData['productId'] = $productId;
+                    $recordData['newStock'] = $newStock;// 最新库存
+                    StockRecordClass::ghsRefundAddRecord($recordData);
+                }
 
+            }
+        }
     }
 
     public static function rejectRefund($refund, $rejectReason)

+ 28 - 0
biz-ghs/order/services/RefundOrderService.php

@@ -18,6 +18,7 @@ use bizGhs\order\classes\RefundOrderItemClass;
 use bizGhs\shop\classes\MainClass;
 use bizGhs\shop\classes\ShopMoneyClass;
 use bizGhs\stock\classes\StockRecordClass;
+use bizHd\cg\classes\CgRefundClass;
 use bizHd\purchase\classes\PurchaseClass;
 use common\components\dict;
 use common\components\noticeUtil;
@@ -31,6 +32,31 @@ class RefundOrderService extends BaseService
 
     public static $baseFile = '\bizGhs\order\classes\RefundOrderClass';
 
+    //审核通过 ssh 20230811
+    public static function passRefund($refund)
+    {
+        $relateOrderSn = $refund->relateOrderSn ?? '';
+        if (empty($relateOrderSn)) {
+            util::fail('没有订单信息');
+        }
+        $order = OrderClass::getByCondition(['orderSn' => $relateOrderSn], true);
+        if (empty($order)) {
+            util::fail('没有订单信息哦');
+        }
+        RefundOrderClass::passRefund($refund, $order);
+        $cgRefundId = $refund->cgRefundId ?? 0;
+        $cgRefund = CgRefundClass::getById($cgRefundId, true);
+        if (empty($cgRefund)) {
+            util::fail('信息缺失哦');
+        }
+        $cgId = $cgRefund->cgId ?? 0;
+        $cg = PurchaseClass::getById($cgId, true);
+        if (empty($cg)) {
+            util::fail('采购信息缺失');
+        }
+        CgRefundClass::passRefund($cgRefund, $cg);
+    }
+
     //新增退款
     public static function addRefund($post, $order)
     {
@@ -80,6 +106,7 @@ class RefundOrderService extends BaseService
                 $ptItemId = $currentInfo->itemId;
                 $ratio = $currentInfo->ratio;
                 $itemCost = $currentInfo->cost;
+                $orderItemId = $currentInfo->id;
 
                 $num = $currentProduct['num'] ?? 0;
                 $xhUnitName = $currentProduct['unitName'] ?? '';
@@ -108,6 +135,7 @@ class RefundOrderService extends BaseService
                     'xhUnitPrice' => $xhUnitPrice,
                     'xhPrice' => $xhPrice,
                     'mainId' => $mainId,
+                    'orderItemId' => $orderItemId,
                 ];
                 RefundOrderItemClass::addData($thisItemData, $order);
             }

+ 14 - 0
biz-hd/cg/classes/CgRefundClass.php

@@ -22,6 +22,20 @@ class CgRefundClass extends BaseClass
     const REFUND_TYPE_MONEY_GOOD = 1; //退款退货
     const REFUND_TYPE_MONEY = 2; // 仅退款
 
+    //审核通过 ssh 20230811
+    public static function passRefund($cgRefund, $cg)
+    {
+        if ($cgRefund->status == 1) {
+            util::fail('已通过');
+        }
+        if ($cgRefund->status == 2) {
+            util::fail('已驳回');
+        }
+        if ($cgRefund->status == 3) {
+            util::fail('已取消');
+        }
+    }
+
     //驳回 ssh 20230811
     public static function reject($cgRefund, $rejectReason)
     {

+ 2 - 0
biz-hd/cg/services/CgRefundService.php

@@ -199,6 +199,7 @@ class CgRefundService extends BaseService
                 $name = $currentInfo->name;
                 $cover = $currentInfo->cover;
                 $ratio = $currentInfo->ratio;
+                $cgItemId = $currentInfo->id;
 
                 $unitType = $info['unitType'] ?? 0;
                 $num = $info['num'] ?? 0;
@@ -221,6 +222,7 @@ class CgRefundService extends BaseService
                 $refundData['xhUnitType'] = $unitType;
                 $refundData['xhUnitPrice'] = $unitPrice;
                 $refundData['xhPrice'] = 0;
+                $refundData['cgItemId'] = $cgItemId;
                 CgRefundItemClass::addData($refundData, $cg);
             }
         }