| | |
| | | import com.yeshi.fanli.dao.MongodbBaseDao;
|
| | | import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2;
|
| | | import com.yeshi.fanli.util.MoneyBigDecimalUtil;
|
| | | import com.yeshi.fanli.util.StringUtil;
|
| | |
|
| | | @Repository
|
| | | public class DaTaoKeGoodsDetailV2Dao extends MongodbBaseDao<DaTaoKeDetailV2> {
|
| | |
| | | return mongoTemplate.count(query, DaTaoKeDetailV2.class);
|
| | | }
|
| | |
|
| | | public List<DaTaoKeDetailV2> listByMaxPrice(Integer cid, BigDecimal maxPrice, String sortName, int start,
|
| | | int count) {
|
| | | Query query = new Query();
|
| | | if (cid != null)
|
| | | query.addCriteria(Criteria.where("actualPrice").lt(maxPrice).andOperator(Criteria.where("cid").is(cid)));
|
| | | else
|
| | | query.addCriteria(Criteria.where("actualPrice").lt(maxPrice));
|
| | |
|
| | | if (!StringUtil.isNullOrEmpty(sortName)) {
|
| | | List<Order> orders = new ArrayList<>();
|
| | | orders.add(new Order(Direction.DESC, sortName));
|
| | | query.with(new Sort(orders));
|
| | | }
|
| | | query.skip(start);
|
| | | query.limit(count);
|
| | | return mongoTemplate.find(query, getEntityClass());
|
| | | }
|
| | |
|
| | | public long countByMaxPrice(Integer cid, BigDecimal maxPrice) {
|
| | | Query query = new Query();
|
| | | if (cid != null)
|
| | | query.addCriteria(Criteria.where("actualPrice").lt(maxPrice).andOperator(Criteria.where("cid").is(cid)));
|
| | | else
|
| | | query.addCriteria(Criteria.where("actualPrice").lt(maxPrice));
|
| | | return mongoTemplate.count(query, getEntityClass());
|
| | | }
|
| | |
|
| | | }
|
| | |
| | | import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService;
|
| | | 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.dataoke.DaTaoKeApiUtil;
|
| | | import com.yeshi.fanli.util.taobao.DaTaoKeUtil;
|
| | |
| | |
|
| | | @Resource
|
| | | private DaTaoKeGoodsDetailService daTaoKeGoodsDetailService;
|
| | |
|
| | | @Resource
|
| | | private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service;
|
| | |
|
| | | @Resource
|
| | | private TaobaoMeterialService taobaoMeterialService;
|
| | |
| | | if ("-1".equalsIgnoreCase(cid)) {
|
| | | result = DaTaoKeApiUtil.search("", null, null, new BigDecimal("10"), page, pageSize,
|
| | | DaTaoKeApiUtil.SORT_DEFAULT);
|
| | | if (result == null || result.getGoodsList() == null || result.getGoodsList().size() == 0) {
|
| | | result = new DaTaoKeGoodsResult();
|
| | | result.setGoodsList(daTaoKeGoodsDetailV2Service.listByMaxPrice(null,
|
| | | new BigDecimal("10"),null, page, pageSize));
|
| | | result.setTotalCount(
|
| | | daTaoKeGoodsDetailV2Service.countByMaxPrice(null, new BigDecimal("10")));
|
| | | }
|
| | |
|
| | | } else if ("0".equalsIgnoreCase(cid)) {
|
| | | result = DaTaoKeApiUtil.search("", null, null, new BigDecimal("10"), page, pageSize,
|
| | | DaTaoKeApiUtil.SORT_CREATETIME);
|
| | | if (result == null || result.getGoodsList() == null || result.getGoodsList().size() == 0) {
|
| | | result = new DaTaoKeGoodsResult();
|
| | | result.setGoodsList(daTaoKeGoodsDetailV2Service.listByMaxPrice(null,
|
| | | new BigDecimal("10"),"createTime", page, pageSize));
|
| | | result.setTotalCount(
|
| | | daTaoKeGoodsDetailV2Service.countByMaxPrice(null, new BigDecimal("10")));
|
| | | }
|
| | | } else {
|
| | | List<Integer> cidList = new ArrayList<>();
|
| | | cidList.add(Integer.parseInt(cid));
|
| | | result = DaTaoKeApiUtil.search("", cidList, null, new BigDecimal("10"), page, pageSize,
|
| | | DaTaoKeApiUtil.SORT_DEFAULT);
|
| | | if (result == null || result.getGoodsList() == null || result.getGoodsList().size() == 0) {
|
| | | result = new DaTaoKeGoodsResult();
|
| | | result.setGoodsList(daTaoKeGoodsDetailV2Service.listByMaxPrice(Integer.parseInt(cid),
|
| | | new BigDecimal("10"),null, page, pageSize));
|
| | | result.setTotalCount(
|
| | | daTaoKeGoodsDetailV2Service.countByMaxPrice(Integer.parseInt(cid), new BigDecimal("10")));
|
| | | }
|
| | | }
|
| | |
|
| | | List<TaoBaoGoodsBrief> goodsList = new ArrayList<>();
|
| | |
| | |
|
| | | @Async
|
| | | private void updateGoods(Long id) {
|
| | | DaTaoKeDetailV2 v2 = DaTaoKeApiUtil.getGoodsDetail(id);
|
| | | // TODO暂时关闭服务
|
| | | DaTaoKeDetailV2 v2 = null;// DaTaoKeApiUtil.getGoodsDetail(id);
|
| | | if (v2 != null)
|
| | | daTaoKeGoodsDetailV2Dao.save(v2);
|
| | | }
|
| | |
| | | idList.add(td.getId());
|
| | | List<DaTaoKeDetailV2> finalList = listByIds(idList);
|
| | | if (finalList.size() != idList.size()) {
|
| | | for (Long id : idList)
|
| | | updateGoods(id);
|
| | | for (Long id : idList) {
|
| | | // updateGoods(id);
|
| | | // TODO 不能异步调用
|
| | | }
|
| | | finalList = listByIds(idList);
|
| | | }
|
| | |
|
| | |
| | | return dateList;
|
| | | }
|
| | |
|
| | | @Override
|
| | | public List<DaTaoKeDetailV2> listByMaxPrice(Integer cid, BigDecimal maxPrice,String sortName, int page, int count) {
|
| | |
|
| | | return daTaoKeGoodsDetailV2Dao.listByMaxPrice(cid, maxPrice,sortName, (page - 1) * count, count);
|
| | | }
|
| | |
|
| | | @Override
|
| | | public int countByMaxPrice(Integer cid, BigDecimal maxPrice) {
|
| | | return (int) daTaoKeGoodsDetailV2Dao.countByMaxPrice(cid, maxPrice);
|
| | | }
|
| | |
|
| | | }
|
| | |
| | | import java.util.Date;
|
| | | import java.util.List;
|
| | |
|
| | | import com.yeshi.fanli.dao.goods.taobao.dataoke.DaTaoKeGoodsDetailV2Dao;
|
| | | import com.yeshi.fanli.dto.dataoke.DingDongQiangDTO;
|
| | | import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
|
| | | import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2;
|
| | |
| | | public List<DaTaoKeDetailV2> getDingDongQiangData(String time);
|
| | |
|
| | |
|
| | | public List<DaTaoKeDetailV2> listByMaxPrice(Integer cid,BigDecimal maxPrice,String sortName, int page,int count);
|
| | | |
| | | public int countByMaxPrice(Integer cid,BigDecimal maxPrice);
|
| | | |
| | | |
| | |
|
| | | }
|
| | |
| | | package com.yeshi.fanli.util.dataoke;
|
| | |
|
| | | import java.io.IOException;
|
| | | import java.io.UnsupportedEncodingException;
|
| | | import java.math.BigDecimal;
|
| | | import java.net.URLEncoder;
|
| | | import java.util.ArrayList;
|
| | | import java.util.Date;
|
| | | import java.util.HashMap;
|
| | |
| | | return null;
|
| | | }
|
| | |
|
| | | private static String requestGet(String url, Map<String, String> params) {
|
| | | Iterator<String> keys = params.keySet().iterator();
|
| | | url += "?";
|
| | | while (keys.hasNext()) {
|
| | | String key = keys.next();
|
| | | try {
|
| | | url += String.format("%s=%s&", key, URLEncoder.encode(params.get(key), "UTF-8"));
|
| | | } catch (UnsupportedEncodingException e) {
|
| | | e.printStackTrace();
|
| | | }
|
| | | }
|
| | | return HttpUtil.get(url, 10000);
|
| | | }
|
| | |
|
| | | public static DaTaoKeGoodsResult search(String key, List<Integer> cidList, BigDecimal priceLowerLimit,
|
| | | BigDecimal priceUpperLimit, int page, int pageSize, Integer sort) {
|
| | |
|
| | |
| | | if (sort != null)
|
| | | params.put("sort", sort + "");
|
| | | params.put("sign", getSign(params, app.getAppSecret()));
|
| | | String result = HttpUtil.get("https://openapi.dataoke.com/api/goods/get-dtk-search-goods", params,
|
| | | new HashMap<>());
|
| | | String result = requestGet("https://openapi.dataoke.com/api/goods/get-dtk-search-goods", params);
|
| | |
|
| | | JSONObject json = JSONObject.fromObject(result);
|
| | | JSONObject dataJson = json.optJSONObject("data");
|