admin
2019-08-22 cd6848f4680bfa462cd4668b8068cb2868faf17a
秒杀接口更改
9个文件已修改
204 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/controller/apph5/AppH5QualityGoodsController.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dao/goods/taobao/dataoke/DaTaoKeGoodsDetailV2Dao.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/dto/dataoke/DingDongQiangDTO.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/job/UpdateDaTaoKeJob.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsDetailServiceImpl.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsDetailV2ServiceImpl.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/taobao/dataoke/DaTaoKeGoodsDetailService.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/inter/taobao/dataoke/DaTaoKeGoodsDetailV2Service.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/taobao/DaTaoKeUtil.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/controller/apph5/AppH5QualityGoodsController.java
@@ -24,6 +24,7 @@
import com.yeshi.fanli.entity.taobao.TaoBaoHongBaoInfo;
import com.yeshi.fanli.entity.taobao.TaobaoMeterial;
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetail;
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2;
import com.yeshi.fanli.exception.taobao.TaoKeApiException;
import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
import com.yeshi.fanli.log.LogHelper;
@@ -41,7 +42,7 @@
import com.yeshi.fanli.service.inter.lable.TaoKeGoodsService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsActivityService;
import com.yeshi.fanli.service.inter.taobao.TaobaoMeterialService;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailService;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TimeUtil;
@@ -101,7 +102,7 @@
    private TaoBaoGoodsActivityService taoBaoGoodsActivityService;
    @Resource
    private DaTaoKeGoodsDetailService daTaoKeGoodsDetailService;
    private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service;
    /**
     * 9.9商品
@@ -876,17 +877,17 @@
    @RequestMapping("getFlashSaleNew")
    public void getFlashSaleNew(String callback, Integer page, Long auctionId, String time, PrintWriter out) {
        List<DaTaoKeDetail> detailList0 = daTaoKeGoodsDetailService.getDingDongQiangData(time);
        List<DaTaoKeDetailV2> detailList0 = daTaoKeGoodsDetailV2Service.getDingDongQiangData(time);
        if (detailList0 == null)
            detailList0 = new ArrayList<>();
        List<DaTaoKeDetail> detailList = new ArrayList<>();
        List<DaTaoKeDetailV2> detailList = new ArrayList<>();
        detailList.addAll(detailList0);
        JSONArray array = new JSONArray();
        if (page == 1) {
            if (auctionId != null && detailList != null)
                for (int i = 0; i < detailList.size(); i++) {
                    if (detailList.get(i).getGoodsId().longValue() == auctionId) {
                        DaTaoKeDetail goods = detailList.get(i);
                        DaTaoKeDetailV2 goods = detailList.get(i);
                        detailList.remove(i);
                        detailList.add(0, goods);
                        break;
@@ -896,7 +897,7 @@
            Gson gson = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder())
                    .excludeFieldsWithoutExposeAnnotation().setDateFormat("yyyy-MM-dd").create();
            if (detailList != null)
                for (DaTaoKeDetail detail : detailList) {
                for (DaTaoKeDetailV2 detail : detailList) {
                    array.add(gson.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(TaoBaoUtil.convert(detail),
                            hongBaoManageService.getFanLiRate() + "", null)));
                }
fanli/src/main/java/com/yeshi/fanli/dao/goods/taobao/dataoke/DaTaoKeGoodsDetailV2Dao.java
@@ -150,7 +150,7 @@
     * 
     * @return
     */
    public List<DaTaoKeDetailV2> listPreShareHotGoods(int start, int count, String sortName,BigDecimal minCommission) {
    public List<DaTaoKeDetailV2> listPreShareHotGoods(int start, int count, String sortName, BigDecimal minCommission) {
        Query query = new Query();
        query.addCriteria(Criteria.where("commission").gt(minCommission.multiply(new BigDecimal(100)).intValue()));
        List<Order> orders = new ArrayList<>();
@@ -177,4 +177,10 @@
        return list.size();
    }
    public long countByMinUpdateTime(Date minUpdateTime) {
        Query query = new Query();
        query.addCriteria(Criteria.where("updateTime").gt(minUpdateTime));
        return mongoTemplate.count(query, DaTaoKeDetailV2.class);
    }
}
fanli/src/main/java/com/yeshi/fanli/dto/dataoke/DingDongQiangDTO.java
@@ -2,7 +2,7 @@
import java.util.List;
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetail;
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2;
/**
 * 大淘客叮咚抢
@@ -12,9 +12,9 @@
 */
