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

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/DynamicInfoServiceImpl.java |  974 ++++++++++++++++++++++++++++++++++++++------------------
 1 files changed, 660 insertions(+), 314 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 cf333fd..6308999 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,35 +1,44 @@
 package com.yeshi.fanli.service.impl.dynamic;
 
-import java.io.IOException;
+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.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.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;
@@ -37,35 +46,39 @@
 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.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.DaTaoKeGoodsService;
+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 DaTaoKeGoodsService daTaoKeGoodsService;
+	private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service;
 
 	@Resource
 	private JumpDetailV2Service jumpDetailV2Service;
@@ -75,60 +88,62 @@
 
 	@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);
+		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();
+			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(activityUserService.listRand(1).get(0));
+			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("-------------------\n");
 			buffer.append("浠婂ぉ : " + format.format(date));
 			buffer.append("     ");
 			buffer.append(DateLunarUtil.getWeekd(date) + "\n");
@@ -136,23 +151,25 @@
 			buffer.append("         ");
 			buffer.append("鏃╁畨锝瀄n");
 			buffer.append("鎴戠殑閭�璇风爜锛氥�愰個璇风爜銆慭n");
-			buffer.append("璐墿鐪侀挶杩斿埄鍒窤pp锛氥�愰個璇烽摼鎺ャ��");
-		
-        
+			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();
@@ -162,18 +179,18 @@
 			dynamicPic.setSubclassId(0L);
 			dynamicPic.setShowType(DynamicInfo.SHOW_TYPE_ONE);
 			dynamicPic.setShareType(DynamicInfo.SHARE_TYPE_INVITE);
-			dynamicPic.setUser(activityUserService.listRand(1).get(0));
+			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);
@@ -183,17 +200,20 @@
 				List<GoodsPicture> listImg = new ArrayList<GoodsPicture>();
 				listImg.add(p2);
 				dynamicPic.setImgs(listImg);
-				
+
 				dynamicInfoDao.insert(dynamicPic);
-			} catch (IOException e) {
-				e.printStackTrace();
+			} 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();
@@ -201,8 +221,7 @@
 			LogHelper.test("澶ф窐瀹㈠搧鐗宨d鑾峰彇澶辫触锛圖ynamicInfoService-insertShopInfo锛�");
 			return;
 		}
-		
-		
+
 		Long classId = 3L;
 		Long subclassId = 0L;
 		List<DynamicInfo> listInfo = dynamicInfoDao.query(classId, subclassId);
@@ -211,41 +230,40 @@
 		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);
@@ -258,16 +276,20 @@
 			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);
-		dynamicVO.setUser(activityUserService.listRand(1).get(0));
-		dynamicVO.setCreateTime(DateUtil.reduceRandomMinute(new Date(), 8));	
+		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");
@@ -275,24 +297,25 @@
 		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 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);
@@ -300,16 +323,14 @@
 			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 {
@@ -317,7 +338,7 @@
 			List<GoodsClass> list = DaTaoKeUtil.goodsClasses;
 			int index = (int) (Math.random() * list.size());
 			Long subclassId = list.get(index).getId();
-			int cid = Integer.parseInt(subclassId +"");
+			int cid = Integer.parseInt(subclassId + "");
 			int count = 0;
 			double random = Math.random();
 			if (random > 0.4) {
@@ -326,28 +347,31 @@
 				count = 4;
 			}
 
-			List<DaTaoKeDetail> listDaTaoKe = daTaoKeGoodsService.getGoodsNotInList(subclassId, null, count);
+			List<DaTaoKeDetailV2> listDaTaoKe = daTaoKeGoodsDetailV2Service.getGoodsNotInList(subclassId, null, count);
 
-			DaTaoKeDetail daTaoKeDetail = null;
+			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 (DaTaoKeDetail daTaoKe : listDaTaoKe) {
+			for (DaTaoKeDetailV2 daTaoKe : listDaTaoKe) {
 				if (daTaoKeDetail == null) {
 					daTaoKeDetail = daTaoKe;
 				}
 				// 鍒嗕韩濂栭噾
-
 				TaoBaoGoodsBrief taoBaoGoodsBrief = TaoBaoUtil.convert(daTaoKe);
-				TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), null);
+				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);
 				// 鍟嗗搧鍥剧墖
