| | |
| | | package com.yeshi.fanli.service.impl.lable;
|
| | |
|
| | | import java.math.BigDecimal;
|
| | | import java.util.ArrayList;
|
| | | import java.util.HashSet;
|
| | | import java.util.List;
|
| | | import java.util.Map;
|
| | | import java.util.Set;
|
| | |
|
| | | import javax.annotation.Resource;
|
| | |
|
| | | import org.springframework.cache.annotation.Cacheable;
|
| | | import org.springframework.stereotype.Service;
|
| | | 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.dto.ConfigParamsDTO;
|
| | | import com.yeshi.fanli.entity.bus.lable.QualityFactory;
|
| | | 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.TaoBaoSearchNav;
|
| | | import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
|
| | | import com.yeshi.fanli.entity.taobao.TaoBaoShopInfo;
|
| | | import com.yeshi.fanli.service.inter.lable.QualityGoodsService;
|
| | | import com.yeshi.fanli.service.inter.lable.TaoKeGoodsService;
|
| | | import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
|
| | | import com.yeshi.fanli.service.inter.taobao.TaoBaoShopService;
|
| | | import com.yeshi.fanli.util.Constant;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | | import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
|
| | | import com.yeshi.fanli.util.taobao.TaoBaoUtil;
|
| | | import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
|
| | | import com.yeshi.fanli.vo.goods.GoodsDetailVO;
|
| | |
|
| | | import net.sf.json.JSONArray;
|
| | | import net.sf.json.JSONObject;
|
| | |
|
| | | @Service
|
| | | public class TaoKeGoodsServiceImpl implements TaoKeGoodsService {
|
| | |
|
| | | @Resource
|
| | | private HongBaoManageService hongBaoManageService;
|
| | |
|
| | | @Resource
|
| | | private TaoBaoShopService taoBaoShopService;
|
| | |
|
| | | @Resource
|
| | | private QualityGoodsService qualityGoodsService;
|
| | |
|
| | | @Cacheable(value = "taoKeMaterialCache", key = "'listByMaterial-'+#materialId +'-'+#pageIndex")
|
| | | @Override
|
| | | public List<TaoBaoGoodsBrief> listByMaterial(Integer materialId, Integer pageIndex, int pageSize) throws Exception {
|
| | |
|
| | | TaoBaoSearchResult result = TaoKeApiUtil.getMaterialByMaterialId(materialId, pageIndex, pageSize);
|
| | |
|
| | | if (result == null) {
|
| | | return null;
|
| | | }
|
| | |
|
| | | return result.getTaoBaoGoodsBriefs();
|
| | | }
|
| | |
|
| | | @Override
|
| | | @Cacheable(value = "taoKeMaterialCache", key = "'getBrandsGoods-'+#materialId +'-'+#pageIndex")
|
| | | public JSONObject getBrandsGoods(Integer materialId, int pageIndex, int pageSize) throws Exception {
|
| | |
|
| | | TaoBaoSearchResult result = TaoKeApiUtil.getMaterialByMaterialId(materialId, pageIndex, pageSize);
|
| | |
|
| | | if (result == null) {
|
| | | return null;
|
| | | }
|
| | |
|
| | | List<TaoBaoGoodsBrief> listGoods = result.getTaoBaoGoodsBriefs();
|
| | | if (listGoods == null || listGoods.size() == 0) {
|
| | | return null;
|
| | | }
|
| | |
|
| | | JSONArray arrayGoods = new JSONArray();
|
| | | Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
|
| | | .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
|
| | |
|
| | | BigDecimal proportion = hongBaoManageService.getFanLiRate();
|
| | |
|
| | | listGoods.parallelStream().forEach(taoBaoGoodsBrief -> {
|
| | |
|
| | | // Long sellerId = taoBaoGoodsBrief.getSellerId();
|
| | | // String title = taoBaoGoodsBrief.getTitle();
|
| | | // Long auctionId = taoBaoGoodsBrief.getAuctionId();
|
| | |
|
| | | // TaoBaoShopInfo shopInfo = TaoBaoShopUtil.getTaoBaoShopInfo(title,
|
| | | // sellerId, auctionId);
|
| | |
|
| | | TaoBaoShopInfo shopInfo = taoBaoShopService.getTaoBaoShopInfo(taoBaoGoodsBrief);
|
| | |
|
| | | if (shopInfo != null) {
|
| | | taoBaoGoodsBrief.setShopTitle(shopInfo.getShopTitle());
|
| | | String shopType = shopInfo.getShopType();
|
| | | if (shopType.contains("tm")) {
|
| | | taoBaoGoodsBrief.setUserType(1);
|
| | | } else {
|
| | | taoBaoGoodsBrief.setUserType(0);
|
| | | }
|
| | | }
|
| | |
|
| | | int count = taoBaoGoodsBrief.getBiz30day();
|
| | | if (count >= 10000) {
|
| | | double sales = count;
|
| | | String salesCountMidea = String.format("%.1f", sales / 10000);
|
| | | taoBaoGoodsBrief.setSalesCount(salesCountMidea + "万");
|
| | | } else {
|
| | | taoBaoGoodsBrief.setSalesCount(count + "");
|
| | | }
|
| | |
|
| | | // 改变图片尺寸
|
| | | String pictUrl = taoBaoGoodsBrief.getPictUrl();
|
| | | if (!StringUtil.isNullOrEmpty(pictUrl) && !pictUrl.contains("320x320")) {
|
| | | taoBaoGoodsBrief.setPictUrl(TbImgUtil.getTBSize320Img(pictUrl));
|
| | | }
|
| | |
|
| | | arrayGoods.add(
|
| | | gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), null)));
|
| | |
|
| | | });
|
| | |
|
| | | JSONObject data = new JSONObject();
|
| | | data.put("count", arrayGoods.size());
|
| | | data.put("result_list", arrayGoods);
|
| | |
|
| | | return data;
|
| | | }
|
| | |
|
| | | @Override
|
| | | @Cacheable(value = "taoKeMaterialCache", key = "'getBrandsShops-'+#materialId +'-'+#pageIndex")
|
| | | public JSONObject getBrandsShops(Integer materialId, int pageIndex, int pageSize) throws Exception {
|
| | |
|
| | | TaoBaoSearchResult result = TaoKeApiUtil.getMaterialByMaterialId(materialId, pageIndex, pageSize);
|
| | |
|
| | | if (result == null) {
|
| | | return null;
|
| | | }
|
| | |
|
| | | List<TaoBaoGoodsBrief> listGoods = result.getTaoBaoGoodsBriefs();
|
| | | if (listGoods == null || listGoods.size() == 0) {
|
| | | return null;
|
| | | }
|
| | |
|
| | | Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
|
| | | .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
|
| | |
|
| | | JSONArray arrayShop = new JSONArray();
|
| | |
|
| | | listGoods.parallelStream().forEach(taoBaoGoodsBrief -> {
|
| | |
|
| | | // Long sellerId = taoBaoGoodsBrief.getSellerId();
|
| | | // String title = taoBaoGoodsBrief.getTitle();
|
| | | // Long auctionId = taoBaoGoodsBrief.getAuctionId();
|
| | |
|
| | | // TaoBaoShopInfo shopInfo = TaoBaoShopUtil.getTaoBaoShopInfo(title,
|
| | | // sellerId, auctionId);
|
| | |
|
| | | TaoBaoShopInfo shopInfo = taoBaoShopService.getTaoBaoShopInfo(taoBaoGoodsBrief);
|
| | |
|
| | | if (shopInfo != null) {
|
| | |
|
| | | JSONObject jsonShop = new JSONObject();
|
| | | String shopType = shopInfo.getShopType();
|
| | | if (shopType.contains("tm")) {
|
| | | shopInfo.setShopType("2");
|
| | | } else {
|
| | | shopInfo.setShopType("1");
|
| | | }
|
| | |
|
| | | jsonShop.put("shopInfo", shopInfo);
|
| | | jsonShop.put("auctionId", taoBaoGoodsBrief.getAuctionId());
|
| | | arrayShop.add(gson.toJson(jsonShop));
|
| | | }
|
| | |
|
| | | });
|
| | |
|
| | | JSONObject data = new JSONObject();
|
| | | data.put("count", listGoods.size());
|
| | | data.put("result_list", arrayShop);
|
| | |
|
| | | return data;
|
| | | }
|
| | |
|
| | | @Override
|
| | | @Cacheable(value = "searchWuLiaoCache", key = "'searchWuLiao-'+#sf")
|
| | | public JSONObject searchWuLiao(SearchFilter sf) {
|
| | |
|
| | | // 淘宝物料接口查询
|
| | | TaoBaoSearchResult result = TaoKeApiUtil.searchWuLiao(sf);
|
| | |
|
| | | 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();
|
| | |
|
| | | BigDecimal proportion = hongBaoManageService.getFanLiRate();
|
| | |
|
| | | if (fq == 0 && fh == 0 && !ft) {
|
| | | if (result != null && result.getTaoBaoGoodsBriefs() != null)
|
| | | for (TaoBaoGoodsBrief bf : result.getTaoBaoGoodsBriefs()) {
|
| | | int count = bf.getBiz30day();
|
| | |
|
| | | String startBiz30day = sf.getStartBiz30day();
|
| | | if (!StringUtil.isNullOrEmpty(startBiz30day)) {
|
| | | int biz30day = Integer.parseInt(startBiz30day);
|
| | | if (count < biz30day) {
|
| | | continue;
|
| | | }
|
| | | }
|
| | |
|
| | | 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();
|
| | |
|
| | | String startBiz30day = sf.getStartBiz30day();
|
| | | if (!StringUtil.isNullOrEmpty(startBiz30day)) {
|
| | | int biz30day = Integer.parseInt(startBiz30day);
|
| | | if (count < biz30day) {
|
| | | break;
|
| | | }
|
| | | }
|
| | |
|
| | | 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;
|
| | | }
|
| | | |
| | | |
| | | @Override
|
| | | @Cacheable(value = "searchWuLiaoCache", key = "'searchWuLiaoV2-'+#sf")
|
| | | public JSONObject searchWuLiaoV2(SearchFilter sf) {
|
| | |
|
| | | // 淘宝物料接口查询
|
| | | TaoBaoSearchResult result = TaoKeApiUtil.searchWuLiao(sf);
|
| | |
|
| | | 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<GoodsDetailVO> re = new ArrayList<GoodsDetailVO>();
|
| | | List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs();
|
| | |
|
| | | int fq = sf.getQuan();
|
| | | int fh = sf.getHongbao();
|
| | | boolean ft = sf.isTmall();
|
| | |
|
| | | BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
|
| | | BigDecimal shareRate = hongBaoManageService.getShareRate();
|
| | | ConfigParamsDTO paramsDTO = new ConfigParamsDTO(fanLiRate, shareRate, Constant.MAX_REWARD_RATE);
|
| | |
|
| | | if (fq == 0 && fh == 0 && !ft) {
|
| | | if (result != null && result.getTaoBaoGoodsBriefs() != null)
|
| | | for (TaoBaoGoodsBrief bf : result.getTaoBaoGoodsBriefs()) {
|
| | | int count = bf.getBiz30day();
|
| | |
|
| | | String startBiz30day = sf.getStartBiz30day();
|
| | | if (!StringUtil.isNullOrEmpty(startBiz30day)) {
|
| | | int biz30day = Integer.parseInt(startBiz30day);
|
| | | if (count < biz30day) {
|
| | | continue;
|
| | | }
|
| | | }
|
| | |
|
| | | GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertTaoBao(bf, paramsDTO);
|
| | | re.add(goodsDetailVO);
|
| | | }
|
| | | } else {
|
| | | if (taoBaoGoodsBriefs != null)
|
| | | for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) {
|
| | |
|
| | | int count = taoBaoGoodsBrief.getBiz30day();
|
| | | String startBiz30day = sf.getStartBiz30day();
|
| | | if (!StringUtil.isNullOrEmpty(startBiz30day)) {
|
| | | int biz30day = Integer.parseInt(startBiz30day);
|
| | | if (count < biz30day) {
|
| | | break;
|
| | | }
|
| | | }
|
| | | GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, paramsDTO);
|
| | | re.add(goodsDetailVO);
|
| | | }
|
| | | }
|
| | |
|
| | | Gson gson2 = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
|
| | | .excludeFieldsWithoutExposeAnnotation().create();
|
| | |
|
| | | data.put("result", gson2.toJson(re));
|
| | | data.put("count", result.getTaoBaoHead().getDocsfound());
|
| | |
|
| | | return data;
|
| | | }
|
| | | |
| | | |
| | |
|
| | | @Override
|
| | | @Cacheable(value = "searchWuLiaoCache", key = "'searchWuLiaoList-'+#sf")
|
| | | public List<TaoBaoGoodsBrief> searchWuLiaoList(SearchFilter sf) {
|
| | |
|
| | | // 淘宝物料接口查询
|
| | | TaoBaoSearchResult result = TaoKeApiUtil.searchWuLiao(sf);
|
| | | if (result == null)
|
| | | return null;
|
| | |
|
| | | return result.getTaoBaoGoodsBriefs();
|
| | | }
|
| | |
|
| | | @Override
|
| | | public JSONObject listByWuLiao(int page, String key, String cateIds, String filterParams, String order,
|
| | | String startprice, String endprice, String searchParam) {
|
| | |
|
| | | SearchFilter sf = new SearchFilter();
|
| | | sf.setKey(key);
|
| | | sf.setPage(page);
|
| | | sf.setCateIds(cateIds);
|
| | |
|
| | | 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)) {
|
| | | // 默认销量从高到低排序
|
| | | sf.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
|
| | | } else {
|
| | | 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);
|
| | | }
|
| | | }
|
| | |
|
| | | if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(filterParams)) {
|
| | |
|
| | | Set<String> params = new HashSet<String>();
|
| | |
|
| | | JSONArray array = JSONArray.fromObject(filterParams);
|
| | |
|
| | | for (int i = 0; i < array.size(); i++) {
|
| | |
|
| | | String type = array.optJSONObject(i).optString("type");
|
| | |
|
| | | switch (type) {
|
| | | case "shoptype":
|
| | | if (array.optJSONObject(i).optInt("id") == 21) {
|
| | | sf.setTmFlagship(false); // 不筛�?
|
| | | } else {
|
| | | sf.setTmFlagship(true);
|
| | | sf.setTmall(true);
|
| | | sf.setShopTag("b2c");
|
| | | }
|
| | | break;
|
| | |
|
| | | case "category":
|
| | | sf.setCateIds(array.optJSONObject(i).optString("id"));
|
| | | break;
|
| | |
|
| | | case "userType":
|
| | | sf.setCateIds(array.optJSONObject(i).optString("id"));
|
| | | break;
|
| | |
|
| | | case "baoyou":
|
| | | sf.setBaoYou(true);
|
| | | break;
|
| | |
|
| | | case "quantype":
|
| | | sf.setQuan(1);
|
| | | if (sf.isTmFlagship()) {
|
| | | sf.setShopTag(sf.getShopTag() + ",dpyhq");
|
| | | } else {
|
| | | sf.setShopTag("dpyhq");
|
| | | }
|
| | | break;
|
| | |
|
| | | case "hongbaotype":
|
| | | if (array.optJSONObject(i).optInt("id") == 41) {
|
| | | sf.setHongbao(1);
|
| | | } else {
|
| | | sf.setHongbao(2);
|
| | | }
|
| | | break;
|
| | |
|
| | | case "property":
|
| | | 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);
|
| | | }
|
| | | break;
|
| | |
|
| | | case "fahuodi":
|
| | | int provinceId = array.optJSONObject(i).optInt("id");
|
| | | sf.setProvinceId(provinceId);
|
| | | break;
|
| | |
|
| | | default:
|
| | | break;
|
| | | }
|
| | | }
|
| | | sf.setParams(params);
|
| | | }
|
| | |
|
| | | // 淘宝物料接口查询
|
| | | TaoBaoSearchResult result = TaoKeApiUtil.searchWuLiao(sf);
|
| | |
|
| | | 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();
|
| | |
|
| | | BigDecimal proportion = hongBaoManageService.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;
|
| | | }
|
| | |
|
| | | @Override
|
| | | public void setSearchFilter(SearchFilter searchfilter, String filter, String order, String startprice,
|
| | | String endprice, String fastFilter, Integer totalSales) {
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(startprice)) {
|
| | | searchfilter.setStartPrice(new BigDecimal(startprice));
|
| | | }
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(endprice)) {
|
| | | searchfilter.setEndPrice(new BigDecimal(endprice));
|
| | | }
|
| | |
|
| | | if (totalSales != null) {
|
| | | searchfilter.setStartBiz30day(totalSales + "");
|
| | | }
|
| | |
|
| | | 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;
|
| | | }
|
| | | }
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(filter)) {
|
| | | // 查询淘宝天猫
|
| | | JSONArray array = JSONArray.fromObject(filter);
|
| | | for (int i = 0; i < array.size(); i++) {
|
| | | String type = array.optJSONObject(i).optString("type");
|
| | | /* 含券 */
|
| | | if ("quantype".equalsIgnoreCase(type)) {
|
| | | searchfilter.setQuan(1);
|
| | | continue;
|
| | | }
|
| | | /* 搜索天猫 */
|
| | | if ("shoptype".equalsIgnoreCase(type)) {
|
| | | searchfilter.setTmall(true);
|
| | | continue;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(order)) {
|
| | | if (Integer.parseInt(order) == 1 || Integer.parseInt(order) == 0) {
|
| | | searchfilter.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
|
| | | } else if (Integer.parseInt(order) == 2) {
|
| | | searchfilter.setSort(TaoBaoUtil.SORT_PRICE_HIGH_TO_LOW);
|
| | | } else if (Integer.parseInt(order) == 3) {
|
| | | searchfilter.setSort(TaoBaoUtil.SORT_PRICE_LOW_TO_HIGH);
|
| | | } else if (Integer.parseInt(order) == 4) {
|
| | | searchfilter.setSort(TaoBaoUtil.SORT_TOTAL_SALES_HIGH_TO_LOW);
|
| | | } else if (Integer.parseInt(order) == 5) {
|
| | | searchfilter.setSort(TaoBaoUtil.SORT_SALE_LOW_TO_HIGH);
|
| | | }
|
| | | } else {
|
| | | searchfilter.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW);
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | | @Override
|
| | | @Cacheable(value = "qualityCache", key = "'countByQuality-'+#start+'-'+#searchKey+'-'+#systemCid+'-'+#listLabId")
|
| | | public List<QualityFactory> queryByQuality(long start, int count, String searchKey, Long systemCid,
|
| | | List<Long> listLabId) {
|
| | |
|
| | | /* 1、 精选库筛选 */
|
| | | List<QualityFactory> listQuality = null;
|
| | |
|
| | | if (listLabId != null && listLabId.size() > 0) {
|
| | | // 含标签
|
| | | listQuality = qualityGoodsService.listQueryByKeyAndlabIDs(start, count, searchKey, listLabId, null,
|
| | | systemCid, null, null, null, null, null);
|
| | | } else {
|
| | | listQuality = qualityGoodsService.listQueryByKey(start, count, searchKey, null, systemCid, null, null, null,
|
| | | null, null);
|
| | | }
|
| | |
|
| | | return listQuality;
|
| | | }
|
| | |
|
| | | @Override
|
| | | @Cacheable(value = "qualityCache", key = "'countByQuality-'+#searchKey+'-'+#systemCid+'-'+#listLabId")
|
| | | public long countByQuality(String searchKey, Long systemCid, List<Long> listLabId) {
|
| | |
|
| | | long incount = 0;
|
| | |
|
| | | if (listLabId != null && listLabId.size() > 0) {
|
| | | // 含标签
|
| | | incount = qualityGoodsService.countQueryKeyAndlabIDs(searchKey, listLabId, systemCid, null, null, null,
|
| | | null, null);
|
| | | } else {
|
| | | incount = qualityGoodsService.countQueryByKey(searchKey, systemCid, null, null, null, null, null);
|
| | | }
|
| | |
|
| | | return incount;
|
| | | }
|
| | |
|
| | | @Override
|
| | | public JSONObject listQualityGoods(List<QualityFactory> listQuality, List<TaoBaoGoodsBrief> searchWuLiaoList,
|
| | | Map<String, String> map) {
|
| | |
|
| | | JSONArray array = new JSONArray();
|
| | | Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
|
| | | .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
|
| | |
|
| | | BigDecimal proportion = hongBaoManageService.getFanLiRate();
|
| | |
|
| | | /* 遍历列表数据 */
|
| | | for (QualityFactory selectionGoods : listQuality) {
|
| | |
|
| | | 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 + "");
|
| | | }
|
| | |
|
| | | array.add(gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), null)));
|
| | | }
|
| | |
|
| | | if (searchWuLiaoList != null && searchWuLiaoList.size() > 0) {
|
| | | /* 遍历列表数据 */
|
| | | for (TaoBaoGoodsBrief taoBaoGoodsBrief : searchWuLiaoList) {
|
| | |
|
| | | int biz30day = taoBaoGoodsBrief.getBiz30day();
|
| | |
|
| | | if (biz30day >= 10000) {
|
| | | double sales = biz30day;
|
| | | String salesCountMidea = String.format("%.1f", sales / 10000);
|
| | | taoBaoGoodsBrief.setSalesCount(salesCountMidea + "万");
|
| | | } else {
|
| | | taoBaoGoodsBrief.setSalesCount(biz30day + "");
|
| | | }
|
| | |
|
| | | array.add(gson
|
| | | .toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), null)));
|
| | | }
|
| | | }
|
| | |
|
| | | JSONObject data = new JSONObject();
|
| | |
|
| | | List<TaoBaoSearchNav> navList = new ArrayList<TaoBaoSearchNav>();
|
| | | Gson gsonBuilder = new GsonBuilder().create();
|
| | | data.put("nav", gsonBuilder.toJson(navList));
|
| | | data.put("count", 5000);
|
| | | data.put("result", array);
|
| | |
|
| | | return data;
|
| | | }
|
| | |
|
| | | }
|
| | | package com.yeshi.fanli.service.impl.lable; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.ArrayList; |
| | | import java.util.HashSet; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | import java.util.Set; |
| | | |
| | | import javax.annotation.Resource; |
| | | |
| | | import com.yeshi.fanli.entity.SystemEnum; |
| | | import com.yeshi.fanli.lijin.manager.GoodsLijinMnager; |
| | | import org.springframework.cache.annotation.Cacheable; |
| | | import org.springframework.stereotype.Service; |
| | | 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.dto.GoodsMoneyConfigParamsDTO; |
| | | import com.yeshi.fanli.entity.bus.lable.QualityFactory; |
| | | import com.yeshi.fanli.entity.taobao.SearchFilter; |
| | | import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief; |
| | | import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBriefExtra; |
| | | import com.yeshi.fanli.entity.taobao.TaoBaoSearchNav; |
| | | import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult; |
| | | import com.yeshi.common.entity.taobao.TaoBaoShopInfo; |
| | | import com.yeshi.fanli.service.inter.lable.QualityGoodsService; |
| | | import com.yeshi.fanli.service.inter.lable.TaoKeGoodsService; |
| | | import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService; |
| | | import com.yeshi.fanli.service.inter.order.config.HongBaoManageService; |
| | | import com.yeshi.fanli.service.inter.taobao.TaoBaoShopService; |
| | | import com.yeshi.fanli.util.StringUtil; |
| | | import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory; |
| | | import com.yeshi.fanli.util.taobao.TaoBaoUtil; |
| | | import com.yeshi.fanli.util.taobao.TaoKeApiUtil; |
| | | import com.yeshi.fanli.vo.goods.GoodsDetailVO; |
| | | |
| | | import net.sf.json.JSONArray; |
| | | import net.sf.json.JSONObject; |
| | | |
| | | @Service |
| | | public class TaoKeGoodsServiceImpl implements TaoKeGoodsService { |
| | | |
| | | @Resource |
| | | private HongBaoManageService hongBaoManageService; |
| | | |
| | | @Resource |
| | | private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService; |
| | | |
| | | @Resource |
| | | private TaoBaoShopService taoBaoShopService; |
| | | |
| | | @Resource |
| | | private QualityGoodsService qualityGoodsService; |
| | | |
| | | @Resource |
| | | private GoodsLijinMnager goodsLijinMnager; |
| | | |
| | | @Cacheable(value = "taoKeMaterialCache", key = "'listByMaterial-'+#materialId +'-'+#pageIndex") |
| | | @Override |
| | | public List<TaoBaoGoodsBrief> listByMaterial(Integer materialId, Integer pageIndex, int pageSize) throws Exception { |
| | | |
| | | TaoBaoSearchResult result = TaoKeApiUtil.getMaterialByMaterialId(materialId, pageIndex, pageSize); |
| | | |
| | | if (result == null) { |
| | | return null; |
| | | } |
| | | |
| | | return result.getTaoBaoGoodsBriefs(); |
| | | } |
| | | |
| | | @Override |
| | | @Cacheable(value = "taoKeMaterialCache", key = "'getBrandsGoods-'+#materialId +'-'+#pageIndex") |
| | | public JSONObject getBrandsGoods(Integer materialId, int pageIndex, int pageSize, SystemEnum system) throws Exception { |
| | | |
| | | TaoBaoSearchResult result = TaoKeApiUtil.getMaterialByMaterialId(materialId, pageIndex, pageSize); |
| | | |
| | | if (result == null) { |
| | | return null; |
| | | } |
| | | |
| | | List<TaoBaoGoodsBrief> listGoods = result.getTaoBaoGoodsBriefs(); |
| | | if (listGoods == null || listGoods.size() == 0) { |
| | | return null; |
| | | } |
| | | |
| | | JSONArray arrayGoods = new JSONArray(); |
| | | Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) |
| | | .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); |
| | | |
| | | BigDecimal proportion = hongBaoManageService.getFanLiRate(system); |
| | | |
| | | listGoods.parallelStream().forEach(taoBaoGoodsBrief -> { |
| | | |
| | | // Long sellerId = taoBaoGoodsBrief.getSellerId(); |
| | | // String title = taoBaoGoodsBrief.getTitle(); |
| | | // Long auctionId = taoBaoGoodsBrief.getAuctionId(); |
| | | |
| | | // TaoBaoShopInfo shopInfo = TaoBaoShopUtil.getTaoBaoShopInfo(title, |
| | | // sellerId, auctionId); |
| | | |
| | | TaoBaoShopInfo shopInfo = taoBaoShopService.getTaoBaoShopInfo(taoBaoGoodsBrief); |
| | | |
| | | if (shopInfo != null) { |
| | | taoBaoGoodsBrief.setShopTitle(shopInfo.getShopTitle()); |
| | | String shopType = shopInfo.getShopType(); |
| | | if (shopType.contains("tm")) { |
| | | taoBaoGoodsBrief.setUserType(1); |
| | | } else { |
| | | taoBaoGoodsBrief.setUserType(0); |
| | | } |
| | | } |
| | | |
| | | int count = taoBaoGoodsBrief.getBiz30day(); |
| | | if (count >= 10000) { |
| | | double sales = count; |
| | | String salesCountMidea = String.format("%.1f", sales / 10000); |
| | | taoBaoGoodsBrief.setSalesCount(salesCountMidea + "万"); |
| | | } else { |
| | | taoBaoGoodsBrief.setSalesCount(count + ""); |
| | | } |
| | | |
| | | // 改变图片尺寸 |
| | | String pictUrl = taoBaoGoodsBrief.getPictUrl(); |
| | | if (!StringUtil.isNullOrEmpty(pictUrl) && !pictUrl.contains("320x320")) { |
| | | taoBaoGoodsBrief.setPictUrl(TbImgUtil.getTBSize320Img(pictUrl)); |
| | | } |
| | | |
| | | arrayGoods.add( |
| | | gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), null))); |
| | | |
| | | }); |
| | | |
| | | JSONObject data = new JSONObject(); |
| | | data.put("count", arrayGoods.size()); |
| | | data.put("result_list", arrayGoods); |
| | | |
| | | return data; |
| | | } |
| | | |
| | | @Override |
| | | @Cacheable(value = "taoKeMaterialCache", key = "'getBrandsShops-'+#materialId +'-'+#pageIndex") |
| | | public JSONObject getBrandsShops(Integer materialId, int pageIndex, int pageSize) throws Exception { |
| | | |
| | | TaoBaoSearchResult result = TaoKeApiUtil.getMaterialByMaterialId(materialId, pageIndex, pageSize); |
| | | |
| | | if (result == null) { |
| | | return null; |
| | | } |
| | | |
| | | List<TaoBaoGoodsBrief> listGoods = result.getTaoBaoGoodsBriefs(); |
| | | if (listGoods == null || listGoods.size() == 0) { |
| | | return null; |
| | | } |
| | | |
| | | Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) |
| | | .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); |
| | | |
| | | JSONArray arrayShop = new JSONArray(); |
| | | |
| | | listGoods.parallelStream().forEach(taoBaoGoodsBrief -> { |
| | | |
| | | // Long sellerId = taoBaoGoodsBrief.getSellerId(); |
| | | // String title = taoBaoGoodsBrief.getTitle(); |
| | | // Long auctionId = taoBaoGoodsBrief.getAuctionId(); |
| | | |
| | | // TaoBaoShopInfo shopInfo = TaoBaoShopUtil.getTaoBaoShopInfo(title, |
| | | // sellerId, auctionId); |
| | | |
| | | TaoBaoShopInfo shopInfo = taoBaoShopService.getTaoBaoShopInfo(taoBaoGoodsBrief); |
| | | |
| | | if (shopInfo != null) { |
| | | |
| | | JSONObject jsonShop = new JSONObject(); |
| | | String shopType = shopInfo.getShopType(); |
| | | if (shopType.contains("tm")) { |
| | | shopInfo.setShopType("2"); |
| | | } else { |
| | | shopInfo.setShopType("1"); |
| | | } |
| | | |
| | | jsonShop.put("shopInfo", shopInfo); |
| | | jsonShop.put("auctionId", taoBaoGoodsBrief.getAuctionId()); |
| | | arrayShop.add(gson.toJson(jsonShop)); |
| | | } |
| | | |
| | | }); |
| | | |
| | | JSONObject data = new JSONObject(); |
| | | data.put("count", listGoods.size()); |
| | | data.put("result_list", arrayShop); |
| | | |
| | | return data; |
| | | } |
| | | |
| | | @Override |
| | | @Cacheable(value = "searchWuLiaoCache", key = "'searchWuLiao-'+#sf+'-'+system") |
| | | public JSONObject searchWuLiao(SearchFilter sf, SystemEnum system) { |
| | | |
| | | // 淘宝物料接口查询 |
| | | TaoBaoSearchResult result = TaoKeApiUtil.searchWuLiaoNew(sf, null, 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(); |
| | | |
| | | BigDecimal proportion = hongBaoManageService.getFanLiRate(system); |
| | | |
| | | if (fq == 0 && fh == 0 && !ft) { |
| | | if (result != null && result.getTaoBaoGoodsBriefs() != null) |
| | | for (TaoBaoGoodsBrief bf : result.getTaoBaoGoodsBriefs()) { |
| | | int count = bf.getBiz30day(); |
| | | |
| | | String startBiz30day = sf.getStartBiz30day(); |
| | | if (!StringUtil.isNullOrEmpty(startBiz30day)) { |
| | | int biz30day = Integer.parseInt(startBiz30day); |
| | | if (count < biz30day) { |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | 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(); |
| | | |
| | | String startBiz30day = sf.getStartBiz30day(); |
| | | if (!StringUtil.isNullOrEmpty(startBiz30day)) { |
| | | int biz30day = Integer.parseInt(startBiz30day); |
| | | if (count < biz30day) { |
| | | break; |
| | | } |
| | | } |
| | | |
| | | 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; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | @Cacheable(value = "searchWuLiaoCache", key = "'searchWuLiaoV2-'+#sf+'-'+#platform+'-'+#version+'-'+#system") |
| | | public JSONObject searchWuLiaoV2(SearchFilter sf, String platform, String version, SystemEnum system) { |
| | | |
| | | // 淘宝物料接口查询 |
| | | TaoBaoSearchResult result = TaoKeApiUtil.searchWuLiaoNew(sf, null, 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<GoodsDetailVO> re = new ArrayList<GoodsDetailVO>(); |
| | | List<TaoBaoGoodsBrief> taoBaoGoodsBriefs = result.getTaoBaoGoodsBriefs(); |
| | | |
| | | int fq = sf.getQuan(); |
| | | int fh = sf.getHongbao(); |
| | | boolean ft = sf.isTmall(); |
| | | |
| | | GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(platform, version, system); |
| | | |
| | | List<TaoBaoGoodsBrief> goodsBriefList = new ArrayList<>(); |
| | | if (fq == 0 && fh == 0 && !ft) { |
| | | if (result != null && result.getTaoBaoGoodsBriefs() != null) |
| | | for (TaoBaoGoodsBrief bf : result.getTaoBaoGoodsBriefs()) { |
| | | int count = bf.getBiz30day(); |
| | | |
| | | String startBiz30day = sf.getStartBiz30day(); |
| | | if (!StringUtil.isNullOrEmpty(startBiz30day)) { |
| | | int biz30day = Integer.parseInt(startBiz30day); |
| | | if (count < biz30day) { |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | goodsBriefList.add(bf); |
| | | } |
| | | } else { |
| | | if (taoBaoGoodsBriefs != null) |
| | | for (TaoBaoGoodsBrief taoBaoGoodsBrief : taoBaoGoodsBriefs) { |
| | | |
| | | int count = taoBaoGoodsBrief.getBiz30day(); |
| | | String startBiz30day = sf.getStartBiz30day(); |
| | | if (!StringUtil.isNullOrEmpty(startBiz30day)) { |
| | | int biz30day = Integer.parseInt(startBiz30day); |
| | | if (count < biz30day) { |
| | | break; |
| | | } |
| | | } |
| | | goodsBriefList.add(taoBaoGoodsBrief); |
| | | } |
| | | } |
| | | Gson gson2 = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) |
| | | .excludeFieldsWithoutExposeAnnotation().create(); |
| | | |
| | | List<GoodsDetailVO> voList = goodsLijinMnager.loadTBMoneyInfo(system, null, goodsBriefList, paramsDTO,false); |
| | | for (GoodsDetailVO vo : voList) { |
| | | re.add(vo); |
| | | } |
| | | |
| | | |
| | | data.put("result", gson2.toJson(re)); |
| | | data.put("count", result.getTaoBaoHead().getDocsfound()); |
| | | |
| | | return data; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | @Cacheable(value = "searchWuLiaoCache", key = "'searchWuLiaoList-'+#sf+'-'+system") |
| | | public List<TaoBaoGoodsBrief> searchWuLiaoList(SearchFilter sf, SystemEnum system) { |
| | | // 淘宝物料接口查询 |
| | | TaoBaoSearchResult result = TaoKeApiUtil.searchWuLiaoNew(sf, null, null); |
| | | if (result == null) |
| | | return null; |
| | | |
| | | return result.getTaoBaoGoodsBriefs(); |
| | | } |
| | | |
| | | @Override |
| | | public JSONObject listByWuLiao(int page, String key, String cateIds, String filterParams, String order, |
| | | String startprice, String endprice, String searchParam, SystemEnum system) { |
| | | |
| | | SearchFilter sf = new SearchFilter(); |
| | | sf.setKey(key); |
| | | sf.setPage(page); |
| | | sf.setCateIds(cateIds); |
| | | |
| | | 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)) { |
| | | // 默认销量从高到低排序 |
| | | sf.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW); |
| | | } else { |
| | | 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); |
| | | } |
| | | } |
| | | |
| | | if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(filterParams)) { |
| | | |
| | | Set<String> params = new HashSet<String>(); |
| | | |
| | | JSONArray array = JSONArray.fromObject(filterParams); |
| | | |
| | | for (int i = 0; i < array.size(); i++) { |
| | | |
| | | String type = array.optJSONObject(i).optString("type"); |
| | | |
| | | switch (type) { |
| | | case "shoptype": |
| | | if (array.optJSONObject(i).optInt("id") == 21) { |
| | | sf.setTmFlagship(false); // 不筛�? |
| | | } else { |
| | | sf.setTmFlagship(true); |
| | | sf.setTmall(true); |
| | | sf.setShopTag("b2c"); |
| | | } |
| | | break; |
| | | |
| | | case "category": |
| | | sf.setCateIds(array.optJSONObject(i).optString("id")); |
| | | break; |
| | | |
| | | case "userType": |
| | | sf.setCateIds(array.optJSONObject(i).optString("id")); |
| | | break; |
| | | |
| | | case "baoyou": |
| | | sf.setBaoYou(true); |
| | | break; |
| | | |
| | | case "quantype": |
| | | sf.setQuan(1); |
| | | if (sf.isTmFlagship()) { |
| | | sf.setShopTag(sf.getShopTag() + ",dpyhq"); |
| | | } else { |
| | | sf.setShopTag("dpyhq"); |
| | | } |
| | | break; |
| | | |
| | | case "hongbaotype": |
| | | if (array.optJSONObject(i).optInt("id") == 41) { |
| | | sf.setHongbao(1); |
| | | } else { |
| | | sf.setHongbao(2); |
| | | } |
| | | break; |
| | | |
| | | case "property": |
| | | 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); |
| | | } |
| | | break; |
| | | |
| | | case "fahuodi": |
| | | int provinceId = array.optJSONObject(i).optInt("id"); |
| | | sf.setProvinceId(provinceId); |
| | | break; |
| | | |
| | | default: |
| | | break; |
| | | } |
| | | } |
| | | sf.setParams(params); |
| | | } |
| | | |
| | | // 淘宝物料接口查询 |
| | | TaoBaoSearchResult result = TaoKeApiUtil.searchWuLiaoNew(sf, null, 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(); |
| | | |
| | | BigDecimal proportion = hongBaoManageService.getFanLiRate(system); |
| | | |
| | | 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; |
| | | } |
| | | |
| | | @Override |
| | | public void setSearchFilter(SearchFilter searchfilter, String filter, String order, String startprice, |
| | | String endprice, String fastFilter, Integer totalSales) { |
| | | |
| | | if (!StringUtil.isNullOrEmpty(startprice)) { |
| | | searchfilter.setStartPrice(new BigDecimal(startprice)); |
| | | } |
| | | |
| | | if (!StringUtil.isNullOrEmpty(endprice)) { |
| | | searchfilter.setEndPrice(new BigDecimal(endprice)); |
| | | } |
| | | |
| | | if (totalSales != null) { |
| | | searchfilter.setStartBiz30day(totalSales + ""); |
| | | } |
| | | |
| | | 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; |
| | | } |
| | | } |
| | | |
| | | if (!StringUtil.isNullOrEmpty(filter)) { |
| | | // 查询淘宝天猫 |
| | | JSONArray array = JSONArray.fromObject(filter); |
| | | for (int i = 0; i < array.size(); i++) { |
| | | String type = array.optJSONObject(i).optString("type"); |
| | | /* 含券 */ |
| | | if ("quantype".equalsIgnoreCase(type)) { |
| | | searchfilter.setQuan(1); |
| | | continue; |
| | | } |
| | | /* 搜索天猫 */ |
| | | if ("shoptype".equalsIgnoreCase(type)) { |
| | | searchfilter.setTmall(true); |
| | | continue; |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (!com.yeshi.fanli.util.StringUtil.isNullOrEmpty(order)) { |
| | | if (Integer.parseInt(order) == 1 || Integer.parseInt(order) == 0) { |
| | | searchfilter.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW); |
| | | } else if (Integer.parseInt(order) == 2) { |
| | | searchfilter.setSort(TaoBaoUtil.SORT_PRICE_HIGH_TO_LOW); |
| | | } else if (Integer.parseInt(order) == 3) { |
| | | searchfilter.setSort(TaoBaoUtil.SORT_PRICE_LOW_TO_HIGH); |
| | | } else if (Integer.parseInt(order) == 4) { |
| | | searchfilter.setSort(TaoBaoUtil.SORT_TOTAL_SALES_HIGH_TO_LOW); |
| | | } else if (Integer.parseInt(order) == 5) { |
| | | searchfilter.setSort(TaoBaoUtil.SORT_SALE_LOW_TO_HIGH); |
| | | } |
| | | } else { |
| | | searchfilter.setSort(TaoBaoUtil.SORT_SALE_HIGH_TO_LOW); |
| | | } |
| | | |
| | | } |
| | | |
| | | @Override |
| | | @Cacheable(value = "qualityCache", key = "'countByQuality-'+#start+'-'+#searchKey+'-'+#systemCid+'-'+#listLabId") |
| | | public List<QualityFactory> queryByQuality(long start, int count, String searchKey, Long systemCid, |
| | | List<Long> listLabId) { |
| | | |
| | | /* 1、 精选库筛选 */ |
| | | List<QualityFactory> listQuality = null; |
| | | |
| | | if (listLabId != null && listLabId.size() > 0) { |
| | | // 含标签 |
| | | listQuality = qualityGoodsService.listQueryByKeyAndlabIDs(start, count, searchKey, listLabId, null, |
| | | systemCid, null, null, null, null, null); |
| | | } else { |
| | | listQuality = qualityGoodsService.listQueryByKey(start, count, searchKey, null, systemCid, null, null, null, |
| | | null, null); |
| | | } |
| | | |
| | | return listQuality; |
| | | } |
| | | |
| | | @Override |
| | | @Cacheable(value = "qualityCache", key = "'countByQuality-'+#searchKey+'-'+#systemCid+'-'+#listLabId") |
| | | public long countByQuality(String searchKey, Long systemCid, List<Long> listLabId) { |
| | | |
| | | long incount = 0; |
| | | |
| | | if (listLabId != null && listLabId.size() > 0) { |
| | | // 含标签 |
| | | incount = qualityGoodsService.countQueryKeyAndlabIDs(searchKey, listLabId, systemCid, null, null, null, |
| | | null, null); |
| | | } else { |
| | | incount = qualityGoodsService.countQueryByKey(searchKey, systemCid, null, null, null, null, null); |
| | | } |
| | | |
| | | return incount; |
| | | } |
| | | |
| | | @Override |
| | | public JSONObject listQualityGoods(List<QualityFactory> listQuality, List<TaoBaoGoodsBrief> searchWuLiaoList, |
| | | Map<String, String> map, SystemEnum system) { |
| | | |
| | | JSONArray array = new JSONArray(); |
| | | Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) |
| | | .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create(); |
| | | |
| | | BigDecimal proportion = hongBaoManageService.getFanLiRate(system); |
| | | |
| | | /* 遍历列表数据 */ |
| | | for (QualityFactory selectionGoods : listQuality) { |
| | | |
| | | 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 + ""); |
| | | } |
| | | |
| | | array.add(gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), null))); |
| | | } |
| | | |
| | | if (searchWuLiaoList != null && searchWuLiaoList.size() > 0) { |
| | | /* 遍历列表数据 */ |
| | | for (TaoBaoGoodsBrief taoBaoGoodsBrief : searchWuLiaoList) { |
| | | |
| | | int biz30day = taoBaoGoodsBrief.getBiz30day(); |
| | | |
| | | if (biz30day >= 10000) { |
| | | double sales = biz30day; |
| | | String salesCountMidea = String.format("%.1f", sales / 10000); |
| | | taoBaoGoodsBrief.setSalesCount(salesCountMidea + "万"); |
| | | } else { |
| | | taoBaoGoodsBrief.setSalesCount(biz30day + ""); |
| | | } |
| | | |
| | | array.add(gson |
| | | .toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), null))); |
| | | } |
| | | } |
| | | |
| | | JSONObject data = new JSONObject(); |
| | | |
| | | List<TaoBaoSearchNav> navList = new ArrayList<TaoBaoSearchNav>(); |
| | | Gson gsonBuilder = new GsonBuilder().create(); |
| | | data.put("nav", gsonBuilder.toJson(navList)); |
| | | data.put("count", 5000); |
| | | data.put("result", array); |
| | | |
| | | return data; |
| | | } |
| | | |
| | | } |