Authored by hugufei

对象重命名

... ... @@ -8,13 +8,13 @@ import com.yoho.search.base.utils.Transfer;
import com.yoho.search.core.es.model.SearchParam;
import com.yoho.search.core.es.model.SearchResult;
import com.yoho.search.models.SearchApiResult;
import com.yoho.search.recall.scene.beans.builder.RecallParamsBuilder;
import com.yoho.search.recall.scene.beans.builder.UserRecallRequestBuilder;
import com.yoho.search.recall.scene.beans.cache.QueryProductInfoCacheBean;
import com.yoho.search.recall.scene.beans.cache.QueryRecallResultCacheBean;
import com.yoho.search.recall.scene.beans.helper.SortBuilderHelper;
import com.yoho.search.recall.scene.beans.strategy.StrategyNameEnum;
import com.yoho.search.recall.scene.models.req.RecallParamsRequest;
import com.yoho.search.recall.scene.models.req.RecallParamsResponse;
import com.yoho.search.recall.scene.models.req.UserRecallRequest;
import com.yoho.search.recall.scene.models.req.UserRecallResponse;
import com.yoho.search.recall.scene.models.common.RecallSknInfo;
import com.yoho.search.service.base.SearchCommonService;
import com.yoho.search.service.helper.SearchCommonHelper;
... ... @@ -38,7 +38,7 @@ public class SceneRecallProductListService {
private static final Logger RECALL_NEW_LOGGER = LoggerFactory.getLogger("RECALL");
@Autowired
private RecallParamsBuilder recallParamsBuilder;
private UserRecallRequestBuilder userRecallRequestBuilder;
@Autowired
private SearchCommonHelper searchCommonHelper;
@Autowired
... ... @@ -62,9 +62,9 @@ public class SceneRecallProductListService {
return new SearchApiResult().setCode(400).setMessage("分页参数不合法");
}
//2、构造召回相关参数
RecallParamsRequest recallParamsRequest = recallParamsBuilder.buildRecallParams(paramMap, pageSize);
UserRecallRequest userRecallRequest = userRecallRequestBuilder.buildUserRecallRequest(paramMap, pageSize);
//3、执行召回
return this.recallProductList(recallParamsRequest, page);
return this.recallProductList(userRecallRequest, page);
} catch (Exception e) {
RECALL_NEW_LOGGER.error(e.getMessage(), e);
return new SearchApiResult().setData(null).setCode(500).setMessage("Exception");
... ... @@ -73,45 +73,45 @@ public class SceneRecallProductListService {
/**
* 个性化召回列表入口2
* @param recallParamsRequest
* @param userRecallRequest
* @param page
* @return
*/
public SearchApiResult recallProductList(RecallParamsRequest recallParamsRequest, int page) {
public SearchApiResult recallProductList(UserRecallRequest userRecallRequest, int page) {
//1、执行召回
long begin = System.currentTimeMillis();
RecallParamsResponse recallParamsResponse = queryRecallResultCacheBean.queryRecallResult(recallParamsRequest);
UserRecallResponse userRecallResponse = queryRecallResultCacheBean.queryRecallResult(userRecallRequest);
RECALL_NEW_LOGGER.info("RecallProductListService[1]-queryRecallResult,cost is [{}]", System.currentTimeMillis()-begin);
//2、根据召回结果查询商品信息
List<Map<String, Object>> productList = this.queryProductList(recallParamsRequest, recallParamsResponse,page, recallParamsRequest.getPageSize());
List<Map<String, Object>> productList = this.queryProductList(userRecallRequest, userRecallResponse,page, userRecallRequest.getPageSize());
//3、构造返回结果
JSONObject dataMap = new JSONObject();
dataMap.put("total", recallParamsResponse.getTotal());
dataMap.put("total", userRecallResponse.getTotal());
dataMap.put("page", page);
dataMap.put("page_size", recallParamsRequest.getPageSize());
dataMap.put("page_total", searchCommonHelper.getTotalPage(recallParamsResponse.getTotal(), recallParamsRequest.getPageSize()));
dataMap.put("page_size", userRecallRequest.getPageSize());
dataMap.put("page_total", searchCommonHelper.getTotalPage(userRecallResponse.getTotal(), userRecallRequest.getPageSize()));
dataMap.put("product_list", productList);
return new SearchApiResult().setData(dataMap);
}
/**
* 根据召回结果查询商品列表
* @param recallParamsRequest
* @param recallParamsResponse
* @param userRecallRequest
* @param userRecallResponse
* @param page
* @param pageSize
* @return
*/
private List<Map<String, Object>> queryProductList(RecallParamsRequest recallParamsRequest, RecallParamsResponse recallParamsResponse, int page, int pageSize) {
private List<Map<String, Object>> queryProductList(UserRecallRequest userRecallRequest, UserRecallResponse userRecallResponse, int page, int pageSize) {
//1、判断当前页码是否在召回的页码里
int recallTotalPage = recallParamsResponse.getRecallTotalPage();
int recallTotalPage = userRecallResponse.getRecallTotalPage();
//2、在召回结果中则直接根据skn去查询
long begin = System.currentTimeMillis();
List<RecallSknInfo> recallSknInfos = null;
if(page<=recallTotalPage){
recallSknInfos = CollectionUtils.safeSubList(recallParamsResponse.getSknList(),(page-1)*pageSize,page*pageSize);
recallSknInfos = CollectionUtils.safeSubList(userRecallResponse.getSknList(),(page-1)*pageSize,page*pageSize);
}else{
recallSknInfos = this.queryProductSknByFilterSkn(recallParamsRequest, recallParamsResponse.getSknList(), page-recallTotalPage, pageSize);
recallSknInfos = this.queryProductSknByFilterSkn(userRecallRequest, userRecallResponse.getSknList(), page-recallTotalPage, pageSize);
}
RECALL_NEW_LOGGER.info("SceneRecallProductListService[2].getRecallSknInfos,cost is [{}]", System.currentTimeMillis()-begin);
... ... @@ -149,18 +149,18 @@ public class SceneRecallProductListService {
* @param pageSize
* @return
*/
private List<RecallSknInfo> queryProductSknByFilterSkn(RecallParamsRequest recallParamsRequest, List<RecallSknInfo> recallSknInfos, int realPage, int pageSize){
private List<RecallSknInfo> queryProductSknByFilterSkn(UserRecallRequest userRecallRequest, List<RecallSknInfo> recallSknInfos, int realPage, int pageSize){
long begin = System.currentTimeMillis();
SearchParam searchParam = new SearchParam();
//1、设置query
searchParam.setQuery(recallParamsRequest.getParamQueryFilter().getParamQuery());
searchParam.setQuery(userRecallRequest.getParamQueryFilter().getParamQuery());
//2、设置filter
List<Integer> notProductSkns = new ArrayList<>();
for (RecallSknInfo recallSknInfo:recallSknInfos ){
notProductSkns.add(recallSknInfo.getProductSkn());
}
BoolQueryBuilder filter = recallParamsRequest.getParamQueryFilter().getParamFilter();
BoolQueryBuilder filter = userRecallRequest.getParamQueryFilter().getParamFilter();
filter.mustNot(QueryBuilders.termsQuery(ProductIndexEsField.productSkn,notProductSkns));
searchParam.setFiter(filter);
... ...
package com.yoho.search.recall.scene.beans.builder;
import com.yoho.search.recall.scene.models.common.ParamQueryFilter;
import com.yoho.search.recall.scene.models.req.RecallParamsRequest;
import com.yoho.search.recall.scene.models.req.UserRecallRequest;
import com.yoho.search.recall.sort.helper.RecallServiceHelper;
import com.yoho.search.service.helper.SearchServiceHelper;
import org.apache.commons.collections.MapUtils;
... ... @@ -14,7 +14,7 @@ import java.util.List;
import java.util.Map;
@Component
public class RecallParamsBuilder {
public class UserRecallRequestBuilder {
@Autowired
private SearchServiceHelper searchServiceHelepr;
... ... @@ -28,7 +28,7 @@ public class RecallParamsBuilder {
* @return
* @throws Exception
*/
public RecallParamsRequest buildRecallParams(Map<String, String> paramMap, int pageSize) throws Exception {
public UserRecallRequest buildUserRecallRequest(Map<String, String> paramMap, int pageSize) throws Exception {
//1、获取链接中的query和filter参数
QueryBuilder query = searchServiceHelepr.constructQueryBuilder(paramMap);
BoolQueryBuilder filter = searchServiceHelepr.constructFilterBuilder(paramMap, null);
... ... @@ -45,7 +45,7 @@ public class RecallParamsBuilder {
* @return
* @throws Exception
*/
public RecallParamsRequest buildPromotionRecallParams(Map<String, String> paramMap, BoolQueryBuilder promotionMustFilter, int pageSize) throws Exception {
public UserRecallRequest buildPromotionRecallParams(Map<String, String> paramMap, BoolQueryBuilder promotionMustFilter, int pageSize) throws Exception {
//1、获取链接中的query和filter参数
QueryBuilder query = searchServiceHelepr.constructQueryBuilder(paramMap);
BoolQueryBuilder filter = searchServiceHelepr.constructFilterBuilder(paramMap, null);
... ... @@ -56,14 +56,14 @@ public class RecallParamsBuilder {
return this.innerBuildRecallParams(paramQueryFilter,paramMap,pageSize);
}
private RecallParamsRequest innerBuildRecallParams(ParamQueryFilter paramQueryFilter, Map<String, String> paramMap, int pageSize) {
private UserRecallRequest innerBuildRecallParams(ParamQueryFilter paramQueryFilter, Map<String, String> paramMap, int pageSize) {
//1、获取firstSkn参数
List<String> firstProductSkns = recallServiceHelper.getFirstProductSkns(paramMap);
//2、获取uid或udid
int uid = MapUtils.getIntValue(paramMap, "uid", 0);
String udid = MapUtils.getString(paramMap, "udid", "");
//3、返回召回参数
return new RecallParamsRequest(paramQueryFilter, pageSize, firstProductSkns, uid, udid);
return new UserRecallRequest(paramQueryFilter, pageSize, firstProductSkns, uid, udid);
}
}
... ...
... ... @@ -8,8 +8,8 @@ import com.yoho.search.recall.performance.model.UserFeatureFactor;
import com.yoho.search.recall.scene.beans.cache.QueryProductVectorInfoCacheBean;
import com.yoho.search.recall.scene.beans.strategy.StrategyNameEnum;
import com.yoho.search.recall.scene.models.common.RecallMergerResult;
import com.yoho.search.recall.scene.models.req.RecallParamsRequest;
import com.yoho.search.recall.scene.models.req.RecallParamsResponse;
import com.yoho.search.recall.scene.models.req.UserRecallRequest;
import com.yoho.search.recall.scene.models.req.UserRecallResponse;
import com.yoho.search.recall.scene.models.common.RecallSknInfo;
import com.yoho.search.service.base.ProductListSortKey;
import com.yoho.search.service.base.ProductListSortService;
... ... @@ -23,7 +23,7 @@ import org.springframework.stereotype.Component;
import java.util.*;
@Component
public class RecallResultBuilder {
public class UserRecallResponseBuilder {
private static final Logger RECALL_NEW_LOGGER = LoggerFactory.getLogger("RECALL");
... ... @@ -36,7 +36,7 @@ public class RecallResultBuilder {
@Autowired
private QueryProductVectorInfoCacheBean queryProductVectorInfoCacheBean;
public RecallParamsResponse builderRecallResult(RecallMergerResult recallMergerResult, RecallParamsRequest param, UserPersonalFactorRsp userPersonalFactorRsp){
public UserRecallResponse builderRecallResult(RecallMergerResult recallMergerResult, UserRecallRequest param, UserPersonalFactorRsp userPersonalFactorRsp){
//1、获取总数
final long total = recallMergerResult.getTotal();
... ... @@ -72,7 +72,7 @@ public class RecallResultBuilder {
sknList.add(new RecallSknInfo(sknResult.getProductSkn(),sknResult.getRequestType()));
}
int recallTotal = sknResultList.size();
return new RecallParamsResponse(total,recallTotal,recallTotalPage,sknList);
return new UserRecallResponse(total,recallTotal,recallTotalPage,sknList);
}
/**
... ...
... ... @@ -16,7 +16,7 @@ import java.util.List;
import java.util.Map;
@Component
public class QueryRecallResultCacheBean extends AbstractCacheBean<RecallParamsRequest,RecallParamsResponse,RecallParamsRequestResponse> {
public class QueryRecallResultCacheBean extends AbstractCacheBean<UserRecallRequest,UserRecallResponse,UserRecallRequestResponse> {
private static final Logger RECALL_NEW_LOGGER = LoggerFactory.getLogger("RECALL");
... ... @@ -33,17 +33,17 @@ public class QueryRecallResultCacheBean extends AbstractCacheBean<RecallParamsRe
@Autowired
private RecallMergerResultBuilder recallMergerResultBuilder;
@Autowired
private RecallResultBuilder recallResultBuilder;
private UserRecallResponseBuilder userRecallResponseBuilder;
/**
* 召回入口
* @param recallParamsRequest
* @param userRecallRequest
* @return
*/
public RecallParamsResponse queryRecallResult(RecallParamsRequest recallParamsRequest){
public UserRecallResponse queryRecallResult(UserRecallRequest userRecallRequest){
//1、构建请求
List<RecallParamsRequestResponse> requests = new ArrayList<>();
requests.add(new RecallParamsRequestResponse(recallParamsRequest));
List<UserRecallRequestResponse> requests = new ArrayList<>();
requests.add(new UserRecallRequestResponse(userRecallRequest));
//2、执行父类方法
this.bacthFillResponseWithCache(requests,1);
... ... @@ -61,10 +61,10 @@ public class QueryRecallResultCacheBean extends AbstractCacheBean<RecallParamsRe
}
@Override
protected Map<RecallParamsRequest, RecallParamsResponse> queryMissCacheRequestResults(List<RecallParamsRequestResponse> missCachseRequests) {
Map<RecallParamsRequest, RecallParamsResponse> results = new HashMap<>();
for (RecallParamsRequestResponse request: missCachseRequests) {
RecallParamsResponse response = this.doRealRecall(request.getRequest());
protected Map<UserRecallRequest, UserRecallResponse> queryMissCacheRequestResults(List<UserRecallRequestResponse> missCachseRequests) {
Map<UserRecallRequest, UserRecallResponse> results = new HashMap<>();
for (UserRecallRequestResponse request: missCachseRequests) {
UserRecallResponse response = this.doRealRecall(request.getRequest());
results.put(request.getRequest(),response);
}
return results;
... ... @@ -75,7 +75,7 @@ public class QueryRecallResultCacheBean extends AbstractCacheBean<RecallParamsRe
* @param param
* @return
*/
private RecallParamsResponse doRealRecall(RecallParamsRequest param) {
private UserRecallResponse doRealRecall(UserRecallRequest param) {
//1、获取个性化因子
long begin = System.currentTimeMillis();
UserPersonalFactorRsp userPersonalFactorRsp = queryUserPersionalFactorBean.queryPersionalFactor(param);
... ... @@ -92,9 +92,9 @@ public class QueryRecallResultCacheBean extends AbstractCacheBean<RecallParamsRe
RECALL_NEW_LOGGER.info("QueryRecallResultCacheBean[3]-buildRecallMergerResult,cost is [{}]", System.currentTimeMillis()-begin);
//5、构造真实结果[排序,截取skn]
begin = System.currentTimeMillis();
RecallParamsResponse recallParamsResponse = recallResultBuilder.builderRecallResult(recallMergerResult, param, userPersonalFactorRsp);
UserRecallResponse userRecallResponse = userRecallResponseBuilder.builderRecallResult(recallMergerResult, param, userPersonalFactorRsp);
RECALL_NEW_LOGGER.info("QueryRecallResultCacheBean[4]-builderRecallResult,cost is [{}]", System.currentTimeMillis()-begin);
return recallParamsResponse;
return userRecallResponse;
}
/**
... ... @@ -103,7 +103,7 @@ public class QueryRecallResultCacheBean extends AbstractCacheBean<RecallParamsRe
* @param userPersonalFactorRsp
* @return
*/
private List<RecallRequest> buildBatchRequests(RecallParamsRequest param, UserPersonalFactorRsp userPersonalFactorRsp) {
private List<RecallRequest> buildBatchRequests(UserRecallRequest param, UserPersonalFactorRsp userPersonalFactorRsp) {
//1、构造召回请求
List<RecallRequest> allRequests = new ArrayList<>();
//2、构造非个性化的请求
... ...
... ... @@ -5,7 +5,7 @@ import com.yoho.search.core.personalized.models.SortPriceArea;
import com.yoho.search.core.personalized.models.UserPersonalFactorRsp;
import com.yoho.search.recall.scene.constants.RecallCommonConstants;
import com.yoho.search.recall.scene.models.personal.PagePersonalFactor;
import com.yoho.search.recall.scene.models.req.RecallParamsRequest;
import com.yoho.search.recall.scene.models.req.UserRecallRequest;
import com.yoho.search.recall.scene.models.personal.PageSortPriceArea;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
... ... @@ -29,18 +29,18 @@ public class QueryUserPersionalFactorBean {
/**
* 获取个性化因子
*
* @param recallParamsRequest
* @param userRecallRequest
* @return
*/
public UserPersonalFactorRsp queryPersionalFactor(RecallParamsRequest recallParamsRequest) {
public UserPersonalFactorRsp queryPersionalFactor(UserRecallRequest userRecallRequest) {
try {
//1、获取页面上的个性化因子
long begin = System.currentTimeMillis();
PagePersonalFactor pageFactor = pageComponent.queryPagePersionalFactor(recallParamsRequest.getParamQueryFilter());
PagePersonalFactor pageFactor = pageComponent.queryPagePersionalFactor(userRecallRequest.getParamQueryFilter());
RECALL_NEW_LOGGER.info("queryPagePersionalFactor . cost is[{}]", System.currentTimeMillis() - begin);
//2、获取用户的个性化因子
begin = System.currentTimeMillis();
UserPersonalFactorRsp userFactor = userComponent.queryUserPersionalFactor(recallParamsRequest.getUid(), recallParamsRequest.getUdid());
UserPersonalFactorRsp userFactor = userComponent.queryUserPersionalFactor(userRecallRequest.getUid(), userRecallRequest.getUdid());
RECALL_NEW_LOGGER.info("queryUserPersionalFactor . cost is[{}]", System.currentTimeMillis() - begin);
//3、join获取最终的结果
begin = System.currentTimeMillis();
... ... @@ -48,7 +48,7 @@ public class QueryUserPersionalFactorBean {
List<SortPriceArea> sortPriceAreas = this.getSortPriceAreaWithSort(pageFactor, userFactor);
//4、构造UserPersonalFactorRsp
UserPersonalFactorRsp userPersonalFactorRsp = new UserPersonalFactorRsp(brandIds, sortPriceAreas, userFactor.getVector());
RECALL_NEW_LOGGER.info("innerJoinFactor . cost is[{}],uid is[{}], data is [{}] ", System.currentTimeMillis() - begin, recallParamsRequest.getUid(), JSON.toJSONString(userPersonalFactorRsp));
RECALL_NEW_LOGGER.info("innerJoinFactor . cost is[{}],uid is[{}], data is [{}] ", System.currentTimeMillis() - begin, userRecallRequest.getUid(), JSON.toJSONString(userPersonalFactorRsp));
return userPersonalFactorRsp;
} catch (Exception e) {
logger.error(e.getMessage(), e);
... ...
... ... @@ -9,7 +9,7 @@ import com.yoho.search.recall.scene.models.common.ICacheRequest;
import java.util.List;
public class RecallParamsRequest implements ICacheRequest {
public class UserRecallRequest implements ICacheRequest {
private final ParamQueryFilter paramQueryFilter;
private final int pageSize;
... ... @@ -18,7 +18,7 @@ public class RecallParamsRequest implements ICacheRequest {
private final String udid;
private RedisKeyBuilder redisKeyBuilder;
public RecallParamsRequest(ParamQueryFilter paramQueryFilter, int pageSize, List<String> firstProductSkns, int uid, String udid) {
public UserRecallRequest(ParamQueryFilter paramQueryFilter, int pageSize, List<String> firstProductSkns, int uid, String udid) {
this.paramQueryFilter = paramQueryFilter;
this.firstProductSkns = firstProductSkns;
this.pageSize = pageSize;
... ...
... ... @@ -4,33 +4,33 @@ import com.alibaba.fastjson.JSON;
import com.yoho.search.base.utils.Transfer;
import com.yoho.search.recall.scene.models.common.AbstractCacheRequestResponse;
public class RecallParamsRequestResponse extends AbstractCacheRequestResponse<RecallParamsRequest,RecallParamsResponse> {
public class UserRecallRequestResponse extends AbstractCacheRequestResponse<UserRecallRequest,UserRecallResponse> {
public RecallParamsRequestResponse(RecallParamsRequest request) {
public UserRecallRequestResponse(UserRecallRequest request) {
super(request);
}
private static Transfer<String,RecallParamsResponse> toResponseTransfer = new Transfer<String, RecallParamsResponse>() {
private static Transfer<String,UserRecallResponse> toResponseTransfer = new Transfer<String, UserRecallResponse>() {
@Override
public RecallParamsResponse transfer(String jsonValue) {
return JSON.parseObject(jsonValue, RecallParamsResponse.class);
public UserRecallResponse transfer(String jsonValue) {
return JSON.parseObject(jsonValue, UserRecallResponse.class);
}
};
private static Transfer<RecallParamsResponse,String> fromResponseTransfer = new Transfer<RecallParamsResponse, String>() {
private static Transfer<UserRecallResponse,String> fromResponseTransfer = new Transfer<UserRecallResponse, String>() {
@Override
public String transfer(RecallParamsResponse recallParamsResponse) {
return JSON.toJSONString(recallParamsResponse);
public String transfer(UserRecallResponse userRecallResponse) {
return JSON.toJSONString(userRecallResponse);
}
};
@Override
public Transfer<String, RecallParamsResponse> getToResponseTransfer() {
public Transfer<String, UserRecallResponse> getToResponseTransfer() {
return toResponseTransfer;
}
@Override
public Transfer<RecallParamsResponse, String> getFromResponseTransfer() {
public Transfer<UserRecallResponse, String> getFromResponseTransfer() {
return fromResponseTransfer;
}
}
... ...
... ... @@ -5,7 +5,7 @@ import com.yoho.search.recall.scene.models.common.RecallSknInfo;
import java.io.Serializable;
import java.util.List;
public class RecallParamsResponse implements Serializable{
public class UserRecallResponse implements Serializable{
private static final long serialVersionUID = -5692239509936546967L;
... ... @@ -14,11 +14,11 @@ public class RecallParamsResponse implements Serializable{
private int recallTotalPage;
private List<RecallSknInfo> sknList;
public RecallParamsResponse() {
public UserRecallResponse() {
}
public RecallParamsResponse(long total, int recallTotal, int recallTotalPage, List<RecallSknInfo> sknList) {
public UserRecallResponse(long total, int recallTotal, int recallTotalPage, List<RecallSknInfo> sknList) {
this.total = total;
this.recallTotal = recallTotal;
this.recallTotalPage = recallTotalPage;
... ...
... ... @@ -9,8 +9,8 @@ import com.yoho.search.core.es.model.SearchResult;
import com.yoho.search.models.PromotionConditions;
import com.yoho.search.models.SearchApiResult;
import com.yoho.search.recall.scene.SceneRecallProductListService;
import com.yoho.search.recall.scene.beans.builder.RecallParamsBuilder;
import com.yoho.search.recall.scene.models.req.RecallParamsRequest;
import com.yoho.search.recall.scene.beans.builder.UserRecallRequestBuilder;
import com.yoho.search.recall.scene.models.req.UserRecallRequest;
import com.yoho.search.service.base.SearchCacheService;
import com.yoho.search.service.base.SearchCommonService;
import com.yoho.search.service.base.SearchDynamicConfigService;
... ... @@ -44,7 +44,7 @@ public class PromotionProductListService extends AbstractCacheAbleService {
@Autowired
private SearchCacheService searchCacheService;
@Autowired
private RecallParamsBuilder recallParamsBuilder;
private UserRecallRequestBuilder userRecallRequestBuilder;
@Autowired
private SceneRecallProductListService sceneRecallProductListService;
@Autowired
... ... @@ -78,8 +78,8 @@ public class PromotionProductListService extends AbstractCacheAbleService {
//3、个性化-走召回逻辑
if (this.goRecallLogic(paramMap)) {
RecallParamsRequest promotionRecallParamsRequest = recallParamsBuilder.buildPromotionRecallParams(paramMap, promotionMustFilter, pageSize);
return sceneRecallProductListService.recallProductList(promotionRecallParamsRequest, page);
UserRecallRequest promotionUserRecallRequest = userRecallRequestBuilder.buildPromotionRecallParams(paramMap, promotionMustFilter, pageSize);
return sceneRecallProductListService.recallProductList(promotionUserRecallRequest, page);
}
//4、走默认逻辑
... ...