shish 5 rokov pred
rodič
commit
07e434507b

+ 18 - 0
app/ghs/controllers/OrderController.php

@@ -7,6 +7,7 @@ use bizGhs\admin\classes\AdminClass;
 use bizGhs\custom\classes\CustomClass;
 use bizGhs\merchant\services\ShopService;
 use bizGhs\order\classes\OrderClass;
+use bizGhs\order\services\OrderItemService;
 use bizGhs\order\services\OrderService;
 use biz\saas\services\RegionService;
 use biz\user\services\UserService;
@@ -192,4 +193,21 @@ class OrderController extends BaseController
         util::success($info);
     }
 
+    //重选花材 shish 2021.1.22
+    public function actionReplaceProduct()
+    {
+        $post = Yii::$app->request->post();
+        $id = $post['id'] ?? 0;
+        $product = $post['product'] ?? '[]';
+        $product = json_decode($product, true);
+        //检查花材是否都是同家门店的
+        ProductClass::valid($product, $this->shopId);
+
+        $info = OrderClass::getOrderInfo($id);
+        OrderClass::valid($info, $this->shopId);
+
+        OrderItemService::replaceProduct($info, $product);
+        util::complete();
+    }
+
 }

+ 1 - 6
app/ghs/controllers/PurchaseOrderController.php

@@ -23,14 +23,9 @@ class PurchaseOrderController extends BaseController
             util::fail('请选择花材');
         }
         $ghsItemInfo = json_decode($ghsItemInfo,true); // [{productId:0,itemId:0,bigNum:1,smallNum:0}]
-        if(!is_array($ghsItemInfo)){
-            util::fail('花材格式不正确');
-        }
 
         //判断花材格式,是否属于当前门店
-        $productIds = array_column($ghsItemInfo,'productId');
-
-        ProductClass::valid($productIds,$this->shopId);
+        ProductClass::valid($ghsItemInfo,$this->shopId);
 
         //判断花材里的信息
         foreach ($ghsItemInfo as $v){

+ 3 - 4
app/shop/controllers/PurchaseController.php

@@ -19,11 +19,10 @@ class PurchaseController extends BaseController
         $shopId = $this->shopId;
         $post['shopId'] = $shopId;
         $product = $post['product'] ?? '';
-        $arr = json_decode($product, true);
+        $productList = json_decode($product, true);
         //判断product数据是不是同个供货商的
-        $ids = array_column($arr, 'productId');
-        ProductClass::valid($ids, $ghsShopId);
-        $post['product'] = $arr;
+        ProductClass::valid($productList, $ghsShopId);
+        $post['product'] = $productList;
         PurchaseClass::addPurchase($post);
         util::complete();
     }

+ 3 - 2
biz-ghs/order/classes/OrderClass.php

@@ -45,14 +45,15 @@ class OrderClass extends BaseClass
         $date = date("Y-m-d H:i:s");
         $merchantId = $data['merchantId'] ?? 0;
         $month = date("Ym");
-        $data['orderSn'] = orderSn::getGhsOrderSn();
+        $orderSn = orderSn::getGhsOrderSn();
+        $data['orderSn'] = $orderSn;
         $data['payStatus'] = 0;
         $data['createTime'] = $date;
         $data['addTime'] = time();
 
         //花材列表
         $product = $data['product'];
-        OrderItemClass::batchAdd($product);
+        OrderItemClass::replace($orderSn, $product);
 
         //将花店每月的总订单数作为编号
         $riseNum = StatOrderCountClass::addOrder($month, $merchantId);

+ 14 - 0
biz-ghs/order/classes/OrderItemClass.php

@@ -2,6 +2,7 @@
 
 namespace bizGhs\order\classes;
 
+use common\components\util;
 use Yii;
 use bizGhs\base\classes\BaseClass;
 
@@ -10,4 +11,17 @@ class OrderItemClass extends BaseClass
 
     public static $baseFile = '\bizGhs\order\models\OrderItem';
 
