Bladeren bron

Merge branch 'moreShare' into dev

shish 2 maanden geleden
bovenliggende
commit
e1d06ad56c

+ 21 - 8
app-ghs/controllers/OrderController.php

@@ -17,6 +17,8 @@ use bizHd\purchase\services\PurchaseService;
 use bizHd\wx\classes\WxOpenClass;
 use bizGhs\custom\classes\CustomClass;
 use bizGhs\order\classes\OrderClass;
+use bizGhs\order\classes\OrderMergeClass;
+use bizGhs\order\classes\OrderMergeSnClass;
 use bizGhs\order\services\OrderService;
 use bizHd\saas\services\RegionService;
 use bizGhs\product\classes\ProductClass;
@@ -229,14 +231,15 @@ class OrderController extends BaseController
             if (empty($mergeId)) {
                 util::fail('请选择要合并发货的订单');
             }
-            $mergeInfo = OrderClass::getById($mergeId, true);
+            $mergeInfo = OrderMergeSnClass::getById($mergeId, true);
             if (empty($mergeInfo)) {
                 util::fail('请选择要合并发货的订单呢');
             }
             if ($mergeInfo->mainId != $this->mainId) {
                 util::fail('不是你的订单呢');
             }
-            $ids = $mergeInfo->sameTimeIds ?? '';
+            $mergeRows = OrderMergeClass::getAllByCondition(['mergeId' => $mergeId], null, 'orderId');
+            $ids = !empty($mergeRows) ? implode(',', array_column($mergeRows, 'orderId')) : '';
             if (empty($ids)) {
                 util::fail('请选择要合并发货的订单哈');
             }
@@ -285,14 +288,15 @@ class OrderController extends BaseController
             if (empty($mergeId)) {
                 util::fail('请选择要合并打印的订单');
             }
-            $mergeInfo = OrderClass::getById($mergeId, true);
+            $mergeInfo = OrderMergeSnClass::getById($mergeId, true);
             if (empty($mergeInfo)) {
                 util::fail('请选择要合并打印的订单呢');
             }
             if ($mergeInfo->mainId != $this->mainId) {
                 util::fail('不是你的订单呢');
             }
-            $ids = $mergeInfo->sameTimeIds ?? '';
+            $mergeRows = OrderMergeClass::getAllByCondition(['mergeId' => $mergeId], null, 'orderId');
+            $ids = !empty($mergeRows) ? implode(',', array_column($mergeRows, 'orderId')) : '';
             if (empty($ids)) {
                 util::fail('请选择要合并打印的订单哈');
             }
@@ -322,14 +326,15 @@ class OrderController extends BaseController
 
         $get = Yii::$app->request->get();
         $mergeId = $get['mergeId'] ?? '';
-        $mergeInfo = OrderClass::getById($mergeId, true);
+        $mergeInfo = OrderMergeSnClass::getById($mergeId, true);
         if (empty($mergeInfo)) {
             util::fail('请选择订单');
         }
         if ($mergeInfo->mainId != $this->mainId) {
             util::fail('不是你的订单');
         }
-        $ids = $mergeInfo->sameTimeIds ?? '';
+        $mergeRows = OrderMergeClass::getAllByCondition(['mergeId' => $mergeId], null, 'orderId');
+        $ids = !empty($mergeRows) ? implode(',', array_column($mergeRows, 'orderId')) : '';
         if (empty($ids)) {
             util::fail('请选择订单哈');
         }
@@ -342,6 +347,14 @@ class OrderController extends BaseController
         $respond = OrderClass::getOrderList($where);
         $respond['shop'] = $this->shop;
         $respond['shopExt'] = $this->shopExt;
+        $respond['shareInfo'] = [];
+        if (!empty($mergeInfo)) {
+            $respond['shareInfo'] = [
+                'id' => $mergeInfo->cgMergeId ?? 0,
+                'mergeId' => $mergeInfo->cgMergeId ?? 0,
+                'salt' => $mergeInfo->cgSalt ?? '',
+            ];
+        }
         util::success($respond);
     }
 