public class DingDongQiangDTO {
    private String time;
    private List<DaTaoKeDetail> goodsList;
    private List<DaTaoKeDetailV2> goodsList;
    public DingDongQiangDTO(String time, List<DaTaoKeDetail> goodsList) {
    public DingDongQiangDTO(String time, List<DaTaoKeDetailV2> goodsList) {
        this.time = time;
        this.goodsList = goodsList;
    }
@@ -30,11 +30,11 @@
        this.time = time;
    }
    public List<DaTaoKeDetail> getGoodsList() {
    public List<DaTaoKeDetailV2> getGoodsList() {
        return goodsList;
    }
    public void setGoodsList(List<DaTaoKeDetail> goodsList) {
    public void setGoodsList(List<DaTaoKeDetailV2> goodsList) {
        this.goodsList = goodsList;
    }
}
fanli/src/main/java/com/yeshi/fanli/job/UpdateDaTaoKeJob.java
@@ -174,4 +174,13 @@
        }
    }
    @Scheduled(cron = "0 30 7,11,18,23 * * ? ")
    public void syncGoodsBeiYong() {
        long latestUpdateCount = daTaoKeGoodsDetailV2Service
                .countByMinUpdateTime(new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24L));
        if (latestUpdateCount < 50000L) {// 若每天没有超过5w数据更新就需要重新更新数据
            daTaoKeGoodsDetailV2Service.startSyncGoods();
        }
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsDetailServiceImpl.java
@@ -153,19 +153,6 @@
        return daTaoKeDetailMapper.countByCidAndMaxMinPrice(cid, maxPrice, null);
    }
    @Cacheable(value = "daTaoKeGoodsCache", key = "'getDingDongQiangData'")
    @Override
    public List<DingDongQiangDTO> getDingDongQiangData() {
        List<DingDongQiangDTO> list = null;
        int count = 0;
        while ((list == null || list.size() == 0) && count < 3) {
            count++;
            list = DaTaoKeUtil.getDingDongQiang();
        }
        if (list == null)
            return null;
        return list;
    }
    private void updateGoods(Long id) {
        DaTaoKeDetail detail = daTaoKeDetailMapper.selectByPrimaryKey(id);
@@ -177,37 +164,6 @@
            list.add(detail);
            addGoodsList(list);
        }
    }
    @Cacheable(value = "daTaoKeGoodsCache", key = "'getDingDongQiangData-'+#time")
    @Override
    public List<DaTaoKeDetail> getDingDongQiangData(String time) {
        List<DingDongQiangDTO> list = getDingDongQiangData();
        if (list == null)
            return null;
        Map<String, DingDongQiangDTO> map = new HashMap<>();
        for (DingDongQiangDTO dto : list)
            map.put(dto.getTime(), dto);
        DingDongQiangDTO dto = map.get(time);
        if (dto != null) {
            List<Long> idList = new ArrayList<>();
            for (DaTaoKeDetail td : dto.getGoodsList())
                idList.add(td.getId());
            List<DaTaoKeDetail> finalList = listByIds(idList);
            if (finalList.size() != idList.size()) {
                for (Long id : idList)
                    updateGoods(id);
                finalList = listByIds(idList);
            }
            for (DaTaoKeDetail detail : finalList) {
                detail.setQuanReceive(
                        detail.getQuanSurplus() + detail.getQuanReceive() - (int) (200 + Math.random() * 1000));
            }
            return finalList;
        }
        return null;
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/taobao/dataoke/DaTaoKeGoodsDetailV2ServiceImpl.java
@@ -13,12 +13,16 @@
import javax.annotation.Resource;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.yeshi.fanli.dao.goods.taobao.dataoke.DaTaoKeGoodsDetailV2Dao;
import com.yeshi.fanli.dto.dataoke.DaTaoKeGoodsResult;
import com.yeshi.fanli.dto.dataoke.DingDongQiangDTO;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
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.taobao.dataoke.DaTaoKeGoodsDetailV2Service;
@@ -211,9 +215,10 @@
    }
    @Override
    public List<DaTaoKeDetailV2> listPreShareHotGoods(int page,BigDecimal minCommission) {
    public List<DaTaoKeDetailV2> listPreShareHotGoods(int page, BigDecimal minCommission) {
        Map<Long, DaTaoKeDetailV2> map = new HashMap<>();
        List<DaTaoKeDetailV2> list = daTaoKeGoodsDetailV2Dao.listPreShareHotGoods((page - 1) * 100, 100, "hotPush",minCommission);
        List<DaTaoKeDetailV2> list = daTaoKeGoodsDetailV2Dao.listPreShareHotGoods((page - 1) * 100, 100, "hotPush",
                minCommission);
        System.out.println(list);
        for (DaTaoKeDetailV2 v2 : list) {
            map.put(v2.getId(), v2);
@@ -303,4 +308,62 @@
        daTaoKeGoodsDetailV2Dao.listAndRemoveByMinUpdateTime(minTime, 0, 3000);
    }
    @Override
    public long countByMinUpdateTime(Date minTime) {
        return daTaoKeGoodsDetailV2Dao.countByMinUpdateTime(minTime);
    }
    @Cacheable(value = "daTaoKeGoodsCache", key = "'getDingDongQiangData'")
    @Override
    public List<DingDongQiangDTO> getDingDongQiangData() {
        List<DingDongQiangDTO> list = null;
        int count = 0;
        while ((list == null || list.size() == 0) && count < 3) {
            count++;
            list = DaTaoKeUtil.getDingDongQiang();
        }
        if (list == null)
            return null;
        return list;
    }
    @Async
    private void updateGoods(Long id) {
        DaTaoKeDetailV2 v2 = DaTaoKeApiUtil.getGoodsDetail(id);
        if (v2 != null)
            daTaoKeGoodsDetailV2Dao.save(v2);
    }
    @Cacheable(value = "daTaoKeGoodsCache", key = "'getDingDongQiangData-'+#time")
    @Override
    public List<DaTaoKeDetailV2> getDingDongQiangData(String time) {
        List<DingDongQiangDTO> list = getDingDongQiangData();
        if (list == null)
            return null;
        Map<String, DingDongQiangDTO> map = new HashMap<>();
        for (DingDongQiangDTO dto : list)
            map.put(dto.getTime(), dto);
        DingDongQiangDTO dto = map.get(time);
        if (dto != null) {
            List<Long> idList = new ArrayList<>();
            for (DaTaoKeDetailV2 td : dto.getGoodsList())
                idList.add(td.getId());
            List<DaTaoKeDetailV2> finalList = listByIds(idList);
            if (finalList.size() != idList.size()) {
                for (Long id : idList)
                    updateGoods(id);
                finalList = listByIds(idList);
            }
            for (DaTaoKeDetailV2 detail : finalList) {
                detail.setCouponReceiveNum(detail.getCouponTotalNum() - (int) (200 + Math.random() * 1000));
                if (detail.getCouponTotalNum() - detail.getCouponReceiveNum() <= 0)
                    detail.setCouponReceiveNum(detail.getCouponTotalNum());
            }
            return finalList;
        }
        return null;
    }
}
fanli/src/main/java/com/yeshi/fanli/service/inter/taobao/dataoke/DaTaoKeGoodsDetailService.java
@@ -111,21 +111,4 @@
     * @return
     */
    public Long countByCidAndMaxPrice(Integer cid, BigDecimal maxPrice);
    /**
     * 获取叮咚呛数据
     *
     * @return
     */
    public List<DingDongQiangDTO> getDingDongQiangData();
    /**
     * 根据时间查询
     * @param time  0712 表示7号12点
     * @return
     */
    public List<DaTaoKeDetail> getDingDongQiangData(String time);
}
fanli/src/main/java/com/yeshi/fanli/service/inter/taobao/dataoke/DaTaoKeGoodsDetailV2Service.java
@@ -4,7 +4,9 @@
import java.util.Date;
import java.util.List;
import com.yeshi.fanli.dto.dataoke.DingDongQiangDTO;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetail;
import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2;
/**
@@ -128,5 +130,29 @@
     * @param minTime
     */
    public void deleteOutOfDate(Date minTime);
    /**
     * 根据最小更新时间查询数量
     * @param minTime
     * @return
     */
    public long countByMinUpdateTime(Date minTime);
    /**
     * 获取叮咚呛数据
     *
     * @return
     */
    public List<DingDongQiangDTO> getDingDongQiangData();
    /**
     * 根据时间查询
     * @param time  0712 表示7号12点
     * @return
     */
    public List<DaTaoKeDetailV2> getDingDongQiangData(String time);
}
fanli/src/main/java/com/yeshi/fanli/util/taobao/DaTaoKeUtil.java
@@ -374,7 +374,7 @@
        List<DingDongQiangDTO> list = new ArrayList<>();
        Document doc = null;
        try {
            doc = Jsoup.connect("http://www.dataoke.com/ddq").get();
            doc = Jsoup.connect("http://www.dataoke.com/ddq").userAgent("").get();
        } catch (IOException e1) {
            e1.printStackTrace();
        }
@@ -395,9 +395,11 @@
                        for (Iterator<String> its = dataJson.keys(); its.hasNext();) {
                            String key = its.next();
                            JSONArray array = dataJson.optJSONArray(key);
                            List<DaTaoKeDetail> detailList = new ArrayList<>();
                            List<DaTaoKeDetailV2> detailList = new ArrayList<>();
                            for (int n = 0; n < array.size(); n++) {
                                detailList.add(new DaTaoKeDetail(array.optJSONObject(n).optLong("id")));
                                DaTaoKeDetailV2 v2 = new DaTaoKeDetailV2();
                                v2.setId(array.optJSONObject(n).optLong("id"));
                                detailList.add(v2);
                            }
                            list.add(new DingDongQiangDTO(key, detailList));
                        }
@@ -574,7 +576,5 @@
        return detail;
    }
}