Authored by hugufei

修改分页bug

... ... @@ -62,18 +62,21 @@ public class UserRecallResponseBuilder {
//6、处理firstSkn-直通车等信息
sknResultList = this.doReRank(userRecallRequest, sknResultList);
//7、分页处理
//7、处理平衡
sknResultList = this.doBalance(userRecallRequest, sknResultList);
//8、分页处理
int pageSize = userRecallRequest.getPageSize();
int recallTotalPage = (sknResultList.size() / pageSize);
int recallTotalCount = Math.min(sknResultList.size(), RecallConfigConstants.USER_MAX_RECALL_COUNT);
int recallTotalPage = recallTotalCount / pageSize;//计算总页数,最小为1。
if (recallTotalPage == 0) {
recallTotalPage = 1;
}
int userMaxRecallCount = RecallConfigConstants.USER_MAX_RECALL_COUNT;
recallTotalPage = Math.min(recallTotalPage, userMaxRecallCount / pageSize);//为用户最多保留X个skn进缓存
sknResultList = SearchCollectionUtils.safeSubList(sknResultList, 0, recallTotalPage * pageSize);
sknResultList = SearchCollectionUtils.safeSubList(sknResultList, 0, recallTotalPage * pageSize);//为用户最多保留X个skn进缓存
RECALL_NEW_LOGGER.info("total recall skn count after merger2 is [{}]", sknResultList.size());
//8、添加日志
//9、添加日志
if (userRecallRequest.openDetailLog()) {
for (RecallMergerResult.SknResult sknResult : sknResultList) {
try {
... ... @@ -84,7 +87,7 @@ public class UserRecallResponseBuilder {
}
}
//9、构造返回结果
//10、构造返回结果
List<RecallSknInfo> sknList = new ArrayList<>();
for (RecallMergerResult.SknResult sknResult : sknResultList) {
sknList.add(new RecallSknInfo(sknResult.getProductSkn(), sknResult.getStrategy().name()));
... ... @@ -288,9 +291,18 @@ public class UserRecallResponseBuilder {
int recallInterval = recallConfigService.queryStrategyConfigInterval(userRecallRequest, strategyEnum, 10);
this.addByIndexIndex(sknResultList, results, fromIndex++, recallInterval, (sknResult -> strategyEnum.equals(sknResult.getStrategy())), dropTransfer);
}
return results;
}
// 4、品牌平衡
results = productListSortHelper.sortProductList(results, new ProductListSortKey<RecallMergerResult.SknResult>() {
/**
* 品牌/品类平衡
*/
private List<RecallMergerResult.SknResult> doBalance(UserRecallRequest userRecallRequest, List<RecallMergerResult.SknResult> results) {
if (!userRecallRequest.isDefaultOrder()) {
return results;
}
List<RecallMergerResult.SknResult> balanceResult = productListSortHelper.sortProductList(results, new ProductListSortKey<RecallMergerResult.SknResult>() {
@Override
public String getSortKey(RecallMergerResult.SknResult product) {
return product.getBrandId() == null ? "default" : product.getBrandId().toString();
... ... @@ -306,10 +318,10 @@ public class UserRecallResponseBuilder {
return 8;
}
});
return results;
return balanceResult;
}
/**
* 单策略召回时,超出数量直接丢弃
*/
... ...
... ... @@ -11,7 +11,7 @@ public class UserRecallResponse implements Serializable{
private long total;
private int recallTotal;
private int recallTotalPage;
private int recallTotalPage;//最小为1
private List<RecallSknInfo> sknList;
public UserRecallResponse() {
... ...