|
|
@@ -23,6 +23,7 @@ class ProductClass extends BaseClass
|
|
|
const PRICE_LABEL_CHANGE = 2; //改价
|
|
|
const LOCK_STOCK = 'lock_stock';//修改库存锁
|
|
|
const LOCK_PRICE = 'lock_price'; //改价锁
|
|
|
+ const LOCK_CHECK_STOCK = 'lock_check_stock'; //判断库存
|
|
|
|
|
|
//根据itemIds获取相应的花材信息
|
|
|
public static function getProductInfoByItemIds(array $itemIds, $shopId)
|
|
|
@@ -196,8 +197,14 @@ class ProductClass extends BaseClass
|
|
|
*/
|
|
|
public static function addStock($productId, $itemNumBundle, $itemNumPiece)
|
|
|
{
|
|
|
+ $key = self::LOCK_STOCK . '_' . $productId;
|
|
|
+ $lock = util::lock($key);
|
|
|
+ if (!$lock) {
|
|
|
+ util::fail("系统繁忙中,请稍后再试!");
|
|
|
+ }
|
|
|
$productData = self::getById($productId);
|
|
|
if (!$productData) {
|
|
|
+ util::unlock($key);
|
|
|
util::fail("花材不存在");
|
|
|
}
|
|
|
$itemId = $productData['itemId'];
|
|
|
@@ -206,6 +213,7 @@ class ProductClass extends BaseClass
|
|
|
$itemNum = self::mergeItemNum($itemNumBundle, $itemNumPiece, $unitNum);
|
|
|
$newStock = bcadd($productData['stock'], $itemNum, 2);
|
|
|
self::updateStockById($productId, $newStock);
|
|
|
+ util::unlock($key);
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
@@ -220,12 +228,19 @@ class ProductClass extends BaseClass
|
|
|
*/
|
|
|
public static function addStockByItemNum($productId, $itemNum)
|
|
|
{
|
|
|
+ $key = self::LOCK_STOCK . '_' . $productId;
|
|
|
+ $lock = util::lock($key);
|
|
|
+ if (!$lock) {
|
|
|
+ util::fail("系统繁忙中,请稍后再试!");
|
|
|
+ }
|
|
|
$productData = self::getById($productId, true);
|
|
|
if (!$productData) {
|
|
|
+ util::unlock($key);
|
|
|
util::fail("花材不存在");
|
|
|
}
|
|
|
$newStock = bcadd($productData->stock, $itemNum, 2);
|
|
|
self::updateStockById($productId, $newStock);
|
|
|
+ util::unlock($key);
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
@@ -235,19 +250,33 @@ class ProductClass extends BaseClass
|
|
|
* @param $productId 门店下的花材ID(xhGhsItemInfo 主键ID)
|
|
|
* @param $itemNumBundle 花材数量(扎)
|
|
|
* @param $itemNumPiece 花材数量(支)
|
|
|
+ * @param $checkStock boolean 是否需要判断库存
|
|
|
* @return bool
|
|
|
*/
|
|
|
- public static function decreaseStock($productId, $itemNumBundle, $itemNumPiece)
|
|
|
+ public static function decreaseStock($productId, $itemNumBundle, $itemNumPiece,$checkStock=false)
|
|
|
{
|
|
|
+ $key = self::LOCK_STOCK . '_' . $productId;
|
|
|
+ $lock = util::lock($key);
|
|
|
+ if (!$lock) {
|
|
|
+ util::fail("系统繁忙中,请稍后再试!");
|
|
|
+ }
|
|
|
$productData = self::getById($productId, true);
|
|
|
if (!$productData) {
|
|
|
+ util::unlock($key);
|
|
|
util::fail("花材不存在");
|
|
|
}
|
|
|
+
|
|
|
$ratio = $productData['ratio'];
|
|
|
//转成小数,更新库存
|
|
|
$itemNum = self::mergeItemNum($itemNumBundle, $itemNumPiece, $ratio);
|
|
|
$newStock = bcsub($productData->stock, $itemNum, 2);
|
|
|
+ if($checkStock && $newStock < 0){
|
|
|
+ //需要判断库存是否充足
|
|
|
+ util::unlock($key);
|
|
|
+ util::fail("库存不足");
|
|
|
+ }
|
|
|
self::updateStockById($productId, $newStock);
|
|
|
+ util::unlock($key);
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
@@ -259,14 +288,26 @@ class ProductClass extends BaseClass
|
|
|
* @param $itemNum
|
|
|
* @return bool
|
|
|
*/
|
|
|
- public static function decreaseStockByItemNum($productId, $itemNum)
|
|
|
+ public static function decreaseStockByItemNum($productId, $itemNum,$checkStock=false)
|
|
|
{
|
|
|
+ $key = self::LOCK_STOCK . '_' . $productId;
|
|
|
+ $lock = util::lock($key);
|
|
|
+ if (!$lock) {
|
|
|
+ util::fail("系统繁忙中,请稍后再试!");
|
|
|
+ }
|
|
|
$productData = self::getById($productId);
|
|
|
if (!$productData) {
|
|
|
+ util::unlock($key);
|
|
|
util::fail("花材不存在");
|
|
|
}
|
|
|
$newStock = bcsub($productData['stock'], $itemNum, 2);
|
|
|
+ if($checkStock && $newStock < 0){
|
|
|
+ //需要判断库存是否充足
|
|
|
+ util::unlock($key);
|
|
|
+ util::fail("库存不足");
|
|
|
+ }
|
|
|
self::updateStockById($productId, $newStock);
|
|
|
+ util::unlock($key);
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
@@ -385,17 +426,11 @@ class ProductClass extends BaseClass
|
|
|
//todo 库存修改 加锁
|
|
|
public static function updateStockById($id, $stock, $adminId = 0)
|
|
|
{
|
|
|
- $key = self::LOCK_STOCK . '_' . $id;
|
|
|
- $lock = util::lock($key);
|
|
|
- if (!$lock) {
|
|
|
- util::fail("系统繁忙中,请稍后再试!");
|
|
|
- }
|
|
|
$data['stock'] = $stock;
|
|
|
if ($adminId) {
|
|
|
$data['adminId'] = $adminId;
|
|
|
}
|
|
|
$res = self::updateById($id, $data);
|
|
|
- util::unlock($key);
|
|
|
return $res;
|
|
|
}
|
|
|
|