Browse Source

Merge remote-tracking branch 'origin/feature_mobile_wangyc_0509' into feature-vendorRecommend-dongbw-180425

dongbw 7 years ago
parent
commit
257af98608

+ 1 - 1
src/main/java/com/uas/platform/b2c/common/search/controller/SearcherController.java

@@ -345,7 +345,7 @@ public class SearcherController {
 		User user = (User)request.getSession().getAttribute("user");
 		SystemSession.setUser(user);
 		PageInfo pageInfo = new PageInfo(params);
-		Page<StoreIn> stores = storeService.pageStoresByTypesAndKeyword(pageInfo, types, keyword);
+		Page<StoreIn> stores = storeService.pageStoresByTypesAndKeyword(pageInfo, types, keyword, request);
 		List<Map<String, Object>> result = new ArrayList<>();
 		Map<String, Object> storesMap = new HashedMap();
 		storesMap.put("stores",stores);

+ 16 - 0
src/main/java/com/uas/platform/b2c/common/search/model/SearchHistory.java

@@ -12,6 +12,8 @@ import java.util.Date;
 @Table(name = "sec$searchHis")
 public class SearchHistory implements Serializable{
 
+    private static final long serialVersionUID = 1L;
+
     /**
      * ID
      */
@@ -44,6 +46,12 @@ public class SearchHistory implements Serializable{
     @Column(name = "searchtime")
     private Date searchTime;
 
+    /**
+     * 搜索内容类型
+     */
+    @Column(name = "type")
+    private String type;
+
     public Long getId() {
         return id;
     }
@@ -83,4 +91,12 @@ public class SearchHistory implements Serializable{
     public void setSearchTime(Date searchTime) {
         this.searchTime = searchTime;
     }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
 }

+ 17 - 11
src/main/java/com/uas/platform/b2c/common/search/service/impl/SearcherServiceImpl.java

@@ -2,12 +2,16 @@ package com.uas.platform.b2c.common.search.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.uas.platform.b2c.common.search.constant.SearchParam;
 import com.uas.platform.b2c.common.account.model.User;
 import com.uas.platform.b2c.common.search.dao.SearchHistoryDao;
 import com.uas.platform.b2c.common.search.model.SearchHistory;
 import com.uas.platform.b2c.common.search.rpc.service.SearchService;
 import com.uas.platform.b2c.common.search.service.SearcherService;
+import com.uas.platform.b2c.common.search.util.CollectField;
+import com.uas.platform.b2c.common.search.util.PageParams.FilterField;
+import com.uas.platform.b2c.common.search.util.SPage;
+import com.uas.platform.b2c.common.search.util.Sort;
+import com.uas.platform.b2c.core.constant.Type;
 import com.uas.platform.b2c.core.support.SystemSession;
 import com.uas.platform.b2c.core.utils.FastjsonUtils;
 import com.uas.platform.b2c.prod.commodity.dao.GoodsDao;
@@ -16,17 +20,23 @@ import com.uas.platform.b2c.prod.product.brand.dao.BrandDao;
 import com.uas.platform.b2c.prod.product.component.dao.ComponentDao;
 import com.uas.platform.b2c.prod.product.component.dao.ComponentGoodsDao;
 import com.uas.platform.b2c.prod.product.component.dao.ComponentInfoDao;
-import com.uas.platform.b2c.prod.product.component.modal.Component;
 import com.uas.platform.b2c.prod.product.component.modal.ComponentGoods;
 import com.uas.platform.b2c.prod.product.component.modal.ComponentInfo;
 import com.uas.platform.core.exception.SystemException;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageParams;
 import com.uas.search.exception.SearchException;
-import com.uas.platform.b2c.common.search.util.CollectField;
-import com.uas.platform.b2c.common.search.util.PageParams.FilterField;
-import com.uas.platform.b2c.common.search.util.SPage;
-import com.uas.platform.b2c.common.search.util.Sort;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import javax.servlet.http.HttpServletRequest;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -39,11 +49,6 @@ import org.springframework.ui.ModelMap;
 import org.springframework.util.CollectionUtils;
 import org.springframework.util.StringUtils;
 
-import javax.servlet.http.HttpServletRequest;
-import java.io.IOException;
-import java.util.*;
-import java.util.Map.Entry;
-
 /**
  * 搜索索引
  *
@@ -198,6 +203,7 @@ public class SearcherServiceImpl implements SearcherService {
 				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_PRODUCT.name());
 				searchHistoryDao.save(searchHistory);
 				searchHistories = searchHistoryDao.findByUserUUAndUserEnuuOrderBySearchTimeDesc(SystemSession.getUser().getUserUU(),SystemSession.getUser().getEnterprise() != null ?SystemSession.getUser().getEnterprise().getUu():null);
 				if (searchHistories.size()>10){

+ 11 - 1
src/main/java/com/uas/platform/b2c/core/constant/Type.java

@@ -274,7 +274,17 @@ public enum Type {
 	/**
 	 * {@code 1668 企业销售出库 <b>企业销售出库</b>}
 	 */
-	STOCK_SELLER(1668, "销售出库");
+	STOCK_SELLER(1668, "销售出库"),
+
+	/**
+	 * {@code 1700 搜索店铺}
+	 */
+	SEARCH_STORE(1700, "搜索店铺"),
+
+	/**
+	 * {@code 1701 搜索产品}
+	 */
+	SEARCH_PRODUCT(1701, "搜索产品");
 
 	/**
 	 * @param value

+ 4 - 4
src/main/java/com/uas/platform/b2c/prod/store/api/StoreInController.java

@@ -6,6 +6,8 @@ import com.uas.platform.b2c.prod.store.service.StoreInService;
 import com.uas.platform.b2c.trade.support.ResultMap;
 import com.uas.platform.core.model.PageInfo;
 import com.uas.platform.core.model.PageParams;
+import java.util.List;
+import javax.servlet.http.HttpServletRequest;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -19,8 +21,6 @@ import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.List;
-
 /**
  * 店铺操作接口类
  *
@@ -126,9 +126,9 @@ public class StoreInController {
 	 * @param keyword		查询关键字
 	 */
 	@RequestMapping(value = "/stores", method = RequestMethod.GET, params = "op=pageByType")
-	public Page<StoreIn> pageStoresByTypesAndKeywordWhenUserVisitList(PageParams params, String types, @RequestParam(required = false) String keyword) {
+	public Page<StoreIn> pageStoresByTypesAndKeywordWhenUserVisitList(PageParams params, String types, @RequestParam(required = false) String keyword, HttpServletRequest request) {
 		PageInfo pageInfo = new PageInfo(params);
-		return storeService.pageStoresByTypesAndKeyword(pageInfo, types, keyword);
+		return storeService.pageStoresByTypesAndKeyword(pageInfo, types, keyword, request);
 	}
 
 	/**

+ 9 - 5
src/main/java/com/uas/platform/b2c/prod/store/service/StoreInService.java

@@ -2,15 +2,19 @@ package com.uas.platform.b2c.prod.store.service;
 
 import com.alibaba.fastjson.JSONObject;
 import com.uas.platform.b2c.advertise.ad.model.StoreAdsType;
-import com.uas.platform.b2c.prod.store.model.*;
+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.StoreIn;
+import com.uas.platform.b2c.prod.store.model.StoreStatus;
+import com.uas.platform.b2c.prod.store.model.StoreType;
 import com.uas.platform.b2c.trade.support.ResultMap;
 import com.uas.platform.core.model.PageInfo;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import javax.servlet.http.HttpServletRequest;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 
 public interface StoreInService {
 
@@ -100,7 +104,7 @@ public interface StoreInService {
 	 * @param types			店铺类型
 	 * @param keyword		查询关键字
 	 */
-	Page<StoreIn> pageStoresByTypesAndKeyword(PageInfo pageInfo, String types, String keyword);
+	Page<StoreIn> pageStoresByTypesAndKeyword(PageInfo pageInfo, String types, String keyword, HttpServletRequest request);
 
 	/**
 	 * 获取最近开店的店铺信息

+ 62 - 10
src/main/java/com/uas/platform/b2c/prod/store/service/impl/StoreInServiceImpl.java

@@ -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