144 lines
4.8 KiB
PHP
144 lines
4.8 KiB
PHP
<?php
|
|
/**
|
|
* ThinkShop商城系统 - 团队十年电商经验汇集巨献!
|
|
* =========================================================
|
|
* Copy right 2019-2029 上海牛之云网络科技有限公司, 保留所有权利。
|
|
* ----------------------------------------------
|
|
* 官方网址: https://www.cdcloudshop.com
|
|
* =========================================================
|
|
*/
|
|
|
|
namespace app\model\stock;
|
|
|
|
|
|
use addon\o2o\model\store\Goods;
|
|
use app\model\store\Store;
|
|
|
|
|
|
/**
|
|
* 库存model (公共的库存相关改动和查询)
|
|
*
|
|
* @author Administrator
|
|
*
|
|
*/
|
|
class SaleStock extends GoodsStock
|
|
{
|
|
|
|
|
|
/**
|
|
* 减少库存(存在已经)
|
|
* @param $params
|
|
*/
|
|
public function decGoodsStock($params)
|
|
{
|
|
$goods_id = $params['goods_id'] ?? 0;
|
|
$sku_id = $params['sku_id'];
|
|
$site_id = $params['site_id'] ?? input('site_id', 1);
|
|
$store_id = $params['store_id'] ?? 0;
|
|
$is_default = 0;
|
|
if ($store_id == 0) {
|
|
$store_model = new Store();
|
|
$store_info = $store_model->getDefaultStore($site_id)['data'] ?? [];
|
|
$store_id = $store_info['store_id'];
|
|
$is_default = 0;
|
|
}
|
|
|
|
$temp_stock = $params['stock'];
|
|
if ($goods_id == 0) {
|
|
$sku_info = model('goods_sku')->getInfo([['sku_id', '=', $sku_id]], 'goods_id');
|
|
if (empty($sku_info)) {
|
|
return $this->error([], '找不到商品');
|
|
}
|
|
$goods_id = $sku_info['goods_id'];
|
|
}
|
|
$return_info = $this->isNotExistCreateStoreStock(['store_id' => $store_id, 'sku_id' => $sku_id, 'goods_id' => $goods_id])['data'] ?? [];
|
|
$sku_info = $return_info['sku_info'];
|
|
$stock = $sku_info['stock'] ?? 0;
|
|
if ($stock < $temp_stock)
|
|
return $this->error([], '库存不足');
|
|
$sku_condition = array(
|
|
['sku_id', '=', $sku_id],
|
|
['store_id', '=', $store_id]
|
|
);
|
|
model('store_goods_sku')->setDec($sku_condition, 'stock', $temp_stock);
|
|
$goods_condition = array(
|
|
['goods_id', '=', $goods_id],
|
|
['store_id', '=', $store_id]
|
|
);
|
|
model('store_goods')->setDec($goods_condition, 'stock', $temp_stock);
|
|
if (!$is_default) {
|
|
$store_model = new Store();
|
|
$store_info = $store_model->getDefaultStore($site_id)['data'] ?? [];
|
|
$default_store_id = $store_info['store_id'];
|
|
if ($store_id == $default_store_id) {
|
|
$is_default = 1;
|
|
}
|
|
}
|
|
if ($is_default) {
|
|
model('goods_sku')->setDec([['sku_id', '=', $sku_id]], 'stock', $temp_stock);
|
|
model('goods')->setDec([['goods_id', '=', $goods_id]], 'goods_stock', $temp_stock);
|
|
}
|
|
//todo 维护公共的销售库存
|
|
return $this->success();
|
|
}
|
|
|
|
/**
|
|
* 增加库存
|
|
* @param $params
|
|
* @return array
|
|
*/
|
|
public function incGoodsStock($params)
|
|
{
|
|
$goods_id = $params['goods_id'] ?? 0;
|
|
$sku_id = $params['sku_id'];
|
|
$site_id = $params['site_id'] ?? 1;
|
|
$store_id = $params['store_id'] ?? 0;
|
|
$is_default = 0;
|
|
if ($store_id == 0) {
|
|
$store_model = new Store();
|
|
$store_info = $store_model->getDefaultStore($site_id)['data'] ?? [];
|
|
$store_id = $store_info['store_id'];
|
|
$is_default = 1;
|
|
}
|
|
$temp_stock = $params['stock'];
|
|
if ($goods_id == 0) {
|
|
$sku_info = model('goods_sku')->getInfo([['sku_id', '=', $sku_id]], 'goods_id');
|
|
if (empty($sku_info)) {
|
|
return $this->error([], '找不到商品');
|
|
}
|
|
$goods_id = $sku_info['goods_id'];
|
|
}
|
|
$return_info = $this->isNotExistCreateStoreStock(['store_id' => $store_id, 'sku_id' => $sku_id, 'goods_id' => $goods_id])['data'] ?? [];
|
|
$sku_condition = array(
|
|
['sku_id', '=', $sku_id],
|
|
['store_id', '=', $store_id]
|
|
);
|
|
|
|
model('store_goods_sku')->setInc($sku_condition, 'stock', $temp_stock);
|
|
|
|
$goods_condition = array(
|
|
['goods_id', '=', $goods_id],
|
|
['store_id', '=', $store_id]
|
|
);
|
|
model('store_goods')->setInc($goods_condition, 'stock', $temp_stock);
|
|
//todo 维护公共的销售库存
|
|
|
|
if (!$is_default) {
|
|
$store_model = new Store();
|
|
$store_info = $store_model->getDefaultStore($site_id)['data'] ?? [];
|
|
$default_store_id = $store_info['store_id'];
|
|
if ($store_id == $default_store_id) {
|
|
$is_default = 1;
|
|
}
|
|
}
|
|
if ($is_default) {
|
|
model('goods_sku')->setInc([['sku_id', '=', $sku_id]], 'stock', $temp_stock);
|
|
model('goods')->setInc([['goods_id', '=', $goods_id]], 'goods_stock', $temp_stock);
|
|
}
|
|
|
|
return $this->success();
|
|
}
|
|
|
|
|
|
}
|