+    //添加和修改花材
+    public static function replace($orderSn, $product)
+    {
+        if (empty($product)) {
+            util::fail('没有花材');
+        }
+        self::deleteByCondition(['orderSn' => $orderSn]);
+        foreach ($product as $key => $val) {
+            $product[$key]['orderSn'] = $orderSn;
+        }
+        self::batchAdd($product);
+    }
+
 }

+ 20 - 0
biz-ghs/order/services/OrderItemService.php

@@ -3,6 +3,9 @@
 namespace bizGhs\order\services;
 
 use bizGhs\base\services\BaseService;
+use bizGhs\order\classes\OrderClass;
+use bizGhs\order\classes\OrderItemClass;
+use common\components\util;
 use Yii;
 
 class OrderItemService extends BaseService
@@ -10,4 +13,21 @@ class OrderItemService extends BaseService
 
     public static $baseFile = '\bizGhs\order\classes\OrderItemClass';
 
+    //添加修改花材 shish 2021.1.22
+    public static function replace($info, $product)
+    {
+        if (isset($info['sendStatus']) == false) {
+            util::fail('订单无配送状态');
+        }
+        //确认当前订单是否还可以修改花材
+        if ($info['sendStatus'] >= OrderClass::ORDER_STATUS_SENDING) {
+            util::fail('此订单已经不能修改花材');
+        }
+        $orderSn = $info['orderSn'];
+        OrderItemClass::replace($orderSn, $product);
+
+        //价格还要进行修改 todo @lqh
+
+    }
+
 }

+ 237 - 232
biz-ghs/product/classes/ProductClass.php

