|
|
@@ -9,8 +9,6 @@ use biz\stat\classes\StatCgPlantClass;
|
|
|
use biz\stat\classes\StatOutClass;
|
|
|
use bizHd\goods\services\GoodsCategoryService;
|
|
|
use bizHd\message\classes\ChatClass;
|
|
|
-use bizHd\order\classes\OrderClass;
|
|
|
-use bizHd\work\classes\WorkClass;
|
|
|
use bizHd\work\classes\WorkItemClass;
|
|
|
use common\components\business;
|
|
|
use common\components\dict;
|
|
|
@@ -33,14 +31,18 @@ class GoodsClass extends BaseClass
|
|
|
{
|
|
|
$ids = array_values(array_unique(array_filter(array_map('intval', is_array($ids) ? $ids : []))));
|
|
|
$valid = UseCaseClass::getAllByCondition(['mainId'=>$mainId, 'delStatus'=>0, 'status'=>1], null, 'id', 'id');
|
|
|
- foreach ($ids as $id) if (!isset($valid[$id])) util::fail('使用场景不可用');
|
|
|
+ foreach ($ids as $id) {
|
|
|
+ if (!isset($valid[$id])) util::fail('使用场景不可用');
|
|
|
+ }
|
|
|
GoodsUseCaseClass::deleteByCondition(['goodsId'=>$goodsId]);
|
|
|
- foreach ($ids as $id) GoodsUseCaseClass::add(['mainId'=>$mainId, 'goodsId'=>$goodsId, 'useCaseId'=>$id]);
|
|
|
+ foreach ($ids as $id) {
|
|
|
+ GoodsUseCaseClass::add(['mainId'=>$mainId, 'goodsId'=>$goodsId, 'useCaseId'=>$id]);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public static function appendUseCasesAndSpecs($goods, $mainId)
|
|
|
{
|
|
|
- $id = $goods['id'] ?? 0;
|
|
|
+ $id = $goods['id'];
|
|
|
$relations = GoodsUseCaseClass::getAllByCondition(['goodsId'=>$id], null, 'useCaseId');
|
|
|
$goods['useCaseIdList'] = array_map('intval', array_column($relations, 'useCaseId'));
|
|
|
$specs = self::getAllByCondition(['masterId'=>$id, 'delStatus'=>0], 'id ASC', '*');
|
|
|
@@ -58,11 +60,13 @@ class GoodsClass extends BaseClass
|
|
|
|
|
|
public static function syncSpecs($master, $data)
|
|
|
{
|
|
|
- $masterId = is_array($master) ? ($master['id'] ?? 0) : ($master->id ?? 0);
|
|
|
- $enabled = (int)($data['specEnabled'] ?? 0);
|
|
|
+ $masterId = $master->id;
|
|
|
+ $enabled = (int)($data['specEnabled']);
|
|
|
$old = self::getAllByCondition(['masterId'=>$masterId, 'delStatus'=>0], null, '*', 'id');
|
|
|
if (!$enabled) {
|
|
|
- if (!empty($old)) self::updateByCondition(['masterId'=>$masterId], ['delStatus'=>1]);
|
|
|
+ if (!empty($old)) {
|
|
|
+ self::updateByCondition(['masterId'=>$masterId], ['delStatus'=>1]);
|
|
|
+ }
|
|
|
return;
|
|
|
}
|
|
|
$base = self::getById($masterId);
|
|
|
@@ -76,19 +80,36 @@ class GoodsClass extends BaseClass
|
|
|
$id = (int)($spec['id'] ?? 0); $kept[] = $id;
|
|
|
$fields = $base;
|
|
|
unset($fields['createTime']);
|
|
|
- $fields = array_merge($fields, ['specName'=>trim($spec['specName'] ?? ''),'price'=>(float)($spec['price'] ?? 0),'priceType'=>(int)($spec['priceType'] ?? 0),'stock'=>(int)($spec['stock'] ?? 0),'stockSet'=>(int)($spec['stockSet'] ?? 0),'flowerNum'=>(int)($spec['flowerNum'] ?? 0),'weight'=>(float)($spec['weight'] ?? 1),'sold'=>(int)($spec['sold'] ?? 0),'masterId'=>$masterId,'status'=>(int)($data['status'] ?? 1),'delStatus'=>0]);
|
|
|
+ $fields = array_merge($fields, [
|
|
|
+ 'specName'=>trim($spec['specName'] ?? ''),
|
|
|
+ 'price'=>(float)($spec['price'] ?? 0),
|
|
|
+ 'priceType'=>(int)($spec['priceType'] ?? 0),
|
|
|
+ 'stock'=>(int)($spec['stock'] ?? 0),
|
|
|
+ 'stockSet'=>(int)($spec['stockSet'] ?? 0),
|
|
|
+ 'flowerNum'=>(int)($spec['flowerNum'] ?? 0),
|
|
|
+ 'weight'=>(float)($spec['weight'] ?? 1),
|
|
|
+ 'sold'=>(int)($spec['sold'] ?? 0),
|
|
|
+ 'masterId'=>$masterId,
|
|
|
+ 'status'=>(int)($data['status'] ?? 1),
|
|
|
+ 'delStatus'=>0
|
|
|
+ ]
|
|
|
+ );
|
|
|
$specImg = $spec['shopImg'] ?? [];
|
|
|
if (is_array($specImg) && !empty($specImg)) {
|
|
|
$fields['shopImg'] = json_encode($specImg);
|
|
|
$fields['cover'] = !empty($spec['cover']) && in_array($spec['cover'], $specImg, true) ? $spec['cover'] : $specImg[0];
|
|
|
}
|
|
|
- if ($id && isset($old[$id])) self::updateById($id, $fields);
|
|
|
- else {
|
|
|
+ if ($id && isset($old[$id])) {
|
|
|
+ self::updateById($id, $fields);
|
|
|
+ } else {
|
|
|
$child = $fields; $child['sn'] = orderSn::getGoodsSn($child); $child['createTime']=date('Y-m-d H:i:s'); self::add($child, true);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
$remove = array_diff(array_keys($old), array_filter($kept));
|
|
|
- if ($remove) \bizHd\goods\models\Goods::updateAll(['delStatus'=>1], ['and', ['masterId'=>$masterId], ['in', 'id', $remove]]);
|
|
|
+ if ($remove) {
|
|
|
+ \bizHd\goods\models\Goods::updateAll(['delStatus'=>1], ['and', ['masterId'=>$masterId], ['in', 'id', $remove]]);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public static function orderCreateGoods($data)
|
|
|
@@ -509,6 +530,7 @@ class GoodsClass extends BaseClass
|
|
|
* 批量判断主商品是否启用多规格(masterId 指向该商品且未删除)
|
|
|
* @param array $goodsIds 主商品 id 列表
|
|
|
* @return array [goodsId => 1|0]
|
|
|
+ * @throws \Exception
|
|
|
*/
|
|
|
public static function getSpecEnabledMap($goodsIds)
|
|
|
{
|