@@ -2648,8 +2661,8 @@ class OrderController extends BaseController
 
             //找到当前订单客户的账单日期为 $date 的所有订单,然后更新同天内的所有订单的 sameTimeIds(加此次要改变的订单的订单号$id),有多处调用,关键词 update_same_ids
             OrderClass::updateSameTimeIds($order, $date);
-            OrderClass::updateMergeOrder($order, 1);
             PurchaseClass::updateMergeCg($cg, 1);
+            OrderClass::updateMergeOrder($order, 1);
 
             $transaction->commit();
             util::complete('修改成功');
@@ -3252,4 +3265,4 @@ class OrderController extends BaseController
         util::complete('修改成功');
     }
 
-}
+}

+ 28 - 8
app-hd/controllers/PurchaseController.php

@@ -10,6 +10,7 @@ use biz\shop\classes\ShopExtClass;
 use bizGhs\custom\classes\CustomClass;
 use bizGhs\express\classes\GhsDeliveryOrderClass;
 use bizGhs\order\classes\OrderClass;
+use bizHd\cg\classes\CgMergeSnClass;
 use bizHd\purchase\classes\PurchaseClass;
 use bizHd\purchase\classes\PurchaseItemClass;
 use bizHd\purchase\services\PurchaseService;
@@ -31,7 +32,7 @@ use common\components\push;
 class PurchaseController extends BaseController
 {
 
-    public $guestAccess = ['detail', 'ali-pay', 'get-ali-pay-code', 'wx-pay'];
+    public $guestAccess = ['detail', 'ali-pay', 'get-ali-pay-code', 'wx-pay', 'merge-order-list'];
 
     //取消采购单 ssh 20250710
     public function actionCancel()
@@ -1047,16 +1048,23 @@ class PurchaseController extends BaseController
         Yii::$app->params['pageSize'] = 9999;
 
         $get = Yii::$app->request->get();
-        $mergeId = $get['mergeId'] ?? 0;
-        $ghsId = $get['ghsId'] ?? 0;
+        $mergeId = $get['mergeId'] ??0;
         if (empty($mergeId)) {
             util::fail('请选择采购单');
         }
-        if (empty($ghsId)) {
-            util::fail('请选择供货商');
+        $mergeSn = CgMergeSnClass::getById($mergeId, true);
+        if (empty($mergeSn)) {
+            util::fail('请选择合并采购单');
+        }
+        $salt = $get['salt'] ?? '';
+        if (empty($this->shopId)) {
+            if (empty($salt)) {
+                util::fail('请求参数错误');
+            }
+            if (empty($mergeSn->salt) || $mergeSn->salt != $salt) {
+                util::fail('找不到订单');
+            }
         }
-        $ghsInfo = GhsClass::getGhsInfo($ghsId);
-        GhsClass::valid($ghsInfo, $this->shopId);
         $where = [
             'ghsId' => $ghsId,
             'mergeId' => $mergeId,
@@ -1065,7 +1073,7 @@ class PurchaseController extends BaseController
         if (empty($respond['list'])) {
             util::fail('请选择采购单');
         }
-        $respond['shop'] = $this->shop->attributes;
+        $respond['shop'] = !empty($this->shop) ? $this->shop->attributes : [];
         util::success($respond);
     }
 
@@ -1075,6 +1083,18 @@ class PurchaseController extends BaseController
         $get = Yii::$app->request->get();
         $id = $get['id'] ?? 0;
         $info = PurchaseService::getInfo($id, true, true);
+        if (empty($info)) {
+            util::fail('没有找到采购单');
+        }
+        if (empty($this->shopId)) {
+            $salt = $get['salt'] ?? '';
+            if (empty($salt)) {
+                util::fail('请求参数错误');
+            }
+            if (empty($info['salt']) || $info['salt'] != $salt) {
+                util::fail('没有找到采购单');
+            }
+        }
         if (isset($info['mainId']) == false || $info['mainId'] != $this->mainId) {
             //不能注释,分享付款功能要用,客户没有登录也能付款
             //util::fail('无法访问');

+ 5 - 1
biz-ghs/order/classes/OrderClass.php

@@ -1020,6 +1020,7 @@ class OrderClass extends BaseClass
         $localConfirmTime = dict::getDict('local_gys_kd_auto_set_debt_time');
         $currentSet = $currentTime + $localConfirmTime;
         $data['autoSetTime'] = $data['autoSetTime'] ?? date("Y-m-d H:i:s", $currentSet);
+        $data['salt'] = $data['salt'] ?? stringUtil::charsShuffleLowerCase(10);
         $return = self::add($data, true);
 
         return $return;
@@ -3215,6 +3216,7 @@ XL;
                 $order->save();
                 OrderMergeClass::add(['mergeId' => $hasMergeId, 'orderId' => $orderId, 'mergeDate' => $date, 'customId' => $customId, 'mainId' => $mainId]);
                 self::syncOrderMergeNumForMergeId($hasMergeId);
+                PurchaseClass::syncMergeRelationByOrderIds([$orderId]);
             } else {
                 self::rebuildOrderMergeGroupForDay($ids, $date, $customId, $mainId);
             }
@@ -3260,6 +3262,7 @@ XL;
                 $order->save();
                 OrderMergeClass::add(['mergeId' => $newMergeId, 'orderId' => $orderId, 'mergeDate' => $date, 'customId' => $customId, 'mainId' => $mainId]);
                 self::syncOrderMergeNumForMergeId($newMergeId);
+                PurchaseClass::syncMergeRelationByOrderIds([$orderId]);
             } else {
                 self::rebuildOrderMergeGroupForDay($ids, $date, $customId, $mainId);
             }
@@ -3284,6 +3287,7 @@ XL;
             $addData[] = ['mergeId' => $mergeId, 'orderId' => $currentId, 'mergeDate' => $date, 'customId' => $customId, 'mainId' => $mainId];
         }
         OrderMergeClass::batchAdd($addData);
