|
@@ -67,57 +67,54 @@ public class SearchProductServiceImpl implements SearchProductService {
|
|
|
public ResponseJson<String> queryProductByKeyword(String keyword, String brandIds, Integer identity, Integer newFlag, Integer promotionFlag,
|
|
|
int pageNum, int pageSize, String sortField, Integer sortType) {
|
|
|
String queryStr = "product:'" + keyword + "'";
|
|
|
- StringBuilder filter = new StringBuilder();
|
|
|
if (StringUtils.isEmpty(keyword)) {
|
|
|
queryStr = "p_all:'1'";
|
|
|
}
|
|
|
+ List<String> filterList = new ArrayList<>();
|
|
|
+ if (newFlag == 1) {
|
|
|
+ Calendar c = Calendar.getInstance();
|
|
|
+ c.setTime(new Date());
|
|
|
+ c.add(Calendar.YEAR, -1);
|
|
|
+ String time = new SimpleDateFormat("yyyyMMdd").format(c.getTime());
|
|
|
+ filterList.add("p_time > " + time);
|
|
|
+ }
|
|
|
+ if (promotionFlag == 1) {
|
|
|
+ filterList.add("p_promotions_id > 0");
|
|
|
+ }
|
|
|
if (!StringUtils.isEmpty(brandIds)) {
|
|
|
+ StringBuffer brandBuilder = new StringBuffer();
|
|
|
if (brandIds.contains(",")) {
|
|
|
String[] split = brandIds.split(",");
|
|
|
for (int i = 0; i < split.length; i++) {
|
|
|
if (i == 0) {
|
|
|
- filter.append("p_brand:'").append(split[i]).append("'");
|
|
|
+ brandBuilder.append("p_brand_id=").append(split[i]);
|
|
|
} else {
|
|
|
- filter.append(" OR p_brand:'").append(split[i]).append("'");
|
|
|
+ brandBuilder.append(" OR p_brand_id=").append(split[i]);
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
- filter.append("p_brand:'").append(brandIds).append("'");
|
|
|
- }
|
|
|
- }
|
|
|
- if (!StringUtils.isEmpty(brandIds)) {
|
|
|
- if (newFlag == 1) {
|
|
|
- Calendar c = Calendar.getInstance();
|
|
|
- c.setTime(new Date());
|
|
|
- c.add(Calendar.YEAR, -1);
|
|
|
- String time = new SimpleDateFormat("yyyyMMdd").format(c.getTime());
|
|
|
- filter.append(" AND p_time > ").append(time);
|
|
|
+ brandBuilder.append("p_brand_id=").append(brandIds);
|
|
|
}
|
|
|
- if (promotionFlag == 1) {
|
|
|
- if (newFlag == 1) {
|
|
|
- filter.append(" AND p_promotions_id > 0");
|
|
|
- } else {
|
|
|
- filter.append("p_promotions_id > 0");
|
|
|
- }
|
|
|
+ String brandFilter = brandBuilder.toString();
|
|
|
+ if (brandFilter.contains("OR")) {
|
|
|
+ brandFilter = "(" + brandFilter + ")";
|
|
|
}
|
|
|
- }else{
|
|
|
- if (newFlag == 1) {
|
|
|
- Calendar c = Calendar.getInstance();
|
|
|
- c.setTime(new Date());
|
|
|
- c.add(Calendar.YEAR, -1);
|
|
|
- String time = new SimpleDateFormat("yyyyMMdd").format(c.getTime());
|
|
|
- filter.append("p_time > ").append(time);
|
|
|
- }
|
|
|
- if (promotionFlag == 1) {
|
|
|
- if (newFlag == 1) {
|
|
|
- filter.append(" AND p_promotions_id > 0");
|
|
|
+ filterList.add(brandFilter);
|
|
|
+ }
|
|
|
+ String filter = "";
|
|
|
+ StringBuffer filterBuffer = new StringBuffer();
|
|
|
+ if (filterList.size() > 0) {
|
|
|
+ for (int i = 0; i < filterList.size(); i++) {
|
|
|
+ if (i == 0) {
|
|
|
+ filterBuffer.append(filterList.get(i));
|
|
|
} else {
|
|
|
- filter.append("p_promotions_id > 0");
|
|
|
+ filterBuffer.append(" AND ").append(filterList.get(i));
|
|
|
}
|
|
|
}
|
|
|
+ filter = "(" + filterBuffer.toString() + ")";
|
|
|
}
|
|
|
// 阿里云搜索
|
|
|
- ResponseJson<String> result = queryProduct(queryStr, filter.toString(), identity, pageNum, pageSize, sortField, sortType);
|
|
|
+ ResponseJson<String> result = queryProduct(queryStr, filter, identity, pageNum, pageSize, sortField, sortType);
|
|
|
if (0 == result.getCode()) {
|
|
|
return result;
|
|
|
} else {
|
|
@@ -155,7 +152,6 @@ public class SearchProductServiceImpl implements SearchProductService {
|
|
|
queryStr = "p_all:'1'";
|
|
|
}
|
|
|
if (newFlag == 1) {
|
|
|
-// p_time=20201105
|
|
|
Calendar c = Calendar.getInstance();
|
|
|
c.setTime(new Date());
|
|
|
c.add(Calendar.YEAR, -1);
|
|
@@ -219,7 +215,6 @@ public class SearchProductServiceImpl implements SearchProductService {
|
|
|
@Override
|
|
|
public ResponseJson<String> queryProductByType(Integer id, Integer idType, String brandIds, Integer identity, Integer newFlag, Integer promotionFlag, int pageNum, int pageSize, String sortField, Integer sortType) {
|
|
|
String queryStr = "";
|
|
|
- StringBuilder filter = new StringBuilder();
|
|
|
if (idType == 1) {
|
|
|
queryStr = "p_bigtype:'" + id + "'";
|
|
|
} else if (idType == 2) {
|
|
@@ -234,50 +229,48 @@ public class SearchProductServiceImpl implements SearchProductService {
|
|
|
if (requestSize > SEARCH_MAX_NUM) {
|
|
|
requestPageSize = (int) Math.floor(SEARCH_MAX_NUM / pageSize) * pageSize;
|
|
|
}
|
|
|
+ List<String> filterList = new ArrayList<>();
|
|
|
+ if (newFlag == 1) {
|
|
|
+ Calendar c = Calendar.getInstance();
|
|
|
+ c.setTime(new Date());
|
|
|
+ c.add(Calendar.YEAR, -1);
|
|
|
+ String time = new SimpleDateFormat("yyyyMMdd").format(c.getTime());
|
|
|
+ filterList.add("p_time > " + time);
|
|
|
+ }
|
|
|
+ if (promotionFlag == 1) {
|
|
|
+ filterList.add("p_promotions_id > 0");
|
|
|
+ }
|
|
|
if (!StringUtils.isEmpty(brandIds)) {
|
|
|
+ StringBuffer brandBuilder = new StringBuffer();
|
|
|
if (brandIds.contains(",")) {
|
|
|
String[] split = brandIds.split(",");
|
|
|
for (int i = 0; i < split.length; i++) {
|
|
|
if (i == 0) {
|
|
|
- filter.append("p_brand:'").append(split[i]).append("'");
|
|
|
+ brandBuilder.append("p_brand_id=").append(split[i]);
|
|
|
} else {
|
|
|
- filter.append(" OR p_brand:'").append(split[i]).append("'");
|
|
|
+ brandBuilder.append(" OR p_brand_id=").append(split[i]);
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
- filter.append("p_brand:'").append(brandIds).append("'");
|
|
|
- }
|
|
|
- }
|
|
|
- if (!StringUtils.isEmpty(brandIds)) {
|
|
|
- if (newFlag == 1) {
|
|
|
- Calendar c = Calendar.getInstance();
|
|
|
- c.setTime(new Date());
|
|
|
- c.add(Calendar.YEAR, -1);
|
|
|
- String time = new SimpleDateFormat("yyyyMMdd").format(c.getTime());
|
|
|
- filter.append(" AND p_time > ").append(time);
|
|
|
+ brandBuilder.append("p_brand_id=").append(brandIds);
|
|
|
}
|
|
|
- if (promotionFlag == 1) {
|
|
|
- if (newFlag == 1) {
|
|
|
- filter.append(" AND p_promotions_id > 0");
|
|
|
- } else {
|
|
|
- filter.append("p_promotions_id > 0");
|
|
|
- }
|
|
|
+ String brandFilter = brandBuilder.toString();
|
|
|
+ if (brandFilter.contains("OR")) {
|
|
|
+ brandFilter = "(" + brandFilter + ")";
|
|
|
}
|
|
|
- }else{
|
|
|
- if (newFlag == 1) {
|
|
|
- Calendar c = Calendar.getInstance();
|
|
|
- c.setTime(new Date());
|
|
|
- c.add(Calendar.YEAR, -1);
|
|
|
- String time = new SimpleDateFormat("yyyyMMdd").format(c.getTime());
|
|
|
- filter.append("p_time > ").append(time);
|
|
|
- }
|
|
|
- if (promotionFlag == 1) {
|
|
|
- if (newFlag == 1) {
|
|
|
- filter.append(" AND p_promotions_id > 0");
|
|
|
+ filterList.add(brandFilter);
|
|
|
+ }
|
|
|
+ String filter = "";
|
|
|
+ StringBuffer filterBuffer = new StringBuffer();
|
|
|
+ if (filterList.size() > 0) {
|
|
|
+ for (int i = 0; i < filterList.size(); i++) {
|
|
|
+ if (i == 0) {
|
|
|
+ filterBuffer.append(filterList.get(i));
|
|
|
} else {
|
|
|
- filter.append("p_promotions_id > 0");
|
|
|
+ filterBuffer.append(" AND ").append(filterList.get(i));
|
|
|
}
|
|
|
}
|
|
|
+ filter = "(" + filterBuffer.toString() + ")";
|
|
|
}
|
|
|
SearchParams searchParams = searchOpenService.getScrollProductParams(queryStr, identity, requestPageSize, sortField, sortType);
|
|
|
String thisFilter = searchParams.getFilter();
|