|
|
@@ -351,6 +351,9 @@ class GoodsClass extends BaseClass
|
|
|
*/
|
|
|
public static function groupGoodsBaseInfo($list, $getItem = false, $sortIds= [])
|
|
|
{
|
|
|
+ if (empty($list)) {
|
|
|
+ return [];
|
|
|
+ }
|
|
|
$arrNotEmpty = is_array($sortIds) && !empty($sortIds);
|
|
|
|
|
|
//注意这里涉及商家节日涨价的问题,不要去取不同商家的商品,确有必要另外起方法!!!!!!!!!!
|
|
|
@@ -366,108 +369,6 @@ class GoodsClass extends BaseClass
|
|
|
$goodsIds = array_column($list, 'id');
|
|
|
// 一次性获取所有商品的分类关系
|
|
|
$allGoodsCategories = GoodsCategoryClass::getGoodsHasCategoryIdsBatch($goodsIds);
|
|
|
-
|
|
|
- foreach ($list as $key => $val) {
|
|
|
- $id = $val['id'];
|
|
|
- //大中小图片转化
|
|
|
- $val = business::formatGoodsImg($val);
|
|
|
- //免费配送范围
|
|
|
- $val['freeSendDist'] = 5;
|
|
|
- $val['createDate'] = isset($val['createTime']) ? date("Y-m-d", strtotime($val['createTime'])) : '';
|
|
|
- //节日涨价
|
|
|
- if (!empty($rise)) {
|
|
|
- $price = $val['price'];
|
|
|
- if ($rise['riseType'] == 0) {
|
|
|
- //百分比
|
|
|
- $val['price'] = $price + sprintf("%.1f", ($price * $rise['riseAmount'] / 100));
|
|
|
- } else {
|
|
|
- //金额
|
|
|
- $val['price'] = $price + $rise['riseAmount'];
|
|
|
- }
|
|
|
- }
|
|
|
- //商品的分类
|
|
|
- $categoryIds = $allGoodsCategories[$id] ?? [];
|
|
|
- $val['categoryIdList'] = $categoryIds;
|
|
|
- $belongCategory = [];
|
|
|
- if (!empty($categoryIds)) {
|
|
|
- foreach ($categoryIds as $currentId) {
|
|
|
- $belongCategory[] = $sjHasCategory[$currentId]['categoryName'] ?? '';
|
|
|
- }
|
|
|
- }
|
|
|
- $val['belongCategory'] = $belongCategory;
|
|
|
- $shortCover = $val['cover'] ?? '';
|
|
|
- // 兼容 cover 保存的是数字(表示第几张图片)
|
|
|
- if (intval($shortCover) > 0) {
|
|
|
- $shopImg = isset($val['shortImgList']) ? $val['shortImgList'] : [];
|
|
|
- $idx = intval($shortCover) - 1;
|
|
|
- if (isset($shopImg[$idx])) {
|
|
|
- $shortCover = $shopImg[$idx];
|
|
|
- }
|
|
|
- }
|
|
|
- $val['shortCover'] = $shortCover;
|
|
|
- $val['cover'] = imgUtil::groupImg($shortCover);
|
|
|
- $val['smallCover'] = imgUtil::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_700,w_700";
|
|
|
- $val['bigCover'] = imgUtil::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_130,w_130";
|
|
|
- if ($getItem) {
|
|
|
- $itemList = GoodsItemClass::getAllByCondition(['goodsId' => $id], null, '*');
|
|
|
- foreach ($itemList as $itemKey => $itemVal) {
|
|
|
- $shortCover = $itemVal['cover'] ?? '';
|
|
|
- $smallCover = imgUtil::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_130,w_130";
|
|
|
- $bigCover = imgUtil::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_700,w_700";
|
|
|
- $itemList[$itemKey]['shortCover'] = $shortCover;
|
|
|
- $itemList[$itemKey]['smallCover'] = $smallCover;
|
|
|
- $itemList[$itemKey]['bigCover'] = $bigCover;
|
|
|
- }
|
|
|
- $val['goodsItem'] = $itemList;
|
|
|
- }
|
|
|
- //前端使用字段
|
|
|
- $val['bigCount'] = 0;
|
|
|
- if ($arrNotEmpty) {
|
|
|
- $sortIndex = array_search($id, $sortIds);
|
|
|
- // $newList[$sortIndex] = $val;
|
|
|
- $val['sortWeight'] = $sortIndex !== false ? $sortIndex : count($sortIds);
|
|
|
- }
|
|
|
-
|
|
|
- $list[$key] = $val;
|
|
|
- }
|
|
|
-
|
|
|
- if ($arrNotEmpty) {
|
|
|
- usort($list, function($a, $b) {
|
|
|
- return $a['sortWeight'] - $b['sortWeight'];
|
|
|
- });
|
|
|
- //return $newList;
|
|
|
- // return array_values($newList);
|
|
|
- }
|
|
|
-
|
|
|
- return $list;
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 批量组装商品基本信息 (优化版)
|
|
|
- * @param array $list goods商品数组
|
|
|
- * @param bool $getItem 是否获取"成品的花材"
|
|
|
- * @param array $sortIds 按商品分类的inTurn 进行排序的商品id数组
|
|
|
- * @return array
|
|
|
- */
|
|
|
- public static function groupGoodsBaseInfoBatch($list, $getItem = false, $sortIds = [])
|
|
|
- {
|
|
|
- if (empty($list)) {
|
|
|
- return [];
|
|
|
- }
|
|
|
-
|
|
|
- //注意这里涉及商家节日涨价的问题,不要去取不同商家的商品,确有必要另外起方法!!!!!!!!!!
|
|
|
- $currentData = current($list);
|
|
|
- $mainId = intval($currentData['mainId']);
|
|
|
- if ($mainId <= 0) {
|
|
|
- // 如果列表为空或者第一个商品没有mainId,则直接返回,避免错误
|
|
|
- return $list;
|
|
|
- }
|
|
|
-
|
|
|
- // 1. 一次性获取所有需要的外部数据
|
|
|
- $rise = GoodsSettingClass::getRise($mainId);
|
|
|
- $sjHasCategory = CategoryClass::getCategory($mainId);
|
|
|
- $goodsIds = array_column($list, 'id');
|
|
|
- $allGoodsCategories = GoodsCategoryClass::getGoodsHasCategoryIdsBatch($goodsIds);
|
|
|
|
|
|
$groupedItems = [];
|
|
|
if ($getItem && !empty($goodsIds)) {
|
|
|
@@ -477,18 +378,14 @@ class GoodsClass extends BaseClass
|
|
|
$groupedItems[$item['goodsId']][] = $item;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- $arrNotEmpty = is_array($sortIds) && !empty($sortIds);
|
|
|
-
|
|
|
- // 2. 循环组装数据
|
|
|
- foreach ($list as &$val) {
|
|
|
+
|
|
|
+ foreach ($list as $key => &$val) {
|
|
|
$id = $val['id'];
|
|
|
//大中小图片转化
|
|
|
$val = business::formatGoodsImg($val);
|
|
|
//免费配送范围
|
|
|
$val['freeSendDist'] = 5;
|
|
|
$val['createDate'] = isset($val['createTime']) ? date("Y-m-d", strtotime($val['createTime'])) : '';
|
|
|
-
|
|
|
//节日涨价
|
|
|
if (!empty($rise)) {
|
|
|
$price = $val['price'];
|
|
|
@@ -500,7 +397,6 @@ class GoodsClass extends BaseClass
|
|
|
$val['price'] = $price + $rise['riseAmount'];
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
//商品的分类
|
|
|
$categoryIds = $allGoodsCategories[$id] ?? [];
|
|
|
$val['categoryIdList'] = $categoryIds;
|
|
|
@@ -527,12 +423,12 @@ class GoodsClass extends BaseClass
|
|
|
$val['bigCover'] = imgUtil::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_130,w_130";
|
|
|
|
|
|
if ($getItem) {
|
|
|
- $currentItems = $groupedItems[$id] ?? [];
|
|
|
+ $currentItems = $groupedItems[$id];
|
|
|
foreach ($currentItems as &$itemVal) {
|
|
|
- $itemShortCover = $itemVal['cover'] ?? '';
|
|
|
- $itemVal['shortCover'] = $itemShortCover;
|
|
|
- $itemVal['smallCover'] = imgUtil::groupImg($itemShortCover) . "?x-oss-process=image/resize,m_fill,h_130,w_130";
|
|
|
- $itemVal['bigCover'] = imgUtil::groupImg($itemShortCover) . "?x-oss-process=image/resize,m_fill,h_700,w_700";
|
|
|
+ $shortCover = $itemVal['cover'] ?? '';
|
|
|
+ $itemVal['shortCover'] = $shortCover;
|
|
|
+ $itemVal['smallCover'] = imgUtil::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_130,w_130";
|
|
|
+ $itemVal['bigCover'] = imgUtil::groupImg($shortCover) . "?x-oss-process=image/resize,m_fill,h_700,w_700";
|
|
|
}
|
|
|
$val['goodsItem'] = $currentItems;
|
|
|
}
|
|
|
@@ -540,6 +436,7 @@ class GoodsClass extends BaseClass
|
|
|
$val['bigCount'] = 0;
|
|
|
if ($arrNotEmpty) {
|
|
|
$sortIndex = array_search($id, $sortIds);
|
|
|
+ // $newList[$sortIndex] = $val;
|
|
|
$val['sortWeight'] = $sortIndex !== false ? $sortIndex : count($sortIds);
|
|
|
}
|
|
|
}
|
|
|
@@ -549,6 +446,8 @@ class GoodsClass extends BaseClass
|
|
|
usort($list, function($a, $b) {
|
|
|
return $a['sortWeight'] - $b['sortWeight'];
|
|
|
});
|
|
|
+ //return $newList;
|
|
|
+ // return array_values($newList);
|
|
|
}
|
|
|
|
|
|
return $list;
|