Răsfoiți Sursa

更新优化

shish 5 ore în urmă
părinte
comite
6d71af2ac1

+ 6 - 6
app-ghs/controllers/RefundController.php

@@ -6,7 +6,7 @@ use bizGhs\notify\classes\NotifyClass;
 use bizGhs\order\classes\CheckOrderClass;
 use bizGhs\order\classes\RefundOrderItemClass;
 use bizGhs\order\services\RefundOrderService;
-use bizGhs\order\services\NextDayRefundService;
+use bizGhs\order\classes\NextDayRefundClass;
 use bizGhs\shop\classes\ShopClass;
 use bizHd\cg\classes\CgRefundClass;
 use bizHd\cg\classes\CgRefundItemClass;
@@ -37,8 +37,8 @@ class RefundController extends BaseController
         if (empty($order) || intval($order->mainId) !== intval($this->mainId)) {
             util::fail('没有找到订单');
         }
-        $check = NextDayRefundService::checkEligible($order);
-        $check['hasPayTime'] = NextDayRefundService::hasValidPayTime($order) ? 1 : 0;
+        $check = NextDayRefundClass::checkEligible($order);
+        $check['hasPayTime'] = NextDayRefundClass::hasValidPayTime($order) ? 1 : 0;
         $check['hasNextDay'] = bccomp((string)($order->nextDayTkPrice ?? '0'), '0', 2) > 0 ? 1 : 0;
         $check['nextDayTkPrice'] = $order->nextDayTkPrice ?? '0.00';
         $check['tkPrice'] = $order->tkPrice ?? '0.00';
@@ -773,7 +773,7 @@ class RefundController extends BaseController
                         'customBalance' => bcadd((string)($custom->balance ?? '0'), '0', 2),
                         'orderId' => intval($id),
                         'nextDayTkPrice' => $order->nextDayTkPrice ?? '0.00',