@@ -355,7 +379,7 @@
 				taoBaoGoodsBriefExtra.setCouponInfo(null);
 				GoodsPicture goodsPicture = getGoodsPicture(daTaoKe);
 				goodsPicture.setGoods(taoBaoGoodsBriefExtra);
-				
+
 				listPicture.add(goodsPicture);
 			}
 
@@ -366,6 +390,7 @@
 			// 鍙戝竷鐢ㄦ埛
 			dynamicInfo.setUser(activityUserService.getRandomByDaTaoKeCid(cid));
 			dynamicInfo.setImgs(listPicture);
+			dynamicInfo.setListGoodsBrief(listGoods);
 
 			ClientTextStyleVO shareMoneyDesc = new ClientTextStyleVO();
 			shareMoneyDesc.setColor("#FFFFFF");
@@ -385,7 +410,11 @@
 			dynamicInfoDao.insert(dynamicInfo);
 
 		} catch (Exception e) {
-			e.printStackTrace();
+			try {
+				LogHelper.errorDetailInfo(e);
+			} catch (Exception e1) {
+				e1.printStackTrace();
+			}
 		}
 	}
 
@@ -394,18 +423,36 @@
 	public void insertTimeHotSale() {
 		Long classId = 1L;
 		try {
-			saveHotSale(classId, 0L);
+			for (int i = 0; i < 3; i++) {
+				boolean addSuccess = saveHotSale(classId, 0L);
+				if (addSuccess) {
+					break;
+				}
+			}
 		} catch (Exception e) {
-			e.printStackTrace();
+			try {
+				LogHelper.errorDetailInfo(e);
+			} catch (Exception e1) {
+				e1.printStackTrace();
+			}
 		}
 
 		// 鐑攢鍗曞搧鐨勫垎绫�
 		List<GoodsClass> list = DaTaoKeUtil.goodsClasses;
 		for (GoodsClass goodsClass : list) {
 			try {
-				saveHotSale(classId, goodsClass.getId());
+				for (int i = 0; i < 3; i++) {
+					boolean addSuccess = saveHotSale(classId, goodsClass.getId());
+					if (addSuccess) {
+						break;
+					}
+				}
 			} catch (Exception e) {
-				e.printStackTrace();
+				try {
+					LogHelper.errorDetailInfo(e);
+				} catch (Exception e1) {
+					e1.printStackTrace();
+				}
 			}
 		}
 	}
@@ -417,7 +464,8 @@
 	 * @param subclassId
 	 * @throws TaobaoGoodsDownException
 	 */
-	public void saveHotSale(Long classId, Long 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) {
@@ -430,27 +478,35 @@
 			}
 		}
 		// 澶ф窐瀹㈡暟鎹�
-		DaTaoKeDetail daTaoKe = daTaoKeGoodsService.getGoodsNotInList(subclassId, listId, 1).get(0);
+		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 taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), null);
-		if (!taoBaoGoodsBriefExtra.isCoupon()) {
-			taoBaoGoodsBriefExtra.setState(1);
+		TaoBaoGoodsBriefExtra goodsExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(),
+				null);
+
+		if (!goodsExtra.isCoupon() || (goodsExtra.getState() != null && goodsExtra.getState() == 1)) {
+			return addSuccess; // 宸蹭笅鏋� 銆佹棤鍒� 涓嶅姞鍏�
 		}
-		
-		// 鍒嗕韩濂栭噾
-		BigDecimal shareMoney = taoBaoGoodsBriefService.getShareGoodsUserHongBao(taoBaoGoodsBrief);
-		ClientTextStyleVO shareMoneyDesc = new ClientTextStyleVO();
-		shareMoneyDesc.setColor("#FFFFFF");
-		shareMoneyDesc.setBottomColor("#E8AE48");
-		shareMoneyDesc.setContent("棰勪及鍒嗕韩濂栭噾锛毬�" + shareMoney);
-		// 鍟嗗搧鍥剧墖
+
+		List<TaoBaoGoodsBrief> listGoods = new ArrayList<TaoBaoGoodsBrief>();
+		listGoods.add(taoBaoGoodsBrief);
+
+		goodsExtra.setTkRate(taoBaoGoodsBrief.getTkRate());
+		goodsExtra.setUpdatetime(new Date());
+		goodsExtra.setCouponInfo(null);
+
 		GoodsPicture goodsPicture = getGoodsPicture(daTaoKe);
