Просмотр исходного кода

refactor(merchant): 修改商品推荐混入逻辑

- 将推荐商品混入方式从替换模式改为插入模式
- 移除原商品列表中的随机移除功能
- 简化混入数量计算逻辑
- 更新注释说明新的混入机制为不移除原商品
- 保持推荐商品随机插入到列表中的功能
shichen месяцев назад: 2
Родитель
Сommit
14ef7f0bb0
1 измененных файлов с 3 добавлено и 14 удалено
  1. 3 14
      app/controller/api/store/merchant/Merchant.php

+ 3 - 14
app/controller/api/store/merchant/Merchant.php

@@ -260,23 +260,12 @@ class Merchant extends BaseController
260 260
                                 }
261 261
                             }
262 262
 
263
-                            // 5. 随机混入:从原列表中随机移除同等数量商品,再随机插入推荐商品
264
-                            $actualMixCount = min(count($matchList), $mixCount, $limit);
263
+                            // 5. 随机混入:不移除原商品,将推荐商品随机插入到列表中
264
+                            $actualMixCount = min(count($matchList), $mixCount);
265 265
                             if ($actualMixCount > 0) {
266 266
                                 $matchList = array_slice($matchList, 0, $actualMixCount);
267 267
 
268
-                                // 随机选择要移除的商品位置
269
-                                $removeKeys = array_rand($result['list'], $actualMixCount);
270
-                                if (!is_array($removeKeys)) {
271
-                                    $removeKeys = [$removeKeys];
272
-                                }
273
-                                // 从大到小排序,避免删除时索引错乱
274
-                                rsort($removeKeys);
275
-                                foreach ($removeKeys as $rk) {
276
-                                    array_splice($result['list'], $rk, 1);
277
-                                }
278
-
279
-                                // 随机插入推荐商品
268
+                                // 随机插入推荐商品(不移除任何原商品)
280 269
                                 foreach ($matchList as $ml) {
281 270
                                     $insertPos = rand(0, count($result['list']));
282 271
                                     array_splice($result['list'], $insertPos, 0, [$ml]);