yujian
2019-08-03 2043509cb0682dfa671187f8f4c951c981fdfdd3
动态商空值过滤以及更新商品调优
3个文件已修改
203 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/entity/dynamic/GoodsPicture.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java 195 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/ShareGoodsTextTemplateServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/entity/dynamic/GoodsPicture.java
@@ -38,7 +38,7 @@
    private Integer py;
    private Integer size;
    
    // 商品状态: 1真实下架 0
    // 商品状态: 1下架  0
    private int goodState;
    public String getUrl() {
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java
@@ -9,6 +9,7 @@
import javax.annotation.Resource;
import org.apache.commons.beanutils.PropertyUtils;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.core.task.TaskExecutor;
import org.springframework.stereotype.Service;
@@ -465,6 +466,11 @@
        }
        // 过滤为空的
        if (daTaoKe == null) {
            return;
        }
        List<TaoBaoGoodsBrief> listGoods = new ArrayList<TaoBaoGoodsBrief>();
        TaoBaoGoodsBrief taoBaoGoodsBrief = TaoBaoUtil.convert(daTaoKe);
        listGoods.add(taoBaoGoodsBrief);
@@ -472,10 +478,21 @@
        BigDecimal proportion = hongBaoManageService.getFanLiRate();
        TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief,
                proportion.toString(), null);
        // 商品图片
        GoodsPicture goodsPicture = getGoodsPicture(daTaoKe);
        if (!taoBaoGoodsBriefExtra.isCoupon()) {
            taoBaoGoodsBriefExtra.setState(1);
            goodsPicture.setGoodState(1);
        }
        taoBaoGoodsBriefExtra.setTkRate(taoBaoGoodsBrief.getTkRate());
        taoBaoGoodsBriefExtra.setUpdatetime(new Date());
        taoBaoGoodsBriefExtra.setCouponInfo(null);
        goodsPicture.setGoods(taoBaoGoodsBriefExtra);
        // 商品列表
        List<GoodsPicture> listPicture = new ArrayList<GoodsPicture>();
        listPicture.add(goodsPicture);
        // 分享奖金
        BigDecimal shareMoney = taoBaoGoodsBriefService.getShareGoodsUserHongBao(taoBaoGoodsBrief);
@@ -483,14 +500,7 @@
        shareMoneyDesc.setColor("#FFFFFF");
        shareMoneyDesc.setBottomColor("#E8AE48");
        shareMoneyDesc.setContent("预估分享奖金:¥" + shareMoney);
        // 商品图片
        GoodsPicture goodsPicture = getGoodsPicture(daTaoKe);
        taoBaoGoodsBriefExtra.setUpdatetime(new Date());
        taoBaoGoodsBriefExtra.setCouponInfo(null);
        goodsPicture.setGoods(taoBaoGoodsBriefExtra);
        // 商品列表
        List<GoodsPicture> listPicture = new ArrayList<GoodsPicture>();
        listPicture.add(goodsPicture);
        // 获取商品列表图片
        TaoBaoGoodsBrief taoBaoGoodsBrief2 = TaoKeApiUtil.getSimpleGoodsInfo(daTaoKe.getGoodsId());