-		taoBaoGoodsBriefExtra.setUpdatetime(new Date());
-		taoBaoGoodsBriefExtra.setCouponInfo(null);
-		goodsPicture.setGoods(taoBaoGoodsBriefExtra);
+		goodsPicture.setGoods(goodsExtra);
 		// 鍟嗗搧鍒楄〃
 		List<GoodsPicture> listPicture = new ArrayList<GoodsPicture>();
 		listPicture.add(goodsPicture);
@@ -459,7 +515,7 @@
 		TaoBaoGoodsBrief taoBaoGoodsBrief2 = TaoKeApiUtil.getSimpleGoodsInfo(daTaoKe.getGoodsId());
 		List<String> imgList = taoBaoGoodsBrief2.getImgList();
 		List<String> listimgs = new ArrayList<String>();
-		String pic = daTaoKe.getPic();
+		String pic = daTaoKe.getMainPic();
 		listimgs.add(TbImgUtil.getTBSize320Img(pic));
 		if (imgList != null && imgList.size() > 0) {
 			for (String img : imgList) {
@@ -470,7 +526,7 @@
 				if (pic.equals(img)) {
 					continue;
 				}
-				
+
 				listimgs.add(img);
 				GoodsPicture picture = new GoodsPicture();
 				picture.setH(100);
@@ -479,8 +535,14 @@
 				listPicture.add(picture);
 			}
 		}
-		
-		taoBaoGoodsBriefExtra.setImgList(imgList);
+		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);
@@ -489,12 +551,13 @@
 		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)) {
+			if (StringUtil.isNullOrEmpty(newDesc)) {
 				desc = desc.substring(0, index);
 			}
 		}
@@ -502,6 +565,9 @@
 
 		// 淇濆瓨淇℃伅
 		dynamicInfoDao.insert(dynamicInfo);
+
+		addSuccess = true;
+		return addSuccess;
 	}
 
 	/**
@@ -512,7 +578,7 @@
 	 * @param subclassId
 	 * @throws TaobaoGoodsDownException
 	 */
