fanli/src/main/java/com/yeshi/fanli/dto/vip/VIPSearchFilter.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
fanli/src/main/java/com/yeshi/fanli/dto/vip/goods/VIPGoodsInfo.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
fanli/src/main/java/com/yeshi/fanli/entity/goods/CommonGoods.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
fanli/src/main/java/com/yeshi/fanli/service/manger/ClipboardAnalysisManager.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
fanli/src/main/java/com/yeshi/fanli/util/Constant.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
fanli/src/main/java/com/yeshi/fanli/util/factory/CommonGoodsFactory.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
fanli/src/main/java/com/yeshi/fanli/util/factory/goods/GoodsDetailVOFactory.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
fanli/src/main/java/com/yeshi/fanli/util/vipshop/VipShopApiUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
fanli/src/main/java/com/yeshi/fanli/util/vipshop/VipShopUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
fanli/src/main/java/com/yeshi/fanli/dto/vip/VIPSearchFilter.java
New file @@ -0,0 +1,82 @@ package com.yeshi.fanli.dto.vip; /** * 订单搜索 * @author Administrator * */ public class VIPSearchFilter { private String keyword;// 搜索关键词 private String fieldName;// 排序字段: price-价格 discount-折扣 private Integer order;// 0-正序 1-逆序 private Integer page;// 页码 private Integer pageSize;// 每页大小 private String requestId;// 请求ID private String priceStart;// 起始价格 private String priceEnd;// 结束价格 public String getKeyword() { return keyword; } public void setKeyword(String keyword) { this.keyword = keyword; } public String getFieldName() { return fieldName; } public void setFieldName(String fieldName) { this.fieldName = fieldName; } public Integer getOrder() { return order; } public void setOrder(Integer order) { this.order = order; } public Integer getPage() { return page; } public void setPage(Integer page) { this.page = page; } public Integer getPageSize() { return pageSize; } public void setPageSize(Integer pageSize) { this.pageSize = pageSize; } public String getRequestId() { return requestId; } public void setRequestId(String requestId) { this.requestId = requestId; } public String getPriceStart() { return priceStart; } public void setPriceStart(String priceStart) { this.priceStart = priceStart; } public String getPriceEnd() { return priceEnd; } public void setPriceEnd(String priceEnd) { this.priceEnd = priceEnd; } } fanli/src/main/java/com/yeshi/fanli/dto/vip/goods/VIPGoodsInfo.java
@@ -41,6 +41,17 @@ private VIPStoreServiceCapability storeServiceCapability;// 商品所属店铺服务能力评价:预留字段 private Long brandId;// 商品所属档期(专场)id private Long schemeStartTime;// 商品所属推广方案开始时间:时间戳,单位:毫秒 private Integer status;//状态 0-下架 1-上架 public Integer getStatus() { return status; } public void setStatus(Integer status) { this.status = status; } public String getGoodsId() { return goodsId; fanli/src/main/java/com/yeshi/fanli/entity/goods/CommonGoods.java
@@ -11,12 +11,16 @@ public static int GOODS_TYPE_TB = 1;// 淘宝天猫 public static int GOODS_TYPE_JD = 2;// 京东 public static int GOODS_TYPE_PDD = 3;// 拼多多 public static int GOODS_TYPE_VIP = 4;// 唯品会 public static int GOODS_TYPE_SUNING = 5;// 苏宁 public static int SHOP_TYPE_TB = 1;// 淘宝 public static int SHOP_TYPE_TM = 2;// 天猫 public static int SHOP_TYPE_JD = 20;// 京东 public static int SHOP_TYPE_JD_SELF = 21;// 京东自营 public static int SHOP_TYPE_PDD = 30;// 拼多多 public static int SHOP_TYPE_VIP = 40;//唯品会自营 public static int STATE_NORMAL = 0;// 正常 public static int STATE_OFFLINE = 1;// 下线 @@ -67,7 +71,7 @@ private String otherInfo; // 商品其他信息-json字符串 @Column(name = "cg_category_info") private String categoryInfo; // 商品分类信息 @Column(name = "cg_createtime") private Date createTime; @Column(name = "cg_updatetime") @@ -279,5 +283,5 @@ public void setCategoryInfo(String categoryInfo) { this.categoryInfo = categoryInfo; } } fanli/src/main/java/com/yeshi/fanli/service/manger/ClipboardAnalysisManager.java
@@ -205,7 +205,6 @@ link = urlList.get(0); else// 第一个口令在第一个链接前面 token = tokenList.get(0); } else if (typeSet.contains(ClipboardContentType.link) && typeSet.contains(ClipboardContentType.text)) {// 链接+文本 link = urlList.get(0); @@ -216,7 +215,17 @@ if (!StringUtil.isNullOrEmpty(link)) { CommonGoods goods = parseLink(urlList.get(0)); if (goods == null || goods.getGoodsId() == null) { if (urlList.size() > 1) if (tokenList.size() == 0 && urlList.size() == 2 && urlList.get(0).indexOf("://uland.taobao.com") > -1 && urlList.get(1).indexOf("?id=") > -1) {// 有2个链接的文案,第一个是店铺券链接,其中二个是淘宝商品详情 CommonGoods goods1 = parseLink(urlList.get(1)); if (goods1 != null && goods1.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) { resultListener.onResult(goods1); } else { resultListener.onResult(new GoodsDocParseResultVO(text, urlList.get(0))); } } else if (urlList.size() > 1) resultListener.onResult(new GoodsDocParseResultVO(text, urlList.get(0))); else {// 单链接 // 判断是否包含可转链的链接 @@ -469,7 +478,7 @@ tb = TaoBaoUtil.parsePhoneShareUrlByTM(link); if (tb != null) auctionId = tb.getAuctionId() + ""; } else if (link.contains("h5.m.taobao") || link.contains("detail.m.tmall")|| link.contains("item.taobao") } else if (link.contains("h5.m.taobao") || link.contains("detail.m.tmall") || link.contains("item.taobao") || link.contains("detail.tmall")) { // 手机页面和电脑页面 Map<String, String> map = Utils.parseURL(link); String id = ""; fanli/src/main/java/com/yeshi/fanli/util/Constant.java
@@ -108,7 +108,7 @@ // 来源-拼多多 public static final int SOURCE_TYPE_PDD = 3; // 来源-唯品会 public static final int SOURCE_TYPE_WPH = 4; public static final int SOURCE_TYPE_VIP = 4; // 来源-苏宁 public static final int SOURCE_TYPE_SUNING = 5; // 来源-饿了么 @@ -332,7 +332,7 @@ return "京东"; case SOURCE_TYPE_PDD: return "拼多多"; case SOURCE_TYPE_WPH: case SOURCE_TYPE_VIP: return "唯品会"; case SOURCE_TYPE_SUNING: return "苏宁"; fanli/src/main/java/com/yeshi/fanli/util/factory/CommonGoodsFactory.java
@@ -10,6 +10,7 @@ import com.yeshi.fanli.dto.jd.JDCouponInfo; import com.yeshi.fanli.dto.jd.JDShopInfo; import com.yeshi.fanli.dto.pdd.PDDGoodsDetail; import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo; import com.yeshi.fanli.entity.goods.CommonGoods; import com.yeshi.fanli.entity.jd.JDGoods; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; @@ -55,8 +56,7 @@ cg.setVideoUrl(null); cg.setState(goods.getState()); cg.setMaterialLibType(goods.getMaterialLibType()); // 分类信息 CategoryInfoDTO categoryInfo = new CategoryInfoDTO(); Integer rootCatId = goods.getRootCatId(); @@ -64,18 +64,17 @@ categoryInfo.setCid1(Long.parseLong(rootCatId.toString())); } categoryInfo.setCid1Name(goods.getRootCategoryName()); Integer leafCatId = goods.getLeafCatId(); if (leafCatId != null) { categoryInfo.setCid2(Long.parseLong(leafCatId.toString())); } categoryInfo.setCid2Name(goods.getLeafName()); cg.setCategoryInfo(JSONObject.toJSON(categoryInfo).toString()); return cg; } /** * 淘宝商品构造 * @@ -103,44 +102,43 @@ cg.setCouponLeftCount(1); cg.setCouponTotalCount(1); } JDCommissionInfo commissionInfo = goods.getCommissionInfo(); if (commissionInfo != null) { cg.setRate(commissionInfo.getCommissionShare()); } else { cg.setRate(new BigDecimal(0)); } JDShopInfo shopInfo = goods.getShopInfo(); if (shopInfo != null) { cg.setSellerId(Long.parseLong(shopInfo.getShopId().toString())); cg.setSellerName(shopInfo.getShopName()== null? "" : shopInfo.getShopName()); cg.setSellerName(shopInfo.getShopName() == null ? "" : shopInfo.getShopName()); } cg.setGoodsId(goods.getSkuId()); cg.setTitle(goods.getSkuName()); cg.setGoodsType(CommonGoods.GOODS_TYPE_JD); cg.setPicture(goods.getPicUrl()); cg.setPrice(goods.getPrice()); cg.setSales(Integer.parseInt(goods.getInOrderCount30Days().toString())); String owner = goods.getOwner(); if (StringUtil.isNullOrEmpty(owner) && "g".equalsIgnoreCase(owner)) { cg.setShopType(CommonGoods.SHOP_TYPE_JD_SELF); // 京东自营 } else { cg.setShopType(CommonGoods.SHOP_TYPE_JD); // 京东 } cg.setState(CommonGoods.STATE_NORMAL); // 其他信息 GoodsOtherInfoDTO other = new GoodsOtherInfoDTO(); other.setOwner(owner); // 是否自营 other.setPinGouInfo( goods.getPinGouInfo()); // 拼购信息 other.setPinGouInfo(goods.getPinGouInfo()); // 拼购信息 other.setIsFreeShipping(goods.getIsFreeShipping()); // 是否包邮 cg.setOtherInfo(JSONObject.toJSON(other).toString()); // 分类信息 JDCategoryInfo categoryJD = goods.getCategoryInfo(); if (categoryJD != null) { @@ -153,14 +151,13 @@ categoryInfo.setCid3Name(categoryJD.getCid3Name()); cg.setCategoryInfo(JSONObject.toJSON(categoryInfo).toString()); } // 保留字段 cg.setVideoCover(null); cg.setVideoUrl(null); return cg; } public static CommonGoods create(PDDGoodsDetail goods) { if (goods == null) return null; @@ -193,7 +190,7 @@ cg.setPicture(goods.getGoodsThumbnailUrl()); cg.setPictureWhite(null); cg.setPrice(MoneyBigDecimalUtil.div(new BigDecimal(goods.getMinGroupPrice()), new BigDecimal(100))); String salesTip = goods.getSalesTip(); if (StringUtil.isNullOrEmpty(salesTip)) { salesTip = "0"; @@ -203,11 +200,11 @@ salesTip = salesTip.substring(0, indexOf); } } int totalSales = 0; if (salesTip.contains("万")) { salesTip = salesTip.substring(0, salesTip.indexOf("万")); totalSales= (int) (Float.parseFloat(salesTip) * 10000); totalSales = (int) (Float.parseFloat(salesTip) * 10000); } else { totalSales = Integer.parseInt(salesTip); } @@ -223,14 +220,55 @@ cg.setVideoUrl(null); cg.setState(goods.getState()); cg.setMaterialLibType(1); // 分类信息 CategoryInfoDTO categoryInfo = new CategoryInfoDTO(); categoryInfo.setCid1(goods.getCategoryId()); categoryInfo.setCid1Name(goods.getCategoryName()); cg.setCategoryInfo(JSONObject.toJSON(categoryInfo).toString()); return cg; } public static CommonGoods create(VIPGoodsInfo goods) { if (goods == null) return null; CommonGoods cg = new CommonGoods(); // 折扣信息 cg.setCouponInfo(new BigDecimal(goods.getDiscount()) + ""); cg.setCouponLeftCount(0); cg.setCouponStartPrice(new BigDecimal(0)); cg.setCouponAmount(new BigDecimal(0)); cg.setCouponTotalCount(0); cg.setGoodsId(Long.parseLong(goods.getGoodsId())); cg.setGoodsType(CommonGoods.GOODS_TYPE_PDD); cg.setPicture(goods.getGoodsThumbUrl()); cg.setPictureWhite(null); cg.setPrice(new BigDecimal(goods.getMarketPrice())); int totalSales = 0; cg.setSales(totalSales); cg.setRate(new BigDecimal(goods.getCommissionRate())); cg.setSellerId(goods.getBrandId()); cg.setSellerName(goods.getBrandName()); cg.setShopType(CommonGoods.SHOP_TYPE_PDD); cg.setState(CommonGoods.STATE_NORMAL); cg.setTitle(goods.getGoodsName()); // 保留字段 cg.setVideoCover(null); cg.setVideoUrl(null); cg.setState(goods.getStatus() == 1 ? CommonGoods.STATE_NORMAL : CommonGoods.STATE_OFFLINE); cg.setMaterialLibType(1); // 分类信息 CategoryInfoDTO categoryInfo = new CategoryInfoDTO(); categoryInfo.setCid1(goods.getCategoryId()); categoryInfo.setCid1Name(goods.getCategoryName()); cg.setCategoryInfo(JSONObject.toJSON(categoryInfo).toString()); return cg; } fanli/src/main/java/com/yeshi/fanli/util/factory/goods/GoodsDetailVOFactory.java
@@ -17,6 +17,7 @@ import com.yeshi.fanli.dto.jd.JDPingouInfo; import com.yeshi.fanli.dto.jd.JDShopInfo; import com.yeshi.fanli.dto.pdd.PDDGoodsDetail; import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo; import com.yeshi.fanli.entity.goods.CommonGoods; import com.yeshi.fanli.entity.jd.JDGoods; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; @@ -32,6 +33,7 @@ import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil; import com.yeshi.fanli.util.taobao.TaoBaoCouponUtil; import com.yeshi.fanli.util.taobao.TaoBaoUtil; import com.yeshi.fanli.util.vipshop.VipShopUtil; import com.yeshi.fanli.vo.goods.CouponInfoVO; import com.yeshi.fanli.vo.goods.GoodsDetailVO; import com.yeshi.fanli.vo.goods.MoneyInfoVO; @@ -870,4 +872,78 @@ return goodsInfo; } public static GoodsDetailVO convertVIPGoods(VIPGoodsInfo goods, ConfigParamsDTO params) { GoodsDetailVO goodsInfo = new GoodsDetailVO(); goodsInfo.setBaoyou(true); goodsInfo.setGoodsType(Constant.SOURCE_TYPE_VIP); goodsInfo.setGoodsId(Long.parseLong(goods.getGoodsId())); goodsInfo.setTitle(goods.getGoodsName()); goodsInfo.setSalesType(5); // 无销量 goodsInfo.setPriceName("拼团价"); goodsInfo.setPicUrl(goods.getGoodsThumbUrl()); // 缩略图 goodsInfo.setZkPrice(MoneyBigDecimalUtil.getWithNoZera(new BigDecimal(goods.getVipPrice()))); goodsInfo.setShopType(CommonGoods.SHOP_TYPE_VIP); goodsInfo.setImgList(goods.getGoodsDetailPictures()); Integer state = goods.getStatus(); if (state == null) { goodsInfo.setState(0); } else { goodsInfo.setState(goods.getStatus() == 1 ? CommonGoods.STATE_OFFLINE : CommonGoods.STATE_NORMAL); } goodsInfo.setSalesCount(""); // 资金信息 MoneyInfoVO moneyInfoVO = new MoneyInfoVO(); moneyInfoVO.setMoneyType(1); // 默认显示:返 ¥6.6 BigDecimal commission = VipShopUtil.getGoodsFanLiMoney(goods, params.getFanLiRate()); moneyInfoVO.setFanliMoney("¥" + commission); moneyInfoVO.setShareMoney("¥" + commission); BigDecimal baseCommisstion = null; if (params.getBaseFanliRate() != null) baseCommisstion = VipShopUtil.getGoodsFanLiMoney(goods, params.getBaseFanliRate()); if (params.getMaxRewardRate() != null) moneyInfoVO .setMaxMoney("¥" + commission.add(MoneyBigDecimalUtil.mul(commission, params.getMaxRewardRate()))); else { BigDecimal price = new BigDecimal(goods.getVipPrice()); BigDecimal rate = MoneyBigDecimalUtil.div(commission.multiply(new BigDecimal(100)), price); moneyInfoVO.setRateInfo("返利比 " + rate + "%"); BigDecimal maxCommission = VipShopUtil.getGoodsFanLiMoney(goods, params.getVipFanLiRate()); BigDecimal maxRate = MoneyBigDecimalUtil.div(maxCommission.multiply(new BigDecimal(100)), price); moneyInfoVO.setMaxRateInfo("返利比 " + maxRate + "%"); moneyInfoVO.setMaxMoney("¥" + maxCommission); if (baseCommisstion != null) { String desc = String.format("佣金¥ %s+平台补贴¥ %s", baseCommisstion.setScale(2).toString(), commission.subtract(baseCommisstion).setScale(2).toString()); String maxDesc = String.format("佣金¥ %s+平台补贴¥ %s", baseCommisstion.setScale(2).toString(), maxCommission.subtract(baseCommisstion).setScale(2).toString()); moneyInfoVO.setCompositionInfo(desc); moneyInfoVO.setMaxCompositionInfo(maxDesc); } } goodsInfo.setMoneyInfo(moneyInfoVO); // 店铺信息 String mallName = goods.getBrandName(); if (!StringUtil.isMobile(mallName)) { ShopInfoVO shop = new ShopInfoVO(); shop.setShopName(mallName); if (goods.getBrandId() != null) { shop.setId(goods.getBrandId().toString()); } shop.setUserType(30); goodsInfo.setShopInfo(shop); } return goodsInfo; } } fanli/src/main/java/com/yeshi/fanli/util/vipshop/VipShopApiUtil.java
@@ -17,6 +17,7 @@ import org.yeshi.utils.StringUtil; import com.google.gson.Gson; import com.yeshi.fanli.dto.vip.VIPSearchFilter; import com.yeshi.fanli.dto.vip.VIPSearchResult; import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo; @@ -113,14 +114,31 @@ return null; } public static VIPSearchResult search() { /** * 搜索 * @Title: search * @Description: * @param searchFilter * @return * VIPSearchResult 返回类型 * @throws */ public static VIPSearchResult search(VIPSearchFilter searchFilter) { Map<String, String> taskParams = new HashMap<>(); taskParams.put("keyword", "夹克 男士 带帽"); taskParams.put("page", "1"); taskParams.put("pageSize", "20"); taskParams.put("requestId", UUID.randomUUID() + ""); // taskParams.put("priceStart", ""); // taskParams.put("priceEnd", ""); taskParams.put("keyword", searchFilter.getKeyword()); taskParams.put("page", searchFilter.getPage() + ""); taskParams.put("pageSize", searchFilter.getPageSize() + ""); taskParams.put("requestId", System.currentTimeMillis() + "_" + UUID.randomUUID()); if (searchFilter.getPriceStart() != null) taskParams.put("priceStart", searchFilter.getPriceStart()); if (searchFilter.getPriceEnd() != null) taskParams.put("priceEnd", searchFilter.getPriceEnd()); if (searchFilter.getOrder() != null) taskParams.put("order", searchFilter.getOrder() + ""); if (searchFilter.getFieldName() != null) taskParams.put("fieldName", searchFilter.getFieldName() + ""); JSONObject root = new JSONObject(); root.put("request", JSONObject.fromObject(taskParams)); String result = baseRequest("com.vip.adp.api.open.service.UnionGoodsService", "query", root); @@ -153,7 +171,7 @@ goodsIdArray.add(goodsId); taskParams.put("goodsIdList", goodsIdArray); taskParams.put("chanTag", tag); taskParams.put("requestId", UUID.randomUUID() + ""); taskParams.put("requestId", System.currentTimeMillis() + "_" + UUID.randomUUID()); String result = baseRequest("com.vip.adp.api.open.service.UnionUrlService", "genByGoodsId", JSONObject.fromObject(taskParams)); System.out.println(result); fanli/src/main/java/com/yeshi/fanli/util/vipshop/VipShopUtil.java
@@ -1,5 +1,14 @@ package com.yeshi.fanli.util.vipshop; import java.math.BigDecimal; import org.yeshi.utils.BigDecimalUtil; import com.yeshi.fanli.dto.pdd.PDDGoodsDetail; import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo; import com.yeshi.fanli.util.MoneyBigDecimalUtil; import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil; public class VipShopUtil { /** @@ -38,4 +47,11 @@ return tag.split("#")[0]; } public static BigDecimal getGoodsFanLiMoney(VIPGoodsInfo goods, BigDecimal rate) { BigDecimal money = null; BigDecimal hundred = new BigDecimal(100); rate = MoneyBigDecimalUtil.div(rate, hundred); money = MoneyBigDecimalUtil.mul(new BigDecimal(goods.getCommission()), rate); return BigDecimalUtil.getWithNoZera(money).setScale(2); } }