-                        'needFundAction' => NextDayRefundService::needFundAction($refundInfo),
+                        'needFundAction' => NextDayRefundClass::needFundAction($refundInfo),
                     ];
                 } catch (\Exception $exception) {
                     if ($transaction->isActive) {
@@ -923,7 +923,7 @@ class RefundController extends BaseController
                 $connection = Yii::$app->db;
                 $transaction = $connection->beginTransaction();
                 try {
-                    $refund = NextDayRefundService::markHasReturn($refund);
+                    $refund = NextDayRefundClass::markHasReturn($refund);
                     $transaction->commit();
                     return [
                         'id' => intval($refund->id ?? 0),
@@ -975,7 +975,7 @@ class RefundController extends BaseController
                     if ($relateOrderSn !== '') {
                         $order = OrderClass::getOneByCondition(['orderSn' => $relateOrderSn], true);
                     }
-                    $result = NextDayRefundService::applyReturnBalance($refund, $order);
+                    $result = NextDayRefundClass::applyReturnBalance($refund, $order);
                     $refund = $result['refund'];
                     $transaction->commit();
                     return [

+ 4 - 4
app-ghs/controllers/StatItemController.php

@@ -5,7 +5,7 @@ namespace ghs\controllers;
 use biz\stat\classes\StatItemClass;
 use bizGhs\order\classes\OrderClass;
 use bizGhs\order\classes\OrderItemClass;
-use bizGhs\order\services\NextDayRefundService;
+use bizGhs\order\classes\NextDayRefundClass;
 use bizGhs\product\classes\ProductClass;
 use bizGhs\shop\classes\ShopAdminClass;
 use bizGhs\stat\classes\StatSaleClass;
@@ -105,7 +105,7 @@ class StatItemController extends BaseController
                         }
                     }
 
-                    $num = NextDayRefundService::payDayRemainNum(
+                    $num = NextDayRefundClass::payDayRemainNum(
                         $item['xhNum'] ?? 0,
                         $item['refundNum'] ?? 0,
                         $item['nextRefundNum'] ?? 0
@@ -150,8 +150,8 @@ class StatItemController extends BaseController
         // 通过日:退货扣数量+金额;仅退款只扣金额(按原单花材占比分摊)
         // 支付日净销量已用 nextRefundNum(payDayRemainNum),无需再加回
         $deductMaps = [
-            NextDayRefundService::sumItemByProduct($this->mainId, $currentStartTime, $currentEndTime),
-            NextDayRefundService::sumMoneyOnlyAmountByProduct($this->mainId, $currentStartTime, $currentEndTime),
+            NextDayRefundClass::sumItemByProduct($this->mainId, $currentStartTime, $currentEndTime),
+            NextDayRefundClass::sumMoneyOnlyAmountByProduct($this->mainId, $currentStartTime, $currentEndTime),
         ];
         foreach ($deductMaps as $deductMap) {
             foreach ($deductMap as $pid => $row) {

+ 3 - 3
app-hd/controllers/CgRefundController.php

@@ -6,7 +6,7 @@ use biz\wx\classes\WxMessageClass;
 use bizGhs\notify\classes\NotifyClass;
 use bizGhs\order\classes\OrderClass;
 use bizGhs\order\classes\RefundOrderClass;
-use bizGhs\order\services\NextDayRefundService;
+use bizGhs\order\classes\NextDayRefundClass;
 use bizHd\cg\classes\CgRefundClass;
 use bizHd\cg\classes\CgRefundItemClass;
 use bizHd\cg\services\CgRefundService;
@@ -90,8 +90,8 @@ class CgRefundController extends BaseController
         if (empty($saleOrder)) {
             util::fail('没有订单信息');
         }
-        NextDayRefundService::assertCanRefund($saleOrder);
-        $forceNextDay = NextDayRefundService::mustUseNextDay($saleOrder);
+        NextDayRefundClass::assertCanRefund($saleOrder);
+        $forceNextDay = NextDayRefundClass::mustUseNextDay($saleOrder);
         // 售后时限只用支付时间
         $payTime = $saleOrder->payTime;
         $currentTime = strtotime($payTime);

+ 5 - 8
biz-ghs/order/services/NextDayRefundService.php → biz-ghs/order/classes/NextDayRefundClass.php

@@ -1,16 +1,13 @@
 <?php
 /**
- * 售后资金/隔天售后辅助服务
- * 用途:资格校验、支付快照与资金三态(hasReturn/couldReturn/returnBalance)、隔天金额与返余额
- * 字段:sameDay 区分当天/隔天;onlinePay/payWay 与原单一致;废弃 fundType。
+ * 隔天售后业务类(biz-ghs/order/classes)
+ * 用途:资格校验、支付快照与资金三态、隔天金额/返余额、统计净销量辅助
+ * 调用方:RefundOrderClass、CgRefundClass、统计类、售后 Controller/Service。
  */
-namespace bizGhs\order\services;
+namespace bizGhs\order\classes;
 
 use bizGhs\custom\classes\CustomClass;
 use bizGhs\custom\services\GhsRechargeSettleService;
-use bizGhs\order\classes\OrderClass;
-use bizGhs\order\classes\RefundOrderClass;
-use bizGhs\order\classes\RefundOrderItemClass;
 use bizGhs\product\classes\ProductClass;
 use bizGhs\shop\classes\MainClass;
 use bizGhs\stock\classes\StockRecordClass;
@@ -20,7 +17,7 @@ use common\components\dict;
 use common\components\util;
 use Yii;
 
-class NextDayRefundService
+class NextDayRefundClass
 {
     const SAME_DAY_YES = 1;
     const SAME_DAY_NO = 0;

+ 4 - 4
biz-ghs/order/classes/RefundOrderClass.php

@@ -252,7 +252,7 @@ class RefundOrderClass extends BaseClass
 
         // 隔天售后:累计 nextDayTkPrice,不改 actPrice;资金按支付快照原路处理
         if ($sameDay === self::SAME_DAY_NO) {
-            \bizGhs\order\services\NextDayRefundService::applyGhsAmountAndFund($refund, $order);
+            \bizGhs\order\classes\NextDayRefundClass::applyGhsAmountAndFund($refund, $order);
             return;
         }
 
@@ -401,9 +401,9 @@ class RefundOrderClass extends BaseClass
         }
 
         // 当天售后:线上/余额/挂账原路已完成 → hasReturn=1;线下留待成功页人工确认
-        if (!\bizGhs\order\services\NextDayRefundService::needsManualReturnConfirm($refund)) {
-            \bizGhs\order\services\NextDayRefundService::syncRefundFundFlags($refund, [
-                'hasReturn' => \bizGhs\order\services\NextDayRefundService::FLAG_YES,
+        if (!\bizGhs\order\classes\NextDayRefundClass::needsManualReturnConfirm($refund)) {
+            \bizGhs\order\classes\NextDayRefundClass::syncRefundFundFlags($refund, [
+                'hasReturn' => \bizGhs\order\classes\NextDayRefundClass::FLAG_YES,
             ]);
         }
     }

+ 2 - 2
biz-ghs/order/services/OrderService.php

@@ -937,10 +937,10 @@ class OrderService extends BaseService
         // 未完成订单:先确认送达/完成,再继续售后(前端不再预确认)
         $order = OrderClass::ensureCompletedForRefund($order, $post);
         // 无支付时间不能售后
-        \bizGhs\order\services\NextDayRefundService::assertCanRefund($order);
+        \bizGhs\order\classes\NextDayRefundClass::assertCanRefund($order);
         $sameDay = intval($post['sameDay'] ?? \bizGhs\order\classes\RefundOrderClass::SAME_DAY_YES);
         // 非当天 / 已结账 / 挂账结清 → 强制隔天售后(sameDay=0),不再拦截为「不能售后」
-        if (\bizGhs\order\services\NextDayRefundService::mustUseNextDay($order)) {
+        if (\bizGhs\order\classes\NextDayRefundClass::mustUseNextDay($order)) {
             $sameDay = \bizGhs\order\classes\RefundOrderClass::SAME_DAY_NO;
             $post['sameDay'] = $sameDay;
         }

+ 10 - 10
biz-ghs/order/services/RefundOrderService.php

@@ -16,7 +16,7 @@ use bizGhs\order\classes\OrderClass;
 use bizGhs\order\classes\OrderItemClass;
 use bizGhs\order\classes\RefundOrderClass;
 use bizGhs\order\classes\RefundOrderItemClass;
-use bizGhs\order\services\NextDayRefundService;
+use bizGhs\order\classes\NextDayRefundClass;
 use bizGhs\shop\classes\MainClass;
 use bizGhs\shop\classes\ShopMoneyClass;
 use bizGhs\stock\classes\StockRecordClass;
@@ -56,10 +56,10 @@ class RefundOrderService extends BaseService
             util::fail("已取消订单,不能申请售后");
         }
         // 无支付时间不能售后;仅用 payTime 判是否转隔天
-        NextDayRefundService::assertCanRefund($order);
+        NextDayRefundClass::assertCanRefund($order);
         // 审核时若已非当天或已结清:自动转为隔天售后(不再要求驳回)
         $sameDay = intval($refund->sameDay ?? RefundOrderClass::SAME_DAY_YES);
-        if ($sameDay === RefundOrderClass::SAME_DAY_YES && NextDayRefundService::mustUseNextDay($order)) {
+        if ($sameDay === RefundOrderClass::SAME_DAY_YES && NextDayRefundClass::mustUseNextDay($order)) {
             self::convertRefundToNextDay($refund, $order);
             $sameDay = RefundOrderClass::SAME_DAY_NO;
         }
@@ -138,7 +138,7 @@ class RefundOrderService extends BaseService
      */
     public static function convertRefundToNextDay($refund, $order)
     {
-        $snap = NextDayRefundService::buildRefundPaySnapshot(
+        $snap = NextDayRefundClass::buildRefundPaySnapshot(
             $order,
             true,
             [
@@ -277,19 +277,19 @@ class RefundOrderService extends BaseService
         $data['orderTime'] = $order->payTime??'';
 
         // 无支付时间不能售后
-        NextDayRefundService::assertCanRefund($order);
+        NextDayRefundClass::assertCanRefund($order);
         // sameDay:非当天/已结清强制隔天;支付快照与资金三态写入售后单
         $sameDay = intval($post['sameDay'] ?? RefundOrderClass::SAME_DAY_YES);
-        if (NextDayRefundService::mustUseNextDay($order)) {
+        if (NextDayRefundClass::mustUseNextDay($order)) {
             $sameDay = RefundOrderClass::SAME_DAY_NO;
         }
         if ($sameDay === RefundOrderClass::SAME_DAY_NO) {
-            $check = NextDayRefundService::checkEligible($order);
+            $check = NextDayRefundClass::checkEligible($order);
             if (empty($check['ok'])) {
                 util::fail($check['reason'] ?? '当前订单不可隔天售后');
             }
         }
-        $snap = NextDayRefundService::buildRefundPaySnapshot(
+        $snap = NextDayRefundClass::buildRefundPaySnapshot(
             $order,
             true,
             [
@@ -344,7 +344,7 @@ class RefundOrderService extends BaseService
         }
 
         // 无原单:线下原路渠道 = 确认页「退款方式」;couldReturn=1 供成功页返充
-        $snap = NextDayRefundService::buildRefundPaySnapshot(
+        $snap = NextDayRefundClass::buildRefundPaySnapshot(
             null,
             false,
             [
@@ -450,7 +450,7 @@ class RefundOrderService extends BaseService
             }
         }
 
-        NextDayRefundService::passFreeRefund($refund);
+        NextDayRefundClass::passFreeRefund($refund);
         $refund = RefundOrderClass::getById($refund->id, true);
         $custom = CustomClass::getById($customId, true);
 

+ 2 - 2
biz-ghs/stat/classes/StatKdClass.php

@@ -3,7 +3,7 @@
 namespace bizGhs\stat\classes;
 
 use biz\shop\classes\ShopAdminClass;
-use bizGhs\order\services\NextDayRefundService;
+use bizGhs\order\classes\NextDayRefundClass;
 use bizGhs\order\classes\OrderClass;
 use bizGhs\order\classes\OrderItemClass;
 use bizGhs\order\classes\StockOutOrderClass;
@@ -423,7 +423,7 @@ class StatKdClass extends BaseClass
      */
     protected static function deductNextDayFromChannelIncome(&$incomeList, $mainId, $startTime, $endTime)
     {
-        $rows = NextDayRefundService::listForChannelIncomeDeduct($mainId, $startTime, $endTime);
+        $rows = NextDayRefundClass::listForChannelIncomeDeduct($mainId, $startTime, $endTime);
         if (empty($rows)) {
             return;
         }

+ 13 - 13
biz-ghs/stat/classes/StatSaleClass.php

@@ -13,7 +13,7 @@ use bizGhs\order\classes\OrderItemClass;
 use bizGhs\order\classes\PurchaseOrderClass;
 use bizGhs\order\classes\PurchaseOrderItemClass;
 use bizGhs\order\classes\RefundOrderClass;
-use bizGhs\order\services\NextDayRefundService;
+use bizGhs\order\classes\NextDayRefundClass;
 use bizGhs\order\classes\StockWastageOrderClass;
 use bizGhs\product\classes\ProductClass;
 use bizGhs\staff\classes\SalaryClass;
@@ -202,7 +202,7 @@ class StatSaleClass extends BaseClass
                 }
             }
             // 隔天售后扣客户采购金额(笔数不减)
-            $fwdMap = NextDayRefundService::sumAmountGroupByCustom($mainId, $currentStartTime, $currentEndTime);
+            $fwdMap = NextDayRefundClass::sumAmountGroupByCustom($mainId, $currentStartTime, $currentEndTime);
             foreach ($fwdMap as $cid => $amt) {
                 if (!isset($arr[$cid])) {
                     continue;
@@ -332,7 +332,7 @@ class StatSaleClass extends BaseClass
         // 隔天售后扣减批发收入(笔数不变)
         $pfIncome = bcsub(
             (string)$pfIncome,
-            NextDayRefundService::sumAmountByMainAndTime($mainId, $currentStartTime, $currentEndTime),
+            NextDayRefundClass::sumAmountByMainAndTime($mainId, $currentStartTime, $currentEndTime),
             2
         );
 
@@ -586,7 +586,7 @@ class StatSaleClass extends BaseClass
                         $productId = $orderItem->productId ?? 0;
                         $num = $orderItem->xhNum ?? 0;
                         // 支付日净销量:当天已退=refundNum-nextRefundNum
-                        $remainNum = NextDayRefundService::payDayRemainNum(
+                        $remainNum = NextDayRefundClass::payDayRemainNum(
                             $num,
                             $refundNum,
                             $orderItem->nextRefundNum ?? 0
@@ -934,7 +934,7 @@ class StatSaleClass extends BaseClass
                         $name = $orderItem->name ?? '';
                         $productId = $orderItem->productId ?? 0;
                         $num = $orderItem->xhNum ?? 0;
-                        $remainNum = NextDayRefundService::payDayRemainNum(
+                        $remainNum = NextDayRefundClass::payDayRemainNum(
                             $num,
                             $refundNum,
                             $orderItem->nextRefundNum ?? 0
@@ -1018,12 +1018,12 @@ class StatSaleClass extends BaseClass
             }
         };
         $applyClassDelta(
-            NextDayRefundService::sumItemByProduct($mainId, $currentStartTime, $currentEndTime),
+            NextDayRefundClass::sumItemByProduct($mainId, $currentStartTime, $currentEndTime),
             -1
         );
         $onlyRefund = bcadd(
             (string)$onlyRefund,
-            NextDayRefundService::sumMoneyOnlyAmountByMainAndTime($mainId, $currentStartTime, $currentEndTime),
+            NextDayRefundClass::sumMoneyOnlyAmountByMainAndTime($mainId, $currentStartTime, $currentEndTime),
             2
         );
 
@@ -1462,7 +1462,7 @@ class StatSaleClass extends BaseClass
                 $orderItemList = OrderItemClass::getAllByCondition(['orderSn' => $orderSn], null, '*', null, true);
                 if (!empty($orderItemList)) {
                     foreach ($orderItemList as $orderItem) {
-                        $remainNum = NextDayRefundService::payDayRemainNum(
+                        $remainNum = NextDayRefundClass::payDayRemainNum(
                             $orderItem->xhNum ?? 0,
                             $orderItem->refundNum ?? 0,
                             $orderItem->nextRefundNum ?? 0
@@ -1571,7 +1571,7 @@ class StatSaleClass extends BaseClass
                 }
             }
             // 隔天售后按客户扣金额后归到片区(笔数不减;无当日开单的片区不新建行)
-            $fwdMap = NextDayRefundService::sumAmountGroupByCustom($mainId, $currentStartTime, $currentEndTime);
+            $fwdMap = NextDayRefundClass::sumAmountGroupByCustom($mainId, $currentStartTime, $currentEndTime);
             foreach ($fwdMap as $cid => $amt) {
                 $distId = $customList[$cid]['distId'] ?? 0;
                 if (!isset($arr[$distId])) {
@@ -1639,11 +1639,11 @@ class StatSaleClass extends BaseClass
 
         // 通过日:扣退货数量+金额
         $applyDelta(
-            NextDayRefundService::sumItemByProduct($mainId, $startTime, $endTime),
+            NextDayRefundClass::sumItemByProduct($mainId, $startTime, $endTime),
             -1
         );
 
-        return NextDayRefundService::sumMoneyOnlyAmountByMainAndTime($mainId, $startTime, $endTime);
+        return NextDayRefundClass::sumMoneyOnlyAmountByMainAndTime($mainId, $startTime, $endTime);
     }
 
     /**
@@ -1674,12 +1674,12 @@ class StatSaleClass extends BaseClass
         };
 
         $applyDelta(
-            NextDayRefundService::sumItemBySendStaff($mainId, $startTime, $endTime),
+            NextDayRefundClass::sumItemBySendStaff($mainId, $startTime, $endTime),
             -1
         );
         // 仅退款只减金额
         $applyDelta(
-            NextDayRefundService::sumMoneyOnlyAmountBySendStaff($mainId, $startTime, $endTime),
+            NextDayRefundClass::sumMoneyOnlyAmountBySendStaff($mainId, $startTime, $endTime),
             -1
         );
     }

+ 1 - 1
biz-hd/cg/classes/CgRefundClass.php

@@ -304,7 +304,7 @@ class CgRefundClass extends BaseClass
 
         // 隔天售后:累计 nextDayTkPrice,不改 actPrice;原路退在此发起
         if ($sameDay === self::SAME_DAY_NO) {
-            \bizGhs\order\services\NextDayRefundService::applyCgAmountAndFund($cgRefund, $cg);
+            \bizGhs\order\classes\NextDayRefundClass::applyCgAmountAndFund($cgRefund, $cg);
             return;
         }
 

+ 4 - 4
biz-hd/cg/services/CgRefundService.php

@@ -9,7 +9,7 @@ use biz\shop\classes\ShopClass;
 use biz\wx\classes\WxMessageClass;
 use bizGhs\order\classes\OrderClass;
 use bizGhs\order\classes\RefundOrderClass;
-use bizGhs\order\services\NextDayRefundService;
+use bizGhs\order\classes\NextDayRefundClass;
 use bizGhs\order\services\RefundOrderService;
 use bizGhs\product\classes\ProductClass;
 use bizGhs\stock\classes\StockRecordClass;
@@ -54,14 +54,14 @@ class CgRefundService extends BaseService
             util::fail('没有订单信息');
         }
         // 无支付时间不能售后;仅用 payTime 判当天/隔天
-        NextDayRefundService::assertCanRefund($order);
+        NextDayRefundClass::assertCanRefund($order);
 
         // 非当天 / 已结账 / 挂账结清 → 隔天;支付快照与订单一致
         $sameDay = CgRefundClass::SAME_DAY_YES;
-        if (NextDayRefundService::mustUseNextDay($order)) {
+        if (NextDayRefundClass::mustUseNextDay($order)) {
             $sameDay = CgRefundClass::SAME_DAY_NO;
         }
-        $snap = NextDayRefundService::buildRefundPaySnapshot(
+        $snap = NextDayRefundClass::buildRefundPaySnapshot(
             $order,
             true,
             [