|
@@ -94,6 +94,23 @@ class GoodsClass extends BaseClass
|
|
|
return $spec;
|
|
return $spec;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 封面必须是 shopImg 中的真实短路径。
|
|
|
|
|
+ * 历史默认值「1」表示第 1 张图,不是路径,不能入库。
|
|
|
|
|
+ * @param mixed $cover 提交的封面
|
|
|
|
|
+ * @param mixed $shopImg 图片短路径列表
|
|
|
|
|
+ * @return string
|
|
|
|
|
+ */
|
|
|
|
|
+ public static function normalizeGoodsCover($cover, $shopImg)
|
|
|
|
|
+ {
|
|
|
|
|
+ $list = is_array($shopImg) ? $shopImg : [];
|
|
|
|
|
+ $cover = is_string($cover) ? $cover : '';
|
|
|
|
|
+ if (!empty($list) && ($cover === '' || !in_array($cover, $list, true))) {
|
|
|
|
|
+ return strval($list[0]);
|
|
|
|
|
+ }
|
|
|
|
|
+ return $cover;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 同步多规格子记录:首规格已由 Form 回写到主记录,这里只维护第 2..n 个规格子行
|
|
* 同步多规格子记录:首规格已由 Form 回写到主记录,这里只维护第 2..n 个规格子行
|
|
|
* 关闭多规格时软删全部子行;仅一个规格时不建子行
|
|
* 关闭多规格时软删全部子行;仅一个规格时不建子行
|
|
@@ -153,7 +170,7 @@ class GoodsClass extends BaseClass
|
|
|
$specImg = $spec['shopImg'] ?? [];
|
|
$specImg = $spec['shopImg'] ?? [];
|
|
|
if (is_array($specImg) && !empty($specImg)) {
|
|
if (is_array($specImg) && !empty($specImg)) {
|
|
|
$fields['shopImg'] = json_encode($specImg);
|
|
$fields['shopImg'] = json_encode($specImg);
|
|
|
- $fields['cover'] = !empty($spec['cover']) && in_array($spec['cover'], $specImg, true) ? $spec['cover'] : $specImg[0];
|
|
|
|
|
|
|
+ $fields['cover'] = self::normalizeGoodsCover($spec['cover'] ?? '', $specImg);
|
|
|
}
|
|
}
|
|
|
if ($id && isset($old[$id])) {
|
|
if ($id && isset($old[$id])) {
|
|
|
$kept[] = $id;
|
|
$kept[] = $id;
|
|
@@ -698,6 +715,10 @@ class GoodsClass extends BaseClass
|
|
|
public static function addGoods($data, $work = null)
|
|
public static function addGoods($data, $work = null)
|
|
|
{
|
|
{
|
|
|
$data['createTime'] = date("Y-m-d H:i:s");
|
|
$data['createTime'] = date("Y-m-d H:i:s");
|
|
|
|
|
+ // 入库前校正封面:必须是 shopImg 里的路径,避免把历史占位值「1」写入 xhGoods.cover
|
|
|
|
|
+ if (isset($data['shopImg']) && is_array($data['shopImg'])) {
|
|
|
|
|
+ $data['cover'] = self::normalizeGoodsCover($data['cover'] ?? '', $data['shopImg']);
|
|
|
|
|
+ }
|
|
|
if (!empty($data['shopImg'])) {
|
|
if (!empty($data['shopImg'])) {
|
|
|
$data['shopImg'] = json_encode($data['shopImg']);
|
|
$data['shopImg'] = json_encode($data['shopImg']);
|
|
|
}
|
|
}
|
|
@@ -903,11 +924,9 @@ class GoodsClass extends BaseClass
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // 字符串的,即认为是 图片URL
|
|
|
|
|
- if (isset($data['cover']) && is_string($data['cover'])) {
|
|
|
|
|
-
|
|
|
|
|
- } else {
|
|
|
|
|
- $data['cover'] = $data['shopImg'][0] ?? '';
|
|
|
|
|
|
|
+ // 封面必须是 shopImg 中的真实短路径;历史默认值「1」表示第1张,不是路径
|
|
|
|
|
+ if (isset($data['shopImg']) && is_array($data['shopImg'])) {
|
|
|
|
|
+ $data['cover'] = self::normalizeGoodsCover($data['cover'] ?? '', $data['shopImg']);
|
|
|
}
|
|
}
|
|
|
$data['shopImg'] = json_encode($data['shopImg']);
|
|
$data['shopImg'] = json_encode($data['shopImg']);
|
|
|
$data['py'] = $py;
|
|
$data['py'] = $py;
|