From 744594ef1a2f530fc3e86ea9dc48b62247f79420 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 19 五月 2020 17:13:23 +0800 Subject: [PATCH] 饿了么绘图,添加口碑 --- fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java | 2469 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 1,242 insertions(+), 1,227 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java index 5ea4058..1b795c0 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java @@ -1,1227 +1,1242 @@ -package com.yeshi.fanli.service.impl.dynamic; - -import java.lang.reflect.InvocationTargetException; -import java.math.BigDecimal; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -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; -import org.yeshi.utils.DateLunarUtil; -import org.yeshi.utils.DateUtil; -import org.yeshi.utils.taobao.TbImgUtil; - -import com.yeshi.fanli.dao.dynamic.DynamicInfoDao; -import com.yeshi.fanli.dto.taobao.TaoBaoShopDTO; -import com.yeshi.fanli.entity.bus.activity.ActivityRuleUser; -import com.yeshi.fanli.entity.bus.activity.ActivityUser; -import com.yeshi.fanli.entity.bus.activity.RecommendActivity; -import com.yeshi.fanli.entity.bus.activity.RecommendActivityInviteInfo; -import com.yeshi.fanli.entity.bus.activity.RecommendActivityTaoBaoGoods; -import com.yeshi.fanli.entity.bus.clazz.GoodsClass; -import com.yeshi.fanli.entity.common.JumpDetailV2; -import com.yeshi.fanli.entity.dynamic.DynamicInfo; -import com.yeshi.fanli.entity.dynamic.GoodsPicture; -import com.yeshi.fanli.entity.dynamic.InviteMaterial; -import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; -import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBriefExtra; -import com.yeshi.fanli.entity.taobao.TaoBaoShop; -import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetail; -import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; -import com.yeshi.fanli.log.LogHelper; -import com.yeshi.fanli.service.inter.activity.ActivityUserService; -import com.yeshi.fanli.service.inter.common.JumpDetailV2Service; -import com.yeshi.fanli.service.inter.dynamic.DynamicInfoService; -import com.yeshi.fanli.service.inter.dynamic.InviteMaterialService; -import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService; -import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService; -import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService; -import com.yeshi.fanli.service.inter.taobao.TaoBaoShopService; -import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsService; -import com.yeshi.fanli.service.inter.user.QrCodeService; -import com.yeshi.fanli.util.Constant; -import com.yeshi.fanli.util.MoneyBigDecimalUtil; -import com.yeshi.fanli.util.RedisManager; -import com.yeshi.fanli.util.StringUtil; -import com.yeshi.fanli.util.dataoke.DaTaoKeApiUtil; -import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory; -import com.yeshi.fanli.util.taobao.DaTaoKeUtil; -import com.yeshi.fanli.util.taobao.TaoBaoUtil; -import com.yeshi.fanli.util.taobao.TaoKeApiUtil; -import com.yeshi.fanli.vo.goods.GoodsDetailVO; -import com.yeshi.fanli.vo.msg.ClientTextStyleVO; - -import net.sf.json.JSONObject; - -@Service -public class DynamicInfoServiceImpl implements DynamicInfoService { - - @Resource(name = "taskExecutor") - private TaskExecutor executor; - - @Resource - private DynamicInfoDao dynamicInfoDao; - - @Resource - private RedisManager redisManager; - - @Resource - private DaTaoKeGoodsService daTaoKeGoodsService; - - @Resource - private JumpDetailV2Service jumpDetailV2Service; - - @Resource - private ActivityUserService activityUserService; - - @Resource - private TaoBaoGoodsBriefService taoBaoGoodsBriefService; - - @Resource - private HongBaoManageService hongBaoManageService; - - @Resource - private TaoBaoShopService taoBaoShopService; - - @Resource - private InviteMaterialService inviteMaterialService; - - @Resource - private QrCodeService qrCodeService; - - @Resource - private TaoBaoGoodsUpdateService taoBaoGoodsUpdateService; - - @Override - public void insert(DynamicInfo record) { - dynamicInfoDao.insert(record); - } - - @Override - public DynamicInfo getById(String id) { - return dynamicInfoDao.getById(id); - } - - @Override - public void insertTimeInvite() { - InviteMaterial inviteMaterial = inviteMaterialService.getInviteMaterial(); - if (inviteMaterial == null) { - return; - } - - Date date = new Date(); - String materialId = inviteMaterial.getId(); - String content = inviteMaterial.getText(); - - ActivityUser user = activityUserService.selectByPrimaryKey(2L); - - if (!StringUtil.isNullOrEmpty(content)) { - DynamicInfo dynamicTxt = new DynamicInfo(); - dynamicTxt.setId(UUID.randomUUID().toString().replace("-", "")); - dynamicTxt.setInviteMaterialId(materialId); - dynamicTxt.setClassId(4L); - dynamicTxt.setSubclassId(0L); - dynamicTxt.setShowType(DynamicInfo.SHOW_TYPE_ZERO); - dynamicTxt.setShareType(DynamicInfo.SHARE_TYPE_INVITE); - dynamicTxt.setUser(user); - dynamicTxt.setShareCount(1000 + (int) (Math.random() * 8000)); - dynamicTxt.setCreateTime(date); - dynamicTxt.setUpdateTime(date); - - SimpleDateFormat format = new SimpleDateFormat("MM鏈坉d鏃�"); - - StringBuffer buffer = new StringBuffer(); - buffer.append("-------------------\n"); - buffer.append("浠婂ぉ : " + format.format(date)); - buffer.append(" "); - buffer.append(DateLunarUtil.getWeekd(date) + "\n"); - buffer.append("鍚勪綅浜茬埍鐨勪綘"); - buffer.append(" "); - buffer.append("鏃╁畨锝瀄n"); - buffer.append("鎴戠殑閭�璇风爜锛氥�愰個璇风爜銆慭n"); - buffer.append("璐墿鐪侀挶杩斿埄鍒窤pp锛氥�愰個璇烽摼鎺ャ��"); - - content = content.replaceAll("\\,", "\\锛�").replaceAll("\\.", "\\銆�").replaceAll("\\;", "\\锛�") - .replaceAll("\\!", "\\锛�").replaceAll("\\?", "\\锛�").replaceAll("\\:", "\\锛�"); - - ClientTextStyleVO row1 = new ClientTextStyleVO(); - row1.setColor("#333333"); - row1.setContent(content + "\n" + buffer.toString()); - List<ClientTextStyleVO> listtitle = new ArrayList<ClientTextStyleVO>(); - listtitle.add(row1); - dynamicTxt.setTitle(listtitle); - - // 绌烘暟鎹� - List<GoodsPicture> listImg = new ArrayList<GoodsPicture>(); - dynamicTxt.setImgs(listImg); - - dynamicInfoDao.insert(dynamicTxt); - } - - String picture = inviteMaterial.getPicture(); - if (!StringUtil.isNullOrEmpty(picture)) { - DynamicInfo dynamicPic = new DynamicInfo(); - dynamicPic.setId(UUID.randomUUID().toString().replace("-", "")); - dynamicPic.setInviteMaterialId(materialId); - dynamicPic.setClassId(4L); - dynamicPic.setSubclassId(0L); - dynamicPic.setShowType(DynamicInfo.SHOW_TYPE_ONE); - dynamicPic.setShareType(DynamicInfo.SHARE_TYPE_INVITE); - dynamicPic.setUser(user); - dynamicPic.setShareCount(1000 + (int) (Math.random() * 8000)); - dynamicPic.setCreateTime(date); - dynamicPic.setUpdateTime(date); - - try { - // 鐢诲浘 - String url = qrCodeService.drawInviteToGreet(picture, null, null, null, content, new Date()); - - List<ClientTextStyleVO> listtitle = new ArrayList<ClientTextStyleVO>(); - dynamicPic.setTitle(listtitle); - - GoodsPicture p2 = new GoodsPicture(); - p2.setW(100); - p2.setH(100); - p2.setUrl(url); - p2.setUrlOriginal(picture); - p2.setTitleOriginal(content); - List<GoodsPicture> listImg = new ArrayList<GoodsPicture>(); - listImg.add(p2); - dynamicPic.setImgs(listImg); - - dynamicInfoDao.insert(dynamicPic); - } catch (Exception e) { - try { - LogHelper.errorDetailInfo(e); - } catch (Exception e1) { - e1.printStackTrace(); - } - } - } - // 鏇存柊绱犳潗鐘舵�� - inviteMaterialService.updateState(1, materialId); - } - - @Override - public void insertShopInfo() { - List<String> brandIdList = DaTaoKeApiUtil.getBrandIdList(); - if (brandIdList == null || brandIdList.size() == 0) { - LogHelper.test("澶ф窐瀹㈠搧鐗宨d鑾峰彇澶辫触锛圖ynamicInfoService-insertShopInfo锛�"); - return; - } - - Long classId = 3L; - Long subclassId = 0L; - List<DynamicInfo> listInfo = dynamicInfoDao.query(classId, subclassId); - - // 娓呯悊宸插瓨鍦ㄥ搧鐗� - if (listInfo != null && listInfo.size() > 0) { - for (int i = 0; i < brandIdList.size(); i++) { - String brandId = brandIdList.get(i); - - for (int j = 0; j < listInfo.size(); j++) { - String id = listInfo.get(j).getId(); - if (brandId.equals(id)) { - brandIdList.remove(brandId); - i--; - - listInfo.remove(listInfo.get(j)); - j--; - } - } - } - } - - if (brandIdList == null || brandIdList.size() == 0) { - LogHelper.test("澶ф窐瀹㈠搧鐗屽凡鍏ㄩ儴鐖彇锛圖ynamicInfoService-insertShopInfo锛�"); - return; - } - - int index = (int) (Math.random() * brandIdList.size()); - String brandId = brandIdList.get(index); - - TaoBaoShopDTO dynamicShopInfo = DaTaoKeApiUtil.getDynamicShopInfo(brandId); - if (dynamicShopInfo == null) { - LogHelper.test("澶ф窐瀹㈠搧鐗屼俊鎭埇鍙栧け璐ワ紙DynamicInfoService-insertShopInfo锛�"); - return; - } - - List<TaoBaoGoodsBrief> listGoods = dynamicShopInfo.getListGoods(); - if (listGoods == null || listGoods.size() == 0) { - LogHelper.test("澶ф窐瀹㈠搧鐗屽晢鍝佷俊鎭埇鍙栧け璐ワ紙DynamicInfoService-insertShopInfo锛�"); - return; - } - - Long sellerId = dynamicShopInfo.getSellerId(); - TaoBaoGoodsBrief taoBaoGoodsBrief = listGoods.get(0); - TaoBaoShop taoBaoShop = taoBaoShopService.getTaoBaoShop(taoBaoGoodsBrief.getAuctionId(), sellerId); - if (taoBaoShop == null) { - LogHelper.test("搴楅摵璇︽儏淇℃伅鑾峰彇澶辫触锛圖ynamicInfoService-insertShopInfo锛�"); - return; - } - String shopLink = taoBaoShop.getShopLink(); - if (StringUtil.isNullOrEmpty(shopLink)) { - taoBaoShop.setShopLink(TaoBaoUtil.getShopLink(taoBaoShop.getId())); - } - - if(StringUtil.isNullOrEmpty(taoBaoShop.getShopIcon())) - taoBaoShop.setShopIcon(dynamicShopInfo.getShopIcon()); - - DynamicInfo dynamicVO = new DynamicInfo(); - dynamicVO.setId(brandId); - dynamicVO.setClassId(classId); - dynamicVO.setSubclassId(subclassId); - dynamicVO.setShowType(DynamicInfo.SHOW_TYPE_TWO); - dynamicVO.setShop(taoBaoShop); - List<ActivityRuleUser> userList = activityUserService.listByRuleCode(ActivityRuleUser.RULE_HAODIAN, 1, 50); - dynamicVO.setUser(userList.get((int) (userList.size() * Math.random())).getActivityUser()); - dynamicVO.setCreateTime(DateUtil.reduceRandomMinute(new Date(), 8)); - dynamicVO.setUpdateTime(new Date()); - - // 浠嬬粛鍐呭 - ClientTextStyleVO row1 = new ClientTextStyleVO(); - row1.setColor("#333333"); - row1.setContent(dynamicShopInfo.getBrandDes()); - List<ClientTextStyleVO> listTitle = new ArrayList<ClientTextStyleVO>(); - listTitle.add(row1); - dynamicVO.setTitle(listTitle); - - // 鍟嗗搧淇℃伅 - List<GoodsPicture> listPicture = new ArrayList<GoodsPicture>(); - for (TaoBaoGoodsBrief goodsBrief : listGoods) { - BigDecimal proportion = hongBaoManageService.getFanLiRate(); - TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(goodsBrief, - proportion.toString(), null); - taoBaoGoodsBriefExtra.setCouponInfo(null); - taoBaoGoodsBriefExtra.setUpdatetime(new Date()); - - if (!taoBaoGoodsBriefExtra.isCoupon()) { - taoBaoGoodsBriefExtra.setState(1); - } - - String goodsId = goodsBrief.getAuctionId().toString(); - JSONObject item = new JSONObject(); - item.put("id", goodsId); - item.put("from", "dynamics"); - - GoodsPicture goodsPicture = new GoodsPicture(); - goodsPicture.setH(100); - goodsPicture.setW(100); - goodsPicture.setUrl(TbImgUtil.getTBSize320Img(goodsBrief.getPictUrl())); - goodsPicture.setJumpDetail(jumpDetailV2Service.getByTypeCache("goodsdetail")); - goodsPicture.setParams(item.toString()); - goodsPicture.setGoods(taoBaoGoodsBriefExtra); - - listPicture.add(goodsPicture); - } - dynamicVO.setImgs(listPicture); - - dynamicInfoDao.insert(dynamicVO); - } - - @Override - public void insertTimeRecommend() { - try { - Long classId = 2L; - List<GoodsClass> list = DaTaoKeUtil.goodsClasses; - int index = (int) (Math.random() * list.size()); - Long subclassId = list.get(index).getId(); - int cid = Integer.parseInt(subclassId + ""); - int count = 0; - double random = Math.random(); - if (random > 0.4) { - count = 9; - } else { - count = 4; - } - - List<DaTaoKeDetail> listDaTaoKe = daTaoKeGoodsService.getGoodsNotInList(subclassId, null, count); - - DaTaoKeDetail daTaoKeDetail = null; - // 鍟嗗搧鍒楄〃 - List<GoodsPicture> listPicture = new ArrayList<GoodsPicture>(); - // 鍟嗗搧鍒楄〃 - List<TaoBaoGoodsBrief> listGoods = new ArrayList<TaoBaoGoodsBrief>(); - // 鍒嗕韩濂栭噾 - BigDecimal shareMoney = new BigDecimal(0); - - BigDecimal proportion = hongBaoManageService.getFanLiRate(); - for (DaTaoKeDetail daTaoKe : listDaTaoKe) { - if (daTaoKeDetail == null) { - daTaoKeDetail = daTaoKe; - } - // 鍒嗕韩濂栭噾 - TaoBaoGoodsBrief taoBaoGoodsBrief = TaoBaoUtil.convert(daTaoKe); - listGoods.add(taoBaoGoodsBrief); - - TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, - proportion.toString(), null); - if (!taoBaoGoodsBriefExtra.isCoupon()) { - taoBaoGoodsBriefExtra.setState(1); - } - - BigDecimal money = taoBaoGoodsBriefService.getShareGoodsUserHongBao(taoBaoGoodsBrief); - shareMoney = MoneyBigDecimalUtil.add(shareMoney, money); - // 鍟嗗搧鍥剧墖 - taoBaoGoodsBriefExtra.setUpdatetime(new Date()); - taoBaoGoodsBriefExtra.setCouponInfo(null); - GoodsPicture goodsPicture = getGoodsPicture(daTaoKe); - goodsPicture.setGoods(taoBaoGoodsBriefExtra); - - listPicture.add(goodsPicture); - } - - // 缁勭粐鍔ㄦ�佷俊鎭� - DynamicInfo dynamicInfo = getDynamicInfo(daTaoKeDetail, classId, subclassId); - // 鏃犲唴瀹� - dynamicInfo.setTitle(new ArrayList<ClientTextStyleVO>()); - // 鍙戝竷鐢ㄦ埛 - dynamicInfo.setUser(activityUserService.getRandomByDaTaoKeCid(cid)); - dynamicInfo.setImgs(listPicture); - dynamicInfo.setListGoodsBrief(listGoods); - - ClientTextStyleVO shareMoneyDesc = new ClientTextStyleVO(); - shareMoneyDesc.setColor("#FFFFFF"); - shareMoneyDesc.setBottomColor("#E8AE48"); - shareMoneyDesc.setContent("棰勪及鍒嗕韩濂栭噾锛毬�" + shareMoney); - dynamicInfo.setDesc(shareMoneyDesc); - dynamicInfo.setShowType(2); - - if (count == 4) { - dynamicInfo.setShowType(DynamicInfo.SHOW_TYPE_TWO); - dynamicInfo.setShareType(DynamicInfo.SHARE_TYPE_FOUR); // 鍒嗕韩绫诲瀷4鍥� - } else { - dynamicInfo.setShowType(DynamicInfo.SHOW_TYPE_THREE); - dynamicInfo.setShareType(DynamicInfo.SHARE_TYPE_NINE); // 鍒嗕韩绫诲瀷9鍥� - } - // 淇濆瓨淇℃伅 - dynamicInfoDao.insert(dynamicInfo); - - } catch (Exception e) { - try { - LogHelper.errorDetailInfo(e); - } catch (Exception e1) { - e1.printStackTrace(); - } - } - } - - // 瀹氭椂鎻掑叆 - @Override - public void insertTimeHotSale() { - Long classId = 1L; - try { - for (int i = 0; i < 3; i++) { - boolean addSuccess = saveHotSale(classId, 0L); - if (addSuccess) { - break; - } - } - } catch (Exception e) { - try { - LogHelper.errorDetailInfo(e); - } catch (Exception e1) { - e1.printStackTrace(); - } - } - - // 鐑攢鍗曞搧鐨勫垎绫� - List<GoodsClass> list = DaTaoKeUtil.goodsClasses; - for (GoodsClass goodsClass : list) { - try { - for (int i = 0; i < 3; i++) { - boolean addSuccess = saveHotSale(classId, goodsClass.getId()); - if (addSuccess) { - break; - } - } - } catch (Exception e) { - try { - LogHelper.errorDetailInfo(e); - } catch (Exception e1) { - e1.printStackTrace(); - } - } - } - } - - /** - * 淇濆瓨鐑攢鍗曞搧 - * - * @param classId - * @param subclassId - * @throws TaobaoGoodsDownException - */ - public boolean saveHotSale(Long classId, Long subclassId) throws TaobaoGoodsDownException { - boolean addSuccess = false; - List<Long> listId = null; - List<DynamicInfo> listInfo = dynamicInfoDao.query(classId, subclassId); - if (listInfo != null && listInfo.size() > 0) { - listId = new ArrayList<Long>(); - for (DynamicInfo dynamicInfo : listInfo) { - Long daTaoKeId = dynamicInfo.getDaTaoKeId(); - if (daTaoKeId != null) { - listId.add(dynamicInfo.getDaTaoKeId()); - } - } - } - // 澶ф窐瀹㈡暟鎹� - DaTaoKeDetail daTaoKe = daTaoKeGoodsService.getGoodsNotInList(subclassId, listId, 1).get(0); - if (daTaoKe == null) { - return addSuccess; - } - - try { - daTaoKe = DaTaoKeUtil.filterDaTaoKe(TaoKeApiUtil.searchGoodsDetail(daTaoKe.getGoodsId()), daTaoKe); - } catch (Exception e) { - - } - - TaoBaoGoodsBrief taoBaoGoodsBrief = TaoBaoUtil.convert(daTaoKe); - BigDecimal proportion = hongBaoManageService.getFanLiRate(); - TaoBaoGoodsBriefExtra goodsExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), - null); - - if (!goodsExtra.isCoupon() || (goodsExtra.getState() != null && goodsExtra.getState() == 1)) { - return addSuccess; // 宸蹭笅鏋� 銆佹棤鍒� 涓嶅姞鍏� - } - - List<TaoBaoGoodsBrief> listGoods = new ArrayList<TaoBaoGoodsBrief>(); - listGoods.add(taoBaoGoodsBrief); - - goodsExtra.setTkRate(taoBaoGoodsBrief.getTkRate()); - goodsExtra.setUpdatetime(new Date()); - goodsExtra.setCouponInfo(null); - - GoodsPicture goodsPicture = getGoodsPicture(daTaoKe); - goodsPicture.setGoods(goodsExtra); - // 鍟嗗搧鍒楄〃 - List<GoodsPicture> listPicture = new ArrayList<GoodsPicture>(); - listPicture.add(goodsPicture); - - // 鑾峰彇鍟嗗搧鍒楄〃鍥剧墖 - TaoBaoGoodsBrief taoBaoGoodsBrief2 = TaoKeApiUtil.getSimpleGoodsInfo(daTaoKe.getGoodsId()); - List<String> imgList = taoBaoGoodsBrief2.getImgList(); - List<String> listimgs = new ArrayList<String>(); - String pic = daTaoKe.getPic(); - listimgs.add(TbImgUtil.getTBSize320Img(pic)); - if (imgList != null && imgList.size() > 0) { - for (String img : imgList) { - - if (listPicture.size() >= 4) { - break; - } - if (pic.equals(img)) { - continue; - } - - listimgs.add(img); - GoodsPicture picture = new GoodsPicture(); - picture.setH(100); - picture.setW(100); - picture.setUrl(TbImgUtil.getTBSize320Img(img)); - listPicture.add(picture); - } - } - goodsExtra.setImgList(imgList); - - // 鍒嗕韩濂栭噾 - BigDecimal shareMoney = taoBaoGoodsBriefService.getShareGoodsUserHongBao(taoBaoGoodsBrief); - ClientTextStyleVO shareMoneyDesc = new ClientTextStyleVO(); - shareMoneyDesc.setColor("#FFFFFF"); - shareMoneyDesc.setBottomColor("#E8AE48"); - shareMoneyDesc.setContent("棰勪及鍒嗕韩濂栭噾锛毬�" + shareMoney); - - // 缁勭粐鍔ㄦ�佷俊鎭� - DynamicInfo dynamicInfo = getDynamicInfo(daTaoKe, classId, subclassId); - dynamicInfo.setUser(activityUserService.getRandomByDaTaoKeCid(daTaoKe.getCid())); - dynamicInfo.setImgs(listPicture); - dynamicInfo.setDesc(shareMoneyDesc); - dynamicInfo.setShareType(DynamicInfo.SHARE_TYPE_ONE); - dynamicInfo.setShowType(DynamicInfo.SHOW_TYPE_TWO); - dynamicInfo.setListGoodsBrief(listGoods); - - String desc = DaTaoKeUtil.getDesc(daTaoKe); - if (!StringUtil.isNullOrEmpty(desc)) { - int index = desc.lastIndexOf("\n"); - String newDesc = desc.substring(index + 1); - if (StringUtil.isNullOrEmpty(newDesc)) { - desc = desc.substring(0, index); - } - } - dynamicInfo.setTitle(convertIntroduce(desc)); - - // 淇濆瓨淇℃伅 - dynamicInfoDao.insert(dynamicInfo); - - addSuccess = true; - return addSuccess; - } - - /** - * 鏁版嵁缁勭粐瀛樺叆MongoDB涓� - * - * @param daTaoKe - * @param classId - * @param subclassId - * @throws TaobaoGoodsDownException - */ - public DynamicInfo getDynamicInfo(DaTaoKeDetail daTaoKe, Long classId, Long subclassId) { - DynamicInfo dynamicInfo = new DynamicInfo(); - dynamicInfo.setId(UUID.randomUUID().toString().replace("-", "")); - dynamicInfo.setClassId(classId); - dynamicInfo.setSubclassId(subclassId); - dynamicInfo.setDaTaoKeId(daTaoKe.getId()); - dynamicInfo.setCreateTime(DateUtil.reduceRandomMinute(new Date(), 8)); - dynamicInfo.setUpdateTime(new Date()); - // 闅忔満鍒嗕韩娆℃暟 - dynamicInfo.setShareCount(1000 + (int) (Math.random() * 8000)); - - return dynamicInfo; - } - - /** - * 鏂囧瓧鍐呭 - * - * @param introduce - * @return - */ - public List<ClientTextStyleVO> convertIntroduce(String introduce) { - List<ClientTextStyleVO> title = new ArrayList<ClientTextStyleVO>(); - ClientTextStyleVO desc = new ClientTextStyleVO(); - desc.setColor("#333333"); - desc.setContent(introduce); - title.add(desc); - return title; - } - - /** - * 鍥剧墖鍒楄〃 - * - * @param daTaoKe - * @return - */ - public GoodsPicture getGoodsPicture(DaTaoKeDetail daTaoKe) { - GoodsPicture goodsPicture = new GoodsPicture(); - goodsPicture.setH(100); - goodsPicture.setW(100); - goodsPicture.setUrl(TbImgUtil.getTBSize320Img(daTaoKe.getPic())); - goodsPicture.setJumpDetail(jumpDetailV2Service.getByTypeCache("goodsdetail")); - - String goodsId = daTaoKe.getGoodsId().toString(); - JSONObject item = new JSONObject(); - item.put("id", goodsId); - item.put("from", "dynamics"); - goodsPicture.setParams(item.toString()); - return goodsPicture; - } - - @Override - public void insertInviteActivity(RecommendActivity activity) throws Exception { - - String title = activity.getTitle(); - - String picUrl = null; - List<String> imageList = activity.getImageList(); - if (imageList != null && imageList.size() > 0) { - picUrl = imageList.get(0); - } - - if (StringUtil.isNullOrEmpty(title) || StringUtil.isNullOrEmpty(picUrl)) { - return; - } - - // 鍒ゆ柇鏄惁宸插瓨鍦� - String dynamicInfoId = null; - - Long activityId = activity.getId(); - DynamicInfo dynamicVO = dynamicInfoDao.getByActivityId(activityId); - if (dynamicVO == null) { - dynamicVO = new DynamicInfo(); - dynamicVO.setId(UUID.randomUUID().toString().replace("-", "")); - dynamicVO.setCreateTime(DateUtil.reduceRandomMinute(new Date(), 8)); - } else { - dynamicInfoId = dynamicVO.getId(); - } - - if (!StringUtil.isNullOrEmpty(title)) { - title = title.replaceAll("<p>", "").replaceAll("</p>", "").replaceAll("<br>", "\n"); - - int index = title.lastIndexOf("\n"); - String newDesc = title.substring(index + 1); - if (StringUtil.isNullOrEmpty(newDesc)) { - title = title.substring(0, index); - } - - title = title.replaceAll("\\,", "\\锛�").replaceAll("\\.", "\\銆�").replaceAll("\\;", "\\锛�") - .replaceAll("\\!", "\\锛�").replaceAll("\\?", "\\锛�").replaceAll("\\:", "\\锛�"); - } - - dynamicVO.setId(UUID.randomUUID().toString().replace("-", "")); - dynamicVO.setActivityId(activityId); - dynamicVO.setClassId(4L); - dynamicVO.setSubclassId(0L); - dynamicVO.setShareType(DynamicInfo.SHARE_TYPE_INVITE); - dynamicVO.setUpdateTime(new Date()); - - Integer shareCount = activity.getShareCount(); - if (shareCount == null || shareCount <= 0) { - dynamicVO.setShareCount(1000 + (int) (Math.random() * 8000)); - } else { - dynamicVO.setShareCount(shareCount); - } - - // 鍙戝竷鐢ㄦ埛 - ActivityUser activityUser = activity.getActivityUser(); - if (activityUser == null) { - dynamicVO.setUser(activityUserService.selectByPrimaryKey(2L)); - } else { - dynamicVO.setUser(activityUser); - } - - // 浠嬬粛鍐呭 - List<ClientTextStyleVO> listtitle = new ArrayList<ClientTextStyleVO>(); - if (!StringUtil.isNullOrEmpty(title)) { - ClientTextStyleVO row1 = new ClientTextStyleVO(); - row1.setColor("#333333"); - row1.setContent(title); - listtitle.add(row1); - } - - // 鍥剧墖 - List<GoodsPicture> listImg = new ArrayList<GoodsPicture>(); - if (StringUtil.isNullOrEmpty(picUrl)) { - dynamicVO.setShowType(DynamicInfo.SHOW_TYPE_ZERO); - } else { - dynamicVO.setShowType(DynamicInfo.SHOW_TYPE_ONE); - RecommendActivityInviteInfo inviteInfo = activity.getInviteInfo(); - - Integer pX = null; - Integer pY = null; - Integer size = null; - if (inviteInfo != null) { - pX = inviteInfo.getPx(); - pY = inviteInfo.getPy(); - size = inviteInfo.getSize(); - } - - // 鍥剧墖 - String imgLink = qrCodeService.drawInviteQrCodeNew(picUrl, null, null, pX, pY, size, null); - GoodsPicture p2 = new GoodsPicture(); - p2.setW(100); - p2.setH(100); - p2.setUrl(imgLink); - p2.setUrlOriginal(picUrl); - p2.setPx(pX); - p2.setPy(pY); - p2.setSize(size); - - listImg.add(p2); - } - - dynamicVO.setImgs(listImg); - dynamicVO.setTitle(listtitle); - - if (!StringUtil.isNullOrEmpty(dynamicInfoId)) { - dynamicInfoDao.deleteById(dynamicInfoId); - } - - dynamicInfoDao.insert(dynamicVO); - } - - @Override - public void insertActivityRecommend(RecommendActivity activity) { - if (activity == null || activity.getGoodsList() == null) { - return; - } - - try { - String dynamicInfoId = null; - DynamicInfo dynamicInfo = dynamicInfoDao.getByActivityId(activity.getId()); - if (dynamicInfo == null) { - dynamicInfo = new DynamicInfo(); - dynamicInfo.setId(UUID.randomUUID().toString().replace("-", "")); - dynamicInfo.setCreateTime(new Date()); - } else { - dynamicInfoId = dynamicInfo.getId(); - } - - dynamicInfo.setClassId(2L); - dynamicInfo.setSubclassId(0L); - dynamicInfo.setUser(activity.getActivityUser()); - dynamicInfo.setActivityId(activity.getId()); - dynamicInfo.setUpdateTime(new Date()); - - List<ClientTextStyleVO> listtitle = new ArrayList<ClientTextStyleVO>(); - String title = activity.getTitle(); - if (!StringUtil.isNullOrEmpty(title)) { - title = title.replaceAll("<p>", ""); - title = title.replaceAll("</p>", ""); - title = title.replaceAll("<br>", "\n"); - - int index = title.lastIndexOf("\n"); - String newDesc = title.substring(index + 1); - if (StringUtil.isNullOrEmpty(newDesc)) { - title = title.substring(0, index); - } - - ClientTextStyleVO row1 = new ClientTextStyleVO(); - row1.setColor("#333333"); - row1.setContent(title); - listtitle.add(row1); - } - dynamicInfo.setTitle(listtitle); - - Integer shareCount = activity.getShareCount(); - if (shareCount == null || shareCount <= 0) { - dynamicInfo.setShareCount(1000 + (int) (Math.random() * 8000)); - } else { - dynamicInfo.setShareCount(shareCount); - } - - // 鍙戝竷鐢ㄦ埛 - ActivityUser activityUser = activity.getActivityUser(); - if (activityUser == null) { - dynamicInfo.setUser(activityUserService.selectByPrimaryKey(2L)); - } else { - dynamicInfo.setUser(activityUser); - } - - List<TaoBaoGoodsBrief> listGoods = new ArrayList<TaoBaoGoodsBrief>(); - // 鍟嗗搧鍒楄〃 - List<GoodsPicture> listPicture = new ArrayList<GoodsPicture>(); - BigDecimal proportion = hongBaoManageService.getFanLiRate(); - // 鍒嗕韩濂栭噾 - BigDecimal shareMoney = new BigDecimal(0); - - if (activity.getGoodsList() != null) { - for (RecommendActivityTaoBaoGoods activityGoods : activity.getGoodsList()) { - - TaoBaoGoodsBrief taoBaoGoodsBrief = null; - TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra = null; - String auctionId = activityGoods.getAuctionId(); - try { - taoBaoGoodsBrief = redisManager.getTaoBaoGoodsBrief(Long.parseLong(auctionId)); - - taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, - proportion.toString(), null); - if (!taoBaoGoodsBriefExtra.isCoupon()) { - taoBaoGoodsBriefExtra.setState(1); - } - - BigDecimal money = taoBaoGoodsBriefService.getShareGoodsUserHongBao(taoBaoGoodsBrief); - shareMoney = MoneyBigDecimalUtil.add(shareMoney, money); - } catch (TaobaoGoodsDownException e) { - taoBaoGoodsBrief = activityGoods.getTaoBaoGoodsBrief(); - taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, - proportion.toString(), null); - taoBaoGoodsBriefExtra.setState(1); - taoBaoGoodsBriefExtra.setCoupon(false); - } - listGoods.add(taoBaoGoodsBrief); - - // 鍟嗗搧鍥剧墖 - taoBaoGoodsBriefExtra.setCouponInfo(null); - taoBaoGoodsBriefExtra.setUpdatetime(new Date()); - - JSONObject item = new JSONObject(); - item.put("id", auctionId); - item.put("from", "dynamics"); - - GoodsPicture goodsPicture = new GoodsPicture(); - goodsPicture.setH(100); - goodsPicture.setW(100); - goodsPicture.setUrl(TbImgUtil.getTBSize320Img(taoBaoGoodsBrief.getPictUrl())); - goodsPicture.setJumpDetail(jumpDetailV2Service.getByTypeCache("goodsdetail")); - goodsPicture.setParams(item.toString()); - goodsPicture.setGoods(taoBaoGoodsBriefExtra); - - listPicture.add(goodsPicture); - } - } - dynamicInfo.setImgs(listPicture); - dynamicInfo.setListGoodsBrief(listGoods); - - ClientTextStyleVO shareMoneyDesc = new ClientTextStyleVO(); - shareMoneyDesc.setColor("#FFFFFF"); - shareMoneyDesc.setBottomColor("#E8AE48"); - shareMoneyDesc.setContent("棰勪及鍒嗕韩濂栭噾锛毬�" + shareMoney); - dynamicInfo.setDesc(shareMoneyDesc); - dynamicInfo.setShowType(2); - - if (listPicture.size() < 7) { - dynamicInfo.setShowType(DynamicInfo.SHOW_TYPE_TWO); - dynamicInfo.setShareType(DynamicInfo.SHARE_TYPE_FOUR); // 鍒嗕韩绫诲瀷4鍥� - } else { - dynamicInfo.setShowType(DynamicInfo.SHOW_TYPE_THREE); - dynamicInfo.setShareType(DynamicInfo.SHARE_TYPE_NINE); // 鍒嗕韩绫诲瀷9鍥� - } - - if (!StringUtil.isNullOrEmpty(dynamicInfoId)) { - dynamicInfoDao.deleteById(dynamicInfoId); - } - // 淇濆瓨淇℃伅 - dynamicInfoDao.insert(dynamicInfo); - - } catch (Exception e) { - try { - LogHelper.errorDetailInfo(e); - } catch (Exception e1) { - e1.printStackTrace(); - } - } - } - - @Override - public void deleteActivity(Long activityId) { - DynamicInfo dynamicInfo = dynamicInfoDao.getByActivityId(activityId); - if (dynamicInfo != null) { - // 鍒犻櫎涔嬪墠鐨� - dynamicInfoDao.deleteById(dynamicInfo.getId()); - } - } - - @Override - public void removeByDate(Date createTime) { - dynamicInfoDao.removeByDate(createTime); - } - - @Override - public void updateShareCount(DynamicInfo record) { - dynamicInfoDao.updateShareCount(record); - } - - @Override - @Cacheable(value = "dynamicCache", key = "'count-'+#cid+'-'+#subId") - public long count(Long cid, Long subId) { - return dynamicInfoDao.count(cid, subId); - } - - @Override - @Cacheable(value = "dynamicCache", key = "'query-'+#start+'-'+#count+'-'+#cid+'-'+#subId") - public List<DynamicInfo> query(int start, int count, Long cid, Long subId) { - List<DynamicInfo> list = dynamicInfoDao.query(start, count, cid, subId); - - // 鏇存柊鍟嗗搧淇℃伅 - executor.execute(new Runnable() { - @Override - public void run() { - updateGoodInfo(list); - } - }); - - return list; - } - - private Map<Long, TaoBaoGoodsBrief> getFilterGoodsMap(List<DynamicInfo> list) { - // 鎻愬彇杩囨护鍟嗗搧 - List<TaoBaoGoodsBrief> goodsList = new ArrayList<>(); - for (DynamicInfo dynamicInfo : list) { - List<GoodsPicture> gpList = dynamicInfo.getImgs(); - if (gpList != null) - for (GoodsPicture gp : gpList) { - if (gp != null && gp.getGoods() != null) { - TaoBaoGoodsBriefExtra newGoods = new TaoBaoGoodsBriefExtra(); - try { - PropertyUtils.copyProperties(newGoods, gp.getGoods()); - goodsList.add(newGoods); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } - - } - } - } - goodsList = taoBaoGoodsUpdateService.filterImportantTaoBaoGoods(goodsList); - Map<Long, TaoBaoGoodsBrief> map = new HashMap<>(); - if (goodsList != null) - for (TaoBaoGoodsBrief goods : goodsList) - map.put(goods.getAuctionId(), goods); - return map; - } - - @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); - // 闇�瑕佹洿鏂扮殑鍟嗗搧 - List<TaoBaoGoodsBrief> taoBaoGoodsUpdateList = new ArrayList<>(); - if (list != null && list.size() > 0) { - // 鎻愬彇鍟嗗搧 - Map<Long, TaoBaoGoodsBrief> goodsMap = getFilterGoodsMap(list); - - 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 = dynamicNew.getShop(); - if (shop != null) { - TaoBaoShop shopNew = new TaoBaoShop(); - try { - PropertyUtils.copyProperties(shopNew, shop); - } catch (Exception e) { - e.printStackTrace(); - continue; - } - Integer userType = shopNew.getUserType(); - if (userType == null || userType == 0) { - shopNew.setUserType(10); - } else { - shopNew.setUserType(11); - } - dynamicNew.setShop(shopNew); - } - - List<GoodsPicture> imgsNew = new ArrayList<GoodsPicture>(); - List<GoodsPicture> imgs = dynamicNew.getImgs(); - if (imgs != null && imgs.size() > 0) { - for (GoodsPicture goodsPicture : imgs) { - TaoBaoGoodsBriefExtra goods = goodsPicture.getGoods(); - if (goods == null) { - imgsNew.add(goodsPicture); - continue; - } - - taoBaoGoodsUpdateList.add(goods); - - GoodsPicture goodsNew = new GoodsPicture(); - try { - PropertyUtils.copyProperties(goodsNew, goodsPicture); - } catch (Exception e) { - e.printStackTrace(); - continue; - } - - // 杩囨护鍒镐俊鎭笌璧勯噾淇℃伅 - goods.setCouponAmount(goodsMap.get(goods.getAuctionId()).getCouponAmount()); - goods.setZkPrice(goodsMap.get(goods.getAuctionId()).getZkPrice()); - goods.setCouponStartFee(goodsMap.get(goods.getAuctionId()).getCouponStartFee()); - goods.setTkRate(goodsMap.get(goods.getAuctionId()).getTkRate()); - - GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBaoGoodsBriefExtra(goods, fanLiRate, - shareRate); - - goodsNew.setGoodsVO(detailVO); - goodsNew.setGoods(null); - - JumpDetailV2 jumpDetail = goodsNew.getJumpDetail(); - if (jumpDetail != null) { - JumpDetailV2 jumpDetailV2 = jumpDetailV2Service.getByTypeCache(jumpDetail.getType(), - platform, version); - if (jumpDetailV2 != null) { - goodsNew.setJumpDetail(jumpDetailV2); - } - } - - imgsNew.add(goodsNew); - } - dynamicNew.setImgs(imgsNew); - } - listNew.add(dynamicNew); - } - } - - // 鏇存柊鍟嗗搧淇℃伅 - executor.execute(new Runnable() { - @Override - public void run() { - updateGoodInfo(list); - } - }); - - taoBaoGoodsUpdateService.addUpdateQueueAsync(taoBaoGoodsUpdateList); - return listNew; - } - - /** - * 鏇存柊鍟嗗搧淇℃伅 - */ - public void updateGoodInfo(List<DynamicInfo> list) { - if (!Constant.IS_OUTNET) { - return; // 澶栫綉杩涜鏇存柊 - } - - if (list == null || list.size() == 0) { - return; - } - - try { - BigDecimal proportion = hongBaoManageService.getFanLiRate(); - for (DynamicInfo dynamicInfo : list) { - // 閭�璇锋暟鎹笉鍋氭洿鏂� - long classId = dynamicInfo.getClassId(); - if (classId == 4) { - break; - } - - // 鏇存柊鍟嗗搧淇℃伅 - List<GoodsPicture> listPicture = dynamicInfo.getImgs(); - if (listPicture == null || listPicture.size() == 0) { - continue; - } - - // 鏄惁涓�涓皬鏃朵箣鍐呭凡鏇存柊 - Date updateTime = dynamicInfo.getUpdateTime(); - if (updateTime != null) { - long nd = 1000 * 24 * 60 * 60;// 涓�澶╃殑姣鏁� - long nh = 1000 * 60 * 60;// 涓�灏忔椂鐨勬绉掓暟 - long diff = System.currentTimeMillis() - updateTime.getTime(); - long day = diff / nd;// 璁$畻宸灏戝ぉ - long hour = diff % nd / nh + day * 24;// 璁$畻宸灏戝皬鏃� - if (hour < 1) { - continue; - } - } - - boolean needUpdate = false; - // 宸蹭笅鏋禝D - List<Long> listDown = new ArrayList<Long>(); - // 鍟嗗搧鍒楄〃 - List<TaoBaoGoodsBrief> listGoods = new ArrayList<TaoBaoGoodsBrief>(); - - for (GoodsPicture goodsPicture : listPicture) { - TaoBaoGoodsBriefExtra oldExtra = goodsPicture.getGoods(); - if (oldExtra == null) { - continue; - } - - Integer state = oldExtra.getState(); - if (state != null && state == 1) { - continue; - } - - TaoBaoGoodsBrief goodsBrief = null; - try { - 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(); - shareMoneyDesc.setColor("#FFFFFF"); - shareMoneyDesc.setBottomColor("#E8AE48"); - shareMoneyDesc.setContent("棰勪及鍒嗕韩濂栭噾锛毬�" + shareMoney); - dynamicInfo.setDesc(shareMoneyDesc); - } - } - - // 闇�瑕佹洿鏂颁俊鎭紱 - needUpdate = true; - } - - // 鏃犳晥鏇存柊淇℃伅 - if (!needUpdate) { - continue; - } - - // 鏇存柊鍟嗗搧淇℃伅 - dynamicInfo.setImgs(listPicture); - - // 鍟嗗搧宸蹭笅鏋� - List<TaoBaoGoodsBrief> listGoodsBrief = dynamicInfo.getListGoodsBrief(); - if (listGoodsBrief != null && listGoodsBrief.size() > 0) { - // 娣樺疂宸蹭笅鏋跺晢鍝� - if (listDown.size() > 0) { - for (TaoBaoGoodsBrief taoBaoGoodsBrief : listGoodsBrief) { - if (listDown.contains(taoBaoGoodsBrief.getAuctionId())) { - taoBaoGoodsBrief.setState(1); - } - } - } - - 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); - } - - } - -} +package com.yeshi.fanli.service.impl.dynamic; + +import java.io.InputStream; +import java.lang.reflect.InvocationTargetException; +import java.math.BigDecimal; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; + +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; +import org.yeshi.utils.DateLunarUtil; +import org.yeshi.utils.DateUtil; +import org.yeshi.utils.HttpUtil; +import org.yeshi.utils.taobao.TbImgUtil; + +import com.yeshi.fanli.dao.dynamic.DynamicInfoDao; +import com.yeshi.fanli.dto.ConfigParamsDTO; +import com.yeshi.fanli.dto.taobao.TaoBaoShopDTO; +import com.yeshi.fanli.entity.bus.activity.ActivityRuleUser; +import com.yeshi.fanli.entity.bus.activity.ActivityUser; +import com.yeshi.fanli.entity.bus.activity.RecommendActivity; +import com.yeshi.fanli.entity.bus.activity.RecommendActivityInviteInfo; +import com.yeshi.fanli.entity.bus.activity.RecommendActivityTaoBaoGoods; +import com.yeshi.fanli.entity.bus.clazz.GoodsClass; +import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum; +import com.yeshi.fanli.entity.common.JumpDetailV2; +import com.yeshi.fanli.entity.dynamic.DynamicInfo; +import com.yeshi.fanli.entity.dynamic.GoodsPicture; +import com.yeshi.fanli.entity.dynamic.InviteMaterial; +import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; +import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBriefExtra; +import com.yeshi.fanli.entity.taobao.TaoBaoShop; +import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2; +import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; +import com.yeshi.fanli.log.LogHelper; +import com.yeshi.fanli.service.inter.activity.ActivityUserService; +import com.yeshi.fanli.service.inter.common.JumpDetailV2Service; +import com.yeshi.fanli.service.inter.dynamic.DynamicInfoService; +import com.yeshi.fanli.service.inter.dynamic.GoodsEvaluateService; +import com.yeshi.fanli.service.inter.dynamic.InviteMaterialService; +import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService; +import com.yeshi.fanli.service.inter.order.config.HongBaoManageService; +import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService; +import com.yeshi.fanli.service.inter.taobao.TaoBaoShopService; +import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service; +import com.yeshi.fanli.service.inter.user.QrCodeService; +import com.yeshi.fanli.util.Constant; +import com.yeshi.fanli.util.MoneyBigDecimalUtil; +import com.yeshi.fanli.util.RedisManager; +import com.yeshi.fanli.util.StringUtil; +import com.yeshi.fanli.util.dataoke.DaTaoKeApiUtil; +import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory; +import com.yeshi.fanli.util.taobao.DaTaoKeUtil; +import com.yeshi.fanli.util.taobao.TaoBaoUtil; +import com.yeshi.fanli.util.taobao.TaoKeApiUtil; +import com.yeshi.fanli.vo.goods.GoodsDetailVO; +import com.yeshi.fanli.vo.msg.ClientTextStyleVO; + +import net.sf.json.JSONObject; + +@Service +public class DynamicInfoServiceImpl implements DynamicInfoService { + + @Resource(name = "taskExecutor") + private TaskExecutor executor; + + @Resource + private DynamicInfoDao dynamicInfoDao; + + @Resource + private RedisManager redisManager; + + @Resource + private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service; + + @Resource + private JumpDetailV2Service jumpDetailV2Service; + + @Resource + private ActivityUserService activityUserService; + + @Resource + private TaoBaoGoodsBriefService taoBaoGoodsBriefService; + + @Resource + private HongBaoManageService hongBaoManageService; + + @Resource + private TaoBaoShopService taoBaoShopService; + + @Resource + private InviteMaterialService inviteMaterialService; + + @Resource + private QrCodeService qrCodeService; + + @Resource + private TaoBaoGoodsUpdateService taoBaoGoodsUpdateService; + + @Resource + private GoodsEvaluateService goodsEvaluateService; + + @Override + public void insert(DynamicInfo record) { + dynamicInfoDao.insert(record); + } + + @Override + public DynamicInfo getById(String id) { + return dynamicInfoDao.getById(id); + } + + @Override + public void insertTimeInvite() { + InviteMaterial inviteMaterial = inviteMaterialService.getInviteMaterial(); + if (inviteMaterial == null) { + return; + } + + Date date = new Date(); + String materialId = inviteMaterial.getId(); + String content = inviteMaterial.getText(); + + ActivityUser user = activityUserService.selectByPrimaryKey(2L); + + if (!StringUtil.isNullOrEmpty(content)) { + DynamicInfo dynamicTxt = new DynamicInfo(); + dynamicTxt.setId(UUID.randomUUID().toString().replace("-", "")); + dynamicTxt.setInviteMaterialId(materialId); + dynamicTxt.setClassId(4L); + dynamicTxt.setSubclassId(0L); + dynamicTxt.setShowType(DynamicInfo.SHOW_TYPE_ZERO); + dynamicTxt.setShareType(DynamicInfo.SHARE_TYPE_INVITE); + dynamicTxt.setUser(user); + dynamicTxt.setShareCount(1000 + (int) (Math.random() * 8000)); + dynamicTxt.setCreateTime(date); + dynamicTxt.setUpdateTime(date); + + SimpleDateFormat format = new SimpleDateFormat("MM鏈坉d鏃�"); + + StringBuffer buffer = new StringBuffer(); + buffer.append("-------------------\n"); + buffer.append("浠婂ぉ : " + format.format(date)); + buffer.append(" "); + buffer.append(DateLunarUtil.getWeekd(date) + "\n"); + buffer.append("鍚勪綅浜茬埍鐨勪綘"); + buffer.append(" "); + buffer.append("鏃╁畨锝瀄n"); + buffer.append("鎴戠殑閭�璇风爜锛氥�愰個璇风爜銆慭n"); + buffer.append("璐墿鐪侀挶鏉挎牀蹇渷App锛氥�愰個璇烽摼鎺ャ��"); + + content = content.replaceAll("\\,", "\\锛�").replaceAll("\\.", "\\銆�").replaceAll("\\;", "\\锛�") + .replaceAll("\\!", "\\锛�").replaceAll("\\?", "\\锛�").replaceAll("\\:", "\\锛�"); + + ClientTextStyleVO row1 = new ClientTextStyleVO(); + row1.setColor("#333333"); + row1.setContent(content + "\n" + buffer.toString()); + List<ClientTextStyleVO> listtitle = new ArrayList<ClientTextStyleVO>(); + listtitle.add(row1); + dynamicTxt.setTitle(listtitle); + + // 绌烘暟鎹� + List<GoodsPicture> listImg = new ArrayList<GoodsPicture>(); + dynamicTxt.setImgs(listImg); + + dynamicInfoDao.insert(dynamicTxt); + } + + String picture = inviteMaterial.getPicture(); + if (!StringUtil.isNullOrEmpty(picture)) { + DynamicInfo dynamicPic = new DynamicInfo(); + dynamicPic.setId(UUID.randomUUID().toString().replace("-", "")); + dynamicPic.setInviteMaterialId(materialId); + dynamicPic.setClassId(4L); + dynamicPic.setSubclassId(0L); + dynamicPic.setShowType(DynamicInfo.SHOW_TYPE_ONE); + dynamicPic.setShareType(DynamicInfo.SHARE_TYPE_INVITE); + dynamicPic.setUser(user); + dynamicPic.setShareCount(1000 + (int) (Math.random() * 8000)); + dynamicPic.setCreateTime(date); + dynamicPic.setUpdateTime(date); + + try { + // 鐢诲浘 + String url = qrCodeService.drawInviteToGreet(picture, null, null, null, content, new Date()); + + List<ClientTextStyleVO> listtitle = new ArrayList<ClientTextStyleVO>(); + dynamicPic.setTitle(listtitle); + + GoodsPicture p2 = new GoodsPicture(); + p2.setW(100); + p2.setH(100); + p2.setUrl(url); + p2.setUrlOriginal(picture); + p2.setTitleOriginal(content); + List<GoodsPicture> listImg = new ArrayList<GoodsPicture>(); + listImg.add(p2); + dynamicPic.setImgs(listImg); + + dynamicInfoDao.insert(dynamicPic); + } catch (Exception e) { + try { + LogHelper.errorDetailInfo(e); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + } + // 鏇存柊绱犳潗鐘舵�� + inviteMaterialService.updateState(1, materialId); + } + + @Override + public void insertShopInfo() { + List<String> brandIdList = DaTaoKeApiUtil.getBrandIdList(); + if (brandIdList == null || brandIdList.size() == 0) { + LogHelper.test("澶ф窐瀹㈠搧鐗宨d鑾峰彇澶辫触锛圖ynamicInfoService-insertShopInfo锛�"); + return; + } + + Long classId = 3L; + Long subclassId = 0L; + List<DynamicInfo> listInfo = dynamicInfoDao.query(classId, subclassId); + + // 娓呯悊宸插瓨鍦ㄥ搧鐗� + if (listInfo != null && listInfo.size() > 0) { + for (int i = 0; i < brandIdList.size(); i++) { + String brandId = brandIdList.get(i); + + for (int j = 0; j < listInfo.size(); j++) { + String id = listInfo.get(j).getId(); + if (brandId.equals(id)) { + brandIdList.remove(brandId); + i--; + + listInfo.remove(listInfo.get(j)); + j--; + } + } + } + } + + if (brandIdList == null || brandIdList.size() == 0) { + LogHelper.test("澶ф窐瀹㈠搧鐗屽凡鍏ㄩ儴鐖彇锛圖ynamicInfoService-insertShopInfo锛�"); + return; + } + + int index = (int) (Math.random() * brandIdList.size()); + String brandId = brandIdList.get(index); + + TaoBaoShopDTO dynamicShopInfo = DaTaoKeApiUtil.getDynamicShopInfo(brandId); + if (dynamicShopInfo == null) { + LogHelper.test("澶ф窐瀹㈠搧鐗屼俊鎭埇鍙栧け璐ワ紙DynamicInfoService-insertShopInfo锛�"); + return; + } + + List<TaoBaoGoodsBrief> listGoods = dynamicShopInfo.getListGoods(); + if (listGoods == null || listGoods.size() == 0) { + LogHelper.test("澶ф窐瀹㈠搧鐗屽晢鍝佷俊鎭埇鍙栧け璐ワ紙DynamicInfoService-insertShopInfo锛�"); + return; + } + + Long sellerId = dynamicShopInfo.getSellerId(); + TaoBaoGoodsBrief taoBaoGoodsBrief = listGoods.get(0); + TaoBaoShop taoBaoShop = taoBaoShopService.getTaoBaoShop(taoBaoGoodsBrief.getAuctionId(), sellerId); + if (taoBaoShop == null) { + LogHelper.test("搴楅摵璇︽儏淇℃伅鑾峰彇澶辫触锛圖ynamicInfoService-insertShopInfo锛�"); + return; + } + String shopLink = taoBaoShop.getShopLink(); + if (StringUtil.isNullOrEmpty(shopLink)) { + taoBaoShop.setShopLink(TaoBaoUtil.getShopLink(taoBaoShop.getId())); + } + + if(StringUtil.isNullOrEmpty(taoBaoShop.getShopIcon())) + taoBaoShop.setShopIcon(dynamicShopInfo.getShopIcon()); + + DynamicInfo dynamicVO = new DynamicInfo(); + dynamicVO.setId(brandId); + dynamicVO.setClassId(classId); + dynamicVO.setSubclassId(subclassId); + dynamicVO.setShowType(DynamicInfo.SHOW_TYPE_TWO); + dynamicVO.setShop(taoBaoShop); + List<ActivityRuleUser> userList = activityUserService.listByRuleCode(ActivityRuleUser.RULE_HAODIAN, 1, 50); + dynamicVO.setUser(userList.get((int) (userList.size() * Math.random())).getActivityUser()); + dynamicVO.setCreateTime(DateUtil.reduceRandomMinute(new Date(), 8)); + dynamicVO.setUpdateTime(new Date()); + + // 浠嬬粛鍐呭 + ClientTextStyleVO row1 = new ClientTextStyleVO(); + row1.setColor("#333333"); + row1.setContent(dynamicShopInfo.getBrandDes()); + List<ClientTextStyleVO> listTitle = new ArrayList<ClientTextStyleVO>(); + listTitle.add(row1); + dynamicVO.setTitle(listTitle); + + // 鍟嗗搧淇℃伅 + List<GoodsPicture> listPicture = new ArrayList<GoodsPicture>(); + for (TaoBaoGoodsBrief goodsBrief : listGoods) { + BigDecimal proportion = hongBaoManageService.getFanLiRate(); + TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(goodsBrief, + proportion.toString(), null); + taoBaoGoodsBriefExtra.setCouponInfo(null); + taoBaoGoodsBriefExtra.setUpdatetime(new Date()); + + if (!taoBaoGoodsBriefExtra.isCoupon()) { + taoBaoGoodsBriefExtra.setState(1); + } + + String goodsId = goodsBrief.getAuctionId().toString(); + JSONObject item = new JSONObject(); + item.put("id", goodsId); + item.put("from", "dynamics"); + + GoodsPicture goodsPicture = new GoodsPicture(); + goodsPicture.setH(100); + goodsPicture.setW(100); + goodsPicture.setUrl(TbImgUtil.getTBSize320Img(goodsBrief.getPictUrl())); + goodsPicture.setJumpDetail(jumpDetailV2Service.getByTypeCache("goodsdetail")); + goodsPicture.setParams(item.toString()); + goodsPicture.setGoods(taoBaoGoodsBriefExtra); + + listPicture.add(goodsPicture); + } + dynamicVO.setImgs(listPicture); + + dynamicInfoDao.insert(dynamicVO); + } + + @Override + public void insertTimeRecommend() { + try { + Long classId = 2L; + List<GoodsClass> list = DaTaoKeUtil.goodsClasses; + int index = (int) (Math.random() * list.size()); + Long subclassId = list.get(index).getId(); + int cid = Integer.parseInt(subclassId + ""); + int count = 0; + double random = Math.random(); + if (random > 0.4) { + count = 9; + } else { + count = 4; + } + + List<DaTaoKeDetailV2> listDaTaoKe = daTaoKeGoodsDetailV2Service.getGoodsNotInList(subclassId, null, count); + + DaTaoKeDetailV2 daTaoKeDetail = null; + // 鍟嗗搧鍒楄〃 + List<GoodsPicture> listPicture = new ArrayList<GoodsPicture>(); + // 鍟嗗搧鍒楄〃 + List<TaoBaoGoodsBrief> listGoods = new ArrayList<TaoBaoGoodsBrief>(); + // 鍒嗕韩濂栭噾 + BigDecimal shareMoney = new BigDecimal(0); + + BigDecimal proportion = hongBaoManageService.getFanLiRate(); + for (DaTaoKeDetailV2 daTaoKe : listDaTaoKe) { + if (daTaoKeDetail == null) { + daTaoKeDetail = daTaoKe; + } + // 鍒嗕韩濂栭噾 + TaoBaoGoodsBrief taoBaoGoodsBrief = TaoBaoUtil.convert(daTaoKe); + listGoods.add(taoBaoGoodsBrief); + + TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, + proportion.toString(), null); + if (!taoBaoGoodsBriefExtra.isCoupon()) { + taoBaoGoodsBriefExtra.setState(1); + } + + BigDecimal money = taoBaoGoodsBriefService.getShareGoodsUserHongBao(taoBaoGoodsBrief); + shareMoney = MoneyBigDecimalUtil.add(shareMoney, money); + // 鍟嗗搧鍥剧墖 + taoBaoGoodsBriefExtra.setUpdatetime(new Date()); + taoBaoGoodsBriefExtra.setCouponInfo(null); + GoodsPicture goodsPicture = getGoodsPicture(daTaoKe); + goodsPicture.setGoods(taoBaoGoodsBriefExtra); + + listPicture.add(goodsPicture); + } + + // 缁勭粐鍔ㄦ�佷俊鎭� + DynamicInfo dynamicInfo = getDynamicInfo(daTaoKeDetail, classId, subclassId); + // 鏃犲唴瀹� + dynamicInfo.setTitle(new ArrayList<ClientTextStyleVO>()); + // 鍙戝竷鐢ㄦ埛 + dynamicInfo.setUser(activityUserService.getRandomByDaTaoKeCid(cid)); + dynamicInfo.setImgs(listPicture); + dynamicInfo.setListGoodsBrief(listGoods); + + ClientTextStyleVO shareMoneyDesc = new ClientTextStyleVO(); + shareMoneyDesc.setColor("#FFFFFF"); + shareMoneyDesc.setBottomColor("#E8AE48"); + shareMoneyDesc.setContent("棰勪及鍒嗕韩濂栭噾锛毬�" + shareMoney); + dynamicInfo.setDesc(shareMoneyDesc); + dynamicInfo.setShowType(2); + + if (count == 4) { + dynamicInfo.setShowType(DynamicInfo.SHOW_TYPE_TWO); + dynamicInfo.setShareType(DynamicInfo.SHARE_TYPE_FOUR); // 鍒嗕韩绫诲瀷4鍥� + } else { + dynamicInfo.setShowType(DynamicInfo.SHOW_TYPE_THREE); + dynamicInfo.setShareType(DynamicInfo.SHARE_TYPE_NINE); // 鍒嗕韩绫诲瀷9鍥� + } + // 淇濆瓨淇℃伅 + dynamicInfoDao.insert(dynamicInfo); + + } catch (Exception e) { + try { + LogHelper.errorDetailInfo(e); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + } + + // 瀹氭椂鎻掑叆 + @Override + public void insertTimeHotSale() { + Long classId = 1L; + try { + for (int i = 0; i < 3; i++) { + boolean addSuccess = saveHotSale(classId, 0L); + if (addSuccess) { + break; + } + } + } catch (Exception e) { + try { + LogHelper.errorDetailInfo(e); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + + // 鐑攢鍗曞搧鐨勫垎绫� + List<GoodsClass> list = DaTaoKeUtil.goodsClasses; + for (GoodsClass goodsClass : list) { + try { + for (int i = 0; i < 3; i++) { + boolean addSuccess = saveHotSale(classId, goodsClass.getId()); + if (addSuccess) { + break; + } + } + } catch (Exception e) { + try { + LogHelper.errorDetailInfo(e); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + } + } + + /** + * 淇濆瓨鐑攢鍗曞搧 + * + * @param classId + * @param subclassId + * @throws TaobaoGoodsDownException + */ + public boolean saveHotSale(Long classId, Long subclassId) throws TaobaoGoodsDownException { + boolean addSuccess = false; + List<Long> listId = null; + List<DynamicInfo> listInfo = dynamicInfoDao.query(classId, subclassId); + if (listInfo != null && listInfo.size() > 0) { + listId = new ArrayList<Long>(); + for (DynamicInfo dynamicInfo : listInfo) { + Long daTaoKeId = dynamicInfo.getDaTaoKeId(); + if (daTaoKeId != null) { + listId.add(dynamicInfo.getDaTaoKeId()); + } + } + } + // 澶ф窐瀹㈡暟鎹� + DaTaoKeDetailV2 daTaoKe = daTaoKeGoodsDetailV2Service.getGoodsNotInList(subclassId, listId, 1).get(0); + if (daTaoKe == null) { + return addSuccess; + } + + try { + daTaoKe = DaTaoKeUtil.filterDaTaoKe(TaoKeApiUtil.searchGoodsDetail(daTaoKe.getGoodsId()), daTaoKe); + } catch (Exception e) { + + } + + TaoBaoGoodsBrief taoBaoGoodsBrief = TaoBaoUtil.convert(daTaoKe); + BigDecimal proportion = hongBaoManageService.getFanLiRate(); + TaoBaoGoodsBriefExtra goodsExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), + null); + + if (!goodsExtra.isCoupon() || (goodsExtra.getState() != null && goodsExtra.getState() == 1)) { + return addSuccess; // 宸蹭笅鏋� 銆佹棤鍒� 涓嶅姞鍏� + } + + List<TaoBaoGoodsBrief> listGoods = new ArrayList<TaoBaoGoodsBrief>(); + listGoods.add(taoBaoGoodsBrief); + + goodsExtra.setTkRate(taoBaoGoodsBrief.getTkRate()); + goodsExtra.setUpdatetime(new Date()); + goodsExtra.setCouponInfo(null); + + GoodsPicture goodsPicture = getGoodsPicture(daTaoKe); + goodsPicture.setGoods(goodsExtra); + // 鍟嗗搧鍒楄〃 + List<GoodsPicture> listPicture = new ArrayList<GoodsPicture>(); + listPicture.add(goodsPicture); + + // 鑾峰彇鍟嗗搧鍒楄〃鍥剧墖 + TaoBaoGoodsBrief taoBaoGoodsBrief2 = TaoKeApiUtil.getSimpleGoodsInfo(daTaoKe.getGoodsId()); + List<String> imgList = taoBaoGoodsBrief2.getImgList(); + List<String> listimgs = new ArrayList<String>(); + String pic = daTaoKe.getMainPic(); + listimgs.add(TbImgUtil.getTBSize320Img(pic)); + if (imgList != null && imgList.size() > 0) { + for (String img : imgList) { + + if (listPicture.size() >= 4) { + break; + } + if (pic.equals(img)) { + continue; + } + + listimgs.add(img); + GoodsPicture picture = new GoodsPicture(); + picture.setH(100); + picture.setW(100); + picture.setUrl(TbImgUtil.getTBSize320Img(img)); + listPicture.add(picture); + } + } + goodsExtra.setImgList(imgList); + + // 鍒嗕韩濂栭噾 + BigDecimal shareMoney = taoBaoGoodsBriefService.getShareGoodsUserHongBao(taoBaoGoodsBrief); + ClientTextStyleVO shareMoneyDesc = new ClientTextStyleVO(); + shareMoneyDesc.setColor("#FFFFFF"); + shareMoneyDesc.setBottomColor("#E8AE48"); + shareMoneyDesc.setContent("棰勪及鍒嗕韩濂栭噾锛毬�" + shareMoney); + + // 缁勭粐鍔ㄦ�佷俊鎭� + DynamicInfo dynamicInfo = getDynamicInfo(daTaoKe, classId, subclassId); + dynamicInfo.setUser(activityUserService.getRandomByDaTaoKeCid(daTaoKe.getCid())); + dynamicInfo.setImgs(listPicture); + dynamicInfo.setDesc(shareMoneyDesc); + dynamicInfo.setShareType(DynamicInfo.SHARE_TYPE_ONE); + dynamicInfo.setShowType(DynamicInfo.SHOW_TYPE_TWO); + dynamicInfo.setListGoodsBrief(listGoods); + + String desc = DaTaoKeUtil.getDesc(daTaoKe); + if (!StringUtil.isNullOrEmpty(desc)) { + int index = desc.lastIndexOf("\n"); + String newDesc = desc.substring(index + 1); + if (StringUtil.isNullOrEmpty(newDesc)) { + desc = desc.substring(0, index); + } + } + dynamicInfo.setTitle(convertIntroduce(desc)); + + // 淇濆瓨淇℃伅 + dynamicInfoDao.insert(dynamicInfo); + + addSuccess = true; + return addSuccess; + } + + /** + * 鏁版嵁缁勭粐瀛樺叆MongoDB涓� + * + * @param daTaoKe + * @param classId + * @param subclassId + * @throws TaobaoGoodsDownException + */ + public DynamicInfo getDynamicInfo(DaTaoKeDetailV2 daTaoKe, Long classId, Long subclassId) { + DynamicInfo dynamicInfo = new DynamicInfo(); + dynamicInfo.setId(UUID.randomUUID().toString().replace("-", "")); + dynamicInfo.setClassId(classId); + dynamicInfo.setSubclassId(subclassId); + dynamicInfo.setDaTaoKeId(daTaoKe.getId()); + dynamicInfo.setCreateTime(DateUtil.reduceRandomMinute(new Date(), 8)); + dynamicInfo.setUpdateTime(new Date()); + // 闅忔満鍒嗕韩娆℃暟 + dynamicInfo.setShareCount(1000 + (int) (Math.random() * 8000)); + + return dynamicInfo; + } + + /** + * 鏂囧瓧鍐呭 + * + * @param introduce + * @return + */ + public List<ClientTextStyleVO> convertIntroduce(String introduce) { + List<ClientTextStyleVO> title = new ArrayList<ClientTextStyleVO>(); + ClientTextStyleVO desc = new ClientTextStyleVO(); + desc.setColor("#333333"); + desc.setContent(introduce); + title.add(desc); + return title; + } + + /** + * 鍥剧墖鍒楄〃 + * + * @param daTaoKe + * @return + */ + public GoodsPicture getGoodsPicture(DaTaoKeDetailV2 daTaoKe) { + GoodsPicture goodsPicture = new GoodsPicture(); + goodsPicture.setH(100); + goodsPicture.setW(100); + goodsPicture.setUrl(TbImgUtil.getTBSize320Img(daTaoKe.getMainPic())); + goodsPicture.setJumpDetail(jumpDetailV2Service.getByTypeCache("goodsdetail")); + + String goodsId = daTaoKe.getGoodsId().toString(); + JSONObject item = new JSONObject(); + item.put("id", goodsId); + item.put("from", "dynamics"); + goodsPicture.setParams(item.toString()); + return goodsPicture; + } + + @Override + public void insertInviteActivity(RecommendActivity activity) throws Exception { + + String title = activity.getTitle(); + + String picUrl = null; + List<String> imageList = activity.getImageList(); + if (imageList != null && imageList.size() > 0) { + picUrl = imageList.get(0); + } + + if (StringUtil.isNullOrEmpty(title) || StringUtil.isNullOrEmpty(picUrl)) { + return; + } + + // 鍒ゆ柇鏄惁宸插瓨鍦� + String dynamicInfoId = null; + + Long activityId = activity.getId(); + DynamicInfo dynamicVO = dynamicInfoDao.getByActivityId(activityId); + if (dynamicVO == null) { + dynamicVO = new DynamicInfo(); + dynamicVO.setId(UUID.randomUUID().toString().replace("-", "")); + dynamicVO.setCreateTime(DateUtil.reduceRandomMinute(new Date(), 8)); + } else { + dynamicInfoId = dynamicVO.getId(); + } + + if (!StringUtil.isNullOrEmpty(title)) { + title = title.replaceAll("<p>", "").replaceAll("</p>", "").replaceAll("<br>", "\n"); + + int index = title.lastIndexOf("\n"); + String newDesc = title.substring(index + 1); + if (StringUtil.isNullOrEmpty(newDesc)) { + title = title.substring(0, index); + } + + title = title.replaceAll("\\,", "\\锛�").replaceAll("\\.", "\\銆�").replaceAll("\\;", "\\锛�") + .replaceAll("\\!", "\\锛�").replaceAll("\\?", "\\锛�").replaceAll("\\:", "\\锛�"); + } + + dynamicVO.setId(UUID.randomUUID().toString().replace("-", "")); + dynamicVO.setActivityId(activityId); + dynamicVO.setClassId(4L); + dynamicVO.setSubclassId(0L); + dynamicVO.setShareType(DynamicInfo.SHARE_TYPE_INVITE); + dynamicVO.setUpdateTime(new Date()); + + Integer shareCount = activity.getShareCount(); + if (shareCount == null || shareCount <= 0) { + dynamicVO.setShareCount(1000 + (int) (Math.random() * 8000)); + } else { + dynamicVO.setShareCount(shareCount); + } + + // 鍙戝竷鐢ㄦ埛 + ActivityUser activityUser = activity.getActivityUser(); + if (activityUser == null) { + dynamicVO.setUser(activityUserService.selectByPrimaryKey(2L)); + } else { + dynamicVO.setUser(activityUser); + } + + // 浠嬬粛鍐呭 + List<ClientTextStyleVO> listtitle = new ArrayList<ClientTextStyleVO>(); + if (!StringUtil.isNullOrEmpty(title)) { + ClientTextStyleVO row1 = new ClientTextStyleVO(); + row1.setColor("#333333"); + row1.setContent(title); + listtitle.add(row1); + } + + // 鍥剧墖 + List<GoodsPicture> listImg = new ArrayList<GoodsPicture>(); + if (StringUtil.isNullOrEmpty(picUrl)) { + dynamicVO.setShowType(DynamicInfo.SHOW_TYPE_ZERO); + } else { + dynamicVO.setShowType(DynamicInfo.SHOW_TYPE_ONE); + RecommendActivityInviteInfo inviteInfo = activity.getInviteInfo(); + + Integer pX = null; + Integer pY = null; + Integer size = null; + if (inviteInfo != null) { + pX = inviteInfo.getPx(); + pY = inviteInfo.getPy(); + size = inviteInfo.getSize(); + } + + InputStream asInputStream = HttpUtil.getAsInputStream(picUrl); + + int index = picUrl.lastIndexOf("/"); + String newUrl = picUrl.substring(index + 1); + String urlMd5 = newUrl.substring(0, newUrl.lastIndexOf(".")); + + // 鍥剧墖 + String imgLink = qrCodeService.drawInviteQrCodeNew(asInputStream, urlMd5, null, null, pX, pY, size, null); + GoodsPicture p2 = new GoodsPicture(); + p2.setW(100); + p2.setH(100); + p2.setUrl(imgLink); + p2.setUrlOriginal(picUrl); + p2.setPx(pX); + p2.setPy(pY); + p2.setSize(size); + + listImg.add(p2); + } + + dynamicVO.setImgs(listImg); + dynamicVO.setTitle(listtitle); + + if (!StringUtil.isNullOrEmpty(dynamicInfoId)) { + dynamicInfoDao.deleteById(dynamicInfoId); + } + + dynamicInfoDao.insert(dynamicVO); + } + + @Override + public void insertActivityRecommend(RecommendActivity activity) { + if (activity == null || activity.getGoodsList() == null) { + return; + } + + try { + String dynamicInfoId = null; + DynamicInfo dynamicInfo = dynamicInfoDao.getByActivityId(activity.getId()); + if (dynamicInfo == null) { + dynamicInfo = new DynamicInfo(); + dynamicInfo.setId(UUID.randomUUID().toString().replace("-", "")); + dynamicInfo.setCreateTime(new Date()); + } else { + dynamicInfoId = dynamicInfo.getId(); + } + + dynamicInfo.setClassId(2L); + dynamicInfo.setSubclassId(0L); + dynamicInfo.setUser(activity.getActivityUser()); + dynamicInfo.setActivityId(activity.getId()); + dynamicInfo.setUpdateTime(new Date()); + + List<ClientTextStyleVO> listtitle = new ArrayList<ClientTextStyleVO>(); + String title = activity.getTitle(); + if (!StringUtil.isNullOrEmpty(title)) { + title = title.replaceAll("<p>", ""); + title = title.replaceAll("</p>", ""); + title = title.replaceAll("<br>", "\n"); + + int index = title.lastIndexOf("\n"); + String newDesc = title.substring(index + 1); + if (StringUtil.isNullOrEmpty(newDesc)) { + title = title.substring(0, index); + } + + ClientTextStyleVO row1 = new ClientTextStyleVO(); + row1.setColor("#333333"); + row1.setContent(title); + listtitle.add(row1); + } + dynamicInfo.setTitle(listtitle); + + Integer shareCount = activity.getShareCount(); + if (shareCount == null || shareCount <= 0) { + dynamicInfo.setShareCount(1000 + (int) (Math.random() * 8000)); + } else { + dynamicInfo.setShareCount(shareCount); + } + + // 鍙戝竷鐢ㄦ埛 + ActivityUser activityUser = activity.getActivityUser(); + if (activityUser == null) { + dynamicInfo.setUser(activityUserService.selectByPrimaryKey(2L)); + } else { + dynamicInfo.setUser(activityUser); + } + + List<TaoBaoGoodsBrief> listGoods = new ArrayList<TaoBaoGoodsBrief>(); + // 鍟嗗搧鍒楄〃 + List<GoodsPicture> listPicture = new ArrayList<GoodsPicture>(); + BigDecimal proportion = hongBaoManageService.getFanLiRate(); + // 鍒嗕韩濂栭噾 + BigDecimal shareMoney = new BigDecimal(0); + + if (activity.getGoodsList() != null) { + for (RecommendActivityTaoBaoGoods activityGoods : activity.getGoodsList()) { + + TaoBaoGoodsBrief taoBaoGoodsBrief = null; + TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra = null; + String auctionId = activityGoods.getAuctionId(); + try { + taoBaoGoodsBrief = redisManager.getTaoBaoGoodsBrief(Long.parseLong(auctionId)); + + taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, + proportion.toString(), null); + if (!taoBaoGoodsBriefExtra.isCoupon()) { + taoBaoGoodsBriefExtra.setState(1); + } + + BigDecimal money = taoBaoGoodsBriefService.getShareGoodsUserHongBao(taoBaoGoodsBrief); + shareMoney = MoneyBigDecimalUtil.add(shareMoney, money); + } catch (TaobaoGoodsDownException e) { + taoBaoGoodsBrief = activityGoods.getTaoBaoGoodsBrief(); + taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, + proportion.toString(), null); + taoBaoGoodsBriefExtra.setState(1); + taoBaoGoodsBriefExtra.setCoupon(false); + } + listGoods.add(taoBaoGoodsBrief); + + // 鍟嗗搧鍥剧墖 + taoBaoGoodsBriefExtra.setCouponInfo(null); + taoBaoGoodsBriefExtra.setUpdatetime(new Date()); + + JSONObject item = new JSONObject(); + item.put("id", auctionId); + item.put("from", "dynamics"); + + GoodsPicture goodsPicture = new GoodsPicture(); + goodsPicture.setH(100); + goodsPicture.setW(100); + goodsPicture.setUrl(TbImgUtil.getTBSize320Img(taoBaoGoodsBrief.getPictUrl())); + goodsPicture.setJumpDetail(jumpDetailV2Service.getByTypeCache("goodsdetail")); + goodsPicture.setParams(item.toString()); + goodsPicture.setGoods(taoBaoGoodsBriefExtra); + + listPicture.add(goodsPicture); + } + } + dynamicInfo.setImgs(listPicture); + dynamicInfo.setListGoodsBrief(listGoods); + + ClientTextStyleVO shareMoneyDesc = new ClientTextStyleVO(); + shareMoneyDesc.setColor("#FFFFFF"); + shareMoneyDesc.setBottomColor("#E8AE48"); + shareMoneyDesc.setContent("棰勪及鍒嗕韩濂栭噾锛毬�" + shareMoney); + dynamicInfo.setDesc(shareMoneyDesc); + dynamicInfo.setShowType(2); + + if (listPicture.size() < 7) { + dynamicInfo.setShowType(DynamicInfo.SHOW_TYPE_TWO); + dynamicInfo.setShareType(DynamicInfo.SHARE_TYPE_FOUR); // 鍒嗕韩绫诲瀷4鍥� + } else { + dynamicInfo.setShowType(DynamicInfo.SHOW_TYPE_THREE); + dynamicInfo.setShareType(DynamicInfo.SHARE_TYPE_NINE); // 鍒嗕韩绫诲瀷9鍥� + } + + if (!StringUtil.isNullOrEmpty(dynamicInfoId)) { + dynamicInfoDao.deleteById(dynamicInfoId); + } + // 淇濆瓨淇℃伅 + dynamicInfoDao.insert(dynamicInfo); + + } catch (Exception e) { + try { + LogHelper.errorDetailInfo(e); + } catch (Exception e1) { + e1.printStackTrace(); + } + } + } + + @Override + public void deleteActivity(Long activityId) { + DynamicInfo dynamicInfo = dynamicInfoDao.getByActivityId(activityId); + if (dynamicInfo != null) { + // 鍒犻櫎涔嬪墠鐨� + dynamicInfoDao.deleteById(dynamicInfo.getId()); + } + } + + @Override + public void removeByDate(Date createTime) { + dynamicInfoDao.removeByDate(createTime); + } + + @Override + public void updateShareCount(DynamicInfo record) { + dynamicInfoDao.updateShareCount(record); + } + + @Override + @Cacheable(value = "dynamicCache", key = "'count-'+#cid+'-'+#subId") + public long count(Long cid, Long subId) { + return dynamicInfoDao.count(cid, subId); + } + + @Override + @Cacheable(value = "dynamicCache", key = "'query-'+#start+'-'+#count+'-'+#cid+'-'+#subId") + public List<DynamicInfo> query(int start, int count, Long cid, Long subId) { + List<DynamicInfo> list = dynamicInfoDao.query(start, count, cid, subId); + + // 鏇存柊鍟嗗搧淇℃伅 + executor.execute(new Runnable() { + @Override + public void run() { + updateGoodInfo(list); + } + }); + + return list; + } + + private Map<Long, TaoBaoGoodsBrief> getFilterGoodsMap(List<DynamicInfo> list) { + // 鎻愬彇杩囨护鍟嗗搧 + List<TaoBaoGoodsBrief> goodsList = new ArrayList<>(); + for (DynamicInfo dynamicInfo : list) { + List<GoodsPicture> gpList = dynamicInfo.getImgs(); + if (gpList != null) + for (GoodsPicture gp : gpList) { + if (gp != null && gp.getGoods() != null) { + TaoBaoGoodsBriefExtra newGoods = new TaoBaoGoodsBriefExtra(); + try { + PropertyUtils.copyProperties(newGoods, gp.getGoods()); + goodsList.add(newGoods); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } + + } + } + } + goodsList = taoBaoGoodsUpdateService.filterImportantTaoBaoGoods(goodsList); + Map<Long, TaoBaoGoodsBrief> map = new HashMap<>(); + if (goodsList != null) + for (TaoBaoGoodsBrief goods : goodsList) + map.put(goods.getAuctionId(), goods); + return map; + } + + @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); + // 闇�瑕佹洿鏂扮殑鍟嗗搧 + List<TaoBaoGoodsBrief> taoBaoGoodsUpdateList = new ArrayList<>(); + if (list != null && list.size() > 0) { + // 鎻愬彇鍟嗗搧 + Map<Long, TaoBaoGoodsBrief> goodsMap = getFilterGoodsMap(list); + + BigDecimal fanLiRate = hongBaoManageService.getFanLiRate(); + BigDecimal shareRate = hongBaoManageService.getShareRate(); + ConfigParamsDTO paramsDTO = new ConfigParamsDTO(fanLiRate, shareRate, Constant.MAX_REWARD_RATE,hongBaoManageService.getFanLiRate(UserLevelEnum.superVIP)); + + for (DynamicInfo dynamicInfo : list) { + DynamicInfo dynamicNew = new DynamicInfo(); + try { + PropertyUtils.copyProperties(dynamicNew, dynamicInfo); + } catch (Exception e) { + e.printStackTrace(); + continue; + } + + // 搴楅摵淇℃伅 + TaoBaoShop shop = dynamicNew.getShop(); + if (shop != null) { + TaoBaoShop shopNew = new TaoBaoShop(); + try { + PropertyUtils.copyProperties(shopNew, shop); + } catch (Exception e) { + e.printStackTrace(); + continue; + } + Integer userType = shopNew.getUserType(); + if (userType == null || userType == 0) { + shopNew.setUserType(10); + } else { + shopNew.setUserType(11); + } + dynamicNew.setShop(shopNew); + } + + List<GoodsPicture> imgsNew = new ArrayList<GoodsPicture>(); + List<GoodsPicture> imgs = dynamicNew.getImgs(); + if (imgs != null && imgs.size() > 0) { + for (GoodsPicture goodsPicture : imgs) { + TaoBaoGoodsBriefExtra goods = goodsPicture.getGoods(); + if (goods == null) { + imgsNew.add(goodsPicture); + continue; + } + + taoBaoGoodsUpdateList.add(goods); + + GoodsPicture goodsNew = new GoodsPicture(); + try { + PropertyUtils.copyProperties(goodsNew, goodsPicture); + } catch (Exception e) { + e.printStackTrace(); + continue; + } + + // 杩囨护鍒镐俊鎭笌璧勯噾淇℃伅 + goods.setCouponAmount(goodsMap.get(goods.getAuctionId()).getCouponAmount()); + goods.setZkPrice(goodsMap.get(goods.getAuctionId()).getZkPrice()); + goods.setCouponStartFee(goodsMap.get(goods.getAuctionId()).getCouponStartFee()); + goods.setTkRate(goodsMap.get(goods.getAuctionId()).getTkRate()); + + GoodsDetailVO detailVO = GoodsDetailVOFactory.convertTaoBaoGoodsBriefExtra(goods, paramsDTO); + + goodsNew.setGoodsVO(detailVO); + goodsNew.setGoods(null); + + JumpDetailV2 jumpDetail = goodsNew.getJumpDetail(); + if (jumpDetail != null) { + JumpDetailV2 jumpDetailV2 = jumpDetailV2Service.getByTypeCache(jumpDetail.getType(), + platform, version); + if (jumpDetailV2 != null) { + goodsNew.setJumpDetail(jumpDetailV2); + } + } + + imgsNew.add(goodsNew); + } + dynamicNew.setImgs(imgsNew); + } + listNew.add(dynamicNew); + } + } + + // 鏇存柊鍟嗗搧淇℃伅 + executor.execute(new Runnable() { + @Override + public void run() { + updateGoodInfo(list); + } + }); + + taoBaoGoodsUpdateService.addUpdateQueueAsync(taoBaoGoodsUpdateList); + return listNew; + } + + /** + * 鏇存柊鍟嗗搧淇℃伅 + */ + public void updateGoodInfo(List<DynamicInfo> list) { + if (!Constant.IS_OUTNET) { + return; // 澶栫綉杩涜鏇存柊 + } + + if (list == null || list.size() == 0) { + return; + } + + try { + BigDecimal proportion = hongBaoManageService.getFanLiRate(); + for (DynamicInfo dynamicInfo : list) { + // 閭�璇锋暟鎹笉鍋氭洿鏂� + long classId = dynamicInfo.getClassId(); + if (classId == 4) { + break; + } + + // 鏇存柊鍟嗗搧淇℃伅 + List<GoodsPicture> listPicture = dynamicInfo.getImgs(); + if (listPicture == null || listPicture.size() == 0) { + continue; + } + + // 鏄惁涓�涓皬鏃朵箣鍐呭凡鏇存柊 + Date updateTime = dynamicInfo.getUpdateTime(); + if (updateTime != null) { + long nd = 1000 * 24 * 60 * 60;// 涓�澶╃殑姣鏁� + long nh = 1000 * 60 * 60;// 涓�灏忔椂鐨勬绉掓暟 + long diff = System.currentTimeMillis() - updateTime.getTime(); + long day = diff / nd;// 璁$畻宸灏戝ぉ + long hour = diff % nd / nh + day * 24;// 璁$畻宸灏戝皬鏃� + if (hour < 1) { + continue; + } + } + + boolean needUpdate = false; + // 宸蹭笅鏋禝D + List<Long> listDown = new ArrayList<Long>(); + // 鍟嗗搧鍒楄〃 + List<TaoBaoGoodsBrief> listGoods = new ArrayList<TaoBaoGoodsBrief>(); + + for (GoodsPicture goodsPicture : listPicture) { + TaoBaoGoodsBriefExtra oldExtra = goodsPicture.getGoods(); + if (oldExtra == null) { + continue; + } + + /* + * Integer state = oldExtra.getState(); if (state != null && state == 1) { + * continue; } + */ + + TaoBaoGoodsBrief goodsBrief = null; + try { + 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(); + shareMoneyDesc.setColor("#FFFFFF"); + shareMoneyDesc.setBottomColor("#E8AE48"); + shareMoneyDesc.setContent("棰勪及鍒嗕韩濂栭噾锛毬�" + shareMoney); + dynamicInfo.setDesc(shareMoneyDesc); + } + } + + // 闇�瑕佹洿鏂颁俊鎭紱 + needUpdate = true; + } + + // 鏃犳晥鏇存柊淇℃伅 + if (!needUpdate) { + continue; + } + + // 鏇存柊鍟嗗搧淇℃伅 + dynamicInfo.setImgs(listPicture); + + // 鍟嗗搧宸蹭笅鏋� + List<TaoBaoGoodsBrief> listGoodsBrief = dynamicInfo.getListGoodsBrief(); + if (listGoodsBrief != null && listGoodsBrief.size() > 0) { + // 娣樺疂宸蹭笅鏋跺晢鍝� + if (listDown.size() > 0) { + for (TaoBaoGoodsBrief taoBaoGoodsBrief : listGoodsBrief) { + if (listDown.contains(taoBaoGoodsBrief.getAuctionId())) { + taoBaoGoodsBrief.setState(1); + } + } + } + + 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); + } + + } + +} -- Gitblit v1.8.0