From f4a0f2acc63d7785eab108419a4e16f5f688cb95 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期六, 18 一月 2020 12:06:27 +0800
Subject: [PATCH] 用户注册信息

---
 fanli/src/main/java/com/yeshi/fanli/util/factory/goods/GoodsDetailVOFactory.java |  577 ++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 448 insertions(+), 129 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/util/factory/goods/GoodsDetailVOFactory.java b/fanli/src/main/java/com/yeshi/fanli/util/factory/goods/GoodsDetailVOFactory.java
index 0689c9b..c519bd8 100644
--- a/fanli/src/main/java/com/yeshi/fanli/util/factory/goods/GoodsDetailVOFactory.java
+++ b/fanli/src/main/java/com/yeshi/fanli/util/factory/goods/GoodsDetailVOFactory.java
@@ -4,12 +4,20 @@
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
 import java.util.Date;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import org.yeshi.utils.taobao.TbImgUtil;
 
+import com.yeshi.fanli.dto.ConfigParamsDTO;
+import com.yeshi.fanli.dto.common.GoodsOtherInfoDTO;
 import com.yeshi.fanli.dto.jd.JDCouponInfo;
+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.entity.goods.CommonGoods;
 import com.yeshi.fanli.entity.jd.JDGoods;
@@ -21,7 +29,9 @@
 import com.yeshi.fanli.util.Constant;
 import com.yeshi.fanli.util.MoneyBigDecimalUtil;
 import com.yeshi.fanli.util.StringUtil;
+import com.yeshi.fanli.util.TimeUtil;
 import com.yeshi.fanli.util.jd.JDUtil;
+import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil;
 import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil;
 import com.yeshi.fanli.util.taobao.TaoBaoCouponUtil;
 import com.yeshi.fanli.util.taobao.TaoBaoUtil;
@@ -29,6 +39,9 @@
 import com.yeshi.fanli.vo.goods.GoodsDetailVO;
 import com.yeshi.fanli.vo.goods.MoneyInfoVO;
 import com.yeshi.fanli.vo.goods.ShopInfoVO;
+import com.yeshi.fanli.vo.msg.ClientTextStyleVO;
+
+import net.sf.json.JSONObject;
 
 /**
  * 鍟嗗搧鍔犲伐
@@ -41,42 +54,99 @@
 	/**
 	 * 娣樺疂鍟嗗搧缁勭粐
 	 * 
-	 * @param goods     娣樺疂鍟嗗搧
+	 * @param goods
+	 *            娣樺疂鍟嗗搧
 	 * @param pid
-	 * @param fanLiRate 杩斿埄姣斾緥
+	 * @param fanLiRate
+	 *            杩斿埄姣斾緥
 	 * @return
 	 */
