|
|
@@ -6,8 +6,12 @@ import com.uas.platform.b2c.advertise.ad.model.StoreAdsType;
|
|
|
import com.uas.platform.b2c.advertise.ad.service.StoreAdsService;
|
|
|
import com.uas.platform.b2c.common.account.dao.EnterpriseDao;
|
|
|
import com.uas.platform.b2c.common.account.model.Enterprise;
|
|
|
+import com.uas.platform.b2c.common.account.model.User;
|
|
|
import com.uas.platform.b2c.common.account.service.EnterpriseService;
|
|
|
+import com.uas.platform.b2c.common.search.dao.SearchHistoryDao;
|
|
|
+import com.uas.platform.b2c.common.search.model.SearchHistory;
|
|
|
import com.uas.platform.b2c.core.config.SysConf;
|
|
|
+import com.uas.platform.b2c.core.constant.Type;
|
|
|
import com.uas.platform.b2c.core.support.SystemSession;
|
|
|
import com.uas.platform.b2c.core.utils.JacksonUtils;
|
|
|
import com.uas.platform.b2c.core.utils.UuidUtils;
|
|
|
@@ -19,7 +23,13 @@ import com.uas.platform.b2c.prod.store.dao.StoreApplyDao;
|
|
|
import com.uas.platform.b2c.prod.store.dao.StoreBrandInfoDao;
|
|
|
import com.uas.platform.b2c.prod.store.dao.StoreInDao;
|
|
|
import com.uas.platform.b2c.prod.store.exception.EmptyParameterException;
|
|
|
-import com.uas.platform.b2c.prod.store.model.*;
|
|
|
+import com.uas.platform.b2c.prod.store.model.EnterpriseSimple;
|
|
|
+import com.uas.platform.b2c.prod.store.model.Qualification;
|
|
|
+import com.uas.platform.b2c.prod.store.model.StoreApply;
|
|
|
+import com.uas.platform.b2c.prod.store.model.StoreBrandInfo;
|
|
|
+import com.uas.platform.b2c.prod.store.model.StoreIn;
|
|
|
+import com.uas.platform.b2c.prod.store.model.StoreStatus;
|
|
|
+import com.uas.platform.b2c.prod.store.model.StoreType;
|
|
|
import com.uas.platform.b2c.prod.store.service.StoreInService;
|
|
|
import com.uas.platform.b2c.trade.order.dao.PurchaseDao;
|
|
|
import com.uas.platform.b2c.trade.support.ResultMap;
|
|
|
@@ -28,6 +38,22 @@ import com.uas.platform.core.exception.IllegalStatusException;
|
|
|
import com.uas.platform.core.model.PageInfo;
|
|
|
import com.uas.platform.core.persistence.criteria.PredicateUtils;
|
|
|
import com.uas.platform.core.persistence.criteria.SimpleExpression;
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
+import java.util.Collections;
|
|
|
+import java.util.Comparator;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.HashSet;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Set;
|
|
|
+import java.util.TreeSet;
|
|
|
+import javax.persistence.criteria.CriteriaBuilder;
|
|
|
+import javax.persistence.criteria.CriteriaQuery;
|
|
|
+import javax.persistence.criteria.Predicate;
|
|
|
+import javax.persistence.criteria.Root;
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
@@ -36,16 +62,12 @@ import org.springframework.data.domain.Page;
|
|
|
import org.springframework.data.domain.Pageable;
|
|
|
import org.springframework.data.domain.Sort;
|
|
|
import org.springframework.data.jpa.domain.Specification;
|
|
|
+import org.springframework.mobile.device.DeviceResolver;
|
|
|
+import org.springframework.mobile.device.LiteDeviceResolver;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
-import javax.persistence.criteria.CriteriaBuilder;
|
|
|
-import javax.persistence.criteria.CriteriaQuery;
|
|
|
-import javax.persistence.criteria.Predicate;
|
|
|
-import javax.persistence.criteria.Root;
|
|
|
-import java.util.*;
|
|
|
-
|
|
|
/**
|
|
|
* 店铺业务实现类
|
|
|
*
|
|
|
@@ -76,8 +98,12 @@ public class StoreInServiceImpl implements StoreInService {
|
|
|
|
|
|
private final EnterpriseService enterpriseService;
|
|
|
|
|
|
+ private final SearchHistoryDao searchHistoryDao;
|
|
|
+
|
|
|
+ private final DeviceResolver deviceResolver = new LiteDeviceResolver();
|
|
|
+
|
|
|
@Autowired
|
|
|
- public StoreInServiceImpl(StoreInDao storeDao, QualificationDao qualificationDao, GoodsDao goodsDao, ComponentDao componentDao, PurchaseDao purchaseDao, StoreBrandInfoDao brandInfoDao, StoreAdsService adsService, SysConf sysConf, EnterpriseService enterpriseService) {
|
|
|
+ public StoreInServiceImpl(StoreInDao storeDao, QualificationDao qualificationDao, GoodsDao goodsDao, ComponentDao componentDao, PurchaseDao purchaseDao, StoreBrandInfoDao brandInfoDao, StoreAdsService adsService, SysConf sysConf, EnterpriseService enterpriseService, SearchHistoryDao searchHistoryDao) {
|
|
|
this.storeDao = storeDao;
|
|
|
this.qualificationDao = qualificationDao;
|
|
|
this.goodsDao = goodsDao;
|
|
|
@@ -87,6 +113,7 @@ public class StoreInServiceImpl implements StoreInService {
|
|
|
this.adsService = adsService;
|
|
|
this.sysConf = sysConf;
|
|
|
this.enterpriseService = enterpriseService;
|
|
|
+ this.searchHistoryDao = searchHistoryDao;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -341,7 +368,7 @@ public class StoreInServiceImpl implements StoreInService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Page<StoreIn> pageStoresByTypesAndKeyword(final PageInfo pageInfo, String types, String keyword) {
|
|
|
+ public Page<StoreIn> pageStoresByTypesAndKeyword(final PageInfo pageInfo, String types, String keyword, HttpServletRequest request) {
|
|
|
if (!StringUtils.isEmpty(keyword)) {
|
|
|
// keyword 只过滤店铺名称,可以使用此方法,否则,搜索多个字段需要生成查询条件
|
|
|
pageInfo.filter("storeName", keyword);
|
|
|
@@ -355,13 +382,38 @@ public class StoreInServiceImpl implements StoreInService {
|
|
|
// 设置排序
|
|
|
pageInfo.sorting(Sort.Direction.DESC, "totalReserve", "createTime");
|
|
|
|
|
|
- return storeDao.findAll(new Specification<StoreIn>() {
|
|
|
+ Page<StoreIn> storeInPage = storeDao.findAll(new Specification<StoreIn>() {
|
|
|
@Override
|
|
|
public Predicate toPredicate(Root<StoreIn> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
|
|
|
query.where(pageInfo.getPredicates(root, query, builder));
|
|
|
return null;
|
|
|
}
|
|
|
}, pageInfo);
|
|
|
+
|
|
|
+ if (this.deviceResolver.resolveDevice(request).isMobile()) {
|
|
|
+ SystemSession.setUser((User)request.getSession().getAttribute("user"));
|
|
|
+ if (null != SystemSession.getUser() && null!= SystemSession.getUser().getUserUU()){
|
|
|
+ SearchHistory searchHistory = null;
|
|
|
+ List<SearchHistory> searchHistories = searchHistoryDao.findByKeywordAndUserUUAndUserEnuu(keyword,SystemSession.getUser().getUserUU(),SystemSession.getUser().getEnterprise() != null ?SystemSession.getUser().getEnterprise().getUu():null);
|
|
|
+ if (searchHistories.size()>0){
|
|
|
+ searchHistory = searchHistories.get(0);
|
|
|
+ }else {
|
|
|
+ searchHistory = new SearchHistory();
|
|
|
+ }
|
|
|
+ searchHistory.setKeyword(keyword);
|
|
|
+ searchHistory.setSearchTime(new Date(System.currentTimeMillis()));
|
|
|
+ searchHistory.setUserUU(SystemSession.getUser().getUserUU());
|
|
|
+ searchHistory.setUserEnuu(SystemSession.getUser().getEnterprise() != null ?SystemSession.getUser().getEnterprise().getUu():null);
|
|
|
+ searchHistory.setType(Type.SEARCH_STORE.name());
|
|
|
+ searchHistoryDao.save(searchHistory);
|
|
|
+ searchHistories = searchHistoryDao.findByUserUUAndUserEnuuOrderBySearchTimeDesc(SystemSession.getUser().getUserUU(),SystemSession.getUser().getEnterprise() != null ?SystemSession.getUser().getEnterprise().getUu():null);
|
|
|
+ if (searchHistories.size()>10){
|
|
|
+ searchHistoryDao.delete(searchHistories.subList(10,searchHistories.size()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return storeInPage;
|
|
|
}
|
|
|
|
|
|
@Override
|