Просмотр исходного кода

订单公司下的商品进行合并,购物车添加时相同的信息数量相加并修改

林海涛 1 год назад
Родитель
Сommit
c13b403d88

+ 19 - 4
app/workerapi/lists/shops/ShopOrderLists.php

@@ -28,17 +28,32 @@ class ShopOrderLists extends BaseWorkerDataLists
             }]);
         }])
             ->where($this->querySearch())
-            ->field('id, sn, pay_time, paw_way, pay_status, refund_status, create_time, amount_total, amount')
+            ->field('id, sn, pay_time, paw_way, pay_status, refund_status, create_time, amount_total, amount,shop_order_type')
             ->append(['pay_way_text','pay_status_text','refund_status_text'])
             ->limit($this->limitOffset, $this->limitLength)
             ->order('id', 'desc')
             ->select()
             ->toArray();
         foreach($lists as &$item){
-            foreach($item['orderGoods'] as &$val){
-                $val['remaining_inventory'] = isset($val['goodsSpecsInventory']['remaining_inventory']) ? $val['goodsSpecsInventory']['remaining_inventory']:0;
-                unset($val['goodsSpecsInventory'],$val['custom_attribute_items'],$val['specs'],$val['sn'],$val['goods_specs_inventory_id']);
+            $companyNameArr = array_column($item['orderGoods'],'company_name');
+            $orderGoodsArr = [];
+            foreach($companyNameArr as  $val){
+                $orderGoods = [];
+                foreach($item['orderGoods'] as $goodVal){
+                    $goodVal['remaining_inventory'] = isset($goodVal['goodsSpecsInventory']['remaining_inventory']) ? $goodVal['goodsSpecsInventory']['remaining_inventory']:0;
+                    if($val == $goodVal['company_name']){
+                        unset($goodVal['goodsSpecsInventory'],$goodVal['custom_attribute_items'],$goodVal['specs'],$goodVal['sn'],$goodVal['goods_specs_inventory_id'],$goodVal['company_name']);
+                        $orderGoods[] = $goodVal;
+                    }
+                }
+                if(!empty($orderGoods)){
+                    $orderGoodsArr[] = [
+                        'company_name' => $val,
+                        'goods' => $orderGoods
+                    ];
+                }
             }
+            $item['orderGoods'] = $orderGoodsArr;
         }
         return $lists;
     }

+ 8 - 1
app/workerapi/logic/shops/ShopCartLogic.php

@@ -39,7 +39,7 @@ class ShopCartLogic extends BaseLogic
      * @author likeadmin
      * @date 2024/08/04 11:07
      */
-    public static function add($params)
+    public static function add($params):bool
     {
         Db::startTrans();
         try{
@@ -52,6 +52,13 @@ class ShopCartLogic extends BaseLogic
             if($goodSpecInventoryModel->isEmpty()){
                 throw new \Exception('规格不存在');
             }
+            $model = ShopCart::where(['shop_goods_id'=>$params['shop_goods_id'],'goods_specs_inventory_id'=>$params['goods_specs_inventory_id'],'worker_id'=>$params['worker_id']])->findOrEmpty();
+            if(!$model->isEmpty()){
+                $model->number = $model->number + $params['number'];
+                $model->save();
+                Db::commit();
+                return true;
+            }
            ShopCart::create([
                 'shop_goods_id' => $params['shop_goods_id'],
                 'goods_specs_inventory_id' => $params['goods_specs_inventory_id'],

+ 19 - 4
app/workerapi/logic/shops/ShopOrderLogic.php

@@ -33,11 +33,26 @@ class ShopOrderLogic extends BaseLogic
     {
         $detail = ShopOrders::with(['orderGoods'=>function(Query $query){
             $query->field(['sn','goods_name','goods_image','number','service_fee','company_name','delivery_type','shop_goods_type','goods_specs_inventory_id','specs_type','custom_attribute_items','specs'])->append(['spec_arr','delivery_type_text','shop_goods_type_text']);
-        }])->field('id, sn, real_name,mobile, address,pay_time, paw_way,pay_sn, pay_status, refund_status, refund_transaction_id,create_time, amount_total, amount')
+        }])->field('id, sn, real_name,mobile, address,pay_time, paw_way,pay_sn, pay_status, refund_status, refund_transaction_id,create_time,shop_order_type,amount_total, amount')
         ->append(['pay_way_text','pay_status_text','refund_status_text'])->where(['sn'=> $params['sn'],'worker_id'=>$params['worker_id']])->findOrEmpty()->toArray();
-        foreach($detail['orderGoods'] as &$val){
-            unset($val['goodsSpecsInventory'],$val['custom_attribute_items'],$val['specs'],$val['sn'],$val['goods_specs_inventory_id']);
+        $orderGoodsArr = [];
+        $companyNameArr = array_column($detail['orderGoods'],'company_name');
+        foreach($companyNameArr as  $val) {
+            $orderGoods = [];
+            foreach ($detail['orderGoods'] as $goodVal) {
+                if($val == $goodVal['company_name']){
+                    unset($goodVal['goodsSpecsInventory'], $goodVal['custom_attribute_items'], $goodVal['specs'], $goodVal['sn'], $goodVal['goods_specs_inventory_id'],$goodVal['company_name']);
+                    $orderGoods[] = $goodVal;
+                }
+            }
+            if(!empty($orderGoods)){
+                $orderGoodsArr[] = [
+                    'company_name' => $val,
+                    'goods' => $orderGoods
+                ];
+            }
         }
+        $detail['orderGoods'] = $orderGoodsArr;
         return $detail;
     }
 
@@ -52,7 +67,7 @@ class ShopOrderLogic extends BaseLogic
                 'sn'=>$params['sn']
             ])->findOrEmpty();
             if($orderModel->isEmpty()){
-                throw new Exception('订单不存在或不是待支付状态');
+                throw new \Exception('订单不存在或不是待支付状态');
             }
             $orderModel->shop_order_type = 0;
             $orderModel->save();