-	public static GoodsDetailVO convertCommonGoods(CommonGoods goods, String pid, BigDecimal fanLiRate,
-			BigDecimal shareRate) {
+	public static GoodsDetailVO convertCommonGoods(CommonGoods goods, ConfigParamsDTO params) {
 		GoodsDetailVO goodsInfo = new GoodsDetailVO();
 		goodsInfo.setGoodsId(goods.getGoodsId());
 		goodsInfo.setTitle(goods.getTitle());
-		
+
 		Integer shopType = goods.getShopType();
-		if (shopType == null) { 
+		if (shopType == null) {
 			goodsInfo.setShopType(10); // 娣樺疂
-	    } else if (shopType == 1) {
+			goodsInfo.setPriceName("娣樺疂浠�");
+		} else if (shopType == 1) {
 			goodsInfo.setShopType(10); // 娣樺疂
+			goodsInfo.setPriceName("娣樺疂浠�");
 		} else if (shopType == 2) {
 			goodsInfo.setShopType(11); // 澶╃尗
+			goodsInfo.setPriceName("澶╃尗浠�");
 		} else {
 			goodsInfo.setShopType(goods.getShopType());
 		}
-		
+
 		Integer goodsType = goods.getGoodsType();
 		if (goodsType == null) {
 			goodsType = Constant.SOURCE_TYPE_TAOBAO;
 		}
-		
-		if (goodsType == Constant.SOURCE_TYPE_PDD) {
+
+		GoodsOtherInfoDTO otherDTO = null;
+		String otherInfo = goods.getOtherInfo();
+		if (!StringUtil.isNullOrEmpty(otherInfo)) {
+			JSONObject json = JSONObject.fromObject(otherInfo);
+			otherDTO = (GoodsOtherInfoDTO) JSONObject.toBean(json, GoodsOtherInfoDTO.class);
+		}
+
+		if (goodsType == Constant.SOURCE_TYPE_JD) {
+			// 鏈堥攢閲�
+			goodsInfo.setSalesType(1);
+
+			Integer isFreeShipping = otherDTO.getIsFreeShipping();
+			if (isFreeShipping != null && isFreeShipping == 1) {
+				goodsInfo.setBaoyou(true);
+			}
+
+			List<ClientTextStyleVO> labels = goodsInfo.getLabels();
+			// 鑷惀
+			String owner = otherDTO.getOwner();
+			if (!StringUtil.isNullOrEmpty(owner) && "g".equalsIgnoreCase(owner)) {
+				if (labels == null) {
+					labels = new ArrayList<ClientTextStyleVO>();
+				}
+				ClientTextStyleVO textStyleVO = new ClientTextStyleVO();
+				textStyleVO.setContent("浜笢鑷惀");
+				textStyleVO.setColor("#E42219");
+				labels.add(textStyleVO);
+			}
+			// 鎷煎洟浠�
+			JDPingouInfo pinGouInfo = otherDTO.getPinGouInfo();
+			if (pinGouInfo != null) {
+				goods.setPrice(pinGouInfo.getPingouPrice());
+				goodsInfo.setPriceName("鎷艰喘浠�");
+
+				if (labels == null) {
+					labels = new ArrayList<ClientTextStyleVO>();
+				}
+				ClientTextStyleVO textStyleVO = new ClientTextStyleVO();
+				textStyleVO.setContent("鎷艰喘");
+				textStyleVO.setColor("#E42219");
+				labels.add(textStyleVO);
+			} else {
+				goodsInfo.setPriceName("浜笢浠�");
+			}
+			goodsInfo.setLabels(labels);
+		} else if (goodsType == Constant.SOURCE_TYPE_PDD) {
 			goodsInfo.setSalesType(4); // 鎬婚攢閲�
+			goodsInfo.setPriceName("鎷煎洟浠�");
+			goodsInfo.setBaoyou(true);
 		} else {
 			goodsInfo.setSalesType(1); // 鏈堥攢閲�
+			goodsInfo.setBaoyou(true);
 		}
-		
+
 		goodsInfo.setGoodsType(goodsType);
 		goodsInfo.setZkPrice(goods.getPrice());
-		goodsInfo.setState(goods.getState());
+		Integer state = goods.getState();
+		if (state == null) {
+			goodsInfo.setState(0);
+		} else {
+			goodsInfo.setState(goods.getState());
+		}
 		goodsInfo.setSalesCount(TaoBaoUtil.getSaleCount(goods.getSales()));
 
 		if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
@@ -89,17 +159,25 @@
 		} else {
 			goodsInfo.setPicUrl(goods.getPicture());
 		}
-		
 
 		// 璧勯噾淇℃伅
 		MoneyInfoVO moneyInfoVO = new MoneyInfoVO();
 		moneyInfoVO.setMoneyType(1); // 榛樿鏄剧ず锛氳繑 楼6.6
-		moneyInfoVO.setFanliMoney(CommonGoodsUtil.getCommissionInfo(goods, fanLiRate));
-		moneyInfoVO.setShareMoney(CommonGoodsUtil.getCommissionInfo(goods, shareRate));
+
+		BigDecimal commission = CommonGoodsUtil.getCommission(goods, params.getFanLiRate());
+		moneyInfoVO.setFanliMoney("楼" + commission);
+
+		if (params.getMaxRewardRate() != null)
+			moneyInfoVO
+					.setMaxMoney("楼" + commission.add(MoneyBigDecimalUtil.mul(commission, params.getMaxRewardRate())));
+		else
+			moneyInfoVO.setMaxMoney("楼" + CommonGoodsUtil.getCommission(goods, params.getVipFanLiRate()));
+
+		moneyInfoVO.setShareMoney(CommonGoodsUtil.getCommissionInfo(goods, params.getShareRate()));
 		goodsInfo.setMoneyInfo(moneyInfoVO);
 
 		// 鍒镐俊鎭�
-		if (goods.getCouponAmount().compareTo(BigDecimal.valueOf(0)) > 0) {
+		if (goods.getCouponAmount() != null && goods.getCouponAmount().compareTo(BigDecimal.valueOf(0)) > 0) {
 			// 璁$畻鍒稿悗浠�
 			BigDecimal sub = goods.getPrice().subtract(goods.getCouponStartPrice());
 			if (sub.compareTo(BigDecimal.valueOf(0)) >= 0) {
@@ -118,16 +196,36 @@
 			goodsInfo.setCouponInfo(coupon);
 		}
 
-		if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
-			// 搴楅摵淇℃伅
-			if (!StringUtil.isNullOrEmpty(goods.getSellerName()) && goods.getSellerId() != null) {
-				ShopInfoVO shop = new ShopInfoVO();
-				shop.setShopName(goods.getSellerName());
+		// 搴楅摵淇℃伅
+		if (!StringUtil.isNullOrEmpty(goods.getSellerName())) {
+			ShopInfoVO shop = new ShopInfoVO();
+			shop.setShopName(goods.getSellerName());
+
+			if (goods.getSellerId() != null)
 				shop.setId(goods.getSellerId().toString());
-				goodsInfo.setShopInfo(shop);
+
+			if (shopType == null || shopType == 0) {
+				shop.setUserType(10);
+			} else if (shopType == 1) {
+				shop.setUserType(11);
+			} else {
+				shop.setUserType(goods.getShopType());
 			}
 
+			goodsInfo.setShopInfo(shop);
 		}
+
+		// if (Constant.IS_TEST) {
+		// // 娣诲姞鏍囩
+		// List<ClientTextStyleVO> labels = goodsInfo.getLabels();
+		// if (labels == null)
+		// labels = new ArrayList<>();
+		//
+		// labels.add(new ClientTextStyleVO("棰勫敭", "#FF2B4E"));
+		// labels.add(new ClientTextStyleVO("鐖嗘", "#FF2B4E"));
+		// labels.add(new ClientTextStyleVO("瓒呯骇鍒掔畻", "#FF2B4E"));
+		// goodsInfo.setLabels(labels);
+		// }
 
 		return goodsInfo;
 	}
@@ -135,14 +233,16 @@
 	/**
 	 * 娣樺疂鍟嗗搧缁勭粐
 	 * 
-	 * @param goods     娣樺疂鍟嗗搧
+	 * @param goods
+	 *            娣樺疂鍟嗗搧
 	 * @param pid
-	 * @param fanLiRate 杩斿埄姣斾緥
+	 * @param fanLiRate
+	 *            杩斿埄姣斾緥
 	 * @return
 	 */
-	public static GoodsDetailVO convertTaoBaoGoodsBriefExtra(TaoBaoGoodsBriefExtra goods, BigDecimal fanLiRate,
-			BigDecimal shareRate) {
+	public static GoodsDetailVO convertTaoBaoGoodsBriefExtra(TaoBaoGoodsBriefExtra goods, ConfigParamsDTO params) {
 		GoodsDetailVO goodsInfo = new GoodsDetailVO();
+		goodsInfo.setBaoyou(true);
 		goodsInfo.setGoodsType(Constant.SOURCE_TYPE_TAOBAO);
 		goodsInfo.setGoodsId(goods.getAuctionId());
 		goodsInfo.setTitle(goods.getTitle());
@@ -152,25 +252,39 @@
 		goodsInfo.setState(goods.getState() == null ? 0 : goods.getState());
 		goodsInfo.setSalesCount(goods.getSalesCount());
 		goodsInfo.setPicUrl(goods.getPictUrl());
+		goodsInfo.setDescription(goods.getDescription());
 
 		Integer shopType = goods.getUserType();
-		if (shopType != null && shopType == 2) {
+		if (shopType != null && shopType == 1) {
 			goodsInfo.setShopType(11); // 澶╃尗
+			goodsInfo.setPriceName("澶╃尗浠�");
 		} else {
 			goodsInfo.setShopType(10); // 娣樺疂
+			goodsInfo.setPriceName("娣樺疂浠�");
 		}
 
 		// 璧勯噾淇℃伅
 		MoneyInfoVO moneyInfoVO = new MoneyInfoVO();
 		moneyInfoVO.setMoneyType(1); // 榛樿鏄剧ず锛氳繑 楼6.6
-		
+
 		if (goods.getTkRate() == null) {
 			TaoBaoHongBaoInfo taoBaoHongBaoInfo = goods.getTaoBaoHongBaoInfo();
-			moneyInfoVO.setFanliMoney("楼"+ taoBaoHongBaoInfo.getHongbao());
-			moneyInfoVO.setShareMoney("楼"+ taoBaoHongBaoInfo.getHongbao());
+			moneyInfoVO.setFanliMoney("楼" + taoBaoHongBaoInfo.getHongbao());
+			moneyInfoVO.setShareMoney("楼" + taoBaoHongBaoInfo.getHongbao());
+			if (params.getMaxRewardRate() != null)
+				moneyInfoVO.setMaxMoney("楼" + taoBaoHongBaoInfo.getHongbao()
+						.add(MoneyBigDecimalUtil.mul(taoBaoHongBaoInfo.getHongbao(), params.getMaxRewardRate())));
+			else
+				moneyInfoVO.setMaxMoney("楼" + TaoBaoUtil.getGoodsHongBaoMoney(goods, params.getVipFanLiRate()));
 		} else {
-			moneyInfoVO.setFanliMoney(TaoBaoUtil.getGoodsHongBaoInfo(goods, fanLiRate));
-			moneyInfoVO.setShareMoney(TaoBaoUtil.getGoodsHongBaoInfo(goods, shareRate));
+			BigDecimal commission = TaoBaoUtil.getGoodsHongBaoMoney(goods, params.getFanLiRate());
+			moneyInfoVO.setFanliMoney("楼" + commission);
+			if (params.getMaxRewardRate() != null)
+				moneyInfoVO.setMaxMoney(
+						"楼" + commission.add(MoneyBigDecimalUtil.mul(commission, params.getMaxRewardRate())));
+			else
+				moneyInfoVO.setMaxMoney("楼" + TaoBaoUtil.getGoodsHongBaoMoney(goods, params.getVipFanLiRate()));
+			moneyInfoVO.setShareMoney(TaoBaoUtil.getGoodsHongBaoInfo(goods, params.getShareRate()));
 		}
 		goodsInfo.setMoneyInfo(moneyInfoVO);
 
@@ -196,13 +310,34 @@
 
 		// 搴楅摵淇℃伅
 		String shopTitle = goods.getShopTitle();
-		Long sellerId = goods.getSellerId();
-		if (!StringUtil.isNullOrEmpty(shopTitle) && sellerId != null) {
+
+		if (!StringUtil.isNullOrEmpty(shopTitle)) {
 			ShopInfoVO shop = new ShopInfoVO();
 			shop.setShopName(shopTitle);
-			shop.setId(goods.getSellerId().toString());
+
+			Long sellerId = goods.getSellerId();
+			if (sellerId != null)
+				shop.setId(goods.getSellerId().toString());
+
+			if (shopType != null && shopType == 1) {
+				shop.setUserType(11);
+			} else {
+				shop.setUserType(10);
+			}
 			goodsInfo.setShopInfo(shop);
 		}
+
+		// if (Constant.IS_TEST) {
+		// // 娣诲姞鏍囩
+		// List<ClientTextStyleVO> labels = goodsInfo.getLabels();
+		// if (labels == null)
+		// labels = new ArrayList<>();
+		//
+		// labels.add(new ClientTextStyleVO("棰勫敭", "#FF2B4E"));
+		// labels.add(new ClientTextStyleVO("鐖嗘", "#FF2B4E"));
+		// labels.add(new ClientTextStyleVO("瓒呯骇鍒掔畻", "#FF2B4E"));
+		// goodsInfo.setLabels(labels);
+		// }
 
 		return goodsInfo;
 	}
@@ -210,20 +345,29 @@
 	/**
 	 * 娣樺疂鍟嗗搧缁勭粐
 	 * 
-	 * @param goods     娣樺疂鍟嗗搧
+	 * @param goods
+	 *            娣樺疂鍟嗗搧
 	 * @param pid
-	 * @param fanLiRate 杩斿埄姣斾緥
+	 * @param fanLiRate
+	 *            杩斿埄姣斾緥
 	 * @return
 	 */
-	public static GoodsDetailVO convertTaoBao(TaoBaoGoodsBrief goods, String pid, BigDecimal fanLiRate,
-			BigDecimal shareRate) {
+	public static GoodsDetailVO convertTaoBao(TaoBaoGoodsBrief goods, ConfigParamsDTO params) {
 		GoodsDetailVO goodsInfo = new GoodsDetailVO();
+		goodsInfo.setBaoyou(true);
 		goodsInfo.setGoodsType(Constant.SOURCE_TYPE_TAOBAO);
 		goodsInfo.setGoodsId(goods.getAuctionId());
 		goodsInfo.setTitle(goods.getTitle());
 		goodsInfo.setSalesType(1); // 榛樿鏈堥攢閲�
 		goodsInfo.setZkPrice(goods.getZkPrice());
-		
+		goodsInfo.setDescription(goods.getDescription());
+
+		String provcity = goods.getProvcity();
+		if (!StringUtil.isNullOrEmpty(provcity)) {
+			String[] arr = provcity.split("\\s+");
+			goodsInfo.setProvcity(arr[arr.length - 1]);
+		}
+
 		List<String> imgList = goods.getImgList();
 		if (imgList != null) {
 			goodsInfo.setImgList(imgList);
@@ -232,17 +376,18 @@
 			imgList.add(goods.getPictUrl());
 			goodsInfo.setImgList(imgList);
 		}
-		
+
 		Integer state = goods.getState();
 		if (state == null) {
 			goodsInfo.setState(0);
 		} else {
 			goodsInfo.setState(state);
 		}
-		
-		
+
 		goodsInfo.setSalesCount(TaoBaoUtil.getSaleCount(goods.getBiz30day()));
 
+		// 鐧藉簳鍥惧彲鑳芥湁閿欒
+		// https://img.alicdn.com/bao/uploaded/TB1LVqmVZbpK1RjSZFyXXX_qFXa.png
 		if (!StringUtil.isNullOrEmpty(goods.getPictUrlWhite())) {
 			goodsInfo.setPicUrl(TbImgUtil.getTBSize320Img(goods.getPictUrlWhite()));
 		} else {
@@ -250,17 +395,36 @@
 		}
 
 		Integer shopType = goods.getUserType();
-		if (shopType != null && shopType == 2) {
+		if (shopType != null && shopType == 1) {
 			goodsInfo.setShopType(11); // 澶╃尗
+			goodsInfo.setPriceName("澶╃尗浠�");
 		} else {
 			goodsInfo.setShopType(10); // 娣樺疂
+			goodsInfo.setPriceName("娣樺疂浠�");
 		}
 
 		// 璧勯噾淇℃伅
 		MoneyInfoVO moneyInfoVO = new MoneyInfoVO();
 		moneyInfoVO.setMoneyType(1); // 榛樿鏄剧ず锛氳繑 楼6.6
-		moneyInfoVO.setFanliMoney(TaoBaoUtil.getGoodsHongBaoInfo(goods, fanLiRate));
-		moneyInfoVO.setShareMoney(TaoBaoUtil.getGoodsHongBaoInfo(goods, shareRate));
+
+		BigDecimal commission = TaoBaoUtil.getGoodsHongBaoMoney(goods, params.getFanLiRate());
+
+		moneyInfoVO.setFanliMoney("楼" + commission);
+		if (params.getMaxRewardRate() != null)
+			moneyInfoVO
+					.setMaxMoney("楼" + commission.add(MoneyBigDecimalUtil.mul(commission, params.getMaxRewardRate())));
+		else {// 鍙湁鏈塚IP鍚庣殑鐗堟湰鎵嶄細鏄剧ず杩斿埄姣�
+
+			BigDecimal price = TaoBaoUtil.getAfterUseCouplePrice(goods);
+			BigDecimal rate = MoneyBigDecimalUtil.div(commission.multiply(new BigDecimal(100)), price);
+			moneyInfoVO.setRateInfo("杩斿埄姣� " + rate + "%");
+
+			BigDecimal maxCommission = TaoBaoUtil.getGoodsHongBaoMoney(goods, params.getVipFanLiRate());
+			BigDecimal maxRate = MoneyBigDecimalUtil.div(maxCommission.multiply(new BigDecimal(100)), price);
+			moneyInfoVO.setMaxRateInfo("杩斿埄姣� " + maxRate + "%");
+			moneyInfoVO.setMaxMoney("楼" + maxCommission);
+		}
+		moneyInfoVO.setShareMoney(TaoBaoUtil.getGoodsHongBaoInfo(goods, params.getShareRate()));
 		goodsInfo.setMoneyInfo(moneyInfoVO);
 
 		// 鍒镐俊鎭�
@@ -281,12 +445,12 @@
 			if (goods.getCouponEffectiveEndTime() != null) {
 				coupon.setEndTime(goods.getCouponEffectiveEndTime().replace("-", "."));
 			}
-			
+
 			if (goods.getCouponEffectiveStartTime() != null) {
 				coupon.setStartTime(goods.getCouponEffectiveStartTime().replace("-", "."));
-			} 
-			
-			coupon.setLink(TaoBaoCouponUtil.getCoupleUrl(goods.getCouponActivityId(), pid, goods.getAuctionId() + ""));
+			}
+
+			coupon.setLink(TaoBaoCouponUtil.getCoupleUrl(goods.getCouponActivityId(), null, goods.getAuctionId() + ""));
 			coupon.setStartFee(goods.getCouponStartFee());
 
 			goodsInfo.setHasCoupon(true);
@@ -294,32 +458,115 @@
 		}
 
 		// 搴楅摵淇℃伅
-		if (!StringUtil.isNullOrEmpty(goods.getShopTitle()) && goods.getSellerId() != null) {
+		if (!StringUtil.isNullOrEmpty(goods.getShopTitle())) {
 			ShopInfoVO shop = new ShopInfoVO();
 			shop.setShopName(goods.getShopTitle());
-			shop.setId(goods.getSellerId().toString());
+
+			if (goods.getSellerId() != null)
+				shop.setId(goods.getSellerId().toString());
+
+			if (shopType != null && shopType == 1) {
+				shop.setUserType(11);
+			} else {
+				shop.setUserType(10);
+			}
+
 			goodsInfo.setShopInfo(shop);
+		}
+
+		if (TaoBaoUtil.isYUShou(goods)) {// 棰勫敭鍟嗗搧
+			goodsInfo = loadYuShouInfo(goodsInfo, goods, null, params.getFanLiRate(), params.getShareRate());
+		}
+
+		if (Constant.IS_TEST) {
+			// 娣诲姞鏍囩
+			List<ClientTextStyleVO> labels = goodsInfo.getLabels();
+			if (labels == null)
+				labels = new ArrayList<>();
+
+			labels.add(new ClientTextStyleVO("棰勫敭", "#FF2B4E"));
+			labels.add(new ClientTextStyleVO("鐖嗘", "#FF2B4E"));
+			labels.add(new ClientTextStyleVO("瓒呯骇鍒掔畻", "#FF2B4E"));
+			goodsInfo.setLabels(labels);
 		}
 
 		return goodsInfo;
 	}
 
+	private static GoodsDetailVO loadYuShouInfo(GoodsDetailVO goodsInfo, TaoBaoGoodsBrief goods, String pid,
+			BigDecimal fanLiRate, BigDecimal shareRate) {
+
+		if (goodsInfo != null && goods != null) {
+			// 娣诲姞鏍囩
+			if (goodsInfo.getLabels() == null)
+				goodsInfo.setLabels(new ArrayList<>());
+			goodsInfo.getLabels().add(new ClientTextStyleVO("棰勫敭", "#FF2B4E"));
+		}
+		return goodsInfo;
+	}
+
+	private static CouponInfoVO convertJDCouponInfo(JDCouponInfo couponInfo) {
+		CouponInfoVO coupon = new CouponInfoVO();
+		coupon.setAmount(couponInfo.getDiscount());
+		coupon.setLink(couponInfo.getLink());
+		coupon.setStartFee(couponInfo.getQuota());
+
+		if (couponInfo.getGetStartTime() != null) {
+			coupon.setStartTime(TimeUtil.getGernalTime(couponInfo.getGetStartTime(), "yyyy.MM.dd"));
+		}
+
+		if (couponInfo.getGetEndTime() != null) {
+			coupon.setEndTime(TimeUtil.getGernalTime(couponInfo.getGetEndTime(), "yyyy.MM.dd"));
+		}
+
+		return coupon;
+	}
+
+	private static List<CouponInfoVO> filterCouponInfo(List<CouponInfoVO> couponList) {
+		if (couponList == null)
+			return null;
+		long currentTime = System.currentTimeMillis();
+		Set<String> sets = new HashSet<>();
+		// 杩囨护鎺夎繃鏈熷埜
+		for (int i = 0; i < couponList.size(); i++) {
+			if (couponList.get(i).getStartTime() != null && couponList.get(i).getEndTime() != null) {
+				long startTime = TimeUtil.convertToTimeTemp(couponList.get(i).getStartTime(), "yyyy.MM.dd");
+				long endTime = TimeUtil.convertToTimeTemp(couponList.get(i).getEndTime(), "yyyy.MM.dd")
+						+ 1000 * 60 * 60 * 24L;
+				if (currentTime < startTime || currentTime >= endTime) {
+					couponList.remove(i--);
+					continue;
+				}
+			}
+			// 杩囨护鎺夐潰鍊肩浉鍚屼笌璧峰閲戦鐩稿悓鐨�
+			String key = couponList.get(i).getStartFee() + "-" + couponList.get(i).getAmount();
+			if (!sets.contains(key))
+				sets.add(key);
+			else {
+				couponList.remove(i--);
+				continue;
+			}
+		}
+		return couponList;
+	}
+
 	/**
 	 * 娣樺疂鍟嗗搧缁勭粐
 	 * 
-	 * @param goods     娣樺疂鍟嗗搧
+	 * @param goods
+	 *            娣樺疂鍟嗗搧
 	 * @param pid
-	 * @param fanLiRate 杩斿埄姣斾緥
+	 * @param fanLiRate
+	 *            杩斿埄姣斾緥
 	 * @return
 	 */
-	public static GoodsDetailVO convertJDGoods(JDGoods goods, String pid, BigDecimal fanLiRate, BigDecimal shareRate) {
+	public static GoodsDetailVO convertJDGoods(JDGoods goods, ConfigParamsDTO params) {
 		GoodsDetailVO goodsInfo = new GoodsDetailVO();
 		goodsInfo.setGoodsType(Constant.SOURCE_TYPE_JD);
 		goodsInfo.setGoodsId(goods.getSkuId());
 		goodsInfo.setTitle(goods.getSkuName());
 		goodsInfo.setSalesType(1); // 榛樿鏈堥攢閲�
 		goodsInfo.setPicUrl(goods.getPicUrl());
-		goodsInfo.setZkPrice(goods.getPrice());
 		goodsInfo.setImgList(goods.getImageList());
 		goodsInfo.setState(0);
 
@@ -334,67 +581,113 @@
 		}
 		goodsInfo.setSalesCount(salesCountMidea);
 
-		String owner = goods.getOwner();
-		if (StringUtil.isNullOrEmpty(owner) && "g".equalsIgnoreCase(owner)) {
-			goodsInfo.setShopType(21); // 浜笢鑷惀
-		} else {
-			goodsInfo.setShopType(20); // 浜笢
-		}
-
 		// 璧勯噾淇℃伅
 		MoneyInfoVO moneyInfoVO = new MoneyInfoVO();
 		moneyInfoVO.setMoneyType(1); // 榛樿鏄剧ず锛氳繑 楼6.6
-		moneyInfoVO.setFanliMoney("楼" + JDUtil.getGoodsFanLiMoney(goods, fanLiRate));
-		moneyInfoVO.setShareMoney("楼" + JDUtil.getGoodsFanLiMoney(goods, shareRate));
+		BigDecimal commission = JDUtil.getGoodsFanLiMoney(goods, params.getFanLiRate());
+		moneyInfoVO.setFanliMoney("楼" + commission);
+		if (params.getMaxRewardRate() != null)
+			moneyInfoVO
+					.setMaxMoney("楼" + commission.add(MoneyBigDecimalUtil.mul(commission, params.getMaxRewardRate())));
+		else {
+			BigDecimal price = JDUtil.getQuanPrice(goods);
+			BigDecimal rate = MoneyBigDecimalUtil.div(commission.multiply(new BigDecimal(100)), price);
+			moneyInfoVO.setRateInfo("杩斿埄姣� " + rate + "%");
+
+			BigDecimal maxCommission = JDUtil.getGoodsFanLiMoney(goods, params.getVipFanLiRate());
+			BigDecimal maxRate = MoneyBigDecimalUtil.div(maxCommission.multiply(new BigDecimal(100)), price);
+			moneyInfoVO.setMaxRateInfo("杩斿埄姣� " + maxRate + "%");
+			moneyInfoVO.setMaxMoney("楼" + maxCommission);
+		}
+		moneyInfoVO.setShareMoney("楼" + JDUtil.getGoodsFanLiMoney(goods, params.getShareRate()));
 		goodsInfo.setMoneyInfo(moneyInfoVO);
 
-		JDCouponInfo couponInfo = goods.getCouponInfo();
+		JDCouponInfo couponInfo = JDUtil.getShowCouponInfo(goods);
 		if (couponInfo != null) {
 			BigDecimal discount = couponInfo.getDiscount();
-			BigDecimal price = goods.getPrice();
 			// 璁$畻鍒稿悗浠�
-			BigDecimal sub = price.subtract(couponInfo.getQuota());
-			if (sub.compareTo(BigDecimal.valueOf(0)) >= 0) {
-				BigDecimal quanPrice = MoneyBigDecimalUtil.sub(price, discount);
-				goodsInfo.setCouponPrice(quanPrice);
-			} else {
-				goodsInfo.setCouponPrice(price);
-			}
+			goodsInfo.setCouponPrice(JDUtil.getQuanPrice(goods));
 
 			SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
 			CouponInfoVO coupon = new CouponInfoVO();
 			coupon.setAmount(discount);
+			coupon.setLink(couponInfo.getLink());
+			coupon.setStartFee(couponInfo.getQuota());
+
 			if (couponInfo.getGetStartTime() != null) {
 				coupon.setStartTime(sdf.format(new Date(couponInfo.getGetStartTime())));
-			} else {
-				coupon.setStartTime(sdf.format(new Date()));
 			}
 
 			if (couponInfo.getGetEndTime() != null) {
 				coupon.setEndTime(sdf.format(new Date(couponInfo.getGetEndTime())));
-			} else {
-				coupon.setEndTime(sdf.format(new Date()));
 			}
-			
-			// TODO
-//			coupon.setLeftCount(leftCount);
-//			coupon.setTotalCount(totalCount);
-			
-			coupon.setLink(couponInfo.getLink());
-			coupon.setStartFee(couponInfo.getQuota());
 
 			goodsInfo.setHasCoupon(true);
 			goodsInfo.setCouponInfo(coupon);
 		}
 
+		if (goods.getCouponInfoList() != null && goods.getCouponInfoList().size() > 0) {
+			List<CouponInfoVO> couponList = new ArrayList<>();
+			for (JDCouponInfo jdCoupon : goods.getCouponInfoList()) {
+				couponList.add(convertJDCouponInfo(jdCoupon));
+			}
+			goodsInfo.setCouponInfoList(filterCouponInfo(couponList));
+		}
+
+		List<ClientTextStyleVO> labels = goodsInfo.getLabels();
+		// 浜笢鑷惀鏍囩
+		String owner = goods.getOwner();
+		if (!StringUtil.isNullOrEmpty(owner) && "g".equalsIgnoreCase(owner)) {
+			goodsInfo.setShopType(21); // 浜笢鑷惀
+			if (labels == null) {
+				labels = new ArrayList<ClientTextStyleVO>();
+			}
+			ClientTextStyleVO textStyleVO = new ClientTextStyleVO();
+			textStyleVO.setContent("浜笢鑷惀");
+			textStyleVO.setColor("#E42219");
+			labels.add(textStyleVO);
+		} else {
+			goodsInfo.setShopType(20); // 浜笢
+		}
+
+		JDPingouInfo pinGouInfo = goods.getPinGouInfo();
+		if (pinGouInfo != null) {
+			goodsInfo.setZkPrice(pinGouInfo.getPingouPrice());
+			goodsInfo.setPriceName("鎷艰喘浠�");
+
+			if (labels == null) {
+				labels = new ArrayList<ClientTextStyleVO>();
+			}
+			ClientTextStyleVO textStyleVO = new ClientTextStyleVO();
+			textStyleVO.setContent("鎷艰喘");
+			textStyleVO.setColor("#E42219");
+			labels.add(textStyleVO);
+		} else {
+			goodsInfo.setZkPrice(goods.getPrice());
+			goodsInfo.setPriceName("浜笢浠�");
+		}
+		goodsInfo.setLabels(labels);
+
 		// 搴楅摵淇℃伅
-//		JDShopInfo shopInfo = goods.getShopInfo();
-//		if (shopInfo != null && !StringUtil.isNullOrEmpty(shopInfo.getShopName())) {
-//			ShopInfoVO shop = new ShopInfoVO();
-//			shop.setShopName(shopInfo.getShopName());
-//			shop.setId(shopInfo.getShopId().toString());
-//			goodsInfo.setShopInfo(shop);
-//		}
+		JDShopInfo shopInfo = goods.getShopInfo();
+		if (shopInfo != null && !StringUtil.isNullOrEmpty(shopInfo.getShopName())) {
+			ShopInfoVO shop = new ShopInfoVO();
+			shop.setShopName(shopInfo.getShopName());
+			shop.setId(shopInfo.getShopId().toString());
+
+			if (!StringUtil.isNullOrEmpty(owner) && "g".equalsIgnoreCase(owner)) {
+				shop.setUserType(20);
+			} else {
+				shop.setUserType(21);
+			}
+			goodsInfo.setShopInfo(shop);
+		}
+
+		// 鏄惁鍖呴偖
+		Integer isFreeShipping = goods.getIsFreeShipping();
+		if (isFreeShipping != null && isFreeShipping == 1) {
+			goodsInfo.setBaoyou(true);
+		}
 
 		return goodsInfo;
 	}
@@ -402,20 +695,24 @@
 	/**
 	 * 鎷煎澶氬晢鍝�
 	 * 
-	 * @param goods     鎷煎澶氬晢鍝�
+	 * @param goods
+	 *            鎷煎澶氬晢鍝�
 	 * @param pid
-	 * @param fanLiRate 杩斿埄姣斾緥
+	 * @param fanLiRate
+	 *            杩斿埄姣斾緥
 	 * @return
 	 */
-	public static GoodsDetailVO convertPDDGoods(PDDGoodsDetail goods, String pid, BigDecimal fanLiRate,
-			BigDecimal shareRate) {
+	public static GoodsDetailVO convertPDDGoods(PDDGoodsDetail goods, ConfigParamsDTO params) {
 		GoodsDetailVO goodsInfo = new GoodsDetailVO();
+		goodsInfo.setBaoyou(true);
 		goodsInfo.setGoodsType(Constant.SOURCE_TYPE_PDD);
 		goodsInfo.setGoodsId(goods.getGoodsId());
 		goodsInfo.setTitle(goods.getGoodsName());
 		goodsInfo.setSalesType(4); // 鎬婚攢閲�
-		goodsInfo.setPicUrl(goods.getGoodsImageUrl());
-		goodsInfo.setZkPrice(new BigDecimal(goods.getMinNormalPrice()));
+		goodsInfo.setPriceName("鎷煎洟浠�");
+		goodsInfo.setPicUrl(goods.getGoodsThumbnailUrl()); // 缂╃暐鍥�
+		goodsInfo.setZkPrice(
+				MoneyBigDecimalUtil.div(new BigDecimal(goods.getMinGroupPrice()), new BigDecimal(100)).setScale(2));
 		goodsInfo.setShopType(30); // 鎷煎澶�
 
 		String[] goodsGalleryUrls = goods.getGoodsGalleryUrls();
@@ -431,32 +728,26 @@
 		}
 
 		// 鎬婚攢閲�
-		String salesCountMidea = null;
-		Long soldQuantity = goods.getSoldQuantity();
-		if (soldQuantity == null)
-			soldQuantity = 0L;
-
-		if (soldQuantity < 10000) {
-			salesCountMidea = soldQuantity + "";
-		} else {
-			double sales = soldQuantity;
-			salesCountMidea = String.format("%.1f", sales / 10000);
-			salesCountMidea = salesCountMidea + "涓�";
+		String salesTip = goods.getSalesTip();
+		if (StringUtil.isNullOrEmpty(salesTip)) {
+			salesTip = "0";
 		}
-		goodsInfo.setSalesCount(salesCountMidea);
+		goodsInfo.setSalesCount(salesTip);
 
 		// 璧勯噾淇℃伅
 		MoneyInfoVO moneyInfoVO = new MoneyInfoVO();
 		moneyInfoVO.setMoneyType(1); // 榛樿鏄剧ず锛氳繑 楼6.6
-		moneyInfoVO.setFanliMoney("楼" + PinDuoDuoUtil.getGoodsFanLiMoney(goods, fanLiRate));
-		moneyInfoVO.setShareMoney("楼" + PinDuoDuoUtil.getGoodsFanLiMoney(goods, shareRate));
-		goodsInfo.setMoneyInfo(moneyInfoVO);
+		BigDecimal commission = PinDuoDuoUtil.getGoodsFanLiMoney(goods, params.getFanLiRate());
+		moneyInfoVO.setFanliMoney("楼" + commission);
+		moneyInfoVO.setShareMoney("楼" + commission);
 
 		Boolean hasCoupon = goods.getHasCoupon();
 		if (hasCoupon != null && hasCoupon) {
-			BigDecimal amount = new BigDecimal(goods.getCouponDiscount());
-			BigDecimal price = new BigDecimal(goods.getMinNormalPrice());
-			BigDecimal startFree = new BigDecimal(goods.getCouponMinOrderAmount());
+			BigDecimal hundred = new BigDecimal(100);
+			BigDecimal amount = MoneyBigDecimalUtil.div(new BigDecimal(goods.getCouponDiscount()), hundred).setScale(2);
+			BigDecimal price = MoneyBigDecimalUtil.div(new BigDecimal(goods.getMinGroupPrice()), hundred).setScale(2);
+			BigDecimal startFree = MoneyBigDecimalUtil.div(new BigDecimal(goods.getCouponMinOrderAmount()), hundred)
+					.setScale(2);
 
 			// 璁$畻鍒稿悗浠�
 			if (startFree.compareTo(price) <= 0) {
@@ -469,6 +760,8 @@
 			SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd");
 			CouponInfoVO coupon = new CouponInfoVO();
 			coupon.setAmount(amount);
+			coupon.setStartFee(startFree);
+
 			if (goods.getCouponStartTime() != null) {
 				coupon.setStartTime(sdf.format(new Date(goods.getCouponStartTime() * 1000)));
 			}
@@ -476,8 +769,6 @@
 			if (goods.getCouponEndTime() != null) {
 				coupon.setEndTime(sdf.format(new Date(goods.getCouponEndTime() * 1000)));
 			}
-			coupon.setLink(null);
-			coupon.setStartFee(startFree);
 
 			if (goods.getCouponTotalQuantity() != null)
 				coupon.setTotalCount(Integer.parseInt(goods.getCouponTotalQuantity().toString()));
@@ -489,19 +780,47 @@
 			goodsInfo.setCouponInfo(coupon);
 		}
 
-		// 搴楅摵淇℃伅
-//		String mallName = goods.getMallName();
-//		if (!StringUtil.isMobile(mallName)) {
-//			ShopInfoVO shop = new ShopInfoVO();
-//			shop.setShopName(mallName);
-//
-//			if (goods.getMallId() != null) {
-//				shop.setId(goods.getMallId().toString());
-//			}
-//			goodsInfo.setShopInfo(shop);
-//		}
+		if (params.getMaxRewardRate() != null)
+			moneyInfoVO
+					.setMaxMoney("楼" + commission.add(MoneyBigDecimalUtil.mul(commission, params.getMaxRewardRate())));
+		else {
+			BigDecimal price = goodsInfo.getCouponPrice() != null ? goodsInfo.getCouponPrice() : goodsInfo.getZkPrice();
+			BigDecimal rate = MoneyBigDecimalUtil.div(commission.multiply(new BigDecimal(100)), price);
+			moneyInfoVO.setRateInfo("杩斿埄姣� " + rate + "%");
 
+			BigDecimal maxCommission = PinDuoDuoUtil.getGoodsFanLiMoney(goods, params.getVipFanLiRate());
+			BigDecimal maxRate = MoneyBigDecimalUtil.div(maxCommission.multiply(new BigDecimal(100)), price);
+			moneyInfoVO.setMaxRateInfo("杩斿埄姣� " + maxRate + "%");
+
+			moneyInfoVO.setMaxMoney("楼" + maxCommission);
+		}
+		goodsInfo.setMoneyInfo(moneyInfoVO);
+
+		// 搴楅摵淇℃伅
+		String mallName = goods.getMallName();
+		if (!StringUtil.isMobile(mallName)) {
+			ShopInfoVO shop = new ShopInfoVO();
+			shop.setShopName(mallName);
+			if (goods.getMallId() != null) {
+				shop.setId(goods.getMallId().toString());
+			}
+			shop.setUserType(30);
+			goodsInfo.setShopInfo(shop);
+		}
+
+		// if (Constant.IS_TEST) {
+		// // 娣诲姞鏍囩
+		// List<ClientTextStyleVO> labels = goodsInfo.getLabels();
+		// if (labels == null)
+		// labels = new ArrayList<>();
+		//
+		// labels.add(new ClientTextStyleVO("棰勫敭", "#FF2B4E"));
+		// labels.add(new ClientTextStyleVO("鐖嗘", "#FF2B4E"));
+		// labels.add(new ClientTextStyleVO("瓒呯骇鍒掔畻", "#FF2B4E"));
+		// goodsInfo.setLabels(labels);
+		// }
 		return goodsInfo;
 	}
 
+	
 }

--
Gitblit v1.8.0