From 8dcc1ffea99306ebaa9b48fb739f0b627f706d84 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期一, 16 三月 2020 15:19:37 +0800
Subject: [PATCH] vip 等级
---
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/RecommendControllerV2.java | 821 +++++++++++++++++++++++++++++++++++++++-------------------
1 files changed, 549 insertions(+), 272 deletions(-)
diff --git a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/RecommendControllerV2.java b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/RecommendControllerV2.java
index 19ae7ee..f17f137 100644
--- a/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/RecommendControllerV2.java
+++ b/fanli/src/main/java/com/yeshi/fanli/controller/client/v2/RecommendControllerV2.java
@@ -6,56 +6,68 @@
import java.util.Calendar;
import java.util.Collections;
import java.util.List;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
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.dto.ConfigParamsDTO;
+import com.yeshi.fanli.dto.dataoke.DingDongTime;
+import com.yeshi.fanli.dto.jd.JDSearchResult;
+import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
+import com.yeshi.fanli.dto.pdd.PDDGoodsResult;
import com.yeshi.fanli.entity.accept.AcceptData;
+import com.yeshi.fanli.entity.bus.homemodule.Special;
import com.yeshi.fanli.entity.bus.homemodule.SwiperPicture;
-import com.yeshi.fanli.entity.bus.lable.QualityFactory;
import com.yeshi.fanli.entity.common.JumpDetailV2;
-import com.yeshi.fanli.entity.taobao.SearchFilter;
+import com.yeshi.fanli.entity.jd.JDGoods;
+import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.entity.taobao.TLJBuyGoods;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.TaoBaoSearchResult;
-import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetail;
+import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
import com.yeshi.fanli.service.inter.config.ConfigService;
+import com.yeshi.fanli.service.inter.count.HongBaoV2CountService;
import com.yeshi.fanli.service.inter.goods.recommend.HomeRecommendGoodsService;
import com.yeshi.fanli.service.inter.goods.recommend.RecommendGoodsDeleteHistoryService;
import com.yeshi.fanli.service.inter.homemodule.DeviceSexService;
import com.yeshi.fanli.service.inter.homemodule.SpecialService;
import com.yeshi.fanli.service.inter.homemodule.SwiperPictureService;
-import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
+import com.yeshi.fanli.service.inter.jd.JDGoodsService;
import com.yeshi.fanli.service.inter.lable.QualityFlashSaleService;
import com.yeshi.fanli.service.inter.lable.QualityGoodsService;
import com.yeshi.fanli.service.inter.monitor.MonitorService;
-import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailService;
+import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
+import com.yeshi.fanli.service.inter.pdd.PDDGoodsService;
+import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService;
+import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service;
+import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsService;
+import com.yeshi.fanli.tag.PageEntity;
import com.yeshi.fanli.util.Constant;
+import com.yeshi.fanli.util.RedisKeyEnum;
import com.yeshi.fanli.util.RedisManager;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TaoBaoConstant;
-import com.yeshi.fanli.util.Utils;
+import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.VersionUtil;
import com.yeshi.fanli.util.factory.MonitorFactory;
import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
+import com.yeshi.fanli.util.taobao.DaTaoKeUtil;
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
import com.yeshi.fanli.vo.goods.GoodsDetailVO;
import com.yeshi.fanli.vo.goods.OtherInfo;
+import com.yeshi.fanli.vo.goods.SpikeTimeVO;
import com.yeshi.fanli.vo.msg.ClientTextStyleVO;
+import com.yeshi.fanli.vo.search.SearchKeyTOPVO;
+import com.yeshi.fanli.vo.search.SearchKeyVO;
import com.yeshi.fanli.vo.tlj.ReduceHongBao;
import net.sf.json.JSONArray;
@@ -73,13 +85,13 @@
@Resource
private RedisManager redisManager;
-
+
@Resource
private HomeRecommendGoodsService homeRecommendGoodsService;
-
+
@Resource
private ConfigService configService;
-
+
@Resource
private MonitorService monitorService;
@@ -87,24 +99,38 @@
private QualityFlashSaleService qualityFlashSaleService;
@Resource
- private DaTaoKeGoodsDetailService daTaoKeGoodsDetailService;
+ private RecommendGoodsDeleteHistoryService recommendGoodsDeleteHistoryService;
@Resource
- private RecommendGoodsDeleteHistoryService recommendGoodsDeleteHistoryService;
-
- @Resource
private JumpDetailV2Service jumpDetailV2Service;
-
+
@Resource
private DeviceSexService deviceSexService;
-
+
@Resource
private SpecialService specialService;
@Resource
private SwiperPictureService swiperPictureService;
-
-
+
+ @Resource
+ private JDGoodsService jdGoodsService;
+
+ @Resource
+ private PDDGoodsService pddGoodsService;
+
+ @Resource
+ private TaoBaoGoodsUpdateService taoBaoGoodsUpdateService;
+
+ @Resource
+ private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service;
+
+ @Resource
+ private DaTaoKeGoodsService daTaoKeGoodsService;
+
+ @Resource
+ private HongBaoV2CountService hongBaoV2CountService;
+
/**
* 鏂扮増鎺ㄨ崘涓撻绠$悊(1.5.3)
*
@@ -121,10 +147,13 @@
JSONObject root = specialService.listCacheSpecialToIndex(acceptData, deviceSex);
// 2銆侀《閮ㄨ疆鎾浘
- List<SwiperPicture> topPicList = swiperPictureService.getByBannerCard("index_top");
- if (topPicList == null) {
- topPicList = new ArrayList<SwiperPicture>();
- }
+ List<SwiperPicture> oldtopPicList = swiperPictureService.getByBannerCardAndVersion("index_top",
+ acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion()));
+
+ List<SwiperPicture> topPicList = new ArrayList<>();
+ if (oldtopPicList != null && oldtopPicList.size() > 0)
+ topPicList.addAll(oldtopPicList);
+
root.put("topPicList", JsonUtil.getApiCommonGson().toJson(topPicList));
// 3銆侀個璇锋湁濂�
@@ -133,7 +162,8 @@
&& configService.iosOnLining(Integer.parseInt(acceptData.getVersion()))) {
// 濡傛灉IOS褰撳墠鐗堟湰澶勪簬瀹℃牳鐘舵�佸氨涓嶈繑鍥�
} else {
- invitePicList = swiperPictureService.getByBannerCard("index_invite");
+ invitePicList = swiperPictureService.getByBannerCardAndVersion("index_invite", acceptData.getPlatform(),
+ Integer.parseInt(acceptData.getVersion()));
}
if (invitePicList == null) {
@@ -144,10 +174,15 @@
// 4銆両OS鐨勫簳閮ㄧ綉椤甸摼鎺�
String platform = acceptData.getPlatform();
if ("ios".equalsIgnoreCase(platform)) {
- root.put("htmlLink", configService.get("index_html_link_ios"));
+ root.put("htmlLink", configService.get(ConfigKeyEnum.indexHtmlLinkIos.getKey()));
}
root.put("spikeGoods", getSpikeGoodsContent(acceptData));
+ if (VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion()))
+ root.put("scoreExchange", getScoreExchangeInfo(acceptData));
+
+ if (VersionUtil.greaterThan_2_0(acceptData.getPlatform(), acceptData.getVersion()))
+ root.put("searchDiscovery", getSearchDiscoveryInfo(acceptData));
out.print(JsonUtil.loadTrueResult(root));
} catch (Exception e) {
@@ -159,9 +194,7 @@
}
}
}
-
-
/**
* 闄愭椂绉掓潃 1.5.3
*
@@ -173,48 +206,41 @@
JSONObject root = getSpikeGoodsContent(acceptData);
out.print(JsonUtil.loadTrueResult(root));
}
-
-
private JSONObject getSpikeGoodsContent(AcceptData acceptData) {
- // 涓嬩竴娆″�掕鏃剁殑鏃堕棿
- int type = qualityFlashSaleService.getNowType() + 1;
- int hour = 0;
- switch (type) {
- case 1:
- hour = 0;
- break;
- case 2:
- hour = 9;
- break;
- case 3:
- hour = 12;
- break;
- case 4:
- hour = 14;
- break;
- case 5:
- hour = 16;
- break;
- case 6:
- hour = 20;
- break;
- case 7:
- hour = 22;
- break;
- default:
- break;
+ long nowTime = System.currentTimeMillis();
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTimeInMillis(nowTime);
+ List<DingDongTime> dtoList = DaTaoKeUtil.getDingDongQiangTime(calendar);
+ int dateNum = Integer.parseInt(TimeUtil.getGernalTime(nowTime, "ddHH"));
+ String timeStr = null;
+ int nextPos = 0;
+ for (int i = 0; i < dtoList.size() - 1; i++) {
+ if (dateNum >= Integer.parseInt(dtoList.get(i).getTime())
+ && dateNum < Integer.parseInt(dtoList.get(i + 1).getTime())) {
+ timeStr = dtoList.get(i).getTime();
+ nextPos = i + 1;
+ break;
+ }
}
- Calendar nextTime = Calendar.getInstance();
- nextTime.set(Calendar.HOUR_OF_DAY, hour);
- nextTime.set(Calendar.MINUTE, 0);
- nextTime.set(Calendar.SECOND, 0);
- nextTime.set(Calendar.MILLISECOND, 0);
+ if (timeStr == null)
+ timeStr = dtoList.get(dtoList.size() - 1).getTime();
+
+ long nextTime = nowTime + 1000 * 60 * 60L;// 榛樿涓�1灏忔椂
+ if (nextPos < dtoList.size()) {
+ nextTime = TimeUtil.convertToTimeTemp(
+ TimeUtil.getGernalTime(nowTime, "yyyyMM") + dtoList.get(nextPos).getTime(), "yyyyMMddHH");
+ }
JSONArray array = null;
- String timekey = String.format("spikeGoods_hour_new-%s-%s", acceptData.getPlatform(), acceptData.getVersion());
- String cachekey = String.format("spikeGoodsList_new-%s-%s", acceptData.getPlatform(), acceptData.getVersion());
+ String timekey = RedisKeyEnum.getRedisKey(RedisKeyEnum.spikeGoodsHourNew,acceptData.getPlatform() +"-"+acceptData.getVersion());
+ String cachekey = RedisKeyEnum.getRedisKey(RedisKeyEnum.spikeGoodsListNew,acceptData.getPlatform() +"-"+acceptData.getVersion());
+
+
+ Calendar nowCalendar = Calendar.getInstance();
+ nowCalendar.setTimeInMillis(nowTime);
+ int hour = nowCalendar.get(Calendar.HOUR_OF_DAY);
String timeValue = redisManager.getCommonString(timekey);
if (timeValue == null || !timeValue.equals(hour + "")) {
@@ -225,34 +251,47 @@
array = JSONArray.fromObject(cacheValue);
}
}
- JumpDetailV2 jumpDetail = jumpDetailV2Service.getByTypeCache("web");
+
+ JumpDetailV2 jumpDetail = null;
+ if (VersionUtil.greaterThan_2_0_2(acceptData.getPlatform(), acceptData.getVersion())) {
+ jumpDetail = jumpDetailV2Service.getByTypeCache("spike_goods_list");
+ } else {
+ jumpDetail = jumpDetailV2Service.getByTypeCache("web");
+ }
+
if (array == null) {
array = new JSONArray();
BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
BigDecimal shareRate = hongBaoManageService.getShareRate();
-
+
Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
.excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
// 缂撳瓨涓笉瀛樺湪
- List<QualityFactory> listGoods = qualityGoodsService.listFlashSaleRandGoods();
+ List<DaTaoKeDetailV2> listGoods = daTaoKeGoodsDetailV2Service.getDingDongQiangData(timeStr);
if (listGoods == null) {
- listGoods = new ArrayList<QualityFactory>();
+ listGoods = new ArrayList<>();
}
+
+ if (listGoods != null && listGoods.size() > 3)
+ listGoods = listGoods.subList(0, 3);
/* 閬嶅巻鍒楄〃鏁版嵁 */
- for (QualityFactory qualityFactory : listGoods) {
- TaoBaoGoodsBrief taoBaoGoodsBrief = qualityFactory.getTaoBaoGoodsBrief();
+ ConfigParamsDTO configParamsDTO = hongBaoManageService.getShowComputeRate(acceptData.getPlatform(),
+ acceptData.getVersion());
+
+ for (DaTaoKeDetailV2 detail : listGoods) {
+ TaoBaoGoodsBrief taoBaoGoodsBrief = TaoBaoUtil.convert(detail);
if (taoBaoGoodsBrief == null) {
continue;
}
- GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, null, fanLiRate, shareRate);
-
+ GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(taoBaoGoodsBrief, configParamsDTO);
+
JSONObject params = new JSONObject();
- params.put("url", configService.get("spike_goods_link") + "?id=" + taoBaoGoodsBrief.getAuctionId());
-
+ params.put("url", configService.get(ConfigKeyEnum.spikeGoodsLink.getKey()) + "?id=" + taoBaoGoodsBrief.getAuctionId());
+
JSONObject goods = new JSONObject();
goods.put("goods", gson.toJson(detailVO));
goods.put("params", params);
@@ -269,81 +308,226 @@
// 缂撳瓨鍗婁釜灏忔椂
redisManager.cacheCommonString(cachekey, array.toString(), 60 * 30);
}
- Long endTime = nextTime.getTimeInMillis() - java.lang.System.currentTimeMillis();
+
+ // 鑾峰彇浠婂ぉ鐨勬暟鎹�
+
+ Long endTime = nextTime - nowTime;
JSONObject root = new JSONObject();
- root.put("time", nextTime.getTimeInMillis());
+
+ if (VersionUtil.greaterThan_1_6_5(acceptData.getPlatform(), acceptData.getVersion())) {
+ root.put("time", nextTime);
+ root.put("endTime", endTime > 0 ? endTime : 0);
+ JSONArray imgArray = new JSONArray();
+ if (array != null)
+ for (int i = 0; i < array.size(); i++) {
+ imgArray.add(array.optJSONObject(i).optJSONObject("goods").optString("picUrl"));
+ }
+ root.put("imgList", imgArray);
+ JSONObject params = new JSONObject();
+ params.put("url", configService.get(ConfigKeyEnum.spikeGoodsLink.getKey()));
+ root.put("params", params);
+ root.put("jumpDetail", jumpDetail);
+ root.put("name", "闄愭椂绉掓潃");
+ root.put("desc", "鏁寸偣鏇存柊锛屽ソ鐗╂姠璐�");
+ } else {
+ root.put("time", nextTime);
+ root.put("endTime", endTime > 0 ? endTime : 0);
+ root.put("listgoods", array);
+ JSONObject params = new JSONObject();
+ params.put("url", configService.get(ConfigKeyEnum.spikeGoodsLink.getKey()));
+ root.put("params", params);
+ root.put("jumpDetail", jumpDetail);
+ }
+
+ root.put("time", nextTime);
root.put("endTime", endTime > 0 ? endTime : 0);
root.put("listgoods", array);
- JSONObject params = new JSONObject();
- params.put("url", configService.get("spike_goods_link"));
-
- root.put("params", params);
- root.put("jumpDetail", jumpDetail);
-
return root;
}
-
-
-
+
+ /**
+ * 闄愭椂绉掓潃鍒楄〃
+ *
+ * @param acceptData
+ * @param page
+ * @param auctionId
+ * @param time
+ * @param out
+ */
+ @RequestMapping("getSpikTime")
+ public void getSpikTime(AcceptData acceptData, PrintWriter out) {
+ List<DingDongTime> timeList = DaTaoKeUtil.getDingDongQiangTime(Calendar.getInstance());
+ List<SpikeTimeVO> list = new ArrayList<SpikeTimeVO>();
+ for (int i = 0; i < timeList.size(); i++) {
+ SpikeTimeVO spikeTime1 = new SpikeTimeVO();
+ spikeTime1.setTime(timeList.get(i).getTime().subSequence(2, 4) + ":00");
+ if (timeList.get(i).getState() <= 0)
+ spikeTime1.setState("杩涜涓�");
+ else
+ spikeTime1.setState("鍗冲皢寮�濮�");
+ if (timeList.get(i).getState() == 0)
+ spikeTime1.setChecked(true);
+ spikeTime1.setRequestTime(timeList.get(i).getTime());
+ list.add(spikeTime1);
+ }
+
+ JSONObject data = new JSONObject();
+ data.put("count", list.size());
+ data.put("list", list);
+ out.print(JsonUtil.loadTrueResult(data));
+ }
+
+ /**
+ * 闄愭椂绉掓潃鍒楄〃
+ *
+ * @param acceptData
+ * @param page
+ * @param auctionId
+ * @param time
+ * @param out
+ */
+ @RequestMapping("getSpikeGoodsList")
+ public void getSpikeGoodsList(AcceptData acceptData, Integer page, Long goodsId, String qtime, PrintWriter out) {
+ List<DaTaoKeDetailV2> detailList0 = daTaoKeGoodsDetailV2Service.getDingDongQiangData(qtime);
+ if (detailList0 == null)
+ detailList0 = new ArrayList<>();
+
+ List<DaTaoKeDetailV2> detailList = new ArrayList<>();
+ detailList.addAll(detailList0);
+ JSONArray array = new JSONArray();
+ if (page == 1 && goodsId != null && detailList != null) {
+ for (int i = 0; i < detailList.size(); i++) {
+ if (detailList.get(i).getGoodsId().longValue() == goodsId) {
+ DaTaoKeDetailV2 goods = detailList.get(i);
+ detailList.remove(i);
+ detailList.add(0, goods);
+ break;
+ }
+ }
+ }
+
+ Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
+ .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
+ if (detailList != null) {
+ ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate(acceptData.getPlatform(),
+ acceptData.getVersion());
+
+ for (DaTaoKeDetailV2 detail : detailList) {
+ array.add(gson.toJson(GoodsDetailVOFactory.convertTaoBao(TaoBaoUtil.convert(detail), paramsDTO)));
+ }
+ }
+
+ JSONObject data = new JSONObject();
+ data.put("count", detailList.size());
+ data.put("list", array);
+ out.print(JsonUtil.loadTrueResult(data));
+ }
+
+ /**
+ * 閲戝竵鍏戞崲淇℃伅
+ *
+ * @param acceptData
+ * @return
+ */
+ private JSONObject getScoreExchangeInfo(AcceptData acceptData) {
+
+ JSONObject root = new JSONObject();
+ JSONArray array = new JSONArray();
+ array.add("http://img.flqapp.com/resource/integral/integral_home_icon_2.png");
+ array.add("http://img.flqapp.com/resource/integral/integral_home_icon_1.png");
+ root.put("imgList", array);
+ JSONObject params = new JSONObject();
+ params.put("balanceMore", true);
+ root.put("params", params);
+ root.put("jumpDetail", jumpDetailV2Service.getByTypeCache("integralExchange",
+ Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion())));
+
+ root.put("name", "閲戝竵鍏戞崲");
+ root.put("desc", "姣忔棩绛惧埌锛屾儕鍠滀笉鍋�");
+ root.put("tagImg", "http://img.flqapp.com/resource/score_exchange_tag.png");
+ return root;
+ }
+
+ /**
+ * 閲戝竵鍏戞崲淇℃伅
+ *
+ * @param acceptData
+ * @return
+ */
+ private JSONObject getSearchDiscoveryInfo(AcceptData acceptData) {
+ JSONArray array = new JSONArray();
+ String keys = configService.getSearchDiscoveryKeys();
+ if (!StringUtil.isNullOrEmpty(keys)) {
+ JSONArray arrayKeys = JSONArray.fromObject(keys);
+ for (int i = 0; i < arrayKeys.size(); i++) {
+ String name = arrayKeys.get(i).toString();
+ JSONObject params = new JSONObject();
+ params.put("content", name);
+
+ SearchKeyVO keyVO = new SearchKeyVO();
+ keyVO.setName(name);
+ keyVO.setParams(params.toString());
+ array.add(keyVO);
+ }
+ }
+
+ JSONObject params = new JSONObject();
+ params.put("url", configService.get(ConfigKeyEnum.searchDiscoveryH5Link.getKey()));
+
+ JSONObject root = new JSONObject();
+ root.put("picture", "http://img.flqapp.com/resource/home_search_found.png");
+ root.put("params", params);
+ root.put("jumpDetail", jumpDetailV2Service.getByTypeCache("web",
+ Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion())));
+
+ root.put("jumpResult", jumpDetailV2Service.getByTypeCache("search_goods_result",
+ Constant.getPlatformCode(acceptData.getPlatform()), Integer.parseInt(acceptData.getVersion())));
+ root.put("keyList", array);
+ return root;
+ }
+
/**
* 棣栭〉搴曢儴鍟嗗搧鎺ㄨ崘
+ *
* @param acceptData
* @param out
*/
@RequestMapping(value = "getGoodList")
- public void getGoodList(AcceptData acceptData, Integer goodsType, Integer page,
- HttpServletRequest request, PrintWriter out) {
-
+ public void getGoodList(AcceptData acceptData, Integer goodsType, Integer page, HttpServletRequest request,
+ PrintWriter out) {
+
if (goodsType == null || page == null) {
out.print(JsonUtil.loadFalseResult("鍙傛暟淇℃伅涓嶆甯�"));
return;
}
-
- if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
- taoBaoGuessUserLikeByDevice(acceptData, page, request, out);
- return;
- }
-
- if (goodsType == Constant.SOURCE_TYPE_JD) {
-
- }
-
- if (goodsType == Constant.SOURCE_TYPE_PDD) {
-
- }
-
- List<QualityFactory> listQuery = qualityGoodsService.listFreeGoods((page - 1) * 20, 20);
- if (listQuery == null) {
- listQuery = new ArrayList<QualityFactory>();
- }
- JSONArray array = new JSONArray();
- if (listQuery.size() > 0) {
- Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
- .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
-
- BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
- BigDecimal shareRate = hongBaoManageService.getShareRate();
- for (QualityFactory qualityFactory : listQuery) {
- TaoBaoGoodsBrief goods = qualityFactory.getTaoBaoGoodsBrief();
- if (goods == null) {
- continue;
- }
- array.add(gson.toJson(GoodsDetailVOFactory.convertTaoBao(goods, null, fanLiRate, shareRate)));
+ try {
+ if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
+ taoBaoGuessUserLikeByDevice(acceptData, page, request, out);
+ return;
}
+
+ if (goodsType == Constant.SOURCE_TYPE_JD) {
+ getIndexJDGoods(acceptData, page, out);
+ return;
+ }
+
+ if (goodsType == Constant.SOURCE_TYPE_PDD) {
+ getIndexPDDGoods(acceptData, page, out);
+ return;
+ }
+ out.print(JsonUtil.loadFalseResult("鍟嗗搧绫诲瀷閿欒"));
+ } catch (Exception e) {
+ LogHelper.errorDetailInfo(e);
+ JSONObject data = new JSONObject();
+ data.put("list", new JSONArray());
+ data.put("count", 0);
+ out.print(JsonUtil.loadTrueResult(data));
}
- long count = qualityGoodsService.countFreeGoods();
-
- JSONObject root = new JSONObject();
- root.put("count", count);
- root.put("list", array);
- out.print(JsonUtil.loadTrueResult(root));
}
-
-
-
+
/**
* 鏍规嵁璁惧淇℃伅鑾峰彇鐚滀綘鍠滄鐨勫唴瀹�
*
@@ -353,21 +537,30 @@
* @param idfa
* -IOS鐨刬dfa骞垮憡鏍囪瘑淇℃伅
*/
- public void taoBaoGuessUserLikeByDevice(AcceptData acceptData, int page, HttpServletRequest request, PrintWriter out) {
+ public void taoBaoGuessUserLikeByDevice(AcceptData acceptData, int page, HttpServletRequest request,
+ PrintWriter out) {
int pageSize = Constant.PAGE_SIZE;
JSONArray array = new JSONArray();
Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()).create();
-
+
String idfa = acceptData.getIdfa();
String imei = acceptData.getImei();
if (VersionUtil.greaterThan_1_5_70(acceptData.getPlatform(), acceptData.getVersion())) {
List<TaoBaoGoodsBrief> goodsList = homeRecommendGoodsService.listGoodsByPage(null, acceptData.getDevice(),
imei, idfa, page);
- BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
- BigDecimal shareRate = hongBaoManageService.getShareRate();
+ if (page < 4) {// 鍓嶄笁椤靛姞鍏ユ洿鏂�
+ try {
+ taoBaoGoodsUpdateService.addUpdateQueueAsync(goodsList);
+ } catch (Exception e) {
+ }
+ }
+
+ ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate(acceptData.getPlatform(),
+ acceptData.getVersion());
+
for (TaoBaoGoodsBrief goods : goodsList) {
- GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(goods, null, fanLiRate, shareRate);
+ GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO);
if (page < 3)
detailVO.setRecommend(true);
@@ -380,29 +573,33 @@
if (page == 1) {
List<TLJBuyGoods> list = homeRecommendGoodsService.getZiGouLiJianHotGoods(acceptData.getDevice());
- if (list != null && list.size() > 0)
+ if (list != null && list.size() > 0) {
+ BigDecimal rateBuy = TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE;
+ ConfigParamsDTO paramsBuy = new ConfigParamsDTO(rateBuy, rateBuy, Constant.MAX_REWARD_RATE,
+ hongBaoManageService.getVIPFanLiRate());
for (int i = list.size() - 1; i >= 0; i--) {
TLJBuyGoods goods = list.get(i);
- BigDecimal rateBuy = TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE;
- GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(goods.getGoods(), null, rateBuy, rateBuy);
-
- String hongBao = TaoBaoUtil.getGoodsHongBaoInfo(goods.getGoods(),TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE);
-
+ GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(goods.getGoods(), paramsBuy);
+
+ String hongBao = TaoBaoUtil.getGoodsHongBaoInfo(goods.getGoods(),
+ TaoBaoConstant.OWN_BUY_WITHOUT_FANLI_RATE);
+
ReduceHongBao reduceHongBao = new ReduceHongBao();
reduceHongBao.setLeft(goods.getLeftHongBaoCount());
reduceHongBao.setMoney(hongBao);
- reduceHongBao.setName("浠樻绔嬪噺 " + hongBao);
+ reduceHongBao.setName("浠樻绔嬪噺 ");
reduceHongBao.setTip("");
reduceHongBao.setTotal(goods.getTotalHongBaoCount());
-
+
OtherInfo otherInfo = new OtherInfo();
otherInfo.setReduceHongBao(reduceHongBao);
-
+
detailVO.setOtherInfo(otherInfo);
detailVO.setPictureTag(new ClientTextStyleVO("绔嬪噺TOP" + (i + 1), "#E5005C", "#FCE431", null));
detailVO.setRecommend(true);
array.add(0, gson.toJson(detailVO));
}
+ }
}
JSONObject data = new JSONObject();
@@ -418,7 +615,7 @@
if (!StringUtil.isNullOrEmpty(imei) || !StringUtil.isNullOrEmpty(idfa)) {
long startTime = java.lang.System.currentTimeMillis();
- TaoBaoSearchResult result = TaoKeApiUtil.guessDeviceLike(page, 50, imei, idfa);
+ TaoBaoSearchResult result = TaoKeApiUtil.guessDeviceLike(page, 50, imei, idfa,"");
if (result != null && result.getTaoBaoGoodsBriefs() != null) {
// 绛涢��
@@ -429,28 +626,27 @@
// filter
try {
- gList = daTaoKeGoodsDetailService.filterTaoBaoGoods(gList);
+ gList = daTaoKeGoodsDetailV2Service.filterTaoBaoGoods(gList);
} catch (Exception e) {
}
// 璁惧鎺ㄨ崘
if (gList != null) {
- BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
- BigDecimal shareRate = hongBaoManageService.getShareRate();
-
+ ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate(acceptData.getPlatform(),
+ acceptData.getVersion());
for (TaoBaoGoodsBrief goods : gList) {
if (!StringUtil.isNullOrEmpty(goods.getCouponInfo()) && goods.getCouponAmount() != null
&& goods.getCouponAmount().compareTo(new BigDecimal("5")) >= 0
&& goods.getBiz30day() > 1000
&& !StringUtil.isNullOrEmpty(goods.getPictUrlWhite())) {
-
- GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(goods, null, fanLiRate, shareRate);
+
+ GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO);
detailVO.setRecommend(true);
goodsList.add(detailVO);
}
}
}
-
+
try {
monitorService.addClientAPIMonitor(MonitorFactory.createClientAPI(request, 0,
(int) (java.lang.System.currentTimeMillis() - startTime), "鎺ㄨ崘鏁伴噺:" + goodsList.size()));
@@ -472,10 +668,10 @@
}
}
}
- JSONArray localArray = qualityGoodsService.getRecommendToIndexV2((page - 1) * pageSize, pageSize);
+ JSONArray localArray = qualityGoodsService.getRecommendToIndexV2((page - 1) * pageSize, pageSize,acceptData.getPlatform(),acceptData.getVersion());
array.addAll(localArray);
} else {// 浠庣簿閫夊簱鏉�
- array = qualityGoodsService.getRecommendToIndexV2((page - 1) * pageSize, pageSize);
+ array = qualityGoodsService.getRecommendToIndexV2((page - 1) * pageSize, pageSize,acceptData.getPlatform(),acceptData.getVersion());
if (array == null) {
out.print(JsonUtil.loadFalseResult("娌℃湁鏇村浜�"));
return;
@@ -487,142 +683,223 @@
data.put("count", 1000);
out.print(JsonUtil.loadTrueResult(data));
}
-
-
-
+
/**
- * 绮樿创鏉夸俊鎭帹鑽�
+ * 浜笢棣栭〉鍟嗗搧
*
* @param acceptData
- * @param url
- * 鍟嗗搧閾炬帴
+ * @param page
* @param out
*/
- @RequestMapping(value = "getNewGoodsInfo", method = RequestMethod.POST)
- public void getNewGoodsInfo(AcceptData acceptData, String text, PrintWriter out) {
- if (StringUtil.isNullOrEmpty(text)) {
- out.print(JsonUtil.loadFalseResult("鍊间负绌�"));
- return;
- }
-
- if (text.length() > 256) {
- out.print(JsonUtil.loadFalseResult("鍊艰繃闀�"));
- return;
- }
-
- TaoBaoGoodsBrief tb = null;
- String URL_REGEX = "(((http|https)://)|(www\\.))[a-zA-Z0-9\\._-]+\\.[a-zA-Z]{2,6}(:[0-9]{1,4})?(/[a-zA-Z0-9\\&%_\\./-~-]*)?";
-
- Pattern p = Pattern.compile(URL_REGEX);
- Matcher matcher = p.matcher(text);
- if (!matcher.find()) {// 涓嶅寘鍚摼鎺�
- // 鍟嗗搧璇︽儏
- // 鍙戠幇
- // 娌℃湁閾炬帴锛屾爣棰樿繃闀夸篃涓嶅鐞�
- if (text.startsWith("銆�") && text.contains("銆�")) {
- int end = text.indexOf("銆�");
- if (end > 2)
- text = text.substring(1, end);
+ private void getIndexJDGoods(AcceptData acceptData, int page, PrintWriter out) {
+ JDSearchResult result = jdGoodsService.getIndexJDGoods(page);
+ long count = 0;
+ JSONObject data = new JSONObject();
+ JSONArray array = new JSONArray();
+ if (result != null) {
+ PageEntity pageEntity = result.getPageEntity();
+ if (pageEntity != null) {
+ count = pageEntity.getTotalCount();
}
- LogHelper.test("鏍规嵁绮樿创鏉挎帹鑽�:"+text);
+ List<JDGoods> goodsList = result.getGoodsList();
+ if (goodsList != null && goodsList.size() > 0) {
+ ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate(acceptData.getPlatform(),
+ acceptData.getVersion());
- if (text.length() > 80) {
- out.print(JsonUtil.loadFalseResult("鍊艰繃闀�"));
- return;
+ Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
+ .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
+ for (JDGoods goods : goodsList) {
+ GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertJDGoods(goods, paramsDTO);
+ array.add(gson.toJson(goodsDetailVO));
+ }
}
+ }
- SearchFilter sf = new SearchFilter();
- sf.setKey(text);
- JSONObject root = new JSONObject();
+ data.put("list", array);
+ data.put("count", count);
+ out.print(JsonUtil.loadTrueResult(data));
+ }
- TaoBaoSearchResult result = TaoBaoUtil.search(sf);
- if (result != null && result.getTaoBaoGoodsBriefs() != null && result.getTaoBaoGoodsBriefs().size() > 0)
- for (TaoBaoGoodsBrief goods : result.getTaoBaoGoodsBriefs()) {
- // 鏄睘浜庢窐瀹濊仈鐩熷晢鍝�
- if (goods.getTitle().equalsIgnoreCase(text)) {
- root.put("type", 2);
- JSONObject data = new JSONObject();
- data.put("title", goods.getTitle());
- root.put("data", data);
- out.print(JsonUtil.loadTrueResult(root));
- return;
+ /**
+ * 鐖嗘鎺掕鍟嗗搧-瀹炴椂鐑攢姒�
+ *
+ * @param acceptData
+ * @param page
+ * @param out
+ */
+ private void getIndexPDDGoods(AcceptData acceptData, int page, PrintWriter out) {
+ PDDGoodsResult result = pddGoodsService.getTopGoodsList(page, 1);
+ int count = 0;
+ JSONArray array = new JSONArray();
+ if (result != null) {
+ count = result.getTotalCount();
+ Gson gson = JsonUtil.getApiCommonGson();
+ List<PDDGoodsDetail> goodsList = result.getGoodsList();
+ if (goodsList != null && goodsList.size() > 0) {
+ ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate(acceptData.getPlatform(),
+ acceptData.getVersion());
+
+ for (PDDGoodsDetail goods : goodsList) {
+ GoodsDetailVO goodsDetailVO = GoodsDetailVOFactory.convertPDDGoods(goods, paramsDTO);
+ array.add(gson.toJson(goodsDetailVO));
+ }
+ }
+ }
+
+ JSONObject data = new JSONObject();
+ data.put("list", array);
+ data.put("count", count);
+ out.print(JsonUtil.loadTrueResult(data));
+ }
+
+ /**
+ * 鎼滅储鍙戠幇鍒楄〃
+ *
+ * @param acceptData
+ * @param uid
+ * @param page
+ * @param out
+ */
+ @RequestMapping(value = "getSearchDiscoveryTop")
+ public void getSearchDiscoveryTop(AcceptData acceptData, Long uid, Integer page, String callback, PrintWriter out) {
+ int count = 0;
+ List<SearchKeyTOPVO> list = new ArrayList<SearchKeyTOPVO>();
+
+ String keys = configService.getSearchDiscoveryKeys();
+ if (!StringUtil.isNullOrEmpty(keys)) {
+ JSONArray arrayKeys = JSONArray.fromObject(keys);
+ if (arrayKeys != null && arrayKeys.size() > 0) {
+ count = arrayKeys.size();
+ ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate(acceptData.getPlatform(),
+ acceptData.getVersion());
+
+ int j = 1;
+ for (int i = (page - 1) * 3; i < arrayKeys.size(); i++) {
+ if (j > 3)
+ break;
+
+ String words = arrayKeys.get(i).toString();
+ List<GoodsDetailVO> listGoods = new ArrayList<GoodsDetailVO>();
+
+ List<DaTaoKeDetailV2> listTaoKe = daTaoKeGoodsService.getSearchDiscoveryGoods(words);
+ if (listTaoKe != null && listTaoKe.size() > 0) {
+ for (DaTaoKeDetailV2 daTaoKeDetailV2 : listTaoKe) {
+ listGoods.add(
+ GoodsDetailVOFactory.convertTaoBao(TaoBaoUtil.convert(daTaoKeDetailV2), paramsDTO));
+ if (listGoods.size() >= 3)
+ break;
+ }
+ }
+
+ SearchKeyTOPVO keyTOPVO = new SearchKeyTOPVO();
+ keyTOPVO.setName(words);
+ keyTOPVO.setListGoods(listGoods);
+ list.add(keyTOPVO);
+
+ j++;
+ }
+ }
+ }
+
+ GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
+ Gson gson = gsonBuilder.create();
+ JSONObject data = new JSONObject();
+ data.put("count", count);
+ data.put("list", gson.toJson(list));
+ if (!StringUtil.isNullOrEmpty(callback)) {
+ JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
+ } else
+ out.print(JsonUtil.loadTrueResult(data));
+ }
+
+ /**
+ * 鑾峰彇涓撻娓犻亾娲诲姩
+ *
+ * @param acceptData
+ * @param uid
+ * @param callback
+ * @param out
+ */
+ @RequestMapping(value = "getSpecialChannelActivity")
+ public void getSpecialChannelActivity(AcceptData acceptData, Long uid, String callback, PrintWriter out) {
+
+ int platformCode = Constant.getPlatformCode(acceptData.getPlatform());
+
+ List<Special> list = specialService.listByPlaceKey("special_channel_activity", platformCode,
+ Integer.parseInt(acceptData.getVersion()));
+
+ long time = System.currentTimeMillis();
+ // 鍒犻櫎灏氭湭鍚敤鐨勮繃鏈熺殑
+ for (int i = 0; i < list.size(); i++) {
+ Special special = list.get(i);
+ if (special.getState() == 1L) {
+ list.remove(i--);
+ } else {
+ if (special.getStartTime() != null && special.getEndTime() != null)
+ special.setTimeTask(true);
+ else
+ special.setTimeTask(false);
+
+ if (special.isTimeTask()) {
+ if (time < special.getStartTime().getTime() || time > special.getEndTime().getTime()) {
+ list.remove(i--);
+ } else// 璁剧疆鍊掕鏃�
+ {
+ special.setCountDownTime((special.getEndTime().getTime() - time) / 1000);
}
}
-
- // 鏌ヨ澶ф窐瀹㈡爣棰�
- List<DaTaoKeDetail> list = daTaoKeGoodsDetailService.listByDtitle(text);
- if (list != null && list.size() > 0) {
- root.put("type", 2);
- JSONObject data = new JSONObject();
- data.put("title", list.get(0).getdTitle());
- root.put("data", data);
- out.print(JsonUtil.loadTrueResult(root));
- return;
}
+ }
- out.print(JsonUtil.loadFalseResult("鏆備笉鏀寔璇ョ被鍨嬶紒"));
+ GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
+ Gson gson = gsonBuilder.create();
+ JSONObject data = new JSONObject();
+ data.put("count", list.size());
+ data.put("list", gson.toJson(list));
+ if (!StringUtil.isNullOrEmpty(callback)) {
+ JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data));
+ } else
+ out.print(JsonUtil.loadTrueResult(data));
+ }
+
+ /**
+ * 鑾峰彇涓撻娓犻亾娲诲姩
+ *
+ * @param acceptData
+ * @param uid
+ * @param callback
+ * @param out
+ */
+ @RequestMapping(value = "getGuide")
+ public void getGuide(AcceptData acceptData, Long uid, PrintWriter out) {
+ String tips = null;
+ if (uid == null || uid <= 0) {
+ tips = configService.get(ConfigKeyEnum.tipGuideNewUser.getKey());
+ } else {
+ long rebateOrder = hongBaoV2CountService.countRebateOrder(uid);
+ long shareOrInviteOrder = hongBaoV2CountService.countShareOrInviteOrder(uid);
+ if (rebateOrder + shareOrInviteOrder >= 3) {
+ // 鐔熷鐗�
+ } else if (rebateOrder <= 0 && shareOrInviteOrder <= 0) {
+ // 鏂颁汉鐗�
+ tips = configService.get(ConfigKeyEnum.tipGuideNewUser.getKey());
+ } else if (rebateOrder > 0 && shareOrInviteOrder <= 0) {
+ // 鐪侀挶鐗�
+ tips = configService.get(ConfigKeyEnum.tipGuideSaveMoney.getKey());
+ } else {
+ // 璧氶挶鐗�
+ tips = configService.get(ConfigKeyEnum.tipGuideShareInvite.getKey());
+ }
+ }
+
+ if (StringUtil.isNullOrEmpty(tips)) {
+ out.print(JsonUtil.loadFalseResult("鏆傛棤鎻愮ず"));
return;
}
- text = matcher.group();
- if (text.contains("ju.taobao.com") || text.contains(".juhuasuan.com")) {// 鑱氬垝绠�
- int index = text.indexOf("item_id");
- if (index < 0) {
- out.println(JsonUtil.loadFalseResult("鏆傛湭鎵惧埌璇ュ晢鍝侊紝璇风◢鍚庡啀璇曪紒"));
- return;
- }
- text = text.substring(index);
- int last = text.indexOf("&");
- String id = "";
- if (last > 0)
- id = text.substring(text.indexOf("=") + 1, text.indexOf("&"));
- else {
- id = text.substring(text.indexOf("=" + 1));
- }
- tb = TaoBaoUtil.isAlimama(id);
- if (tb == null) {
- tb = TaoBaoUtil.parsePhoneTmAndTb(id);
- }
- } else if (text.contains("http://zmnxbc.com")) { // 鎵嬫満绔ぉ鐚獳PP鍒嗕韩
- tb = TaoBaoUtil.parsePhoneShareUrlByTM(text);
- } else if (text.contains("h5.m.taobao") || text.contains("detail.m.tmall") || text.contains("item.taobao")
- || text.contains("detail.tmall")) { // 鎵嬫満椤甸潰鍜岀數鑴戦〉闈�
- Map<String, String> map = Utils.parseURL(text);
- String id = "";
- id = map.get("id").replace("}", "");
- tb = TaoBaoUtil.isAlimama(id);
- if (tb == null) {
- tb = TaoBaoUtil.parsePhoneTmAndTb(id);
- }
- } else {
- tb = TaoBaoUtil.parsePhoneShareUrlByTB(text);
- }
-
- if (tb != null) {
- JSONObject data = new JSONObject();
- JSONObject taoBaoGoodsJSON = new JSONObject();
- taoBaoGoodsJSON.put("title", tb.getTitle());
- taoBaoGoodsJSON.put("zkPrice", tb.getZkPrice());
- taoBaoGoodsJSON.put("auctionId", tb.getAuctionId());
- taoBaoGoodsJSON.put("url", "http://item.taobao.com/item.htm?id=" + tb.getAuctionId());
- data.put("taoBaoGoodsBrief", taoBaoGoodsJSON);
- if (!StringUtil.isNullOrEmpty(tb.getPictUrl())) {
- if (tb.getImgList() == null)
- tb.setImgList(new ArrayList<>());
- tb.getImgList().add(0, TbImgUtil.getTBSize220Img(tb.getPictUrl()));
- }
- data.put("tbImgs", tb.getImgList());
- JSONObject root = new JSONObject();
- root.put("type", 1);
- root.put("data", data);
-
- out.print(JsonUtil.loadTrueResult(root));
- }
-
-
- out.println(JsonUtil.loadFalseResult("鏆傛湭鎵惧埌璇ュ晢鍝侊紝璇风◢鍚庡啀璇曪紒"));
- return;
+ JSONObject data = JSONObject.fromObject(tips);
+ out.print(JsonUtil.loadTrueResult(data));
}
}
--
Gitblit v1.8.0