@@ -901,15 +911,21 @@
    @Override
    @Cacheable(value = "dynamicCache", key = "'queryV2-'+#platform+'-'+#version+'-'+#start+'-'+#count+'-'+#cid+'-'+#subId")
    public List<DynamicInfo> queryV2(int platform, int version, int start, int count, Long cid, Long subId) {
        List<DynamicInfo> listNew = new ArrayList<DynamicInfo>();
        List<DynamicInfo> list = dynamicInfoDao.query(start, count, cid, subId);
        if (list != null && list.size() > 0) {
            BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
            BigDecimal shareRate = hongBaoManageService.getShareRate();
            for (DynamicInfo dynamicInfo: list) {
                DynamicInfo dynamicNew = new DynamicInfo();
                try {
                    PropertyUtils.copyProperties(dynamicNew, dynamicInfo);
                } catch (Exception e) {
                    e.printStackTrace();
                    continue;
                }
                
                TaoBaoShop shop = dynamicInfo.getShop();
                TaoBaoShop shop = dynamicNew.getShop();
                if (shop != null) {
                    Integer userType = shop.getUserType();
                    if (userType == null || userType == 0) {
@@ -917,11 +933,11 @@
                    } else {
                        shop.setUserType(11);
                    }
                    dynamicInfo.setShop(shop);
                    dynamicNew.setShop(shop);
                }
                
                
                List<GoodsPicture> imgs = dynamicInfo.getImgs();
                List<GoodsPicture> imgs = dynamicNew.getImgs();
                if (imgs != null && imgs.size() > 0) {
                    for (GoodsPicture goodsPicture: imgs) {
                        TaoBaoGoodsBriefExtra goods = goodsPicture.getGoods();
@@ -941,7 +957,8 @@
                        }
                    }
                }
                dynamicInfo.setImgs(imgs);
                dynamicNew.setImgs(imgs);
                listNew.add(dynamicNew);
            }
        }
        
@@ -953,8 +970,7 @@
                updateGoodInfo(list);
            }
        });
        return list;
        return listNew;
    }
    