-	public DynamicInfo getDynamicInfo(DaTaoKeDetail daTaoKe, Long classId, Long subclassId) {
+	public DynamicInfo getDynamicInfo(DaTaoKeDetailV2 daTaoKe, Long classId, Long subclassId) {
 		DynamicInfo dynamicInfo = new DynamicInfo();
 		dynamicInfo.setId(UUID.randomUUID().toString().replace("-", ""));
 		dynamicInfo.setClassId(classId);
@@ -547,13 +613,13 @@
 	 * @param daTaoKe
 	 * @return
 	 */
-	public GoodsPicture getGoodsPicture(DaTaoKeDetail daTaoKe) {
+	public GoodsPicture getGoodsPicture(DaTaoKeDetailV2 daTaoKe) {
 		GoodsPicture goodsPicture = new GoodsPicture();
 		goodsPicture.setH(100);
 		goodsPicture.setW(100);
-		goodsPicture.setUrl(TbImgUtil.getTBSize320Img(daTaoKe.getPic()));
+		goodsPicture.setUrl(TbImgUtil.getTBSize320Img(daTaoKe.getMainPic()));
 		goodsPicture.setJumpDetail(jumpDetailV2Service.getByTypeCache("goodsdetail"));
-		
+
 		String goodsId = daTaoKe.getGoodsId().toString();
 		JSONObject item = new JSONObject();
 		item.put("id", goodsId);
@@ -563,234 +629,183 @@
 	}
 
 	@Override
-	public void updateShareCount(DynamicInfo record) {
-		dynamicInfoDao.updateShareCount(record);
-	}
-	
-	
-	@Override
-	public void insertInviteMaterial(String title, String picUrl, Long activityId, ActivityUser activityUser) {
-		
-		DynamicInfo existInfo = null;
-		if (activityId != null) {
-			existInfo = dynamicInfoDao.getByActivityId(activityId);
-			if (existInfo != null) {
-				dynamicInfoDao.deleteById(existInfo.getId());
-			}
-			
-			if (!StringUtil.isNullOrEmpty(title)) {
-				title = title.replace("<p>", "");
-				title = title.replace("</p>", "");
-			}
+	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);
 		}
-		
-		DynamicInfo dynamicVO = new DynamicInfo();
+
+		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());
-		
-		if (existInfo != null) {
-			dynamicVO.setCreateTime(existInfo.getCreateTime());
-			dynamicVO.setShareCount(existInfo.getShareCount());
-		} else {
-			dynamicVO.setCreateTime(DateUtil.reduceRandomMinute(new Date(), 8));
+
+		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.listRand(1).get(0));
+			dynamicVO.setUser(activityUserService.selectByPrimaryKey(2L));
 		} else {
 			dynamicVO.setUser(activityUser);
 		}
-		
-		
+
+		// 浠嬬粛鍐呭
 		List<ClientTextStyleVO> listtitle = new ArrayList<ClientTextStyleVO>();
-		
-				
-		List<GoodsPicture> listImg = new ArrayList<GoodsPicture>();
-		if(StringUtil.isNullOrEmpty(picUrl)) {
-			dynamicVO.setImgs(listImg);
-			dynamicVO.setShowType(DynamicInfo.SHOW_TYPE_ZERO);
-			
-			// 浠嬬粛鍐呭
+		if (!StringUtil.isNullOrEmpty(title)) {
 			ClientTextStyleVO row1 = new ClientTextStyleVO();
 			row1.setColor("#333333");
 			row1.setContent(title);
 			listtitle.add(row1);
-			dynamicVO.setTitle(listtitle);
-			dynamicInfoDao.insert(dynamicVO);
+		}
+
+		// 鍥剧墖
+		List<GoodsPicture> listImg = new ArrayList<GoodsPicture>();
+		if (StringUtil.isNullOrEmpty(picUrl)) {
+			dynamicVO.setShowType(DynamicInfo.SHOW_TYPE_ZERO);
 		} else {
-			try {
-				dynamicVO.setTitle(listtitle);
-				dynamicVO.setShowType(DynamicInfo.SHOW_TYPE_ONE);
-				
-				// 鍥剧墖
-				String imgLink = qrCodeService.drawInviteQrCodeNew(picUrl , null, null, null);
-				GoodsPicture p2 = new GoodsPicture();
-				p2.setW(100);
-				p2.setH(100);
-				p2.setUrl(imgLink);
-				p2.setUrlOriginal(picUrl);
-				listImg.add(p2);
-				dynamicVO.setImgs(listImg);
-				
-				
-				dynamicInfoDao.insert(dynamicVO);
-			} catch (Exception e) {
-				e.printStackTrace();
+			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);
 		}
-		
-	}
-	
-	
-	
-	@Override
-	public void removeByDate(Date createTime) {
-		dynamicInfoDao.removeByDate(createTime);
-	}
-	
-	
-	
-	/**
-	 * 鏇存柊鍟嗗搧淇℃伅
-	 */
-	public void updateGoodInfo(List<DynamicInfo> list) {
-		if (list == null || list.size() == 0) {
-			return;
+
+		dynamicVO.setImgs(listImg);
+		dynamicVO.setTitle(listtitle);
+
+		if (!StringUtil.isNullOrEmpty(dynamicInfoId)) {
+			dynamicInfoDao.deleteById(dynamicInfoId);
 		}
-		
-		BigDecimal proportion = hongBaoManageService.getFanLiRate();
-		for (DynamicInfo dynamicInfo: list) {
-			// 閭�璇锋暟鎹笉鍋氭洿鏂�
-			long classId = dynamicInfo.getClassId();
-			if (classId == 4) {
-				break;
-			}
-			
-			// 鏇存柊鍟嗗搧淇℃伅
-			List<GoodsPicture> imgs = dynamicInfo.getImgs();
-			if (imgs == null || imgs.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;
-				}
-			}
-			
-			// 鏇存柊
-			BigDecimal shareMoney = new BigDecimal(0);
-			for (GoodsPicture goodsPicture: imgs) {
-				TaoBaoGoodsBriefExtra oldExtra = goodsPicture.getGoods();
-				if (oldExtra == null) {
-					continue;
-				}
-				
-				Integer state = oldExtra.getState();
-				if (state != null && state == 1) {
-					continue;
-				}
-				
-				try {
-					TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(oldExtra.getAuctionId());
-					TaoBaoGoodsBriefExtra newExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(goodsBrief, proportion.toString(), null);
-					
-					if (!newExtra.isCoupon()) {
-						newExtra.setState(1);
-					}
-					newExtra.setUpdatetime(new Date());
-					goodsPicture.setGoods(newExtra);
-					
-					
-					// 鏇存柊鐑攢鍗曞搧鐨勫垎浜閲�  锛屽叾浣欎笉鍋氭洿鏂�
-					if (classId == 1) {
-						BigDecimal money = taoBaoGoodsBriefService.getShareGoodsUserHongBao(goodsBrief);
-						shareMoney = MoneyBigDecimalUtil.add(shareMoney, money);
-					}
-					
-				} catch (TaobaoGoodsDownException e) {
-					oldExtra.setState(1);
-					oldExtra.setCoupon(false);
-					oldExtra.setUpdatetime(new Date());
-					goodsPicture.setGoods(oldExtra);
-					e.printStackTrace();
-				}
-			}
-			
-			// 鏇存柊鐑攢鍗曞搧鐨勫垎浜閲�  锛屽叾浣欎笉鍋氭洿鏂�
-			if (classId == 1) {
-				ClientTextStyleVO shareMoneyDesc = new ClientTextStyleVO();
-				shareMoneyDesc.setColor("#FFFFFF");
-				shareMoneyDesc.setBottomColor("#E8AE48");
-				shareMoneyDesc.setContent("棰勪及鍒嗕韩濂栭噾锛毬�" + shareMoney);
-				dynamicInfo.setDesc(shareMoneyDesc);
-			}
-			
-			dynamicInfo.setImgs(imgs);
-			dynamicInfo.setUpdateTime(new Date());
-			dynamicInfoDao.updateGoodInfo(dynamicInfo);
-		}
+
+		dynamicInfoDao.insert(dynamicVO);
 	}
-	
-	
-	@Override
-	public void deleteActivity(Long activityId) {
-		DynamicInfo dynamicInfo = dynamicInfoDao.getByActivityId(activityId);
-		if (dynamicInfo != null) {
-			// 鍒犻櫎涔嬪墠鐨�
-			dynamicInfoDao.deleteById(dynamicInfo.getId());
-		}
-	}
-	
-	
 
 	@Override
-	public void saveActivityRecommend(RecommendActivity activity) {
+	public void insertActivityRecommend(RecommendActivity activity) {
 		if (activity == null || activity.getGoodsList() == null) {
 			return;
 		}
-		
+
 		try {
-			DynamicInfo existInfo = dynamicInfoDao.getByActivityId(activity.getId());
-			if (existInfo != null) {
-				dynamicInfoDao.deleteById(existInfo.getId());
+			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 dynamicInfo = new DynamicInfo();
-			dynamicInfo.setId(UUID.randomUUID().toString().replace("-", ""));
+
 			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.replace("<p>", "");
-				title = title.replace("</p>", "");
-				dynamicInfo.setTitle(convertIntroduce(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);
 			}
-			
-			if (existInfo != null) {
-				dynamicInfo.setCreateTime(existInfo.getCreateTime());
-				dynamicInfo.setShareCount(existInfo.getShareCount());
-			} else {
-				dynamicInfo.setCreateTime(new Date());
-				dynamicInfo.setUpdateTime(new Date());
+			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();
@@ -799,34 +814,38 @@
 
 			if (activity.getGoodsList() != null) {
 				for (RecommendActivityTaoBaoGoods activityGoods : activity.getGoodsList()) {
-				
+
 					TaoBaoGoodsBrief taoBaoGoodsBrief = null;
-					 TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra = null;
+					TaoBaoGoodsBriefExtra taoBaoGoodsBriefExtra = null;
 					String auctionId = activityGoods.getAuctionId();
 					try {
 						taoBaoGoodsBrief = redisManager.getTaoBaoGoodsBrief(Long.parseLong(auctionId));
-					
-						taoBaoGoodsBriefExtra = TaoBaoUtil.getTaoBaoGoodsBriefExtra(taoBaoGoodsBrief, proportion.toString(), null);
+
+						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);
+						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);
@@ -834,13 +853,13 @@
 					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");
@@ -855,18 +874,41 @@
 				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) {
-			e.printStackTrace();
+			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) {
@@ -877,7 +919,7 @@
 	@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
@@ -885,7 +927,311 @@
 				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.getVIPFanLiRate());
+
+			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