林琦海 5 سال پیش
والد
کامیت
e2a3445258
3فایلهای تغییر یافته به همراه72 افزوده شده و 50 حذف شده
  1. 52 36
      app-ghs/controllers/OrderController.php
  2. 16 8
      biz-ghs/order/classes/RefundOrderClass.php
  3. 4 6
      biz-ghs/order/services/OrderService.php

+ 52 - 36
app-ghs/controllers/OrderController.php

@@ -18,6 +18,7 @@ use common\components\freight;
 use common\components\httpUtil;
 use Yii;
 use common\components\util;
+use bizGhs\order\classes\RefundOrderClass;
 
 class OrderController extends BaseController
 {
@@ -487,49 +488,64 @@ class OrderController extends BaseController
         if($order['status']!=OrderClass::ORDER_STATUS_COMPLETE){
             util::fail("不能退款");
         }
-        $infoProduct = $order['product'];
-        $productIds = array_unique(array_filter(array_column($infoProduct, 'productId')));
-        $productData = ProductClass::getProductByIds($productIds);
-        $productData = array_column($productData, NULL, 'id');
-        $orderProductMap = [];
-        foreach ($infoProduct as $v){
-            $orderProductMap[$v['productId']] = $v;
+        if($order['refund']==2){
+            util::fail("已退款");
         }
 
-        //[{productId:0,bigNum:1,smallNum:0}]
-        $productJson = $post['product'] ?? '';
-        if (empty($productJson)) {
-            util::fail('请选择花材');
-        }
-        $productList = json_decode($productJson, true);
-        if (!is_array($productList)) {
-            util::fail('花材格式不正确');
-        }
-        //合并
-        $productList = ProductClass::mergeItemInfo($productList);
-        if (empty($productList)) {
-            util::fail('请选择花材');
+        //根据退款类型:1退货并退款(需要减库存) 2:仅退款(不用减库存,不用传花材)
+        $refundType = $post['refundType']??0;
+
+        if($refundType != RefundOrderClass::REFUND_TYPE_MONEY_GOOD && $refundType != RefundOrderClass::REFUND_TYPE_MONEY) {
+            util::fail("请选择退款类型");
         }
+        if($refundType == RefundOrderClass::REFUND_TYPE_MONEY_GOOD ){
+            $infoProduct = $order['product'];
+            $productIds = array_unique(array_filter(array_column($infoProduct, 'productId')));
+            $productData = ProductClass::getProductByIds($productIds);
+            $productData = array_column($productData, NULL, 'id');
+            $orderProductMap = [];
+            foreach ($infoProduct as $v){
+                $orderProductMap[$v['productId']] = $v;
+            }
 
-        //判定花材数不能大于原订单数
-        foreach ($productList as $v){
-            $orderProductNum = $orderProductMap[$v['productId']]['num']??0;
-            $productName = $productData[$v['productId']]['name']??'';
-            if(!$orderProductNum){
-                util::fail($productName."花材数量错误");
+            //[{productId:0,bigNum:1,smallNum:0}]
+            $productJson = $post['product'] ?? '';
+            if (empty($productJson)) {
+                util::fail('请选择花材');
             }
-            //数量
-            $bigNum = $v['bigNum']??0;
-            $smallNum = $v['smallNum']??0;
-            $ratio = $productData[$v['productId']]['ratio']??0;
-
-            $num = ProductClass::mergeItemNum($bigNum,$smallNum,$ratio);
-            if($num > $orderProductNum) {
-                util::fail($productName."花材数量错误");
+            $productList = json_decode($productJson, true);
+            if (!is_array($productList)) {
+                util::fail('花材格式不正确');
+            }
+            //合并
+            $productList = ProductClass::mergeItemInfo($productList);
+            if (empty($productList)) {
+                util::fail('请选择花材');
             }
-        }
-        $post['product'] = $productList;
 
+            //判定花材数不能大于原订单数
+            foreach ($productList as $v){
+                $orderProductNum = $orderProductMap[$v['productId']]['num']??0;
+                $productName = $productData[$v['productId']]['name']??'';
+                if(!$orderProductNum){
+                    util::fail($productName."花材数量错误");
+                }
+                //数量
+                $bigNum = $v['bigNum']??0;
+                $smallNum = $v['smallNum']??0;
+                $ratio = $productData[$v['productId']]['ratio']??0;
+
+                $num = ProductClass::mergeItemNum($bigNum,$smallNum,$ratio);
+                if($num > $orderProductNum) {
+                    util::fail($productName."花材数量错误");
+                }
+            }
+            $post['product'] = $productList;
+        }
+        $post['price'] = $post['price']??0;
+        if($post['price'] <=0){
+            util::fail("退款金额不能小于0");
+        }
         if (bccomp($post['price'] , $order['realPrice'], 2) == 1) {
             util::fail("退款金额不能大于实际支付金额");
         }

+ 16 - 8
biz-ghs/order/classes/RefundOrderClass.php

@@ -50,11 +50,14 @@ class RefundOrderClass extends BaseClass
         $data['shopAdminName'] = $post['shopAdminName'] ?? '';
 
         //花材列表
-        $ghsItemInfo = $post['product'];
-        $ghsItemInfo = self::mergeItemInfo($ghsItemInfo);
-        $sumNum = self::sumNumByItemInfo($ghsItemInfo);
-        $data['bigNum'] = $sumNum['bigNum'];// 总的大单位数量 总共多少扎
-        $data['smallNum'] = $sumNum['smallNum']; //总的小单位数量 总共多少支
+        $ghsItemInfo = $post['product']??'';
+        if($ghsItemInfo){
+            $ghsItemInfo = self::mergeItemInfo($ghsItemInfo);
+            $sumNum = self::sumNumByItemInfo($ghsItemInfo);
+        }
+
+        $data['bigNum'] = $sumNum['bigNum']??0;// 总的大单位数量 总共多少扎
+        $data['smallNum'] = $sumNum['smallNum']??0; //总的小单位数量 总共多少支
         $data['remark'] = $post['remark'] ?? '';
         $data['refundPrice'] = $post['price'] ?? 0;
         $data['refundType'] = $post['refundType'] ?? 0;
@@ -71,8 +74,10 @@ class RefundOrderClass extends BaseClass
                 }
             }
             //写入详情表
-            $batchData = self::groupOrderItem($ghsItemInfo, $orderSn);
-            RefundOrderItemClass::batchAddOrderItem($batchData);
+            if($ghsItemInfo){
+                $batchData = self::groupOrderItem($ghsItemInfo, $orderSn);
+                RefundOrderItemClass::batchAddOrderItem($batchData);
+            }
             $orderData = self::getOrderDetail($orderSn,$order['shopId']);
             $orderData['shopId'] = $data['shopId'];
             if( $data['refundType'] == self::REFUND_TYPE_MONEY_GOOD){
@@ -80,7 +85,6 @@ class RefundOrderClass extends BaseClass
                 StockRecordClass::addRecordByOrder($orderData, StockRecordClass::STOCK_RECORD_TYPE_REFUND);
             }
 
-
             return $order;
         } catch (\Exception $exception) {
             util::fail("操作失败" . $exception->getMessage());
@@ -188,6 +192,10 @@ class RefundOrderClass extends BaseClass
         //下面注释放开前,员工id要用shopAdminId
         //$orderData = self::groupAdmin($orderData);
         $orderData['itemInfo'] = $itemData;
+        //订单总金额
+        $kdOrder = OrderClass::getByOrderSn($orderSn);
+        $orderData['totalPrice'] = $kdOrder['realPrice'];
+
         return $orderData;
     }
 }

+ 4 - 6
biz-ghs/order/services/OrderService.php

@@ -569,22 +569,20 @@ class OrderService extends BaseService
     //退款订单
     public static function refund($order,$post)
     {
-        //根据退款类型:1退货并退款(需要减库存) 2:仅退款(不用减库存)
-        $refundType = $post['refundType']??0;
 
-        if($refundType != RefundOrderClass::REFUND_TYPE_MONEY_GOOD && $refundType != RefundOrderClass::REFUND_TYPE_MONEY) {
-            util::fail("请选择退款类型");
-        }
         //订单状态变更 4=》6  refund = 2
         $orderId = $order['id'];
-        OrderClass::updateById($orderId,['status'=>OrderClass::ORDER_STATUS_REFUND,'refund'=>2]);
+        OrderClass::updateById($orderId,['refund'=>2]);
         //记录退款订单
         $post['relateOrderSn'] = $order['orderSn'];
         RefundOrderClass::addOrder($post);
 
         //退钱(根据订单的支付类型 payWay)
         $payWay = $order['payWay'];
+        if($payWay == dict::getDict('payWay', 'wxPay')){
+            //微信
 
+        }
 
     }
 }