package com.yeshi.fanli.lijin.manager;
|
|
import com.ks.lijin.exception.LiJinAmountException;
|
import com.ks.lijin.exception.LiJinException;
|
import com.ks.lijin.exception.LiJinGoodsException;
|
import com.ks.lijin.exception.LiJinUserException;
|
import com.ks.lijin.pojo.DO.LiJinExpendRecord;
|
import com.ks.lijin.pojo.DO.LiJinProviderLink;
|
import com.ks.lijin.pojo.DTO.MoneyInfo;
|
import com.ks.lijin.service.LiJinLinkService;
|
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.entity.system.ConfigKeyEnum;
|
import com.yeshi.fanli.exception.taobao.TaoKeApiException;
|
import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
|
import com.yeshi.fanli.service.inter.config.ConfigService;
|
import com.yeshi.fanli.util.CommonGoodsUtil;
|
import com.yeshi.fanli.util.Constant;
|
import com.yeshi.fanli.util.StringUtil;
|
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 com.yeshi.fanli.lijin.vo.GoodsDetailVO.*;
|
import org.yeshi.utils.MoneyBigDecimalUtil;
|
|
import javax.annotation.Resource;
|
import java.math.BigDecimal;
|
import java.util.*;
|
|
@Component
|
public class GoodsLijinMnager {
|
|
// @Reference(version = "1.0", check = false, url ="dubbo://193.112.35.168:20904/com.ks.lijin.service.LijinCreateService")
|
@Reference(version = "1.0", check = false)
|
private LijinCreateService lijinCreateService;
|
|
// @Reference(version = "1.0", check = false, url ="dubbo://193.112.35.168:20902/com.ks.vip.service.VipCenterService")
|
@Reference(version = "1.0", check = false)
|
private VipCenterService vipCenterService;
|
|
// @Reference(version = "1.0", check = false, url ="dubbo://193.112.35.168:20902/com.ks.vip.service.VipGradePotenceService")
|
@Reference(version = "1.0", check = false)
|
private VipGradePotenceService vipGradePotenceService;
|
|
|
// @Reference(version = "1.0", check = false, url ="dubbo://193.112.35.168:20902/com.ks.vip.service.VipGradeService")
|
@Reference(version = "1.0", check = false)
|
private VipGradeService vipGradeService;
|
|
|
// @Reference(version = "1.0", check = false, url ="dubbo://193.112.35.168:20904/com.ks.lijin.service.LiJinLinkService")
|
@Reference(version = "1.0", check = false)
|
private LiJinLinkService liJinLinkService;
|
|
@Resource
|
private UserLijinMnager userLijinMnager;
|
|
@Resource
|
private ConfigService configService;
|
|
|
private String getUid(Long uid) {
|
if (uid == null)
|
return null;
|
return "tejia-" + uid;
|
}
|
|
private void loadMaterialLibsType(List<TaoBaoGoodsBrief> goodsBriefList) {
|
|
List<String> auctionIds = new ArrayList<>();
|
for (TaoBaoGoodsBrief goodsBrief : goodsBriefList) {
|
auctionIds.add(goodsBrief.getAuctionId());
|
}
|
|
try {
|
List<TaoBaoGoodsBrief> tempList = TaoKeApiUtil.getBatchGoodsInfo(auctionIds);
|
Map<String, 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, boolean detail) {
|
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());
|
if (!detail)
|
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, boolean detail) {
|
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, detail);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
return detailVO;
|
}
|
|
|
public List<GoodsDetailVO> loadTBMoneyInfo(SystemEnum system, Long uid, List<TaoBaoGoodsBrief> goodsBriefList, GoodsMoneyConfigParamsDTO paramsDTO, boolean detail) {
|
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, detail);
|
voList.add(detailVO);
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
return voList;
|
}
|
|
|
public MoneyInfo getTBLijinAndFanli(Long uid, TaoBaoGoodsBrief goodsBrief) {
|
List<MoneyInfo> moneyInfo = lijinCreateService.getMoneyInfo(getUid(uid), Arrays.asList(new TaoBaoGoodsBrief[]{goodsBrief}));
|
return moneyInfo.get(0);
|
}
|
|
|
private List<GoodsDetailVOWithKey> loadTBMoneyInfo(SystemEnum system, Long uid, List<TaoBaoGoodsBrief> goodsBriefList, List<String> goodsKeyList, GoodsMoneyConfigParamsDTO paramsDTO, boolean detail) {
|
Map<String, MoneyInfo> lijinMap = null;
|
boolean hasCreateTime = false;
|
if (SystemInfoUtil.hasFunctions(system, SystemFunction.lijinSub) && goodsBriefList.size() > 0) {
|
loadMaterialLibsType(goodsBriefList);
|
lijinMap = getTBLijinList(uid, goodsBriefList);
|
hasCreateTime = true;
|
}
|
List<GoodsDetailVOWithKey> voList = new ArrayList<>();
|
for (int i = 0; i < goodsBriefList.size(); i++) {
|
try {
|
GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBao(goodsBriefList.get(i), paramsDTO);
|
loadTBMoneyInfo(system, lijinMap, goodsBriefList.get(i), detailVO, detail);
|
voList.add(new GoodsDetailVOWithKey(detailVO, goodsKeyList.get(i)));
|
} 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;
|
|
boolean hasCreateTime = false;
|
BigDecimal fanliRate = null;
|
if (system == SystemEnum.yhqjx || system == SystemEnum.hsb) {
|
fanliRate = getFanLiRate(uid);
|
hasCreateTime = true;
|
}
|
|
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);
|
}
|
} else if (goods instanceof CommonGoods) {
|
detailVO = GoodsDetailVOFactory.convertCommonGoods((CommonGoods) goods, paramsDTO);
|
if (fanliRate != null) {
|
couponPrice = CommonGoodsUtil.getAfterUseCouplePrice((CommonGoods) goods);
|
fanliMoney = CommonGoodsUtil.getCommission((CommonGoods) 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 || system == SystemEnum.hsb) {
|
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;
|
}
|
|
private String getCommonGoodsKey(CommonGoods goods) {
|
return goods.getGoodsId() + "#" + goods.getGoodsType() + "#" + goods.getId();
|
}
|
|
|
/**
|
* 加载通用商品的资金信息
|
*
|
* @param system
|
* @param uid
|
* @param goodsBriefList
|
* @param paramsDTO
|
* @return
|
*/
|
public List<GoodsDetailVO> loadCommonGoodsMoneyInfo(SystemEnum system, Long uid, List<CommonGoods> goodsBriefList, GoodsMoneyConfigParamsDTO paramsDTO) {
|
//分离出淘宝商品
|
List<TaoBaoGoodsBrief> taoBaoGoodsBriefList = new ArrayList<>();
|
List<CommonGoods> otherGoodsList = new ArrayList<>();
|
Map<String, Integer> positionMap = new HashMap<>();
|
List<String> tbKeyList = new ArrayList<>();
|
for (int i = 0; i < goodsBriefList.size(); i++) {
|
positionMap.put(getCommonGoodsKey(goodsBriefList.get(i)), i);
|
if (goodsBriefList.get(i).getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) {
|
taoBaoGoodsBriefList.add(TaoBaoUtil.convert(goodsBriefList.get(i)));
|
tbKeyList.add(getCommonGoodsKey(goodsBriefList.get(i)));
|
} else {
|
otherGoodsList.add(goodsBriefList.get(i));
|
}
|
}
|
GoodsDetailVO[] vos = new GoodsDetailVO[positionMap.size()];
|
List<GoodsDetailVOWithKey> tbVOList = loadTBMoneyInfo(system, uid, taoBaoGoodsBriefList, tbKeyList, paramsDTO, false);
|
List<GoodsDetailVO> otherVOList = loadOtherMoneyInfo(system, uid, otherGoodsList, paramsDTO);
|
|
for (GoodsDetailVOWithKey vo : tbVOList) {
|
String key = vo.key;
|
//填充CommonGoods的ID
|
String commonId = key.split("#")[2];
|
if (!StringUtil.isNullOrEmpty(commonId)) {
|
vo.goodsDetailVO.setId(Long.parseLong(commonId));
|
}
|
int p = positionMap.get(key);
|
vos[p] = vo.goodsDetailVO;
|
}
|
|
for (GoodsDetailVO vo : otherVOList) {
|
String goodsId = vo.getGoodsId();
|
if (goodsId.contains("-"))
|
goodsId = goodsId.split("-")[1];
|
Integer p = positionMap.get(goodsId + "#" + vo.getGoodsType() + "#" + vo.getId());
|
// if (p != null)
|
vos[p] = vo;
|
// else
|
// System.out.println(vo);
|
}
|
|
List<GoodsDetailVO> finalList = new ArrayList<>();
|
finalList.addAll(Arrays.asList(vos));
|
return finalList;
|
}
|
|
|
public void loadLijinInfo(VIPEnum rank, com.yeshi.fanli.lijin.vo.GoodsDetailVO goodsDetailVO, GoodsHongBaoListVO.UserLevelVO userLevelVO) {
|
|
GoodsInfoVO goodsInfoVO = goodsDetailVO.getGoods();
|
|
if (goodsInfoVO.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) {
|
|
List<GoodsHongBaoListVO> lijinList = new ArrayList<>();
|
|
//获取自有礼金
|
try {
|
BigDecimal money = lijinCreateService.getTBLijinAmount(goodsInfoVO.getGoodsId(), rank);
|
GoodsHongBaoListVO price = loadLijinInfo(money, goodsInfoVO, userLevelVO);
|
price.setId(GoodsHongBaoListVO.TYPE_LIJIN_OWN);
|
lijinList.add(price);
|
} catch (LiJinGoodsException e) {
|
e.printStackTrace();
|
} catch (LiJinAmountException e) {
|
e.printStackTrace();
|
}
|
|
|
//获取链接
|
List<LiJinProviderLink> links = liJinLinkService.getValidLijinLink(goodsInfoVO.getGoodsId(), 1, 10);
|
if (links != null)
|
for (LiJinProviderLink link : links) {
|
BigDecimal money = link.getMoney();
|
GoodsHongBaoListVO price = loadLijinInfo(money, goodsInfoVO, userLevelVO);
|
price.setId(GoodsHongBaoListVO.TYPE_LIJIN_LINK + "#" + link.getId());
|
lijinList.add(price);
|
}
|
|
//排序
|
Comparator<GoodsHongBaoListVO> cm = (GoodsHongBaoListVO o1, GoodsHongBaoListVO o2) -> {
|
return new BigDecimal(o2.getSubMoney().replace("¥", "").trim()).compareTo(new BigDecimal(o1.getSubMoney().replace("¥", "").trim()));
|
};
|
if (lijinList.size() > 0) {
|
Collections.sort(lijinList, cm);
|
goodsInfoVO.getMoneyInfo().setHongBaoMoney(lijinList.get(0).getSubMoney());
|
goodsInfoVO.getPriceList().addAll(0, lijinList);
|
goodsDetailVO.getExtra().setBuyValid(true);
|
} else {
|
goodsDetailVO.getExtra().setBuyValid(false);
|
}
|
} else {
|
goodsDetailVO.getExtra().setBuyValid(false);
|
}
|
}
|
|
/**
|
* 批量获取淘宝礼金面额
|
*
|
* @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
|
*/
|
public BigDecimal getFanLiRate(Long uid) {
|
//加载返利信息
|
VIPEnum rank = userLijinMnager.getVIPRank(uid);
|
VipGradePotence potence = vipGradePotenceService.getPotenceByVipEnum(rank);
|
//获取返利比例
|
BigDecimal fanliRate = potence.getRebatePercent();
|
return fanliRate;
|
}
|
|
|
public GoodsHongBaoListVO.UserLevelVO getUserLevel(SystemEnum system, VIPEnum vipRank, boolean fanli) {
|
GoodsHongBaoListVO.UserLevelVO userLevelVO = new GoodsHongBaoListVO.UserLevelVO();
|
userLevelVO.setVipRank(vipRank.name());
|
if (vipRank == VIPEnum.silver) {
|
if (fanli) {
|
userLevelVO.setDesc("铂金会员免广告,返利金额提高205%");
|
} else {
|
userLevelVO.setDesc("铂金会员免广告,礼金红包提高216%");
|
}
|
userLevelVO.setLink(configService.getValue(ConfigKeyEnum.lijinVIPLink, system));
|
}
|
return userLevelVO;
|
}
|
|
|
public LiJinExpendRecord createTBLijin(String auctionId, Long uid, Date registDate) throws LiJinException, LiJinGoodsException, LiJinAmountException, LiJinUserException {
|
return lijinCreateService.createTBLijin(getUid(uid), registDate, auctionId);
|
}
|
|
/**
|
* 获取今日剩余数量
|
*
|
* @param uid
|
* @param registDate
|
* @return
|
*/
|
public int getTodayLeftCount(Long uid, Date registDate) {
|
return lijinCreateService.getTodayLeftCount(getUid(uid), registDate);
|
}
|
|
/**
|
* 封装礼金信息
|
*
|
* @param money
|
* @param goodsInfoVO
|
* @return
|
*/
|
private GoodsHongBaoListVO loadLijinInfo(BigDecimal money, GoodsInfoVO goodsInfoVO, GoodsHongBaoListVO.UserLevelVO userLevelVO) {
|
|
GoodsHongBaoListVO price = new GoodsHongBaoListVO();
|
price.setType(2);
|
price.setSubMoney("¥" + money);
|
price.setUserLevel(userLevelVO);
|
//最终价格计算=券后价-礼金
|
BigDecimal couponPrice = goodsInfoVO.getCouponPrice();
|
if (couponPrice == null)
|
couponPrice = new BigDecimal(goodsInfoVO.getZkPrice().replace("¥", "").trim());
|
price.setFinalMoney("¥" + couponPrice.subtract(money).toString());
|
|
List<com.yeshi.fanli.lijin.vo.GoodsDetailVO.GoodsHongBaoListVO.PriceInfo> priceInfos = new ArrayList<>();
|
|
priceInfos.add(new com.yeshi.fanli.lijin.vo.GoodsDetailVO.GoodsHongBaoListVO.PriceInfo("原价", goodsInfoVO.getZkPrice()));
|
|
if (goodsInfoVO.getTempCoupon() != null) {
|
priceInfos.add(new com.yeshi.fanli.lijin.vo.GoodsDetailVO.GoodsHongBaoListVO.PriceInfo("优惠券", "-¥" + MoneyBigDecimalUtil.getWithNoZera(goodsInfoVO.getTempCoupon().getAmount()).toString()));
|
}
|
|
priceInfos.add(new com.yeshi.fanli.lijin.vo.GoodsDetailVO.GoodsHongBaoListVO.PriceInfo("礼金", "-" + "¥" + money));
|
price.setPriceDetails(priceInfos);
|
|
return price;
|
}
|
|
class GoodsDetailVOWithKey {
|
public GoodsDetailVO goodsDetailVO;
|
public String key;
|
|
public GoodsDetailVOWithKey(GoodsDetailVO goodsDetailVO, String key) {
|
this.goodsDetailVO = goodsDetailVO;
|
this.key = key;
|
}
|
}
|
|
|
}
|