$sortMap = [
['position' => 1, 'goods._id' => 1],
['goods.volume' => -1, 'goods._id' => 1],
['goods.payPrice' => -1, 'goods._id' => 1],
['goods.payPrice' => 1, 'goods._id' => 1],
['goods.commissionRate' => -1, 'goods._id' => 1],
['goods.createTime' => -1, 'goods._id' => 1],
];
if ($activeId <= 0 || !in_array($sortType, array_keys($sortMap))) {
return $res;
}
$mongo = MongodbService::getInstance();
$sort = $sortMap[$sortType];
$offset = ($page -1) * $pageSize;
$pipe = [
['$match' => ['activeId' => intval($activeId)]],
['$lookup' => ['from' => 'goods', 'localField'=> 'goodsId', 'foreignField'=>'_id', 'as'=>'goods']],
['$project' => ['_id' => 0, 'goods' => 1, 'position' => 1]],
['$unwind' => '$goods'],
['$sort' => $sort],
['$skip' => $offset],
['$limit' => intval($pageSize)]
];
$info = $mongo->selectDatabase('shopping')->selectCollection('activeGoods')->aggregate($pipe);
foreach ($info as $value) {
array_push($res['list'], $this->formatGoodsList($value["goods"]));
}