Procházet zdrojové kódy

修改花材时修改产品数

shish před 2 roky
rodič
revize
bf7fba5cb6

+ 0 - 3
app-ghs/controllers/ProductController.php

@@ -1037,9 +1037,6 @@ class ProductController extends BaseController
                 util::fail('特价和满减不能同时进行');
             }
         }
-
-        print_r($post['cpInfo']);die;
-
         $post['adminId'] = $this->adminId;
         $post['staffId'] = $this->shopAdmin->id;
         $post['staffName'] = $this->shopAdmin->name;

+ 49 - 0
biz-ghs/product/classes/ProductClass.php

@@ -9,6 +9,8 @@ use biz\item\classes\UnitClass;
 use biz\shop\services\ShopService;
 use biz\wx\classes\WxMessageClass;
 use bizGhs\base\classes\BaseClass;
+use bizGhs\cp\classes\CpClass;
+use bizGhs\cp\classes\CpItemClass;
 use bizGhs\custom\classes\CustomClass;
 use bizGhs\item\classes\CostChangeClass;
 use bizGhs\item\classes\ItemClass;
@@ -1603,6 +1605,53 @@ class ProductClass extends BaseClass
             CostChangeClass::addData($changeData);
         }
 
+        if (isset($data['cpInfo']) && !empty($data['cpInfo'])) {
+
+            $dbHas = CpItemClass::getAllByCondition(['productId' => $id], null, '*', 'cpId', true);
+
+            $cpIds = array_column($data['cpInfo'], 'cpId');
+            $cpInfoList = CpClass::getByIds($cpIds, null, 'id');
+            foreach ($data['cpInfo'] as $cpKey => $cpVal) {
+                $cpId = $cpVal['cpId'] ?? 0;
+                $hasCp = CpItemClass::getByCondition(['cpId' => $cpId, 'productId' => $id], true);
+                if (isset($cpInfoList[$cpId]) == false) {
+                    util::fail('添加了无效产品');
+                }
+                $currentCp = $cpInfoList[$cpId];
+                if (isset($currentCp['mainId']) == false || $currentCp['mainId'] != $mainId) {
+                    util::fail('不是你的产品哦');
+                }
+                if (isset($dbHas[$cpId]) == false) {
+                    //数据库里有,但传过来的没有,则需要删除
+                    CpItemClass::deleteByCondition(['cpId' => $cpId, 'productId' => $id]);
+                    continue;
+                }
+                $cpName = $currentCp['name'] ?? '';
+                $cpPy = $currentCp['py'] ?? '';
+                $name = $update['name'] ?? '';
+                $py = stringUtil::py($name);
+                if (empty($hasCp)) {
+                    $addCp = [
+                        'cpId' => $cpId,
+                        'productId' => $id,
+                        'name' => $name,
+                        'py' => $py,
+                        'cpName' => $cpName,
+                        'cpPy' => $cpPy,
+                        'mainId' => $mainId,
+                    ];
+                    CpItemClass::add($addCp);
+                }
+            }
+            $upData['hasCpId'] = 1;
+        } else {
+            foreach ($data['cpInfo'] as $cpKey => $cpVal) {
+                $cpId = $cpVal['cpId'] ?? 0;
+                CpItemClass::deleteByCondition(['cpId' => $cpId, 'productId' => $id]);
+            }
+            $upData['hasCpId'] = 0;
+        }
+
         self::updateById($id, $upData);
         //不影响其它直营店花材的上下架
         unset($upData['status']);