+        PurchaseClass::syncMergeRelationByOrderIds($ids);
     }
 
     /** 按 xhGhsOrderMerge 明细数量,回写该合并组内所有订单的 mergeNum */
@@ -3362,4 +3366,4 @@ XL;
         //noticeUtil::push("orderIds = {$sameTimeIdsStr}, sameTimeIdsStr: {$sameTimeIdsStr}");
     }
 
-}
+}

+ 69 - 0
biz-hd/purchase/classes/PurchaseClass.php

@@ -15,6 +15,7 @@ use bizGhs\admin\classes\AdminClass;
 use bizGhs\custom\classes\CustomClass;
 use bizGhs\item\classes\CostChangeClass;
 use bizGhs\order\classes\OrderClass;
+use bizGhs\order\classes\OrderMergeSnClass;
 use bizGhs\order\traits\OrderTrait;
 use bizGhs\product\classes\ProductClass;
 use bizGhs\stock\classes\OnStockRecordClass;
@@ -33,6 +34,7 @@ use common\components\IntraCityExpress;
 use common\components\mapUtil;
 use common\components\noticeUtil;
 use common\components\orderSn;
+use common\components\stringUtil;
 use common\components\util;
 use bizHd\base\classes\BaseClass;
 use common\components\lakala\Lakala;
@@ -100,6 +102,7 @@ class PurchaseClass extends BaseClass
                 $cg->save();
                 CgMergeClass::add(['mergeId' => $hasMergeId, 'cgId' => $cgId, 'mergeDate' => $date, 'ghsId' => $ghsId, 'mainId' => $mainId]);
                 self::syncCgMergeNumForMergeId($hasMergeId);
+                self::syncMergeRelationByCgIds([$cgId]);
             } else {
                 self::rebuildCgMergeGroupForDay($ids, $date, $ghsId, $mainId);
             }
@@ -142,6 +145,7 @@ class PurchaseClass extends BaseClass
                 $cg->save();
                 CgMergeClass::add(['mergeId' => $newMergeId, 'cgId' => $cgId, 'mergeDate' => $date, 'ghsId' => $ghsId, 'mainId' => $mainId]);
                 self::syncCgMergeNumForMergeId($newMergeId);
+                self::syncMergeRelationByCgIds([$cgId]);
             } else {
                 self::rebuildCgMergeGroupForDay($ids, $date, $ghsId, $mainId);
             }
