fanli/src/main/java/com/yeshi/fanli/controller/client/v1/GoodsClassController.java
@@ -444,22 +444,41 @@ searchfilter.setMaterialId("6707"); taoKeGoodsService.setSearchFilter(searchfilter, filter, order, startprice, endprice, fastFilter, totalSales); JSONObject result = taoKeGoodsService.searchWuLiao(searchfilter); long count = result.optLong("count"); JSONArray resultArray = result.getJSONArray("result"); TaoBaoSearchResult searchResult = TaoKeApiUtil.searchWuLiao(searchfilter); long count = searchResult.getPageEntity().getTotalCount(); JSONObject result = new JSONObject(); BigDecimal rate = hongBaoManageService.getFanLiRate(); List<TaoBaoGoodsBrief> resultGoodsList = searchResult.getTaoBaoGoodsBriefs(); // 查询是否超过了最大的商品数 if (resultArray == null || resultArray.size() < 20) { if ((resultGoodsList == null || resultGoodsList.size() < 20) && !StringUtil.isNullOrEmpty(goodsSubClass.getKey())) { if (resultGoodsList == null) resultGoodsList = new ArrayList<>(); // 需要根据关键字查询 searchfilter.setCateIds(null); searchfilter.setPage((int) (count % 20 == 0 ? count / 20 - 1 : count / 20)); searchfilter.setPageSize(20); searchfilter.setKey(goodsSubClass.getKey()); result = taoKeGoodsService.searchWuLiao(searchfilter); if (resultArray != null) result.optJSONArray("result").addAll(0, resultArray); result.put("count", result.optLong("count") + count); TaoBaoSearchResult searchResult2 = TaoKeApiUtil.searchWuLiao(searchfilter); if (searchResult2 != null) { List<TaoBaoGoodsBrief> resultListTemp = searchResult2.getTaoBaoGoodsBriefs(); if (resultListTemp != null) resultGoodsList.addAll(resultListTemp); } } JSONArray array = new JSONArray(); Gson gson2 = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()) .excludeFieldsWithoutExposeAnnotation().create(); if (resultGoodsList != null) for (TaoBaoGoodsBrief goods : resultGoodsList) { array.add(gson2.toJson(TaoBaoUtil.getTaoBaoGoodsBriefExtra(goods, rate + "", null))); } result.put("result", array); result.put("count", result.optLong("count") + count); out.print(JsonUtil.loadTrueResult(result)); return; } else { fanli/src/main/java/com/yeshi/fanli/controller/client/v1/RecommendController.java
@@ -2033,6 +2033,8 @@ redisManager.saveCommonTaoToken(tb.getAuctionId(), token); } } // 测试 if (!Constant.IS_TEST) tb.setCouponLinkTaoToken(token); // 服务端转链 @@ -2049,6 +2051,9 @@ couponInfo.put("couponTime", "使用期限:" + tb.getCouponEffectiveStartTime().replace("-", ".") + "-" + tb.getCouponEffectiveEndTime().replace("-", ".")); // 券的口令 // 测试 if (!Constant.IS_TEST) couponInfo.put("couponToken", token); goodsJson.put("couponInfo", couponInfo); fanli/src/main/java/com/yeshi/fanli/controller/client/v1/SearchController.java
@@ -482,7 +482,7 @@ listRecommendWords = new ArrayList<String>(); } List<TaoBaoShopVO> listShop = taoBaoShopService.getShopByKey(kw); List<TaoBaoShopVO> listShop =null; //taoBaoShopService.getShopByKey(kw); if (listShop != null && listShop.size() > 0 && listShop.get(0).getListGoods() != null && listShop.get(0).getListGoods().size() > 2) { data.put("shop", JsonUtil.getApiCommonGson().toJson(listShop.get(0))); fanli/src/main/java/com/yeshi/fanli/controller/client/v2/GoodsClassControllerV2.java
fanli/src/main/java/com/yeshi/fanli/controller/h5/H5RecommendController.java
@@ -10,6 +10,7 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.yeshi.utils.HttpUtil; import org.yeshi.utils.JsonUtil; import org.yeshi.utils.taobao.TbImgUtil; @@ -143,6 +144,63 @@ } /** * 处理条件 * * @param uid * @param tid * @param out */ private void doTaoLiJin(String callback, Long uid, Long tid, PrintWriter out) { String tljLink = ""; Long auctionId = null; BigDecimal tljMoney=null; TaoBaoGoodsBrief goods = null; try { goods = redisManager.getTaoBaoGoodsBrief(auctionId); } catch (TaobaoGoodsDownException e) { } if (goods == null) {// 已经下线 out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadFalseResult("商品信息获取失败"))); return; } String token = redisManager.getTLJToken(tljLink); if (StringUtil.isNullOrEmpty(token)) { token = TaoKeApiUtil.getTKToken(goods.getPictUrl(), goods.getTitle(), tljLink); } // 券后价 BigDecimal afterCouponPrice = TaoBaoUtil.getAfterUseCouplePrice(goods); TaoBaoLink link = new TaoBaoLink(); link.setTaoToken(token); JSONObject data = new JSONObject(); data.put("title", goods.getTitle()); if (goods.getImgList() == null) goods.setImgList(new ArrayList<>()); goods.getImgList().add(0, TbImgUtil.getTBSizeImg(goods.getPictUrl(), 300)); data.put("imgs", goods.getImgList()); data.put("couponPrice", afterCouponPrice); // 老版本兼容 data.put("quanPrice", afterCouponPrice); data.put("zkPrice", goods.getZkPrice()); data.put("shareContent", "长按复制本段文字,打开【手机淘宝】即可领取【特别优惠券】购买下单,"); data.put("token", link.getTaoToken()); data.put("reservePrice", goods.getReservePrice()); data.put("shopType", goods.getUserType() == 1 ? 2 : 1); if (!StringUtil.isNullOrEmpty(goods.getCouponInfo()) && !"无".equalsIgnoreCase(goods.getCouponInfo())) { data.put("couponAmount", MoneyBigDecimalUtil.getWithNoZera(goods.getCouponAmount())); data.put("coupon", true); } else { data.put("coupon", false); } data.put("tljMoney", tljMoney); out.print(JsonUtil.loadJSONP(callback, JsonUtil.loadTrueResult(data))); } /** * * 方法说明: 获取商品详情 * @@ -155,17 +213,24 @@ @SuppressWarnings("unused") @RequestMapping(value = "getGoodsDetail", method = RequestMethod.GET) public void getGoodsDetail(final AcceptData acceptData, final String id, String uid, String callback, public void getGoodsDetail(final AcceptData acceptData, final String id, Long tid, String uid, String callback, PrintWriter out) { long begin = java.lang.System.currentTimeMillis(); if (StringUtil.isNullOrEmpty(id)) { out.print(JsonUtil.loadFalseResult(1, "请上传id")); return; } if (!StringUtil.isNullOrEmpty(uid)) { uid = AESUtil.decrypt(uid, Constant.UIDAESKEY); } if (tid != null && tid != 0) { doTaoLiJin(callback, StringUtil.isNullOrEmpty(uid) || Long.parseLong(uid) == 0 ? null : Long.parseLong(uid), tid, out); return; } TaoBaoGoodsBrief goods = null; String token = null; if (!StringUtil.isNullOrEmpty(uid)) { fanli/src/main/java/com/yeshi/fanli/entity/bus/help/HelpCenter.java
@@ -1,5 +1,6 @@ package com.yeshi.fanli.entity.bus.help; import java.io.Serializable; import java.util.Date; import org.yeshi.utils.mybatis.Column; @@ -12,7 +13,12 @@ * @date 2018年8月14日 */ @org.yeshi.utils.mybatis.Table("yeshi_ec_help_center") public class HelpCenter { public class HelpCenter implements Serializable{ /** * */ private static final long serialVersionUID = 1L; @Column(name = "h_id") private Long id; fanli/src/main/java/com/yeshi/fanli/entity/bus/help/HelpInfo.java
@@ -1,5 +1,7 @@ package com.yeshi.fanli.entity.bus.help; import java.io.Serializable; import org.springframework.data.annotation.Id; import org.springframework.data.annotation.PersistenceConstructor; import org.springframework.data.mongodb.core.mapping.Document; @@ -11,7 +13,11 @@ * */ @Document(collection = "helpInfo") public class HelpInfo { public class HelpInfo implements Serializable{ /** * */ private static final long serialVersionUID = 1L; @Id private Long id;// 帮助中心ID private String content;// 具体内容 fanli/src/main/java/com/yeshi/fanli/entity/bus/lable/QualityFactory.java
@@ -1,5 +1,6 @@ package com.yeshi.fanli.entity.bus.lable; import java.io.Serializable; import java.util.Date; import org.yeshi.utils.mybatis.Column; @@ -16,8 +17,12 @@ * @date 2018年7月3日 */ @Table("yeshi_ec_quality_factory") public class QualityFactory { public class QualityFactory implements Serializable{ /** * */ private static final long serialVersionUID = 1L; // 人工筛选入库 public final static int MODE_MANUAL = 1; // 系统算法 -自动入库 fanli/src/main/java/com/yeshi/fanli/entity/dynamic/DynamicInfo.java
@@ -1,5 +1,6 @@ package com.yeshi.fanli.entity.dynamic; import java.io.Serializable; import java.util.Date; import java.util.List; @@ -14,9 +15,13 @@ import com.yeshi.fanli.vo.msg.ClientTextStyleVO; @Document(collection = "dynamic_info") public class DynamicInfo { public class DynamicInfo implements Serializable{ /** * */ private static final long serialVersionUID = 1L; // 分享类型 1:单图分享 、2:4图分享、 3:9图分享 、 4:邀请分享 public final static int SHARE_TYPE_ONE = 1; public final static int SHARE_TYPE_FOUR = 2; fanli/src/main/java/com/yeshi/fanli/service/impl/jd/JDOrderProcessServiceImpl.java
@@ -7,6 +7,7 @@ import javax.annotation.Resource; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.yeshi.fanli.dao.mybatis.order.OrderMapper; import com.yeshi.fanli.dao.mybatis.pdd.PDDOrderMapper; @@ -59,6 +60,7 @@ } } @Transactional @Override public void handleFanLiOrder(JDOrder jdOrder) { if (jdOrder != null) { @@ -122,6 +124,7 @@ } } @Transactional @Override public void handleShareOrder(JDOrder jdOrder) { if (jdOrder != null) { fanli/src/main/java/com/yeshi/fanli/service/impl/lable/TaoKeGoodsServiceImpl.java
@@ -269,6 +269,8 @@ return data; } @Override @Cacheable(value = "searchWuLiaoCache", key = "'searchWuLiaoList-'+#sf") fanli/src/main/java/com/yeshi/fanli/service/impl/order/CommonOrderServiceImpl.java
@@ -684,6 +684,7 @@ return commonOrderList; } @Transactional @Override public List<CommonOrder> addJDOrder(JDOrder jdOrder, Long uid) throws CommonOrderException { List<CommonOrder> commonOrderList = new ArrayList<>(); fanli/src/main/java/com/yeshi/fanli/util/RedisManager.java
@@ -510,6 +510,37 @@ } /** * 保存淘礼金的口令 * * @param url * @param token */ public void saveTLJToken(String url, String token) { String key = "taobao-tlj-token-" + StringUtil.Md5(url); if (Constant.IS_OUTNET) { if (!StringUtil.isNullOrEmpty(token)) { // 口令缓存10天 cacheCommonString(key, token, 60 * 60 * 24 * 10); } } } /** * 获取淘礼金口令 * * @param url * @return */ public String getTLJToken(String url) { String key = "taobao-common-token-" + StringUtil.Md5(url); if (Constant.IS_OUTNET) { return getCommonString(key); } return null; } /** * 保存对象 * * @param T fanli/src/main/java/com/yeshi/fanli/util/factory/goods/CommonOrderFactory.java
@@ -89,6 +89,7 @@ commonOrder.setThirdCreateTime(new Date(order.getOrder().getOrderTime())); commonOrder.setUpdateTime(new Date()); commonOrder.setTradeId(order.getTradeId()); commonOrder.setEstimate(order.getEstimateFee()); return commonOrder; } fanli/src/main/java/com/yeshi/fanli/util/jd/JDApiUtil.java
@@ -2,6 +2,7 @@ import java.io.UnsupportedEncodingException; import java.lang.reflect.Type; import java.math.BigDecimal; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Collections; @@ -15,9 +16,13 @@ import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import com.yeshi.fanli.dto.jd.JDCategoryInfo; import com.yeshi.fanli.dto.jd.JDCommissionInfo; import com.yeshi.fanli.dto.jd.JDOrderResult; import com.yeshi.fanli.dto.jd.JDShopInfo; import com.yeshi.fanli.entity.jd.JDGoods; import com.yeshi.fanli.entity.jd.JDOrder; import com.yeshi.fanli.util.MoneyBigDecimalUtil; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.TimeUtil; @@ -132,7 +137,7 @@ JSONArray array = resultJson.optJSONArray("data"); if (array != null) for (int i = 0; i < array.size(); i++) { JDGoods goods = parseJDGoods(array.optJSONObject(i)); JDGoods goods = parseSimpleJDGoods(array.optJSONObject(i)); if (goods != null) list.add(goods); } @@ -140,27 +145,46 @@ return list; } private static JDGoods parseJDGoods(JSONObject json) { private static JDGoods parseSimpleJDGoods(JSONObject json) { JDGoods goods = new JDGoods(); // goods.setBrandCode(brandCode); // goods.setBrandName(brandName); // goods.setCategoryInfo(categoryInfo); // goods.setComments(comments); // goods.setCommissionInfo(commissionInfo); // goods.setCouponInfo(couponInfo); // goods.setGoodCommentsShare(goodCommentsShare); // goods.setImageList(imageList); // goods.setInOrderCount30Days(inOrderCount30Days); // goods.setIsHot(isHot); // goods.setMaterialUrl(materialUrl); // goods.setOwner(owner); // goods.setPinGouInfo(pinGouInfo); // goods.setPrice(price); // goods.setShopInfo(shopInfo); // goods.setSkuId(skuId); // goods.setSkuName(skuName); // goods.setSpuid(spuid); // goods.setTotalCount(totalCount); JDCategoryInfo categoryInfo = new JDCategoryInfo(); categoryInfo.setCid1(json.optLong("cid1")); categoryInfo.setCid1Name(json.optString("cid1Name")); categoryInfo.setCid2(json.optLong("cid2")); categoryInfo.setCid2Name(json.optString("cid2Name")); categoryInfo.setCid3(json.optLong("cid3")); categoryInfo.setCid3Name(json.optString("cid3Name")); goods.setCategoryInfo(categoryInfo); goods.setComments(null); goods.setPrice(StringUtil.isNullOrEmpty(json.optString("wlUnitPrice")) ? new BigDecimal(json.optString("unitPrice")) : new BigDecimal(json.optString("wlUnitPrice"))); JDCommissionInfo commissionInfo = new JDCommissionInfo(); commissionInfo.setCommissionShare(new BigDecimal(json.optString("commisionRatioWl"))); commissionInfo.setCommission(MoneyBigDecimalUtil .div(goods.getPrice().multiply(commissionInfo.getCommissionShare()), new BigDecimal(100))); goods.setCommissionInfo(commissionInfo); goods.setCouponInfo(null); goods.setGoodCommentsShare(null); List<String> imageList = new ArrayList<>(); imageList.add(json.optString("imgUrl")); goods.setImageList(imageList); goods.setInOrderCount30Days(0L); goods.setIsHot(null); goods.setMaterialUrl(json.optString("materialUrl")); goods.setOwner(null); goods.setPinGouInfo(null); JDShopInfo shopInfo = new JDShopInfo(); shopInfo.setShopId(json.optInt("shopId")); shopInfo.setShopName(null); goods.setShopInfo(shopInfo); goods.setSkuId(json.optLong("skuId")); goods.setSkuName(json.optString("goodsName")); goods.setTotalCount(null); return goods; } fanli/src/main/java/com/yeshi/fanli/vo/goods/GoodsSubClassLabelVO.java
@@ -1,12 +1,17 @@ package com.yeshi.fanli.vo.goods; import java.io.Serializable; import java.util.List; import com.google.gson.annotations.Expose; import com.yeshi.fanli.entity.bus.clazz.GoodsSubClass; import com.yeshi.fanli.entity.bus.clazz.GoodsSubClassLabel; public class GoodsSubClassLabelVO extends GoodsSubClassLabel { public class GoodsSubClassLabelVO extends GoodsSubClassLabel implements Serializable { /** * */ private static final long serialVersionUID = 1L; @Expose private List<GoodsSubClass> listSub; utils/src/main/java/org/yeshi/utils/HttpUtil.java
@@ -41,6 +41,8 @@ import org.yeshi.utils.entity.ProxyIP; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import sun.rmi.log.LogHandler; public class HttpUtil { @@ -55,12 +57,58 @@ } public static String getShortLink(String url) { String totalUrl = String.format("http://api.t.sina.com.cn/short_url/shorten.json?source=3271760578&url_long=%s", String shortLink = getShortLink2(url); if (StringUtil.isNullOrEmpty(shortLink)) shortLink = getShortLink3(url); if (StringUtil.isNullOrEmpty(shortLink)) shortLink = getShortLink1(url); return shortLink; } private static String getShortLink1(String url) { try { String totalUrl = String.format("http://api.suolink.cn/api.php?url=%s", URLEncoder.encode(url)); String result = get(totalUrl, null); if (!StringUtil.isNullOrEmpty(result) && result.startsWith("http")) return result.trim(); } catch (Exception e) { return url; } return null; } private static String getShortLink2(String url) { try { String totalUrl = String.format( "https://api.weibo.com/2/short_url/shorten.json?source=3403499693&url_long=%s", URLEncoder.encode(url)); String result = get(totalUrl, null); JSONArray rtesultArray = JSONArray.fromObject(result); if (rtesultArray.size() > 0) { return rtesultArray.optJSONObject(0).optString("url_short"); JSONObject data = JSONObject.fromObject(result); JSONArray array = data.optJSONArray("urls"); data = array.optJSONObject(0); String shortUrl = data.optString("url_short"); if (!StringUtil.isNullOrEmpty(shortUrl)) return shortUrl; } catch (Exception e) { e.printStackTrace(); } return null; } private static String getShortLink3(String url) { try { String totalUrl = String.format( "https://api.weibo.com/2/short_url/shorten.json?source=2963429064&url_long=%s", URLEncoder.encode(url)); String result = get(totalUrl, null); JSONObject data = JSONObject.fromObject(result); JSONArray array = data.optJSONArray("urls"); data = array.optJSONObject(0); String shortUrl = data.optString("url_short"); if (!StringUtil.isNullOrEmpty(shortUrl)) return shortUrl; } catch (Exception e) { e.printStackTrace(); } return null; }