@@ -11,73 +11,72 @@ use common\services\xhItemService;
 class ProductClass extends BaseClass
 {
 
-	public static $baseFile = '\bizGhs\product\models\Product';
-
-	//根据itemIds获取相应的花材信息
-	public static function getProductInfoByItemIds(array $itemIds)
-	{
-		$where = ['itemId' => ['in', $itemIds], 'delStatus' => 0];
-		$data = self::getAllList('*', $where);
-		$data = self::groupItemBaseInfo($data);
-		return $data;
-	}
-
-	//根据花材ID,获取花材名称,图片
-	public static function groupItemBaseInfo($list)
-	{
-		//取得itemIds
-		$itemIds = array_column($list, 'itemId');
-		//获取相应的图片,名称,py
-		$where = ['id' => $itemIds];
-		$data = xhItemService::getAllByCondition($where, null, '*');
-		if (!empty($data)) {
-			$data = array_column($data, NULL, 'id');
-			foreach ($list as $k => $v) {
-				$cover = self::groupImg($data[$v['itemId']]['cover']);
-				$unitNum = $data[$v['itemId']]['unitNum']??0;
-				$stockInfo = self::formatStock($v['stock'], $unitNum);
-				$list[$k]['cover'] = $cover;
-				$list[$k]['bigNum'] = $stockInfo['bigNum'];
-				$list[$k]['smallNum'] = $stockInfo['smallNum'];
-				$list[$k]['itemName'] = $data[$v['itemId']]['name']??'';
-				$list[$k]['ratio'] = $unitNum??0;
-				//换算大小单位对应价格
+    public static $baseFile = '\bizGhs\product\models\Product';
+
+    //根据itemIds获取相应的花材信息
+    public static function getProductInfoByItemIds(array $itemIds)
+    {
+        $where = ['itemId' => ['in', $itemIds], 'delStatus' => 0];
+        $data = self::getAllList('*', $where);
+        $data = self::groupItemBaseInfo($data);
+        return $data;
+    }
+
+    //根据花材ID,获取花材名称,图片
+    public static function groupItemBaseInfo($list)
+    {
+        //取得itemIds
+        $itemIds = array_column($list, 'itemId');
+        //获取相应的图片,名称,py
+        $where = ['id' => $itemIds];
+        $data = xhItemService::getAllByCondition($where, null, '*');
+        if (!empty($data)) {
+            $data = array_column($data, NULL, 'id');
+            foreach ($list as $k => $v) {
+                $cover = self::groupImg($data[$v['itemId']]['cover']);
+                $unitNum = $data[$v['itemId']]['unitNum'] ?? 0;
+                $stockInfo = self::formatStock($v['stock'], $unitNum);
+                $list[$k]['cover'] = $cover;
+                $list[$k]['bigNum'] = $stockInfo['bigNum'];
+                $list[$k]['smallNum'] = $stockInfo['smallNum'];
+                $list[$k]['itemName'] = $data[$v['itemId']]['name'] ?? '';
+                $list[$k]['ratio'] = $unitNum ?? 0;
+                //换算大小单位对应价格
                 $list[$k]['bigPrice'] = $v['price']; //大单位价格就是product表存的价格
                 $smallPrice = 0;
-                if($unitNum){
-                    $smallPrice =  bcdiv($v['price'],$unitNum,2);
+                if ($unitNum) {
+                    $smallPrice = bcdiv($v['price'], $unitNum, 2);
                 }
-                $list[$k]['smallPrice'] =$smallPrice;
-				$list[$k]['bigUnit'] = xhItemService::getUnitName($data[$v['itemId']]['bigUnit']);
-				$list[$k]['smallUnit'] = xhItemService::getUnitName($data[$v['itemId']]['smallUnit']);
-			}
-		}
-		return $list;
-	}
-
-
-
-	//根据花材ID,库存=》  计算出多少扎,多少支
-	public static function formatStockByItemId($itemId, $stock)
-	{
-		$unitNum = xhItemService::getItemUnitNum($itemId);
-		return self::formatStock($stock, $unitNum);
-	}
-
-	//花材的库存转换: 库存是小数,根据各个花材的unitNum, 计算出多少扎,多少支
-	public static function formatStock($stock, $unitNum)
-	{
-		$bigNum = floor($stock); // 扎
-		$stockArr = explode('.', $stock);
-		$smallNum = 0; //支
-		if (count($stockArr) === 2) {
+                $list[$k]['smallPrice'] = $smallPrice;
+                $list[$k]['bigUnit'] = xhItemService::getUnitName($data[$v['itemId']]['bigUnit']);
+                $list[$k]['smallUnit'] = xhItemService::getUnitName($data[$v['itemId']]['smallUnit']);
+            }
+        }
+        return $list;
+    }
+
+
+    //根据花材ID,库存=》  计算出多少扎,多少支
+    public static function formatStockByItemId($itemId, $stock)
+    {
+        $unitNum = xhItemService::getItemUnitNum($itemId);
+        return self::formatStock($stock, $unitNum);
+    }
+
+    //花材的库存转换: 库存是小数,根据各个花材的unitNum, 计算出多少扎,多少支
+    public static function formatStock($stock, $unitNum)
+    {
+        $bigNum = floor($stock); // 扎
+        $stockArr = explode('.', $stock);
+        $smallNum = 0; //支
+        if (count($stockArr) === 2) {
             $smallNum = bcdiv(bcmul($stockArr[1], $unitNum, 1), 100);
-		}
-		return [
-			'bigNum' => $bigNum,
-			'smallNum' => (int)$smallNum,
-		];
-	}
+        }
+        return [
+            'bigNum' => $bigNum,
+            'smallNum' => (int)$smallNum,
+        ];
+    }
 
     /**
      * 根据 花材ID,将花材大小数量 换算成小数
@@ -86,13 +85,13 @@ class ProductClass extends BaseClass
      * @param $itemId  花材ID
      * @return string
      */
-	public static function mergeItemNumByItemId($num, $smallNum, $itemId)
-	{
-		$unitNum = xhItemService::getItemUnitNum($itemId);
-		return self::mergeItemNum($num, $smallNum, $unitNum);
-	}
+    public static function mergeItemNumByItemId($num, $smallNum, $itemId)
+    {
+        $unitNum = xhItemService::getItemUnitNum($itemId);
+        return self::mergeItemNum($num, $smallNum, $unitNum);
+    }
 
-	//花材扎、支 合并转换 小数
+    //花材扎、支 合并转换 小数
 
     /**
      * @param $num  大单位 数量
@@ -100,52 +99,51 @@ class ProductClass extends BaseClass
      * @param $unitNum  花材比例
      * @return string
      */
-	public static function mergeItemNum($num, $smallNum, $unitNum)
-	{
-		$stockDecimal = 0;
-		if ($unitNum > 0) {
-			$stockDecimal = bcdiv($smallNum, $unitNum, 2);
-		}
-		$itemNum = bcadd($num, $stockDecimal, 2);
-		return $itemNum;
-	}
-
-
-	//获取常用的itemIds
-	public static function getOftenItemIds($merchantId)
-	{
-		$data = self::getAllList("itemId", ['merchantId' => $merchantId], 'actualSold desc');
-		if ($data) {
-			$data = array_column($data, 'itemId');
-		}
-		return $data;
-	}
-
-
-
-	//加库存,允许负库存,负数数量(盘点时)
-
-	/**
-	 * @param $productId  门店下的花材ID(xhGhsItemInfo 主键ID)
-	 * @param $itemNumBundle  花材数量(扎)
-	 * @param $itemNumPiece  花材数量(支)
-	 * @return bool
-	 */
-	public static function addStock($productId, $itemNumBundle, $itemNumPiece)
-	{
-		$productData = self::getById($productId);
-		if (!$productData) {
-			util::fail("花材不存在");
-		}
-		$itemId = $productData['itemId'];
-		$unitNum = xhItemService::getItemUnitNum($itemId);
-		//转成小数,加库存
-		$itemNum = self::mergeItemNum($itemNumBundle, $itemNumPiece, $unitNum);
-		$newStock = bcadd($productData['stock'], $itemNum, 2);
-		self::updateById($productId, ['stock' => $newStock]);
-		return true;
-	}
+    public static function mergeItemNum($num, $smallNum, $unitNum)
+    {
+        $stockDecimal = 0;
+        if ($unitNum > 0) {
+            $stockDecimal = bcdiv($smallNum, $unitNum, 2);
+        }
+        $itemNum = bcadd($num, $stockDecimal, 2);
+        return $itemNum;
+    }
+
+
+    //获取常用的itemIds
+    public static function getOftenItemIds($merchantId)
+    {
+        $data = self::getAllList("itemId", ['merchantId' => $merchantId], 'actualSold desc');
+        if ($data) {
+            $data = array_column($data, 'itemId');
+        }
+        return $data;
+    }
+
+
+
+    //加库存,允许负库存,负数数量(盘点时)
 
+    /**
+     * @param $productId  门店下的花材ID(xhGhsItemInfo 主键ID)
+     * @param $itemNumBundle  花材数量(扎)
+     * @param $itemNumPiece  花材数量(支)
+     * @return bool
+     */
+    public static function addStock($productId, $itemNumBundle, $itemNumPiece)
+    {
+        $productData = self::getById($productId);
+        if (!$productData) {
+            util::fail("花材不存在");
+        }
+        $itemId = $productData['itemId'];
+        $unitNum = xhItemService::getItemUnitNum($itemId);
+        //转成小数,加库存
+        $itemNum = self::mergeItemNum($itemNumBundle, $itemNumPiece, $unitNum);
+        $newStock = bcadd($productData['stock'], $itemNum, 2);
+        self::updateById($productId, ['stock' => $newStock]);
+        return true;
+    }
 
 
     /**
@@ -154,131 +152,138 @@ class ProductClass extends BaseClass
      * @param $itemNum  数量
      * @return bool
      */
-	public static function addStockByItemNum($productId, $itemNum)
-	{
-		$productData = self::getById($productId, true);
-		if (!$productData) {
-			util::fail("花材不存在");
-		}
-		$newStock = bcadd($productData->stock, $itemNum, 2);
-		$productData->stock = $newStock;
-		$productData->save();
-		return true;
-	}
-
-	//减库存,允许负库存,负数数量(盘点时)
-
-	/**
-	 * @param $productId  门店下的花材ID(xhGhsItemInfo 主键ID)
-	 * @param $itemNumBundle  花材数量(扎)
-	 * @param $itemNumPiece  花材数量(支)
-	 * @return bool
-	 */
-	public static function decreaseStock($productId, $itemNumBundle, $itemNumPiece)
-	{
-		$productData = self::getById($productId, true);
-		if (!$productData) {
-			util::fail("花材不存在");
-		}
-		$itemId = $productData['itemId'];
-		$unitNum = xhItemService::getItemUnitNum($itemId);
-		//转成小数,更新库存
-		$itemNum = self::mergeItemNum($itemNumBundle, $itemNumPiece, $unitNum);
-		$newStock = bcsub($productData->stock, $itemNum, 2);
-		$productData->stock = $newStock;
-		$productData->save();
-		return true;
-	}
-
-
-	//根据数量加库存
-	public static function decreaseStockByItemNum($productId, $itemNum)
-	{
-		$productData = self::getById($productId);
-		if (!$productData) {
-			util::fail("花材不存在");
-		}
-		$newStock = bcsub($productData['stock'], $itemNum, 2);
-		self::updateById($productId, ['stock' => $newStock]);
-		return true;
-	}
-
-	//计算价格
-	/**
-	 * @param $productId  门店下的花材ID(xhGhsItemInfo 主键ID)
-	 * @param $itemNumBundle  花材数量(扎)
-	 * @param $itemNumPiece  花材数量(支)
-	 * @return bool
-	 */
-	public static function computedPrice($productId, $itemNumBundle, $itemNumPiece)
-	{
-		//获取itemId的价格
-		$productData = self::getById($productId);
-		if (!$productData) {
-			util::fail("花材不存在");
-		}
-		$price = $productData['price'];
-		$itemId = $productData['itemId'];
-		$unitNum = xhItemService::getItemUnitNum($itemId);
-		//换算出一支多少钱
-		$piecePrice = 0;
-		if ($unitNum > 0) {
-			//有支
-			$unitPrice = bcdiv($price, $unitNum, 2);
-			$piecePrice = bcmul($unitPrice, $itemNumPiece, 2);
-		}
-		$bundlePrice = bcmul($price, $itemNumBundle, 2);
-
-		$total = bcadd($bundlePrice, $piecePrice, 2);
-		return $total;
-	}
-
-	//获取小单位的价格
-    public static function priceConvert($unitNum,$price)
+    public static function addStockByItemNum($productId, $itemNum)
     {
+        $productData = self::getById($productId, true);
+        if (!$productData) {
+            util::fail("花材不存在");
+        }
+        $newStock = bcadd($productData->stock, $itemNum, 2);
+        $productData->stock = $newStock;
+        $productData->save();
+        return true;
+    }
+
+    //减库存,允许负库存,负数数量(盘点时)
 
+    /**
+     * @param $productId  门店下的花材ID(xhGhsItemInfo 主键ID)
+     * @param $itemNumBundle  花材数量(扎)
+     * @param $itemNumPiece  花材数量(支)
+     * @return bool
+     */
+    public static function decreaseStock($productId, $itemNumBundle, $itemNumPiece)
+    {
+        $productData = self::getById($productId, true);
+        if (!$productData) {
+            util::fail("花材不存在");
+        }
+        $itemId = $productData['itemId'];
+        $unitNum = xhItemService::getItemUnitNum($itemId);
+        //转成小数,更新库存
+        $itemNum = self::mergeItemNum($itemNumBundle, $itemNumPiece, $unitNum);
+        $newStock = bcsub($productData->stock, $itemNum, 2);
+        $productData->stock = $newStock;
+        $productData->save();
+        return true;
+    }
+
+
+    //根据数量加库存
+    public static function decreaseStockByItemNum($productId, $itemNum)
+    {
+        $productData = self::getById($productId);
+        if (!$productData) {
+            util::fail("花材不存在");
+        }
+        $newStock = bcsub($productData['stock'], $itemNum, 2);
+        self::updateById($productId, ['stock' => $newStock]);
+        return true;
+    }
+
+    //计算价格
+
+    /**
+     * @param $productId  门店下的花材ID(xhGhsItemInfo 主键ID)
+     * @param $itemNumBundle  花材数量(扎)
+     * @param $itemNumPiece  花材数量(支)
+     * @return bool
+     */
+    public static function computedPrice($productId, $itemNumBundle, $itemNumPiece)
+    {
+        //获取itemId的价格
+        $productData = self::getById($productId);
+        if (!$productData) {
+            util::fail("花材不存在");
+        }
+        $price = $productData['price'];
+        $itemId = $productData['itemId'];
+        $unitNum = xhItemService::getItemUnitNum($itemId);
+        //换算出一支多少钱
+        $piecePrice = 0;
+        if ($unitNum > 0) {
+            //有支
+            $unitPrice = bcdiv($price, $unitNum, 2);
+            $piecePrice = bcmul($unitPrice, $itemNumPiece, 2);
+        }
+        $bundlePrice = bcmul($price, $itemNumBundle, 2);
+
+        $total = bcadd($bundlePrice, $piecePrice, 2);
+        return $total;
+    }
+
+    //获取小单位的价格
+    public static function priceConvert($unitNum, $price)
+    {
+
+    }
+
+    //根据门店ID, 平台花材ID, 获取门店的花材ID
+    public static function getGhsProductId($shopId, $itemId)
+    {
+        $data = self::getGhsProductDataByItemId($shopId, $itemId);
+        if ($data) {
+            return $data['id'];
+        }
+        return 0;
     }
 
-	//根据门店ID, 平台花材ID, 获取门店的花材ID
-	public static function getGhsProductId($shopId, $itemId)
-	{
-		$data = self::getGhsProductDataByItemId($shopId, $itemId);
-		if ($data) {
-			return $data['id'];
-		}
-		return 0;
-	}
-
-	public static function getGhsProductDataByItemId($shopId, $itemId)
-	{
-		$where = [
-			'shopId' => $shopId,
-			'itemId' => $itemId,
-		];
-		$data = self::getByCondition($where);
-		return $data;
-	}
-
-	//有效花材判断,包括id有效、同个门店等 shish 2021.1.19
-	public static function valid($ids, $shopId)
-	{
-		$ids = is_numeric($ids) ? [$ids] : $ids;
-		$productList = self::getByIds($ids);
-		if (!empty($productList)) {
-			foreach ($productList as $product) {
-				if (isset($product['shopId']) == false || $product['shopId'] != $shopId) {
-					util::fail('只能选择一家的商品');
-				}
-			}
-			if (count($productList) != count($ids)) {
-				util::fail('存在无效商品');
-			}
-		}else{
+    public static function getGhsProductDataByItemId($shopId, $itemId)
+    {
+        $where = [
+            'shopId' => $shopId,
+            'itemId' => $itemId,
+        ];
+        $data = self::getByCondition($where);
+        return $data;
+    }
+
+    //有效花材判断,包括id有效、同个门店等 shish 2021.1.19
+    public static function valid($product, $shopId)
+    {
+        if (!is_array($product)) {
+            util::fail('数据错误');
+        }
+        if (empty($product)) {
+            util::fail('请选择花材');
+        }
+        $ids = array_column($product, 'productId');
+        $productList = self::getByIds($ids);
+        if (!empty($productList)) {
+            foreach ($productList as $product) {
+                if (isset($product['shopId']) == false || $product['shopId'] != $shopId) {
+                    util::fail('只能选择一家的商品');
+                }
+            }
+            if (count($productList) != count($ids)) {
+                util::fail('存在无效商品');
+            }
+        } else {
             util::fail('商品不存在');
         }
-	}
+    }
 
-	//通过ids 批量获取花材商品的信息
+    //通过ids 批量获取花材商品的信息
     public static function getProductByIds($ids)
     {
         return self::getByIds($ids);