...
|
...
|
@@ -29,13 +29,16 @@ public class CollageActivityIndexBaseService extends BaseService { |
|
|
private static final Logger logger = LoggerFactory.getLogger(CollageActivityIndexBaseService.class);
|
|
|
|
|
|
//Collage index
|
|
|
public static final String COLLAGE_PARAM_ACTIVITYID = "activityId";//支持过滤
|
|
|
public static final String COLLAGE_PARAM_OPENLIMIT = "openLimit";//支持过滤
|
|
|
public static final String COLLAGE_PARAM_JOINLIMIT = "joinLimit";//支持过滤
|
|
|
public static final String COLLAGE_PARAM_ISAUTO = "isAuto";//支持过滤
|
|
|
public static final String COLLAGE_PARAM_PAYLIMIT = "payLimit";//支持过滤
|
|
|
public static final String COLLAGE_PARAM_PRODUCTLIMIT = "productLimit";//支持过滤
|
|
|
public static final String COLLAGE_PARAM_PEOPLENUMLIMIT = "peopleNum";//拼团人数-支持过滤
|
|
|
public static final String COLLAGE_PARAM_ACTIVITYID = "activityId";//拼团活动ID
|
|
|
public static final String COLLAGE_PARAM_OPENLIMIT = "openLimit";//开团限制:1、仅限新客;2、不限制
|
|
|
public static final String COLLAGE_PARAM_JOINLIMIT = "joinLimit";//参团限制:1、仅限新客;2、不限制
|
|
|
public static final String COLLAGE_PARAM_ISAUTO = "isAuto";//自动拼团:1、自动;2、不自动
|
|
|
public static final String COLLAGE_PARAM_PAYLIMIT = "payLimit";//支付限制:0或NULL 无限制 1:仅APP可支付 2:仅小程序可支付
|
|
|
public static final String COLLAGE_PARAM_PRODUCTLIMIT = "productLimit";//商品限制:0或null 无限制 1:参团SKN和开团一致
|
|
|
public static final String COLLAGE_PARAM_PEOPLENUMLIMIT = "peopleNum";//拼团人数
|
|
|
|
|
|
|
|
|
public static final String COLLAGE_PARAM_ONLY_SHOW_BEGIN = "onlyShowBegin";//是否只展示开始的
|
|
|
|
|
|
private static final List<String> collageActivityParamsList = Arrays.asList(
|
|
|
COLLAGE_PARAM_ACTIVITYID,
|
...
|
...
|
@@ -46,7 +49,6 @@ public class CollageActivityIndexBaseService extends BaseService { |
|
|
COLLAGE_PARAM_PRODUCTLIMIT,
|
|
|
COLLAGE_PARAM_PEOPLENUMLIMIT);
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
private SearchCommonService searchCommonService;
|
|
|
|
...
|
...
|
@@ -63,11 +65,13 @@ public class CollageActivityIndexBaseService extends BaseService { |
|
|
LoadingCache<String, Map<Integer, Map<String, Object>>> allValidActivitysCache = CacheBuilder.newBuilder()
|
|
|
.maximumSize(10).expireAfterWrite(1, TimeUnit.MINUTES).build(new CacheLoader<String, Map<Integer, Map<String, Object>>>() {
|
|
|
public Map<Integer, Map<String, Object>> load(String key) {
|
|
|
return queryValidActivitys(new HashMap<>());
|
|
|
//默认查询开始和即将开始的
|
|
|
Map<String, String> paramMap = new HashMap<>();
|
|
|
paramMap.put(COLLAGE_PARAM_ONLY_SHOW_BEGIN, "N");
|
|
|
return queryValidActivitys(paramMap);
|
|
|
}
|
|
|
});
|
|
|
|
|
|
|
|
|
public Map<Integer, Map<String, Object>> queryAllValidActivitys() {
|
|
|
try {
|
|
|
return allValidActivitysCache.get("AllValidActivitys");
|
...
|
...
|
@@ -77,38 +81,62 @@ public class CollageActivityIndexBaseService extends BaseService { |
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 根据参数查询【正在生效或已经生效】的活动信息
|
|
|
* 生成时间过滤参数
|
|
|
*
|
|
|
* @param paramMap
|
|
|
* @return
|
|
|
*/
|
|
|
public Map<Integer, Map<String, Object>> queryValidActivitys(Map<String, String> paramMap) {
|
|
|
try {
|
|
|
SearchParam searchParam = new SearchParam();
|
|
|
BoolQueryBuilder boolFilter = QueryBuilders.boolQuery();
|
|
|
boolFilter.must(QueryBuilders.termQuery("status", 1));//过滤状态为1
|
|
|
|
|
|
long current = DateUtil.getCurrentTimeSecond();
|
|
|
private BoolQueryBuilder genBeginTimeFilter(Map<String, String> paramMap) {
|
|
|
long current = DateUtil.getCurrentTimeSecond();
|
|
|
|
|
|
//1、生成正在开始的过滤条件
|
|
|
BoolQueryBuilder hasBeginFilter = QueryBuilders.boolQuery();
|
|
|
hasBeginFilter.must(QueryBuilders.rangeQuery("beginTime").lte(current));//过滤活动开始时间
|
|
|
hasBeginFilter.must(QueryBuilders.rangeQuery("endTime").gte(current));//过滤活动结束时间
|
|
|
|
|
|
//2、执行参数判断
|
|
|
String onlyShowBegin = MapUtils.getString(paramMap, COLLAGE_PARAM_ONLY_SHOW_BEGIN, "N");
|
|
|
if ("Y".equalsIgnoreCase(onlyShowBegin)) {
|
|
|
return hasBeginFilter;
|
|
|
}
|
|
|
|
|
|
//已经开始的过滤条件
|
|
|
BoolQueryBuilder hasBeginFilter = QueryBuilders.boolQuery();
|
|
|
hasBeginFilter.must(QueryBuilders.rangeQuery("beginTime").lte(current));//过滤活动开始时间
|
|
|
hasBeginFilter.must(QueryBuilders.rangeQuery("endTime").gte(current));//过滤活动结束时间
|
|
|
//3、生成即将开始的过滤条件
|
|
|
BoolQueryBuilder notBeginFilter = QueryBuilders.boolQuery();
|
|
|
notBeginFilter.must(QueryBuilders.rangeQuery("beginTime").gte(current));//过滤活动开始时间
|
|
|
notBeginFilter.must(QueryBuilders.rangeQuery("endTime").gte(current));//过滤活动结束时间
|
|
|
|
|
|
//即将开始的过滤条件
|
|
|
BoolQueryBuilder notBeginFilter = QueryBuilders.boolQuery();
|
|
|
notBeginFilter.must(QueryBuilders.rangeQuery("beginTime").gte(current));//过滤活动开始时间
|
|
|
notBeginFilter.must(QueryBuilders.rangeQuery("endTime").gte(current));//过滤活动结束时间
|
|
|
return QueryBuilders.boolQuery().should(hasBeginFilter).should(notBeginFilter);
|
|
|
}
|
|
|
|
|
|
boolFilter.must(QueryBuilders.boolQuery().should(hasBeginFilter).should(notBeginFilter));
|
|
|
|
|
|
addTermQueryBatch(paramMap, boolFilter, collageActivityParamsList);
|
|
|
searchParam.setFiter(boolFilter);
|
|
|
/**
|
|
|
* 根据参数查询【正在生效或已经生效】的活动信息
|
|
|
*
|
|
|
* @param paramMap
|
|
|
* @return
|
|
|
*/
|
|
|
public Map<Integer, Map<String, Object>> queryValidActivitys(Map<String, String> paramMap) {
|
|
|
try {
|
|
|
SearchParam searchParam = new SearchParam();
|
|
|
//1、生成filter
|
|
|
BoolQueryBuilder filter = QueryBuilders.boolQuery();
|
|
|
searchParam.setFiter(filter);
|
|
|
//1.1、按参数过滤
|
|
|
addTermQueryBatch(paramMap, filter, collageActivityParamsList);
|
|
|
//1.2、默认状态为1
|
|
|
filter.must(QueryBuilders.termQuery("status", 1));//过滤状态为1
|
|
|
//1.3、生成时间参数
|
|
|
filter.must(this.genBeginTimeFilter(paramMap));
|
|
|
|
|
|
//2、设置分页-默认认为正在进行的拼团活动不超过100个
|
|
|
searchParam.setOffset(0);
|
|
|
searchParam.setSize(100);
|
|
|
|
|
|
//3、执行搜索
|
|
|
SearchResult searchResult = searchCommonService.doSearch(ISearchConstants.INDEX_NAME_COLLAGE_ACTIVITY, searchParam);
|
|
|
List<Map<String, Object>> collageActivitys = searchResult.getResultList();
|
|
|
|
|
|
//4、生成结果
|
|
|
Map<Integer, Map<String, Object>> result = new HashMap<>();
|
|
|
for (Map<String, Object> collageActivity : collageActivitys) {
|
|
|
Map<String, Object> bo = this.getCollageActivityInfo(collageActivity);
|
...
|
...
|
|