fanli/src/main/java/com/yeshi/fanli/controller/client/v1/RecommendController.java
@@ -239,27 +239,24 @@ @Resource private DaTaoKeGoodsDetailService daTaoKeGoodsDetailService; @Resource private UserMoneyExtraService userMoneyExtraService; @Resource private UserTaoLiJinOriginService userTaoLiJinOriginService; @Resource private ConfigTaoLiJinService configTaoLiJinService; @Resource private DeviceTaoLiJinRecordService deviceTaoLiJinRecordService; @Resource private DeviceSexService deviceSexService; @Resource private UserTaoLiJinRecordService userTaoLiJinRecordService; @Resource private RecommendGoodsDeleteHistoryService recommendGoodsDeleteHistoryService; @@ -1625,7 +1622,7 @@ try { // 获取设备定义性别 int deviceSex = deviceSexService.getDeviceSex(acceptData.getDevice()); // 1、专题模块 JSONObject root = specialService.listCacheSpecialToIndex(acceptData, deviceSex); @@ -2015,7 +2012,7 @@ if (uid == null) { data.put("collected", false); } else { CollectionGoodsV2 collectionGoods = collectionGoodsV2Service.findByUidAndAuctionId(uid, id); CollectionGoodsV2 collectionGoods = collectionGoodsV2Service.findByUidAndAuctionId(uid, id); data.put("collected", collectionGoods != null ? true : false); } @@ -2061,8 +2058,7 @@ redisManager.saveCommonTaoToken(tb.getAuctionId(), token); } } // 测试 if (!Constant.IS_TEST) if (!VersionUtil.greaterThan_1_5_60(acceptData.getPlatform(), acceptData.getVersion())) tb.setCouponLinkTaoToken(token); // 服务端转链 @@ -2080,8 +2076,9 @@ + tb.getCouponEffectiveEndTime().replace("-", ".")); // 券的口令 // 测试 if (!Constant.IS_TEST) if (VersionUtil.greaterThan_1_5_60(acceptData.getPlatform(), acceptData.getVersion())) couponInfo.put("couponToken", ""); else couponInfo.put("couponToken", token); goodsJson.put("couponInfo", couponInfo); @@ -2164,7 +2161,6 @@ data.put("detailWebUrl", "http://apph5.yeshitv.com/apppage/goods_img.html?id=" + id); String noRebateHelpLink = null; // 商品链接 String h5Url = String.format("http://%s%s?id=%s&appType=flq", configService.getH5Host(), @@ -2174,24 +2170,24 @@ } catch (Exception e) { data.put("h5Url", h5Url); } // 是否有返利 boolean fanliValid = true; //资金类型 1-返 2-奖 // 资金类型 1-返 2-奖 int moneyType = 1; // 推广红包 if (from != null && from.equals("taolijin")) { // 计算推广红包 String warningRate = configTaoLiJinService.getValueByKey("warning_value"); BigDecimal spreadMoney = TaoLiJinUtil.getSpreadMoney(warningRate, goods); // 推广红包 不能小于1 if (spreadMoney.compareTo(new BigDecimal(1.1)) < 0) { out.print(JsonUtil.loadFalseResult(2, "商品不存在")); return; } // 是否为新用户 boolean isNewUser = userInfoExtraService.isNewUser(uid); if (isNewUser) { @@ -2201,13 +2197,13 @@ isNewUser = false; } } SpreadHongBao spreadHongBao = new SpreadHongBao(); if (isNewUser) { spreadHongBao.setMoney("1"); } else { spreadHongBao.setMoney(spreadMoney.toString()); moneyType = 2; fanliValid = false; ClientTextStyleVO textStyleVO1 = new ClientTextStyleVO(); @@ -2222,40 +2218,49 @@ ClientTextStyleVO textStyleVO4 = new ClientTextStyleVO(); textStyleVO4.setContent("领红包!"); textStyleVO4.setColor("#F14242"); List<ClientTextStyleVO> listText = new ArrayList<ClientTextStyleVO>(); listText.add(textStyleVO1); listText.add(textStyleVO2); listText.add(textStyleVO3); listText.add(textStyleVO4); data.put("listTip", listText); } } spreadHongBao.setTip("当日领取,两天内使用,过时无效"); goodsJson.put("spreadHongBao", spreadHongBao); // 用户剩余可以淘礼金验证 UserMoneyExtra userMoneyExtra = userMoneyExtraService.selectByPrimaryKey(uid); if (userMoneyExtra == null || userMoneyExtra.getTlj() == null) { if (userMoneyExtra == null || userMoneyExtra.getTlj() == null) { data.put("userHongbao", new BigDecimal(0).setScale(2).toString()); } else { data.put("userHongbao", userMoneyExtra.getTlj().setScale(2).toString()); } noRebateHelpLink = configTaoLiJinService.getValueByKey("share_goods_help_link"); if (Constant.IS_TEST) { fanliValid = true; goodsJson.put("shareValid", false); JSONObject tljNum = new JSONObject(); tljNum.put("percent", "80"); tljNum.put("num", "8825"); goodsJson.put("tljNum", tljNum); } } goodsJson.put("moneyType", moneyType); goodsJson.put("fanliValid", fanliValid); data.put("goods", goodsJson); if (!StringUtil.isNullOrEmpty(noRebateHelpLink)) { data.put("noRebateHelpLink", noRebateHelpLink); } else { data.put("noRebateHelpLink", configService.get("no_rebate_help_link")); } // 取消分享活动 // if (!StringUtil.isNullOrEmpty(uid) // && @@ -2281,7 +2286,7 @@ public void run() { // 添加浏览记录 try { scanHistoryV2Service.addScanHistory(uid, acceptData.getDevice(),goodsInfo); scanHistoryV2Service.addScanHistory(uid, acceptData.getDevice(), goodsInfo); } catch (Exception e) { e.printStackTrace(); } @@ -2479,7 +2484,7 @@ } try { List<Special> list = new ArrayList<Special>(); // 专题活动 String specialCard = "special_activities"; @@ -2490,24 +2495,23 @@ if (listSpecial != null) { list.addAll(listSpecial); } for (int i = 0; i < list.size(); i++) { Special special = list.get(i); JumpDetailV2 jumpDetail = special.getJumpDetail(); if (jumpDetail != null) { jumpDetail.setNeedLogin(special.isJumpLogin()); special.setJumpDetail(jumpDetail); } String name = special.getName(); if (StringUtil.isNullOrEmpty(name)) { continue; } // 是否需要弹出框 if (name.equals("账户等级特权")) { if (name.equals("账户等级特权")) { if (!VersionUtil.greaterThan_1_5_60(acceptData.getPlatform(), acceptData.getVersion())) { list.remove(i); i--; fanli/src/main/java/com/yeshi/fanli/controller/web/ShareHotGoodsController.java
@@ -12,6 +12,7 @@ import org.springframework.web.bind.annotation.RequestMethod; import org.yeshi.utils.JsonUtil; import com.google.gson.Gson; import com.yeshi.fanli.entity.accept.AcceptData; import com.yeshi.fanli.entity.taobao.ShareHotGoods; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; @@ -48,25 +49,16 @@ * @param out */ @RequestMapping(value = "listPreGoods", method = RequestMethod.GET) public void getSugguestSearch(String callback, AcceptData acceptData, String kw, PrintWriter out) { public void listPreGoods(String callback, AcceptData acceptData, String kw, PrintWriter out) { // 大淘客数据,更新 List<String> list = TaoBaoUtil.getSuguestSearch(kw); if (list != null && list.size() > 0) { JSONArray array = new JSONArray(); int num = 0; for (String st : list) { array.add(st); num = num + 1; if (num >= 5) { break; } } out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(array))); } else { out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(""))); List<TaoBaoGoodsBrief> list = shareHotGoodsService.listPreGoods(); BigDecimal rate = hongBaoManageService.getFanLiRate(); JSONArray array = new JSONArray(); Gson gson = new Gson(); for (TaoBaoGoodsBrief goods : list) { array.add(gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(goods, rate + "", null))); } return; out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(array))); } /** @@ -92,10 +84,15 @@ } catch (TaobaoGoodsDownException e) { e.printStackTrace(); } if (goods != null) { count++; goods = daTaoKeGoodsDetailService.filterTaoBaoGoods(goods); shareHotGoodsService.addShareHotGoods(new ShareHotGoods(null, day, new Date(), goods)); if (goods != null && goods.getCouponAmount() != null && goods.getCouponAmount().compareTo(new BigDecimal(0)) > 0) { if (TaoBaoUtil.getAfterUseCouplePrice(goods).multiply(goods.getTkRate()) .compareTo(new BigDecimal("734")) >= 0) { count++; goods = daTaoKeGoodsDetailService.filterTaoBaoGoods(goods); shareHotGoodsService.addShareHotGoods(new ShareHotGoods(null, day, new Date(), goods)); } } } out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult("设置成功:" + count))); fanli/src/main/java/com/yeshi/fanli/dao/goods/taobao/dataoke/DaTaoKeGoodsDetailV2Dao.java
@@ -1,6 +1,7 @@ package com.yeshi.fanli.dao.goods.taobao.dataoke; import java.lang.reflect.Field; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; @@ -15,11 +16,13 @@ import com.yeshi.fanli.dao.MongodbBaseDao; import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2; import com.yeshi.fanli.util.MoneyBigDecimalUtil; @Repository public class DaTaoKeGoodsDetailV2Dao extends MongodbBaseDao<DaTaoKeDetailV2> { public void updateSelective(DaTaoKeDetailV2 v2) { // 计算佣金 DaTaoKeDetailV2 old = get(v2.getId()); if (old != null) {// 更新 Query query = new Query(); @@ -41,6 +44,14 @@ } update(query, update); } } public void saveWithCommision(DaTaoKeDetailV2 v2) { BigDecimal commision = MoneyBigDecimalUtil .div(MoneyBigDecimalUtil.mul(v2.getActualPrice(), v2.getCommissionRate()), new BigDecimal(100)); int commissionInt = commision.multiply(new BigDecimal(100)).intValue(); v2.setCommission(commissionInt); save(v2); } public DaTaoKeDetailV2 selectLatest() { @@ -76,6 +87,7 @@ for (int i = 0; i < idsList.size(); i++) { criterias[i] = Criteria.where("id").is(idsList.get(i)); } query.addCriteria(new Criteria().orOperator(criterias)); return mongoTemplate.find(query, getEntityClass()); } @@ -136,10 +148,12 @@ * * @return */ public List<DaTaoKeDetailV2> listPreShareHotGoods(int count) { //TODO public List<DaTaoKeDetailV2> listPreShareHotGoods(int count, String sortName) { Query query = new Query(); query.addCriteria(new Criteria().andOperator(Criteria.where("commissionRate*actualPrice").gt(7.34))); query.addCriteria(Criteria.where("commission").gt(734)); List<Order> orders = new ArrayList<>(); orders.add(new Order(Direction.DESC, sortName)); query.with(new Sort(orders)); query.limit(count); return mongoTemplate.find(query, getEntityClass()); } fanli/src/main/java/com/yeshi/fanli/entity/taobao/dataoke/DaTaoKeDetailV2.java
@@ -97,6 +97,17 @@ private Integer tbcid;// 商品在淘宝的二级分类id ,非大淘客的二级分类 @Field private Date updateTime; //额外字段维护 @Field private Integer commission;// 佣金金额,单位为分 public Integer getCommission() { return commission; } public void setCommission(Integer commission) { this.commission = commission; } public Date getUpdateTime() { return updateTime; fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/ShareHotGoodsServiceImpl.java
@@ -1,21 +1,36 @@ package com.yeshi.fanli.service.impl.taobao; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.annotation.Resource; import org.springframework.stereotype.Service; import com.yeshi.fanli.dao.goods.taobao.dataoke.DaTaoKeGoodsDetailV2Dao; import com.yeshi.fanli.dao.taobao.ShareHotGoodsDao; import com.yeshi.fanli.entity.taobao.ShareHotGoods; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2; import com.yeshi.fanli.service.inter.taobao.ShareHotGoodsService; import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service; import com.yeshi.fanli.util.BeanUtil; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.taobao.TaoBaoUtil; @Service public class ShareHotGoodsServiceImpl implements ShareHotGoodsService { @Resource private ShareHotGoodsDao shareHotGoodsDao; @Resource private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service; @Override public void addShareHotGoods(ShareHotGoods goods) { @@ -36,4 +51,15 @@ public void deleteById(String id) { shareHotGoodsDao.delete(id); } @Override public List<TaoBaoGoodsBrief> listPreGoods() { List<DaTaoKeDetailV2> list = daTaoKeGoodsDetailV2Service.listPreShareHotGoods(); List<TaoBaoGoodsBrief> goodsList = new ArrayList<>(); if (list != null) { for (DaTaoKeDetailV2 v2 : list) goodsList.add(TaoBaoUtil.convert(v2)); } return goodsList; } } fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsDetailV2ServiceImpl.java
@@ -1,8 +1,11 @@ package com.yeshi.fanli.service.impl.taobao.dataoke; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -17,6 +20,7 @@ import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service; import com.yeshi.fanli.util.BeanUtil; import com.yeshi.fanli.util.RedisManager; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.TimeUtil; @@ -35,11 +39,11 @@ public void startSyncGoods() { LogHelper.test("大淘客同步开始"); DaTaoKeGoodsResult result = DaTaoKeApiUtil.listAll("1"); int page=0; int page = 0; while (result.getGoodsList() != null && result.getGoodsList().size() > 0) { System.out.println(page++); for (DaTaoKeDetailV2 v2 : result.getGoodsList()) daTaoKeGoodsDetailV2Dao.save(v2); daTaoKeGoodsDetailV2Dao.saveWithCommision(v2); result = DaTaoKeApiUtil.listAll(result.getPageId()); try { Thread.sleep(10); @@ -97,7 +101,7 @@ while (!StringUtil.isNullOrEmpty(result.getPageId())) { for (DaTaoKeDetailV2 v2 : result.getGoodsList()) { v2.setUpdateTime(new Date()); daTaoKeGoodsDetailV2Dao.save(v2); daTaoKeGoodsDetailV2Dao.saveWithCommision(v2); } result = DaTaoKeApiUtil.getNewGoodsList(result.getPageId(), startTime, null); try { @@ -112,7 +116,7 @@ private void addGoodsList(List<DaTaoKeDetailV2> goodsList) { for (DaTaoKeDetailV2 goods : goodsList) { goods.setUpdateTime(new Date()); daTaoKeGoodsDetailV2Dao.save(goods); daTaoKeGoodsDetailV2Dao.saveWithCommision(goods); } } @@ -186,10 +190,29 @@ @Override public List<DaTaoKeDetailV2> listPreShareHotGoods() { return null; DaTaoKeGoodsDetailV2Dao daTaoKeGoodsDetailV2Dao = BeanUtil.getBean(DaTaoKeGoodsDetailV2Dao.class); Map<Long, DaTaoKeDetailV2> map = new HashMap<>(); List<DaTaoKeDetailV2> list = daTaoKeGoodsDetailV2Dao.listPreShareHotGoods(20, "monthSales"); System.out.println(list); list.addAll(daTaoKeGoodsDetailV2Dao.listPreShareHotGoods(20, "twoHoursSales")); list.addAll(daTaoKeGoodsDetailV2Dao.listPreShareHotGoods(20, "dailySales")); for (DaTaoKeDetailV2 v2 : list) { map.put(v2.getId(), v2); } List<DaTaoKeDetailV2> finalList = new ArrayList<>(); for (Iterator<Long> its = map.keySet().iterator(); its.hasNext();) { finalList.add(map.get(its.next())); } Comparator<DaTaoKeDetailV2> cm = new Comparator<DaTaoKeDetailV2>() { @Override public int compare(DaTaoKeDetailV2 o1, DaTaoKeDetailV2 o2) { return o1.getActualPrice().compareTo(o2.getActualPrice()); } }; Collections.sort(finalList, cm); return finalList; } } fanli/src/main/java/com/yeshi/fanli/service/inter/taobao/ShareHotGoodsService.java
@@ -3,6 +3,7 @@ import java.util.List; import com.yeshi.fanli.entity.taobao.ShareHotGoods; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; public interface ShareHotGoodsService { @@ -20,12 +21,19 @@ * @return */ public List<ShareHotGoods> listByDay(String day); /** * 根据主键删除 * * @param id */ public void deleteById(String id); /** * 获取备选商品 * * @return */ public List<TaoBaoGoodsBrief> listPreGoods(); }