package com.yeshi.fanli.lijin.manager;
|
|
import com.ks.lijin.pojo.DTO.MoneyInfo;
|
import com.ks.lijin.service.LijinCreateService;
|
import com.ks.vip.pojo.DO.VipGradePotence;
|
import com.ks.vip.pojo.Enums.VIPEnum;
|
import com.ks.vip.service.VipCenterService;
|
import com.ks.vip.service.VipGradePotenceService;
|
import com.ks.vip.service.VipGradeService;
|
import com.yeshi.fanli.dto.GoodsMoneyConfigParamsDTO;
|
import com.yeshi.fanli.dto.pdd.PDDGoodsDetail;
|
import com.yeshi.fanli.dto.suning.SuningGoodsInfo;
|
import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo;
|
import com.yeshi.fanli.entity.SystemEnum;
|
import com.yeshi.fanli.entity.SystemFunction;
|
import com.yeshi.fanli.entity.goods.BaseGoodsInfo;
|
import com.yeshi.fanli.entity.goods.CommonGoods;
|
import com.yeshi.fanli.entity.jd.JDGoods;
|
import com.yeshi.fanli.exception.taobao.TaoKeApiException;
|
import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
|
import com.yeshi.fanli.util.CommonGoodsUtil;
|
import com.yeshi.fanli.util.SystemInfoUtil;
|
import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
|
import com.yeshi.fanli.util.jd.JDUtil;
|
import com.yeshi.fanli.util.pinduoduo.PinDuoDuoUtil;
|
import com.yeshi.fanli.util.suning.SuningUtil;
|
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
|
import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
|
import com.yeshi.fanli.util.vipshop.VipShopUtil;
|
import com.yeshi.fanli.vo.goods.GoodsDetailVO;
|
import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief;
|
import org.apache.dubbo.config.annotation.Reference;
|
import org.springframework.stereotype.Component;
|
import org.yeshi.utils.MoneyBigDecimalUtil;
|
|
import java.math.BigDecimal;
|
import java.util.*;
|
|
@Component
|
public class GoodsLijinMnager {
|
|
@Reference(version = "1.0")
|
private LijinCreateService lijinCreateService;
|
|
@Reference(version = "1.0")
|
private VipCenterService vipCenterService;
|
|
@Reference(version = "1.0")
|
private VipGradePotenceService vipGradePotenceService;
|
|
|
@Reference(version = "1.0")
|
private VipGradeService vipGradeService;
|
|
|
private String getUid(Long uid) {
|
if (uid == null)
|
return null;
|
return "tejia-" + uid;
|
}
|
|
private void loadMaterialLibsType(List<TaoBaoGoodsBrief> goodsBriefList) {
|
|
List<Long> auctionIds = new ArrayList<>();
|
for (TaoBaoGoodsBrief goodsBrief : goodsBriefList) {
|
auctionIds.add(goodsBrief.getAuctionId());
|
}
|
|
try {
|
List<TaoBaoGoodsBrief> tempList = TaoKeApiUtil.getBatchGoodsInfo(auctionIds);
|
Map<Long, TaoBaoGoodsBrief> tempMap = new HashMap<>();
|
for (TaoBaoGoodsBrief temp : tempList) {
|
tempMap.put(temp.getAuctionId(), temp);
|
}
|
for (TaoBaoGoodsBrief goodsBrief : goodsBriefList) {
|
if (tempMap.get(goodsBrief.getAuctionId()) != null) {
|
goodsBrief.setMaterialLibType(tempMap.get(goodsBrief.getAuctionId()).getMaterialLibType());
|
goodsBrief.setMaterialLibTypes(tempMap.get(goodsBrief.getAuctionId()).getMaterialLibTypes());
|
}
|
}
|
} catch (TaoKeApiException e) {
|
e.printStackTrace();
|
} catch (TaobaoGoodsDownException e) {
|
e.printStackTrace();
|
}
|
|
}
|
|
private void loadTBMoneyInfo(SystemEnum system, Map<String, MoneyInfo> lijinMap, TaoBaoGoodsBrief goods, GoodsDetailVO detailVO) {
|
if (SystemInfoUtil.hasFunctions(system, SystemFunction.lijinSub)) {
|
//设置礼金
|
MoneyInfo moneyInfo = lijinMap.get(goods.getAuctionId() + "");
|
//券后价格
|
BigDecimal couponPrice = TaoBaoUtil.getCouponPrice(goods);
|
BigDecimal finalPrice = null;
|
if (moneyInfo != null && moneyInfo.getLijinAmount() != null) {//有礼金
|
detailVO.getMoneyInfo().setHongBaoMoney("¥" + moneyInfo.getLijinAmount());
|
detailVO.getMoneyInfo().setFanliMoney(null);
|
finalPrice = couponPrice.subtract(moneyInfo.getLijinAmount());
|
} else {//无礼金
|
finalPrice = couponPrice.subtract(moneyInfo.getFanliAmount() == null ? new BigDecimal(0) : moneyInfo.getFanliAmount());
|
detailVO.getMoneyInfo().setFanliMoney("¥" + moneyInfo.getFanliAmount());
|
}
|
//设置价格
|
detailVO.getMoneyInfo().setFinalMoney("¥" + finalPrice);
|
}
|
}
|
|
|
public GoodsDetailVO loadTBMoneyInfo(SystemEnum system, Long uid, TaoBaoGoodsBrief goodsBrief, GoodsDetailVO detailVO) {
|
List<TaoBaoGoodsBrief> goodsBriefs = new ArrayList<>();
|
goodsBriefs.add(goodsBrief);
|
Map<String, MoneyInfo> lijinMap = null;
|
if (SystemInfoUtil.hasFunctions(system, SystemFunction.lijinSub)) {
|
loadMaterialLibsType(goodsBriefs);
|
lijinMap = getTBLijinList(uid, goodsBriefs);
|
}
|
for (TaoBaoGoodsBrief goods : goodsBriefs) {
|
try {
|
loadTBMoneyInfo(system, lijinMap, goods, detailVO);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
return detailVO;
|
}
|
|
|
public List<GoodsDetailVO> loadTBMoneyInfo(SystemEnum system, Long uid, List<TaoBaoGoodsBrief> goodsBriefList, GoodsMoneyConfigParamsDTO paramsDTO) {
|
Map<String, MoneyInfo> lijinMap = null;
|
if (SystemInfoUtil.hasFunctions(system, SystemFunction.lijinSub)) {
|
loadMaterialLibsType(goodsBriefList);
|
lijinMap = getTBLijinList(uid, goodsBriefList);
|
}
|
List<GoodsDetailVO> voList = new ArrayList<>();
|
for (TaoBaoGoodsBrief goods : goodsBriefList) {
|
try {
|
GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO);
|
loadTBMoneyInfo(system, lijinMap, goods, detailVO);
|
voList.add(detailVO);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
return voList;
|
}
|
|
|
public List<GoodsDetailVO> loadOtherMoneyInfo(SystemEnum system, Long uid, List<? extends BaseGoodsInfo> goodsList, GoodsMoneyConfigParamsDTO paramsDTO) {
|
List<GoodsDetailVO> voList = new ArrayList<>();
|
if (goodsList == null || goodsList.size() == 0)
|
return voList;
|
|
BigDecimal fanliRate = null;
|
if (system == SystemEnum.yhqjx) {
|
fanliRate = getFanLiRate(uid);
|
}
|
|
BigDecimal couponPrice = null;
|
BigDecimal fanliMoney = null;
|
|
for (BaseGoodsInfo goods : goodsList) {
|
GoodsDetailVO detailVO = null;
|
if (goods instanceof JDGoods) {
|
detailVO = GoodsDetailVOFactory.convertJDGoods((JDGoods) goods, paramsDTO);
|
if (fanliRate != null) {
|
couponPrice = JDUtil.getCouponPrice((JDGoods) goods);
|
fanliMoney = JDUtil.getGoodsFanLiMoney((JDGoods) goods, fanliRate);
|
}
|
} else if (goods instanceof PDDGoodsDetail) {
|
detailVO = GoodsDetailVOFactory.convertPDDGoods((PDDGoodsDetail) goods, paramsDTO);
|
if (fanliRate != null) {
|
couponPrice = PinDuoDuoUtil.getCouponPrice((PDDGoodsDetail) goods);
|
fanliMoney = PinDuoDuoUtil.getGoodsFanLiMoney((PDDGoodsDetail) goods, fanliRate);
|
}
|
} else if (goods instanceof VIPGoodsInfo) {
|
detailVO = GoodsDetailVOFactory.convertVIPGoods((VIPGoodsInfo) goods, paramsDTO);
|
if (fanliRate != null) {
|
couponPrice = VipShopUtil.getCouponPrice((VIPGoodsInfo) goods);
|
fanliMoney = VipShopUtil.getGoodsFanLiMoney((VIPGoodsInfo) goods, fanliRate);
|
}
|
} else if (goods instanceof SuningGoodsInfo) {
|
detailVO = GoodsDetailVOFactory.convertSuningGoods((SuningGoodsInfo) goods, paramsDTO);
|
if (fanliRate != null) {
|
couponPrice = SuningUtil.getCouponPrice((SuningGoodsInfo) goods);
|
fanliMoney = SuningUtil.getGoodsFanLiMoney((SuningGoodsInfo) goods, fanliRate);
|
}
|
}
|
|
if (couponPrice != null && fanliMoney != null) {
|
detailVO.getMoneyInfo().setFanliMoney("¥" + fanliMoney);
|
detailVO.getMoneyInfo().setFinalMoney("¥" + couponPrice.subtract(fanliMoney));
|
}
|
voList.add(detailVO);
|
}
|
|
return voList;
|
}
|
|
|
public GoodsDetailVO loadOtherMoneyInfo(SystemEnum system, Long uid, CommonGoods goods, GoodsDetailVO goodsDetailVO) {
|
if (goodsDetailVO == null)
|
return null;
|
|
BigDecimal fanliRate = null;
|
if (system == SystemEnum.yhqjx) {
|
fanliRate = getFanLiRate(uid);
|
}
|
|
if (fanliRate != null) {
|
BigDecimal fanliMoney = CommonGoodsUtil.getCommission(goods, fanliRate);
|
BigDecimal couponPrice = CommonGoodsUtil.getAfterUseCouplePrice(goods);
|
goodsDetailVO.getMoneyInfo().setFanliMoney("¥" + fanliMoney);
|
goodsDetailVO.getMoneyInfo().setFinalMoney("¥" + couponPrice.subtract(fanliMoney));
|
}
|
|
return goodsDetailVO;
|
}
|
|
|
/**
|
* 批量获取淘宝礼金面额
|
*
|
* @param goodsBriefList
|
* @return
|
*/
|
private Map<String, MoneyInfo> getTBLijinList(Long uid, List<TaoBaoGoodsBrief> goodsBriefList) {
|
Map<String, MoneyInfo> map = new HashMap<>();
|
List<MoneyInfo> moneyInfos = lijinCreateService.getMoneyInfo(getUid(uid), goodsBriefList);
|
for (MoneyInfo moneyInfo : moneyInfos) {
|
map.put(moneyInfo.getGoodsId(), moneyInfo);
|
}
|
return map;
|
}
|
|
|
/**
|
* 获取返利比例
|
*
|
* @param uid
|
* @return
|
*/
|
private BigDecimal getFanLiRate(Long uid) {
|
//加载返利信息
|
VIPEnum rank = vipCenterService.getVIPEnumByUid(getUid(uid));
|
if (rank == null)
|
rank = vipGradeService.getDefaultGrade().getIdentity();
|
VipGradePotence potence = vipGradePotenceService.getPotenceByVipEnum(rank);
|
//获取返利比例
|
BigDecimal fanliRate = potence.getRebatePercent();
|
return fanliRate;
|
}
|
|
|
}
|