| | |
| | |
|
| | | import javax.annotation.Resource;
|
| | |
|
| | | import net.sf.ehcache.Element;
|
| | | import net.sf.json.JSONArray;
|
| | | import net.sf.json.JSONObject;
|
| | |
|
| | | import org.springframework.cache.annotation.Cacheable;
|
| | | import org.springframework.stereotype.Controller;
|
| | | import org.springframework.web.bind.annotation.RequestMapping;
|
| | | import org.springframework.web.bind.annotation.RequestMethod;
|
| | | import org.yeshi.utils.JsonUtil;
|
| | | import org.yeshi.utils.taobao.TbImgUtil;
|
| | |
|
| | | import com.google.gson.Gson;
|
| | | import com.google.gson.GsonBuilder;
|
| | |
| | | import com.yeshi.fanli.entity.bus.search.HistorySearch;
|
| | | import com.yeshi.fanli.entity.bus.search.HotSearch;
|
| | | import com.yeshi.fanli.entity.bus.su.search.SuperHotSearch;
|
| | | import com.yeshi.fanli.entity.system.System;
|
| | | import com.yeshi.fanli.entity.system.BusinessSystem;
|
| | | import com.yeshi.fanli.entity.taobao.PidUser;
|
| | | import com.yeshi.fanli.entity.taobao.SearchFilter;
|
| | | import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
|
| | | import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBriefExtra;
|
| | | import com.yeshi.fanli.entity.taobao.TaoBaoProvince;
|
| | | import com.yeshi.fanli.entity.taobao.TaoBaoSearchNav;
|
| | | import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
|
| | | import com.yeshi.fanli.entity.taobao.TaoBaoUnionConfig;
|
| | | import com.yeshi.fanli.service.inter.config.BusinessSystemService;
|
| | | import com.yeshi.fanli.service.inter.config.ConfigService;
|
| | | import com.yeshi.fanli.service.inter.config.SuperHotSearchService;
|
| | | import com.yeshi.fanli.service.inter.config.SystemService;
|
| | | import com.yeshi.fanli.service.inter.goods.HonestService;
|
| | | import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
|
| | | import com.yeshi.fanli.service.inter.lable.QualityGoodsService;
|
| | | import com.yeshi.fanli.service.inter.lable.TaoKeGoodsService;
|
| | |
| | | import com.yeshi.fanli.util.StringUtil;
|
| | | import com.yeshi.fanli.util.taobao.SearchFilterUtil;
|
| | | import com.yeshi.fanli.util.taobao.TaoBaoUtil;
|
| | | import org.yeshi.utils.JsonUtil;
|
| | |
|
| | | import net.sf.ehcache.Element;
|
| | | import net.sf.json.JSONArray;
|
| | | import net.sf.json.JSONObject;
|
| | |
|
| | | @Controller
|
| | | @RequestMapping("api/v1/search")
|
| | | public class SearchController {
|
| | |
|
| | | @Resource
|
| | | private SystemService systemService;
|
| | | private BusinessSystemService businessSystemService;
|
| | |
|
| | | @Resource
|
| | | private ConfigService configService;
|
| | |
|
| | | @Resource
|
| | | private SuperHotSearchService superHotSearchSerivce;
|
| | |
| | | private HongBaoManageService manageService;
|
| | |
|
| | | @Resource
|
| | | private HonestService honestService;
|
| | |
|
| | | @Resource
|
| | | private TaoBaoUnionConfigService taoBaoUnionConfigService;
|
| | | |
| | |
|
| | | @Resource
|
| | | private TaoKeGoodsService taoKeGoodsService;
|
| | |
|
| | | @Resource
|
| | | private QualityGoodsService qualityGoodsService;
|
| | | |
| | |
|
| | | @RequestMapping(value = "gethotsearch", method = RequestMethod.POST)
|
| | | public void getHotSearch(AcceptData acceptData, PrintWriter out) {
|
| | | System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages());
|
| | | BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(), acceptData.getPackages());
|
| | | if (system == null) {
|
| | | out.print(JsonUtil.loadFalseResult("系统不存在"));
|
| | | return;
|
| | |
| | |
|
| | | @RequestMapping("specialSearch")
|
| | | public void specialSearch(AcceptData acceptData, long hid, int page, PrintWriter out) {
|
| | | Honest honest = honestService.getOne(hid);
|
| | | Honest honest = null;
|
| | | if (honest == null) {
|
| | | out.print(JsonUtil.loadFalseResult(""));
|
| | | return;
|
| | |
| | | data.put("nav", gson.toJson(navList));
|
| | | List<TaoBaoGoodsBriefExtra> re = new ArrayList<TaoBaoGoodsBriefExtra>();
|
| | | List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
|
| | | Map<String, String> map = manageService.convertMap();
|
| | | String proportion = map.get("hongbao_goods_proportion");
|
| | | String fcRate = map.get("hongbao_fc_ratio");
|
| | | BigDecimal proportion = manageService.getFanLiRate();
|
| | | for (TaoBaoGoodsBrief bf : taoBaoGoodsBriefs) {
|
| | | re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion, fcRate, ""));
|
| | | re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
|
| | | }
|
| | | Gson gson2 = JsonUtil.getApiCommonGson();
|
| | | data.put("result", gson2.toJson(re));
|
| | |
| | | String endprice, String fastFilter, PrintWriter out) {
|
| | | String bid = getHistorySearchBid(acceptData);
|
| | | historySearchService.addHistorySearch(kw, bid);
|
| | | System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages());
|
| | | BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(), acceptData.getPackages());
|
| | | if (system == null) {
|
| | | out.print(JsonUtil.loadFalseResult("系统不存在"));
|
| | | return;
|
| | |
| | | } else if ("fahuodi".equalsIgnoreCase(ty)) {
|
| | | int id = array.optJSONObject(i).optInt("id");
|
| | | sf.setProvinceId(id);
|
| | | }else if ("materialId".equalsIgnoreCase(ty)) {
|
| | | } else if ("materialId".equalsIgnoreCase(ty)) {
|
| | | int id = array.optJSONObject(i).optInt("id");
|
| | | sf.setProvinceId(id);
|
| | | }
|
| | |
| | | int fq = sf.getQuan();
|
| | | int fh = sf.getHongbao();
|
| | | boolean ft = sf.isTmall();
|
| | | Map<String, String> map = manageService.convertMap();
|
| | | String proportion = map.get("hongbao_goods_proportion");
|
| | | String fcRate = map.get("hongbao_fc_ratio");
|
| | | BigDecimal proportion = manageService.getFanLiRate();
|
| | | if (fq == 0 && fh == 0 && !ft) {
|
| | | if (result != null && result.getTaoBaoGoodsBriefs() != null)
|
| | | for (TaoBaoGoodsBrief bf : result.getTaoBaoGoodsBriefs()) {
|
| | |
| | | double sales = count;
|
| | | String salesCountMidea = String.format("%.1f", sales / 10000);
|
| | | bf.setSalesCount(salesCountMidea + "万");
|
| | | re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion, fcRate, ""));
|
| | | re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
|
| | | } else {
|
| | | bf.setSalesCount(count + "");
|
| | | re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion, fcRate, ""));
|
| | | re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
|
| | | }
|
| | | }
|
| | | } else {
|
| | |
| | | double sales = count;
|
| | | String salesCountMidea = String.format("%.1f", sales / 10000);
|
| | | taoBaoGoodsBrief.setSalesCount(salesCountMidea + "万");
|
| | | taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion,
|
| | | fcRate, "");
|
| | | taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
|
| | | proportion.toString(), "");
|
| | | re.add(taoBaoGoodsBriefExtra);
|
| | | } else {
|
| | | taoBaoGoodsBrief.setSalesCount(count + "");
|
| | | taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion,
|
| | | fcRate, "");
|
| | | taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
|
| | | proportion.toString(), "");
|
| | | re.add(taoBaoGoodsBriefExtra);
|
| | | }
|
| | | }
|
| | |
| | | return StringUtil.Md5(sb.toString());
|
| | | }
|
| | |
|
| | | |
| | | /**
|
| | | * 根据用户搜索关键词 进行精选库商品筛选
|
| | | * 搜索-新版
|
| | | * |
| | | * @param acceptData
|
| | | * @param kw
|
| | | * @param page
|
| | | * @param key
|
| | | * @param filter
|
| | | * @param order
|
| | | * 销量由高到低:1 、 价格从高到低:2 、 价格从低到高:3 、 推广量高到低:4(综合默认)、返利比高到低:5
|
| | | * 、返利比低到高:6 、推荐20
|
| | | * @param startprice
|
| | | * @param endprice
|
| | | * @param fastFilter
|
| | | * @param out
|
| | | */
|
| | | @RequestMapping(value = "getQualityRecommend", method = RequestMethod.POST)
|
| | | public void getQualityRecommend(AcceptData acceptData, int page, String kw, PrintWriter out) {
|
| | | System system = systemService.getSystemCache(acceptData.getPlatform(), acceptData.getPackages());
|
| | | @RequestMapping(value = "searchgoods")
|
| | | public void searchgoods(AcceptData acceptData, String kw, int page, String filter, String order, String startprice,
|
| | | String endprice, Double startTkRate, Double endTkRate, String fastFilter, PrintWriter out) {
|
| | |
|
| | | String bid = getHistorySearchBid(acceptData);
|
| | |
|
| | | historySearchService.addHistorySearch(kw, bid);
|
| | |
|
| | | BusinessSystem system = businessSystemService.getBusinessSystemCache(acceptData.getPlatform(), acceptData.getPackages());
|
| | | if (system == null) {
|
| | | out.print(JsonUtil.loadFalseResult("系统不存在"));
|
| | | return;
|
| | | }
|
| | |
|
| | | try {
|
| | | |
| | | // page从1开始
|
| | | page += 1;
|
| | | // 请求淘宝接口页码
|
| | | int pageNo = page; |
| | | |
| | | int pageSize = Constant.PAGE_SIZE;
|
| | | |
| | | |
| | | /* 计算精选库数据 总页数 */
|
| | | long incount = qualityGoodsService.countRecommendBykey(kw);
|
| | |
|
| | | int totalPage = (int) (incount % pageSize == 0 ? incount / pageSize : incount / pageSize + 1);
|
| | | |
| | | pageNo = page - totalPage;
|
| | | |
| | | |
| | | /* 查询精选库数据 */
|
| | | if (pageNo <= 0 ) {
|
| | | |
| | | List<QualityFactory> listQuality =
|
| | | qualityGoodsService.listRecommendBykey((page - 1) * pageSize, pageSize, kw);
|
| | | |
| | | |
| | | List<TaoBaoGoodsBrief> searchWuLiaoList = null;
|
| | | |
| | | /* 精选库数据不足10条 */
|
| | | if (listQuality != null && listQuality.size() != 0 && listQuality.size() < 10) {
|
| | | |
| | | SearchFilter searchfilter = new SearchFilter();
|
| | | // 请求第一页数据
|
| | | searchfilter.setPage(1);
|
| | | searchfilter.setPageSize(pageSize);
|
| | | searchfilter.setKey(SearchFilterUtil.filterSearchContent(kw));
|
| | | // 含券
|
| | | searchfilter.setQuan(1);
|
| | | // 价格低于220
|
| | | searchfilter.setEndPrice(new BigDecimal(220));
|
| | | // 好评率是否高于行业均值;
|
| | | searchfilter.setIncludeGoodRate(true);
|
| | | |
| | | searchfilter.setMaterialId("6707");
|
| | | // 销量高到低
|
| | | searchfilter.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
|
| | | |
| | | searchWuLiaoList = taoKeGoodsService.searchWuLiaoList(searchfilter);
|
| | | }
|
| | |
|
| | | Map<String, String> map = manageService.convertMap();
|
| | | |
| | | JSONObject data = taoKeGoodsService.listQualityGoods(listQuality, searchWuLiaoList, map);
|
| | | |
| | | out.print(JsonUtil.loadTrueResult(data));
|
| | | |
| | | return;
|
| | | }
|
| | | |
| | | |
| | | if (pageNo > 0 && totalPage > 0) {
|
| | | List<QualityFactory> list = |
| | | qualityGoodsService.listRecommendBykey((totalPage - 1) * pageSize, pageSize, kw);
|
| | | |
| | | if (list != null && list.size() != 0 && list.size() < 10) {
|
| | | // 页码+ 1 已请求一次淘宝接口
|
| | | pageNo += 1 ;
|
| | | }
|
| | | }
|
| | | |
| | | |
| | | /* 网络请求 */
|
| | | SearchFilter searchfilter = new SearchFilter();
|
| | | |
| | | searchfilter.setPage(pageNo);
|
| | | searchfilter.setPageSize(pageSize);
|
| | | searchfilter.setKey(SearchFilterUtil.filterSearchContent(kw));
|
| | | // 含券
|
| | | searchfilter.setQuan(1);
|
| | | // 价格低于220
|
| | | searchfilter.setEndPrice(new BigDecimal(220));
|
| | | // 好评率是否高于行业均值;
|
| | | searchfilter.setIncludeGoodRate(true);
|
| | | |
| | | searchfilter.setMaterialId("6707");
|
| | | // 销量高到低
|
| | | searchfilter.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
|
| | | |
| | | // 查询物料接口
|
| | | JSONObject result = taoKeGoodsService.searchWuLiao(searchfilter);
|
| | | |
| | | out.print(JsonUtil.loadTrueResult(result));
|
| | |
|
| | | } catch (Exception e) {
|
| | | e.printStackTrace();
|
| | | if (!StringUtil.isNullOrEmpty(kw) && (kw.startsWith("http://") || kw.startsWith("https://"))) {
|
| | | out.print(JsonUtil.loadFalseResult("无法搜索链接"));
|
| | | return;
|
| | | }
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(fastFilter)) {
|
| | | if (!StringUtil.isNullOrEmpty(filter)) {
|
| | | JSONArray filterArray = JSONArray.fromObject(filter);
|
| | | JSONArray fastFilterArray = JSONArray.fromObject(fastFilter);
|
| | | filterArray.addAll(fastFilterArray);
|
| | | filter = filterArray.toString();
|
| | | } else {
|
| | | filter = fastFilter;
|
| | | }
|
| | | }
|
| | |
|
| | | // 是否是推荐
|
| | | boolean recommend = false;
|
| | | if (!StringUtil.isNullOrEmpty(fastFilter)) {
|
| | | // 查询淘宝天猫
|
| | | JSONArray array = JSONArray.fromObject(filter);
|
| | | for (int i = 0; i < array.size(); i++) {
|
| | | String ty = array.optJSONObject(i).optString("type");
|
| | |
|
| | | if ("recommend".equalsIgnoreCase(ty)) {
|
| | | recommend = true;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | JSONObject data = null;
|
| | | if (!recommend) {
|
| | | // 淘宝接口请求
|
| | | data = searchGoods(kw, page, filter, order, startprice, endprice);
|
| | | } else {
|
| | | // 推荐:精选库
|
| | | data = searchQualityGoods(kw, page, filter, order, startprice, endprice);
|
| | | }
|
| | |
|
| | | // 获取推荐词
|
| | | List<String> listRecommendWords = new ArrayList<String>();
|
| | | // 综合 查询第一页时获取候选词
|
| | | if (page == 0) {
|
| | | listRecommendWords = TaoBaoUtil.getSuguestSearch(kw);
|
| | | if (listRecommendWords == null || listRecommendWords.size() == 0) {
|
| | | listRecommendWords = new ArrayList<String>();
|
| | | }
|
| | | }
|
| | |
|
| | | Gson gson = new GsonBuilder().create();
|
| | | if (data != null)
|
| | | data.put("words", gson.toJson(listRecommendWords));
|
| | |
|
| | | out.print(JsonUtil.loadTrueResult(data));
|
| | | }
|
| | |
|
| | | /**
|
| | | * 执行搜索-新版
|
| | | * |
| | | * @param kw
|
| | | * @param page
|
| | | * @param filter
|
| | | * @param order
|
| | | * @param startprice
|
| | | * @param endprice
|
| | | * @return
|
| | | */
|
| | | private JSONObject searchGoods(String kw, int page, String filter, String order, String startprice,
|
| | | String endprice) {
|
| | | page = page + 1;
|
| | |
|
| | | SearchFilter sf = new SearchFilter();
|
| | | sf.setKey(SearchFilterUtil.filterSearchContent(kw));
|
| | | sf.setPage(page);
|
| | | sf.setSort(0);
|
| | |
|
| | | if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(startprice)) {
|
| | | sf.setStartPrice(new BigDecimal(startprice));
|
| | | }
|
| | |
|
| | | if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(endprice)) {
|
| | | sf.setEndPrice(new BigDecimal(endprice));
|
| | | }
|
| | |
|
| | | if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(order)) {
|
| | | if (Integer.parseInt(order) == 1) {
|
| | | sf.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
|
| | | } else if (Integer.parseInt(order) == 2) {
|
| | | sf.setSort(TaoBaoUtil.SORT_PRICE_HIGH_TO_LOW);
|
| | | } else if (Integer.parseInt(order) == 3) {
|
| | | sf.setSort(TaoBaoUtil.SORT_PRICE_LOW_TO_HIGH);
|
| | | } else if (Integer.parseInt(order) == 4) {
|
| | | sf.setSort(TaoBaoUtil.SORT_TOTAL_SALES_HIGH_TO_LOW);
|
| | | } else if (Integer.parseInt(order) == 5) {
|
| | | sf.setSort(TaoBaoUtil.SORT_TKRATE_HIGH_TO_LOW);
|
| | | } else if (Integer.parseInt(order) == 6) {
|
| | | sf.setSort(TaoBaoUtil.SORT_TKRATE_LOW_TO_HIGH);
|
| | | }
|
| | | } else {
|
| | | // 默认销量从高到低排序
|
| | | sf.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
|
| | | }
|
| | |
|
| | | if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(filter)) {
|
| | | // 查询淘宝天猫
|
| | | JSONArray array = JSONArray.fromObject(filter);
|
| | | Set<String> params = new HashSet<String>();
|
| | | for (int i = 0; i < array.size(); i++) {
|
| | | // [{"type":'shoptype',id:12}]
|
| | | String ty = array.optJSONObject(i).optString("type");
|
| | | if ("shoptype".equalsIgnoreCase(ty)) {
|
| | | if (array.optJSONObject(i).optInt("id") == 21) {
|
| | | sf.setTmFlagship(false); // 不筛�?
|
| | | } else {
|
| | | sf.setTmFlagship(true);
|
| | | sf.setTmall(true);
|
| | | sf.setShopTag("b2c");
|
| | | }
|
| | | } else if ("category".equalsIgnoreCase(ty)) {
|
| | | sf.setCateIds(array.optJSONObject(i).optString("id"));
|
| | | } else if ("userType".equalsIgnoreCase(ty)) {
|
| | | // if(array.optJSONObject(i).optInt("id") == 51)
|
| | | sf.setTmall(true);
|
| | | // else
|
| | | // sf.setTmall(false);
|
| | | } else if ("baoyou".equalsIgnoreCase(ty)) {
|
| | | // if(array.optJSONObject(i).optInt("id") == 61)
|
| | | sf.setBaoYou(true);
|
| | | // else
|
| | | // sf.setBaoYou(false);
|
| | | } else if ("quantype".equalsIgnoreCase(ty)) {
|
| | | // if (array.optJSONObject(i).optInt("id") == 31){
|
| | | sf.setQuan(1);
|
| | | if (sf.isTmFlagship()) {
|
| | | sf.setShopTag(sf.getShopTag() + ",dpyhq");
|
| | | } else {
|
| | | sf.setShopTag("dpyhq");
|
| | | }
|
| | | // }
|
| | | // else
|
| | | // sf.setQuan(2);
|
| | | } else if ("hongbaotype".equalsIgnoreCase(ty)) {
|
| | | if (array.optJSONObject(i).optInt("id") == 41)// 有红�?
|
| | | sf.setHongbao(1);
|
| | | else// 无红�?
|
| | | sf.setHongbao(2);
|
| | | } else if ("property".equalsIgnoreCase(ty)) {
|
| | | String pid = (String) array.optJSONObject(i).opt("pid");
|
| | | String id = (String) array.optJSONObject(i).opt("id");
|
| | | boolean flag = false;
|
| | | String str = null;
|
| | | for (String string : params) {
|
| | | flag = string.contains(pid + ":");
|
| | | if (flag) {
|
| | | str = string;
|
| | | break;
|
| | | }
|
| | | }
|
| | | if (flag) {
|
| | | params.add(str + "," + id);
|
| | | params.remove(str);
|
| | | } else {
|
| | | params.add(pid + ":" + id);
|
| | | }
|
| | | } else if ("fahuodi".equalsIgnoreCase(ty)) {
|
| | | int id = array.optJSONObject(i).optInt("id");
|
| | | sf.setProvinceId(id);
|
| | | } else if ("materialId".equalsIgnoreCase(ty)) {
|
| | | int id = array.optJSONObject(i).optInt("id");
|
| | | sf.setProvinceId(id);
|
| | | } else if ("tkRate1".equalsIgnoreCase(ty)) {
|
| | | setSearchTkRate(0, sf);
|
| | | } else if ("tkRate2".equalsIgnoreCase(ty)) {
|
| | | setSearchTkRate(1, sf);
|
| | | } else if ("tkRate3".equalsIgnoreCase(ty)) {
|
| | | setSearchTkRate(2, sf);
|
| | | } else if ("tkRate4".equalsIgnoreCase(ty)) {
|
| | | setSearchTkRate(3, sf);
|
| | | } else if ("tkRate5".equalsIgnoreCase(ty)) {
|
| | | setSearchTkRate(4, sf);
|
| | | }
|
| | | }
|
| | | sf.setParams(params);
|
| | | }
|
| | |
|
| | | TaoBaoSearchResult result = TaoBaoUtil.search(sf);
|
| | | if (result == null) {
|
| | | return null;
|
| | | }
|
| | |
|
| | | List<TaoBaoSearchNav> navList = TaoBaoUtil.getBaseNav();
|
| | | if (result.getNavList() != null)
|
| | | navList.addAll(result.getNavList());
|
| | | Gson gson = new GsonBuilder().create();
|
| | | JSONObject data = new JSONObject();
|
| | | data.put("nav", gson.toJson(navList));
|
| | | List<TaoBaoGoodsBriefExtra> re = new ArrayList<TaoBaoGoodsBriefExtra>();
|
| | | List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
|
| | | int fq = sf.getQuan();
|
| | | int fh = sf.getHongbao();
|
| | | boolean ft = sf.isTmall();
|
| | | Map<String, String> map = manageService.convertMap();
|
| | | BigDecimal proportion = manageService.getFanLiRate();
|
| | | if (fq == 0 && fh == 0 && !ft) {
|
| | | if (result != null && result.getTaoBaoGoodsBriefs() != null)
|
| | | for (TaoBaoGoodsBrief bf : result.getTaoBaoGoodsBriefs()) {
|
| | | int count = bf.getBiz30day();
|
| | | if (count >= 10000) { // 对销量数据做处理 页面展示7.3万
|
| | | double sales = count;
|
| | | String salesCountMidea = String.format("%.1f", sales / 10000);
|
| | | bf.setSalesCount(salesCountMidea + "万");
|
| | | re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
|
| | | } else {
|
| | | bf.setSalesCount(count + "");
|
| | | re.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(bf, proportion.toString(), ""));
|
| | | }
|
| | | }
|
| | | } else {
|
| | | TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra;
|
| | | if (taoBaoGoodsBriefs != null)
|
| | | for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) {
|
| | | int count = taoBaoGoodsBrief.getBiz30day();
|
| | | if (count >= 10000) {
|
| | | double sales = count;
|
| | | String salesCountMidea = String.format("%.1f", sales / 10000);
|
| | | taoBaoGoodsBrief.setSalesCount(salesCountMidea + "万");
|
| | | taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
|
| | | proportion.toString(), "");
|
| | | re.add(taoBaoGoodsBriefExtra);
|
| | | } else {
|
| | | taoBaoGoodsBrief.setSalesCount(count + "");
|
| | | taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
|
| | | proportion.toString(), "");
|
| | | re.add(taoBaoGoodsBriefExtra);
|
| | | }
|
| | | }
|
| | | }
|
| | | Gson gson2 = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
|
| | | .excludeFieldsWithoutExposeAnnotation().create();
|
| | | data.put("result", gson2.toJson(re));
|
| | | data.put("count", result.getTaoBaoHead().getDocsfound());
|
| | | return data;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 执行搜索精选库
|
| | | * |
| | | * @param kw
|
| | | * @param page
|
| | | * @param filter
|
| | | * @param order
|
| | | * @param startprice
|
| | | * @param endprice
|
| | | * @return
|
| | | */
|
| | | private JSONObject searchQualityGoods(String key, int page, String filter, String order, String startprice,
|
| | | String endprice) {
|
| | |
|
| | | Integer hasQuan = null;
|
| | | Integer userType = null;
|
| | | Double start_Price = null;
|
| | | Double end_Price = null;
|
| | | Integer sort = null;
|
| | | Double startTkRate = null;
|
| | | Double endTkRate = null;
|
| | |
|
| | | int provinceId = -100;
|
| | |
|
| | | // 起始价格
|
| | | if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(startprice)) {
|
| | | start_Price = Double.parseDouble(startprice);
|
| | | }
|
| | | // 结束价格
|
| | | if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(endprice)) {
|
| | | end_Price = Double.parseDouble(endprice);
|
| | | }
|
| | |
|
| | | // 排序
|
| | | if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(order)) {
|
| | |
|
| | | if (Integer.parseInt(order) == 4) {
|
| | | sort = 20; // 综合时:采用默认权重排序
|
| | | } else {
|
| | | sort = Integer.parseInt(order);
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | /* 其他筛选条件 */
|
| | | if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(filter)) {
|
| | | // 查询淘宝天猫
|
| | | JSONArray array = JSONArray.fromObject(filter);
|
| | | for (int i = 0; i < array.size(); i++) {
|
| | | String ty = array.optJSONObject(i).optString("type");
|
| | |
|
| | | if ("userType".equalsIgnoreCase(ty)) {
|
| | | userType = 1; // 天猫
|
| | | } else if ("quantype".equalsIgnoreCase(ty)) {
|
| | | hasQuan = 1; // 有券
|
| | | } else if ("hongbaotype".equalsIgnoreCase(ty)) {
|
| | |
|
| | | } else if ("fahuodi".equalsIgnoreCase(ty)) {
|
| | | provinceId = array.optJSONObject(i).optInt("id");
|
| | | } else if ("tkRate1".equalsIgnoreCase(ty)) {
|
| | | // 获取对应参数
|
| | | String value = configService.get("tkRate_range");
|
| | | if (!StringUtil.isNullOrEmpty(value)) {
|
| | | JSONArray tkRatearray = JSONArray.fromObject(value);
|
| | | if (tkRatearray != null) {
|
| | | String start = tkRatearray.optJSONObject(0).optString("start");
|
| | | if (!StringUtil.isNullOrEmpty(start)) {
|
| | | startTkRate = Double.parseDouble(start);
|
| | | }
|
| | | String end = tkRatearray.optJSONObject(0).optString("end");
|
| | | if (!StringUtil.isNullOrEmpty(end)) {
|
| | | endTkRate = Double.parseDouble(end);
|
| | | }
|
| | | }
|
| | | }
|
| | | } else if ("tkRate2".equalsIgnoreCase(ty)) {
|
| | | // 获取对应参数
|
| | | String value = configService.get("tkRate_range");
|
| | | if (!StringUtil.isNullOrEmpty(value)) {
|
| | | JSONArray tkRatearray = JSONArray.fromObject(value);
|
| | | if (tkRatearray != null) {
|
| | | String start = tkRatearray.optJSONObject(1).optString("start");
|
| | | if (!StringUtil.isNullOrEmpty(start)) {
|
| | | startTkRate = Double.parseDouble(start);
|
| | | }
|
| | | String end = tkRatearray.optJSONObject(1).optString("end");
|
| | | if (!StringUtil.isNullOrEmpty(end)) {
|
| | | endTkRate = Double.parseDouble(end);
|
| | | }
|
| | | }
|
| | | }
|
| | | } else if ("tkRate3".equalsIgnoreCase(ty)) {
|
| | | // 获取对应参数
|
| | | String value = configService.get("tkRate_range");
|
| | | if (!StringUtil.isNullOrEmpty(value)) {
|
| | | JSONArray tkRatearray = JSONArray.fromObject(value);
|
| | | if (tkRatearray != null) {
|
| | | String start = tkRatearray.optJSONObject(2).optString("start");
|
| | | if (!StringUtil.isNullOrEmpty(start)) {
|
| | | startTkRate = Double.parseDouble(start);
|
| | | }
|
| | | String end = tkRatearray.optJSONObject(2).optString("end");
|
| | | if (!StringUtil.isNullOrEmpty(end)) {
|
| | | endTkRate = Double.parseDouble(end);
|
| | | }
|
| | | }
|
| | | }
|
| | | } else if ("tkRate4".equalsIgnoreCase(ty)) {
|
| | | // 获取对应参数
|
| | | String value = configService.get("tkRate_range");
|
| | | if (!StringUtil.isNullOrEmpty(value)) {
|
| | | JSONArray tkRatearray = JSONArray.fromObject(value);
|
| | | if (tkRatearray != null) {
|
| | | String start = tkRatearray.optJSONObject(3).optString("start");
|
| | | if (!StringUtil.isNullOrEmpty(start)) {
|
| | | startTkRate = Double.parseDouble(start);
|
| | | }
|
| | | String end = tkRatearray.optJSONObject(3).optString("end");
|
| | | if (!StringUtil.isNullOrEmpty(end)) {
|
| | | endTkRate = Double.parseDouble(end);
|
| | | }
|
| | | }
|
| | | }
|
| | | } else if ("tkRate5".equalsIgnoreCase(ty)) {
|
| | | // 获取对应参数
|
| | | String value = configService.get("tkRate_range");
|
| | | if (!StringUtil.isNullOrEmpty(value)) {
|
| | | JSONArray tkRatearray = JSONArray.fromObject(value);
|
| | | if (tkRatearray != null) {
|
| | | String start = tkRatearray.optJSONObject(4).optString("start");
|
| | | if (!StringUtil.isNullOrEmpty(start)) {
|
| | | startTkRate = Double.parseDouble(start);
|
| | | }
|
| | | String end = tkRatearray.optJSONObject(4).optString("end");
|
| | | if (!StringUtil.isNullOrEmpty(end)) {
|
| | | endTkRate = Double.parseDouble(end);
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | int pageSize = Constant.PAGE_SIZE;
|
| | |
|
| | | List<QualityFactory> listQuery = qualityGoodsService.listRecommendBykey(page * pageSize, pageSize, key, hasQuan,
|
| | | userType, start_Price, end_Price, startTkRate, endTkRate, sort);
|
| | |
|
| | | List<TaoBaoGoodsBriefExtra> listExtra = new ArrayList<TaoBaoGoodsBriefExtra>();
|
| | | BigDecimal proportion = manageService.getFanLiRate();
|
| | | /* 遍历列表数据 */
|
| | | if (listQuery != null && listQuery.size() > 0) {
|
| | | for (QualityFactory selectionGoods : listQuery) {
|
| | |
|
| | | TaoBaoGoodsBrief taoBaoGoodsBrief = selectionGoods.getTaoBaoGoodsBrief();
|
| | |
|
| | | if (taoBaoGoodsBrief == null) {
|
| | | continue;
|
| | | }
|
| | |
|
| | | int biz30day = taoBaoGoodsBrief.getBiz30day();
|
| | | if (biz30day >= 10000) {
|
| | | double sales = biz30day;
|
| | | String salesCountMidea = String.format("%.1f", sales / 10000);
|
| | | taoBaoGoodsBrief.setSalesCount(salesCountMidea + "万");
|
| | | } else {
|
| | | taoBaoGoodsBrief.setSalesCount(biz30day + "");
|
| | | }
|
| | |
|
| | | // 改变图片尺寸
|
| | | String pictUrl = taoBaoGoodsBrief.getPictUrl();
|
| | | if (!StringUtil.isNullOrEmpty(pictUrl) && !pictUrl.contains("320x320")) {
|
| | | taoBaoGoodsBrief.setPictUrl(TbImgUtil.getTBSize320Img(pictUrl));
|
| | | }
|
| | |
|
| | | listExtra.add(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), null));
|
| | | }
|
| | | }
|
| | |
|
| | | long count = qualityGoodsService.countRecommendBykey(key, hasQuan, userType, start_Price, end_Price,
|
| | | startTkRate, endTkRate);
|
| | |
|
| | | // 设置发货地址
|
| | | TaoBaoSearchNav nav = new TaoBaoSearchNav();
|
| | | nav.setName("发货地选择");
|
| | | nav.setFlag("address");
|
| | | nav.setId(11110);
|
| | | nav.setType("fahuodi");
|
| | |
|
| | | List<TaoBaoSearchNav> navList = new ArrayList<>();
|
| | |
|
| | | List<TaoBaoSearchNav> childNavList = new ArrayList<>();
|
| | | List<TaoBaoProvince> provinceList = TaoBaoUtil.getTaoBaoProvinceList();
|
| | | for (TaoBaoProvince province : provinceList) {
|
| | | TaoBaoSearchNav childNav = new TaoBaoSearchNav();
|
| | | childNav.setName(province.getName());
|
| | | childNav.setId(Integer.parseInt(province.getId()));
|
| | | childNav.setType("fahuodi-child");
|
| | | if (Integer.parseInt(province.getId()) == provinceId)
|
| | | childNav.setSelector(1);
|
| | | childNavList.add(childNav);
|
| | | }
|
| | |
|
| | | nav.setSubIds(childNavList);
|
| | | navList.add(nav);
|
| | |
|
| | | Gson gson = new GsonBuilder().create();
|
| | | Gson gson2 = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
|
| | | .excludeFieldsWithoutExposeAnnotation().create();
|
| | |
|
| | | JSONObject data = new JSONObject();
|
| | | data.put("nav", gson.toJson(navList));
|
| | | data.put("result", gson2.toJson(listExtra));
|
| | | data.put("count", count);
|
| | |
|
| | | return data;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 设置查询佣金比例范围
|
| | | * |
| | | * @param i
|
| | | * @param sf
|
| | | */
|
| | | public void setSearchTkRate(int i, SearchFilter sf) {
|
| | | // 获取对应参数
|
| | | String value = configService.get("tkRate_range");
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(value)) {
|
| | |
|
| | | JSONArray tkRatearray = JSONArray.fromObject(value);
|
| | |
|
| | | if (tkRatearray != null) {
|
| | |
|
| | | String start = tkRatearray.optJSONObject(i).optString("start");
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(start)) {
|
| | | int tkRate = (int) (Float.parseFloat(start) * 100);
|
| | | sf.setStartTkRate(tkRate);
|
| | | }
|
| | |
|
| | | String end = tkRatearray.optJSONObject(i).optString("end");
|
| | | if (!StringUtil.isNullOrEmpty(end)) {
|
| | | int tkRate = (int) (Float.parseFloat(end) * 100);
|
| | | sf.setEndTkRate(tkRate);
|
| | | }
|
| | | }
|
| | |
|
| | | }
|
| | | }
|
| | | }
|