@@ -169,6 +173,70 @@ class PurchaseClass extends BaseClass
             $addData[] = ['mergeId' => $mergeId, 'cgId' => $currentId, 'mergeDate' => $date, 'ghsId' => $ghsId, 'mainId' => $mainId];
         }
         CgMergeClass::batchAdd($addData);
+        self::syncMergeRelationByCgIds($ids);
+    }
+
+    public static function syncMergeRelationByOrderIds($orderIds)
+    {
+        if (empty($orderIds)) {
+            return false;
+        }
+        $orders = OrderClass::getByIds($orderIds, null, null, 'id,purchaseId');
+        if (empty($orders)) {
+            return false;
+        }
+        $cgIds = [];
+        foreach ($orders as $order) {
+            $purchaseId = $order['purchaseId'] ?? 0;
+            if (!empty($purchaseId)) {
+                $cgIds[] = $purchaseId;
+            }
+        }
+        return self::syncMergeRelationByCgIds($cgIds);
+    }
+
+    public static function syncMergeRelationByCgIds($cgIds)
+    {
+        if (empty($cgIds)) {
+            return false;
+        }
+        $cgIds = array_values(array_unique(array_filter($cgIds)));
+        if (empty($cgIds)) {
+            return false;
+        }
+        $cgs = self::getByIds($cgIds, null, null, 'id,saleId,mergeId');
+        if (empty($cgs)) {
+            return false;
+        }
+        foreach ($cgs as $cg) {
+            $cgId = $cg['id'] ?? 0;
+            $orderId = $cg['saleId'] ?? 0;
+            $cgMergeId = $cg['mergeId'] ?? 0;
+            if (empty($cgId) || empty($orderId) || empty($cgMergeId)) {
+                continue;
+            }
+            $order = OrderClass::getById($orderId, false, 'id,mergeId');
+            $ghsMergeId = $order['mergeId'] ?? 0;
+            if (empty($ghsMergeId)) {
+                continue;
+            }
+            $cgMergeSn = CgMergeSnClass::getById($cgMergeId, false, 'id,salt');
+            $ghsMergeSn = OrderMergeSnClass::getById($ghsMergeId, false, 'id,salt');
+            $cgSalt = $cgMergeSn['salt'] ?? '';
+            $ghsSalt = $ghsMergeSn['salt'] ?? '';
+            if (empty($cgSalt) || empty($ghsSalt)) {
+                continue;
+            }
+            CgMergeSnClass::updateById($cgMergeId, [
+                'ghsMergeId' => $ghsMergeId,
+                'ghsSalt' => $ghsSalt,
+            ]);
+            OrderMergeSnClass::updateById($ghsMergeId, [
+                'cgMergeId' => $cgMergeId,
+                'cgSalt' => $cgSalt,
+            ]);
+        }
+        return true;
     }
 
     /** 按 xhCgMerge 明细数量,回写该合并组内所有采购单的 mergeNum */
@@ -1200,6 +1268,7 @@ class PurchaseClass extends BaseClass
         $localConfirmTime = dict::getDict('local_gys_kd_auto_set_debt_time');
         $currentSet = $currentTime + $localConfirmTime;
         $data['autoSetTime'] = $data['autoSetTime'] ?? date("Y-m-d H:i:s", $currentSet);
+        $data['salt'] = $data['salt'] ?? stringUtil::charsShuffleLowerCase(10);
         //保存订单
         $respond = self::add($data, true);
 

+ 2 - 0
common/components/orderSn.php

@@ -44,6 +44,7 @@ class orderSn
     public static function getGhsOrderMergeId($data)
     {
         $data['id'] = null;
+        $data['salt'] = $data['salt'] ?? stringUtil::charsShuffleLowerCase(10);
         $respond = OrderMergeSnClass::add($data);
         $id = $respond['id'] ?? 0;
         if (empty($id)) {
@@ -55,6 +56,7 @@ class orderSn
     public static function getCgMergeId($data)
     {
         $data['id'] = null;
+        $data['salt'] = $data['salt'] ?? stringUtil::charsShuffleLowerCase(10);
         $respond = CgMergeSnClass::add($data);
         $id = $respond['id'] ?? 0;
         if (empty($id)) {