@@ -962,16 +978,15 @@
     * 更新商品信息
     */
    public void updateGoodInfo(List<DynamicInfo> list) {
        // 外网进行更新
        if (!Constant.IS_OUTNET) {
            return;
            return; // 外网进行更新
        }
        if (list == null || list.size() == 0) {
            return;
        }
        try {
        BigDecimal proportion = hongBaoManageService.getFanLiRate();
        for (DynamicInfo dynamicInfo : list) {
            // 邀请数据不做更新
@@ -981,8 +996,8 @@
            }
            // 更新商品信息
            List<GoodsPicture> imgs = dynamicInfo.getImgs();
            if (imgs == null || imgs.size() == 0) {
                List<GoodsPicture> listPicture = dynamicInfo.getImgs();
                if (listPicture == null || listPicture.size() == 0) {
                continue;
            }
@@ -1004,7 +1019,7 @@
            // 商品列表
            List<TaoBaoGoodsBrief> listGoods = new ArrayList<TaoBaoGoodsBrief>();
            for (GoodsPicture goodsPicture : imgs) {
                for (GoodsPicture goodsPicture : listPicture) {
                TaoBaoGoodsBriefExtra oldExtra = goodsPicture.getGoods();
                if (oldExtra == null) {
                    continue;
@@ -1015,19 +1030,48 @@
                    continue;
                }
                    TaoBaoGoodsBrief goodsBrief = null;
                try {
                    TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(oldExtra.getAuctionId());
                    // 更新商品信息
                    try {
                        taoBaoGoodsUpdateService.updateTaoBaoGoods(goodsBrief);
                    } catch (Exception e) {
                        e.printStackTrace();
                        goodsBrief = redisManager.getTaoBaoGoodsBrief(oldExtra.getAuctionId());
                    } catch (TaobaoGoodsDownException e) {
                    }
                    // 是否下架 : 1、商品本身下架 2、无券信息则认为下架
                    boolean isDown = true;
                    if (goodsBrief == null) {
                        listDown.add(oldExtra.getAuctionId()); // 下架商品
                    } else if (goodsBrief.getCouponAmount() != null
                            && goodsBrief.getCouponAmount().compareTo(BigDecimal.valueOf(0)) > 0) {
                        isDown = false;
                    }
                    if (isDown) {
                        oldExtra.setState(1);
                        oldExtra.setCoupon(false);
                        oldExtra.setUpdatetime(new Date());
                        goodsPicture.setGoods(oldExtra);
                        // 商品已抢光
                        goodsPicture.setGoodState(1);
                        // 更新热销单品的分享奖金
                        if (classId == 1) {
                            ClientTextStyleVO shareMoneyDesc = new ClientTextStyleVO();
                            shareMoneyDesc.setColor("#FFFFFF");
                            shareMoneyDesc.setBottomColor("#E8AE48");
                            shareMoneyDesc.setContent("预估分享奖金:¥" + new BigDecimal(0));
                            dynamicInfo.setDesc(shareMoneyDesc);
                        }
                    } else {
                    listGoods.add(goodsBrief);
                    // 更新热销单品的分享奖金 ,其余不做更新
                        TaoBaoGoodsBriefExtra newExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(goodsBrief,
                                proportion.toString(), null);
                        newExtra.setUpdatetime(new Date());
                        goodsPicture.setGoods(newExtra);
                        // 更新热销单品的分享奖金
                    if (classId == 1) {
                        BigDecimal shareMoney = taoBaoGoodsBriefService.getShareGoodsUserHongBao(goodsBrief);
                        ClientTextStyleVO shareMoneyDesc = new ClientTextStyleVO();
@@ -1036,85 +1080,56 @@
                        shareMoneyDesc.setContent("预估分享奖金:¥" + shareMoney);
                        dynamicInfo.setDesc(shareMoneyDesc);
                    }
                    TaoBaoGoodsBriefExtra newExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(goodsBrief,
                            proportion.toString(), null);
                    if (!newExtra.isCoupon()) {
                        newExtra.setState(1);
                    }
                    newExtra.setUpdatetime(new Date());
                    goodsPicture.setGoods(oldExtra);
                } catch (TaobaoGoodsDownException e) {
                    listDown.add(oldExtra.getAuctionId());
                    oldExtra.setState(1);
                    oldExtra.setCoupon(false);
                    oldExtra.setUpdatetime(new Date());
                    goodsPicture.setGoods(oldExtra);
                    // 商品真实下架
                    goodsPicture.setGoodState(1);
                    // 更新热销单品的分享奖金 ,其余不做更新
                    if (classId == 1) {
                        ClientTextStyleVO shareMoneyDesc = new ClientTextStyleVO();
                        shareMoneyDesc.setColor("#FFFFFF");
                        shareMoneyDesc.setBottomColor("#E8AE48");
                        shareMoneyDesc.setContent("预估分享奖金:¥" + new BigDecimal(0));
                        dynamicInfo.setDesc(shareMoneyDesc);
                    }
                    e.printStackTrace();
                }
            }
            dynamicInfo.setImgs(imgs);
                dynamicInfo.setImgs(listPicture);
            // 商品已下架
            List<TaoBaoGoodsBrief> listGoodsBrief = dynamicInfo.getListGoodsBrief();
            if (listGoodsBrief != null && listGoodsBrief.size() > 0) {
                if (listGoods.size() > 0) {
                    if (classId == 1) {
                        dynamicInfo.setListGoodsBrief(listGoods);
                    } else {
                        for (int i = 0; i < listGoodsBrief.size(); i++) {
                            TaoBaoGoodsBrief taoBaoGoodsBrief = listGoodsBrief.get(i);
                            Long auctionId = taoBaoGoodsBrief.getAuctionId();
                            boolean isadd = true;
                            for (TaoBaoGoodsBrief goods : listGoods) {
                                if (goods.getAuctionId().equals(auctionId) || goods.getAuctionId() == auctionId) {
                                    isadd = false;
                                    break;
                                }
                            }
                            if (isadd) {
                                // 商品已下架 则添加原来商品信息
                                if (listDown.size() > 0 && listDown.contains(taoBaoGoodsBrief.getAuctionId())) {
                                    taoBaoGoodsBrief.setState(1);
                                }
                                listGoods.add(taoBaoGoodsBrief);
                            }
                        }
                        dynamicInfo.setListGoodsBrief(listGoods);
                    }
                } else {
                    // 淘宝已下架商品
                    if (listDown.size() > 0) {
                        for (TaoBaoGoodsBrief taoBaoGoodsBrief : listGoodsBrief) {
                            if (listDown.contains(taoBaoGoodsBrief.getAuctionId())) {
                                taoBaoGoodsBrief.setState(1);
                            }
                        }
                        dynamicInfo.setListGoodsBrief(listGoodsBrief);
                    }
                    if (listGoods.size() == 0) {
                        dynamicInfo.setListGoodsBrief(listGoodsBrief);
                    } else {
                        List<TaoBaoGoodsBrief> listNew = new ArrayList<TaoBaoGoodsBrief>();
                        for (int i = 0; i < listGoodsBrief.size(); i++) {
                            TaoBaoGoodsBrief taoBaoGoodsBrief = listGoodsBrief.get(i);
                            if (taoBaoGoodsBrief.getState() != null && taoBaoGoodsBrief.getState() == 1) {
                                listNew.add(taoBaoGoodsBrief);
                            } else {
                                boolean isUpdate = false;
                                Long auctionId = taoBaoGoodsBrief.getAuctionId();
                                for (TaoBaoGoodsBrief goods : listGoods) {
                                    if (goods.getAuctionId().equals(auctionId) || goods.getAuctionId() == auctionId) {
                                        listNew.add(goods);
                                        isUpdate = true;
                                        break;
                }
            }
                                if (!isUpdate) {
                                    listNew.add(taoBaoGoodsBrief);
                                }
                            }
                        }
                        dynamicInfo.setListGoodsBrief(listNew);
                    }
                }
            dynamicInfo.setUpdateTime(new Date());
            dynamicInfoDao.updateGoodInfo(dynamicInfo);
        }
        } catch (Exception e) {
            LogHelper.errorDetailInfo(e);
        }
    }
}
fanli/src/main/java/com/yeshi/fanli/service/impl/goods/ShareGoodsTextTemplateServiceImpl.java
@@ -324,7 +324,7 @@
        if (!hasCoupon) {
            return template.replace("{标题}", goods.getTitle()).replace("{商品原价}",  BigDecimalUtil.getWithNoZera(goods.getZkPrice()).toString())
                    .replace("{月销量}", TaoBaoUtil.getSaleCount(goods.getBiz30day())).replace("{领券短链}", shortLink)
                    .replace("{淘口令}", "").replace("{店铺类型}", goods.getUserType() == 1 ? "天猫价"
                    .replace("{淘口令}", token).replace("{店铺类型}", goods.getUserType() == 1 ? "天猫价"
                            : "淘宝价");
        } else {
            return template.replace("{标题}", goods.getTitle()).replace("{商品原价}", BigDecimalUtil.getWithNoZera( goods.getZkPrice()).toString())
@@ -372,7 +372,7 @@
            template = template.replace("{标题}", goods.getGoodsName()).replace("{商品原价}",  BigDecimalUtil.getWithNoZera(price).toString())
                    .replace("{总销量}", goods.getSalesTip()).replace("{短链接}", shortLink);
            if (StringUtil.isNullOrEmpty(token)) {
                template = template.replace("复制本条信息,{多多口令}打开拼多多", "点击链接,打开拼多多");
                template = template.replace("复制本条信息,{多多口令}打开拼多多,立即购买", "点击链接,打开拼多多,立即购买");
            } else {
                template = template.replace("{多多口令}", token);
            }
@@ -384,7 +384,7 @@
                    .replace("{优惠券价}", BigDecimalUtil.getWithNoZera(PinDuoDuoUtil.getQuanPrice(goods)).toString());
            
            if (StringUtil.isNullOrEmpty(token)) {
                template = template.replace("{多多口令}", "");
                template = template.replace("复制本条信息,{多多口令}打开拼多多,免费领券", "点击链接,打开拼多多,免费领券");
            } else {
                template = template.replace("{多多口令}", token);
            }