From a70d35cd9a672deb0aed272c8209ddde096f917b Mon Sep 17 00:00:00 2001
From: 喻健 <喻健@Admin>
Date: 星期三, 12 十二月 2018 10:25:08 +0800
Subject: [PATCH] 动态商品分享接口修改,添加新接口, 画图调整

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/activity/ActivityServiceImpl.java |  239 ++++++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 153 insertions(+), 86 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/activity/ActivityServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/activity/ActivityServiceImpl.java
index 3ec4a55..5621bc4 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/activity/ActivityServiceImpl.java
+++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/activity/ActivityServiceImpl.java
@@ -1,6 +1,5 @@
 package com.yeshi.fanli.service.impl.activity;
 
-import java.io.InputStream;
 import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
@@ -8,8 +7,12 @@
 
 import javax.annotation.Resource;
 
+import net.sf.json.JSONObject;
+
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
+import org.yeshi.utils.entity.FileUploadResult;
+import org.yeshi.utils.taobao.TbImgUtil;
 
 import com.yeshi.fanli.dao.mybatis.UserInfoMapper;
 import com.yeshi.fanli.dao.mybatis.activity.ActivityUserMapper;
@@ -23,34 +26,31 @@
 import com.yeshi.fanli.entity.bus.activity.RecommendActivityImg;
 import com.yeshi.fanli.entity.bus.activity.RecommendActivityInviteInfo;
 import com.yeshi.fanli.entity.bus.activity.RecommendActivityTaoBaoGoods;
-import com.yeshi.fanli.entity.bus.user.UserInfo;
-import com.yeshi.fanli.entity.taobao.PidUser;
+import com.yeshi.fanli.entity.bus.share.UserShareGoodsRecord.ShareSourceTypeEnum;
+import com.yeshi.fanli.entity.goods.CommonGoods;
 import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
 import com.yeshi.fanli.exception.ActivityException;
+import com.yeshi.fanli.exception.share.UserShareGoodsRecordException;
 import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException;
 import com.yeshi.fanli.exception.taobao.TaobaoGoodsUpdateException;
+import com.yeshi.fanli.log.LogHelper;
 import com.yeshi.fanli.service.inter.activity.ActivityService;
 import com.yeshi.fanli.service.inter.config.ConfigService;
+import com.yeshi.fanli.service.inter.goods.CommonGoodsService;
 import com.yeshi.fanli.service.inter.goods.ShareGoodsService;
 import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService;
 import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService;
 import com.yeshi.fanli.service.inter.user.SpreadUserImgService;
 import com.yeshi.fanli.service.inter.user.TBPidService;
 import com.yeshi.fanli.service.inter.user.UserAccountService;
-import com.yeshi.fanli.util.AESUtil;
-import com.yeshi.fanli.util.Constant;
+import com.yeshi.fanli.service.inter.user.UserShareGoodsRecordService;
 import com.yeshi.fanli.util.ImageUtil;
 import com.yeshi.fanli.util.RedisManager;
 import com.yeshi.fanli.util.StringUtil;
 import com.yeshi.fanli.util.activity.ActivityUtil;
+import com.yeshi.fanli.util.factory.CommonGoodsFactory;
+import com.yeshi.fanli.util.taobao.TaoBaoUtil;
 import com.yeshi.fanli.util.taobao.TaoKeApiUtil;
-
-import org.yeshi.utils.HttpUtil;
-import org.yeshi.utils.QRCodeUtil;
-import org.yeshi.utils.entity.FileUploadResult;
-import org.yeshi.utils.exception.HttpException;
-import org.yeshi.utils.taobao.TbImgUtil;
-import org.yeshi.utils.tencentcloud.COSManager;
 
 @Service
 public class ActivityServiceImpl implements ActivityService {
@@ -96,6 +96,12 @@
 
 	@Resource
 	private TaoBaoGoodsUpdateService taoBaoGoodsUpdateService;
+	
+	@Resource
+	private UserShareGoodsRecordService userShareGoodsRecordService;
+	
+	@Resource
+	private CommonGoodsService commonGoodsService;
 
 	@Override
 	public List<RecommendActivity> getRecommendActivityList(int page, int pageSize) {
@@ -114,97 +120,145 @@
 
 	@Override
 	public ActivityShareResult shareActivityGoods(Long uid, Long activityId) throws ActivityException {
+		
 		RecommendActivity activity = recommendActivityMapper.selectByPrimaryKey(activityId);
+		
 		if (activity == null)
 			throw new ActivityException(2, "鍔ㄦ�佷笉瀛樺湪");
+		
 		if (activity.getType() != RecommendActivity.TYPE_SHARE_GOODS)
 			throw new ActivityException(3, "涓嶅睘浜庡垎浜晢鍝佸姩鎬�");
+	
 		ActivityShareResult result = new ActivityShareResult();
+		
 		String title = activity.getTitle().replace("<br>", "/n").replace("<p>", "").replace("</p>", "");
 		if (title != null && title.trim().endsWith("/n"))
 			title = title.trim().substring(0, title.trim().length() - 2);
 		result.setTitle(title);
 		List<FileUploadResult> imgList = new ArrayList<>();
+		
+		List<TaoBaoGoodsBrief> listGoodsBrief = new ArrayList<TaoBaoGoodsBrief>();
+		
 		if (activity.getGoodsList() != null) {
-			// 鎻愬墠鍒嗛厤濂絇ID
-			tbPidService.getTBPid(uid, PidUser.TYPE_SHARE_GOODS);
-			// activity.getGoodsList().stream().parallel().forEach(goodsActivity
-			// -> {
-			// try {
-			// TaoBaoGoodsBrief goods = taoBaoGoodsBriefService
-			// .getTaoBaoGoodsDetailForShare(Long.parseLong(goodsActivity.getAuctionId()),
-			// uid);
-			// if (goods != null &&
-			// !StringUtil.isNullOrEmpty(goods.getCouponActivityId())
-			// && goods.getCouponLeftCount() != null &&
-			// goods.getCouponLeftCount() > 0) {
-			// UserShareGoodsHistory userShareGoodsHistory =
-			// shareGoodsService.addShareGoodsHistory(uid,
-			// goods.getAuctionId());
-			// if (userShareGoodsHistory != null)
-			// imgList.add(new
-			// FileUploadResult(userShareGoodsHistory.getShareImg(),
-			// userShareGoodsHistory.getShareImgMD5()));
-			// } else if (goods != null) {
-			// LogHelper.error("娌℃湁娣诲姞鍒板垎浜�:" + goods.getAuctionId());
-			// }
-			// } catch (ShareGoodsException e) {
-			// try {
-			// LogHelper.errorDetailInfo(e, "鍒嗕韩鍟嗗搧鍑洪敊-鍟嗗搧ID:" +
-			// goodsActivity.getAuctionId(), "--");
-			// } catch (Exception e1) {
-			// e1.printStackTrace();
-			// }
-			// }
-			// });
-
-			// 鐢诲浘
-			activity = getRecommendActivityDetail(activityId);
-
-			String url = String.format("http://%s/shareMuchImg.html?uid=%s&activityId=%s", configService.getH5Host(),
-					AESUtil.encrypt(uid + "", Constant.UIDAESKEY), activity.getId() + "");
-
-			String shortLink = HttpUtil.getShortLink(url);
-			if (!StringUtil.isNullOrEmpty(shortLink)) {
-				url = shortLink;
-			}
-			InputStream erCodeInputStream = null;
-
-			// 鐢熸垚閾炬帴浜岀淮鐮�
-
-			try {
-				erCodeInputStream = QRCodeUtil.getInstance(500).encode(url);
-			} catch (Exception e) {
-				e.printStackTrace();
-			}
-			// 鑾峰彇鍒扮敤鎴风殑澶村儚
-			UserInfo user = userInfoMapper.selectByPrimaryKey(uid);
-			InputStream portrait = null;
-			if (!StringUtil.isNullOrEmpty(user.getPortrait())) {
+			
+			activity.getGoodsList().stream().parallel().forEach(goodsActivity -> {
+				
 				try {
-					portrait = HttpUtil.downLoadImg(user.getPortrait());
-				} catch (HttpException e) {
-					String portraitUrl = userAccountService.repairPortrait(uid);
-					if (StringUtil.isNullOrEmpty(portraitUrl))
-						throw new ActivityException(11, "鑾峰彇澶村儚鍑洪敊");
-					else {
-						// 鍐嶆鑾峰彇澶村儚
-						try {
-							portrait = HttpUtil.downLoadImg(portraitUrl);
-						} catch (HttpException e1) {
-							throw new ActivityException(11, "鑾峰彇澶村儚鍑洪敊");
-						}
+					TaoBaoGoodsBrief goodsBrief = 
+							redisManager.getTaoBaoGoodsBrief(Long.parseLong(goodsActivity.getAuctionId()));
+					listGoodsBrief.add(goodsBrief);
+				} catch (TaobaoGoodsDownException e) {
+					
+					CommonGoods commonGoods= commonGoodsService.getCommonGoodsByGoodsIdAndGoodsType(Long.parseLong(goodsActivity.getAuctionId()),
+							CommonGoods.GOODS_TYPE_TB);
+					if (commonGoods != null) {
+						TaoBaoGoodsBrief goodsBrief =  TaoBaoUtil.convert(commonGoods);
+						goodsBrief.setState(1);
+						listGoodsBrief.add(goodsBrief);
+					}
+					
+					try {
+						LogHelper.errorDetailInfo(e, "鍒嗕韩鍟嗗搧鍑洪敊-鍟嗗搧ID:" + goodsActivity.getAuctionId(),	"--");
+					} catch (Exception e1) {
+						e1.printStackTrace();
 					}
 				}
-			}
-			InputStream shareImgInputStream = ImageUtil.drawActivityGoodsShareBigImg(erCodeInputStream, portrait,
-					activity.getGoodsList());
-			FileUploadResult shareImgResult = COSManager.getInstance().uploadInputStream(shareImgInputStream,
-					"sharegoods/activity/share_" + uid + "_" + activityId + "_" + System.currentTimeMillis() + ".png");
-			imgList.add(shareImgResult);
+			});
 		}
+		
+		if (listGoodsBrief.size() > 0) {
+			try {
+				FileUploadResult loadResult = userShareGoodsRecordService.save(uid, 
+						ShareSourceTypeEnum.activity, title, listGoodsBrief);
+				imgList.add(loadResult);
+				
+			} catch (UserShareGoodsRecordException e) {
+				throw new ActivityException(1, e.getMsg());
+			}
+		} else {
+			throw new ActivityException(1, "鍟嗗搧涓嬫灦");
+		}
+		
 		result.setImgList(imgList);
 		return result;
+	}
+	
+	
+	@Override
+	public JSONObject shareGoodsV2(Long uid, Long activityId) throws ActivityException {
+		
+		RecommendActivity activity = recommendActivityMapper.selectByPrimaryKey(activityId);
+		
+		if (activity == null)
+			throw new ActivityException(2, "鍔ㄦ�佷笉瀛樺湪");
+		
+		if (activity.getType() != RecommendActivity.TYPE_SHARE_GOODS)
+			throw new ActivityException(3, "涓嶅睘浜庡垎浜晢鍝佸姩鎬�");
+	
+		ActivityShareResult result = new ActivityShareResult();
+		
+		String title = activity.getTitle().replace("<br>", "/n").replace("<p>", "").replace("</p>", "");
+		if (title != null && title.trim().endsWith("/n"))
+			title = title.trim().substring(0, title.trim().length() - 2);
+		
+		result.setTitle(title);
+		
+		List<FileUploadResult> imgList = new ArrayList<>();
+		List<TaoBaoGoodsBrief> listGoodsBrief = new ArrayList<TaoBaoGoodsBrief>();
+		
+		if (activity.getGoodsList() != null) {
+			activity.getGoodsList().stream().parallel().forEach(goodsActivity -> {
+				try {
+					TaoBaoGoodsBrief goodsBrief = 
+							redisManager.getTaoBaoGoodsBrief(Long.parseLong(goodsActivity.getAuctionId()));
+					listGoodsBrief.add(goodsBrief);
+					
+				} catch (TaobaoGoodsDownException e) {
+					
+					CommonGoods commonGoods= commonGoodsService.getCommonGoodsByGoodsIdAndGoodsType(Long.parseLong(goodsActivity.getAuctionId()),
+							CommonGoods.GOODS_TYPE_TB);
+					if (commonGoods != null) {
+						TaoBaoGoodsBrief goodsBrief =  TaoBaoUtil.convert(commonGoods);
+						goodsBrief.setState(1);
+						listGoodsBrief.add(goodsBrief);
+					}
+					
+					try {
+						LogHelper.errorDetailInfo(e, "鍒嗕韩鍟嗗搧鍑洪敊-鍟嗗搧ID:" + goodsActivity.getAuctionId(),	"--");
+					} catch (Exception e1) {
+						e1.printStackTrace();
+					}
+				}
+			});
+		}
+		
+		FileUploadResult loadResult = null;
+		if (listGoodsBrief.size() > 0) {
+			try {
+				loadResult = userShareGoodsRecordService.save(uid, 
+						ShareSourceTypeEnum.activity, title, listGoodsBrief);
+				imgList.add(loadResult);
+				
+			} catch (UserShareGoodsRecordException e) {
+				throw new ActivityException(1, e.getMsg());
+			}
+		} else {
+			throw new ActivityException(1, "鍟嗗搧涓嬫灦");
+		}
+		
+		String revenue = "";
+		String totalGetMoney = activity.getTotalGetMoney();
+		if (totalGetMoney != null && totalGetMoney.trim().length() > 0) {
+			revenue = totalGetMoney.replace("棰勮鍒嗕韩濂栭噾", listGoodsBrief.size()+"涓晢鍝侀浼板垎浜閲�");
+		}
+		
+		JSONObject data = new JSONObject();
+		data.put("shareImg", loadResult);
+		data.put("revenue", revenue);
+		data.put("notifyDesc", configService.get("goods_share_notify"));
+
+		return data;
+		
 	}
 
 	@Override
@@ -253,7 +307,9 @@
 		activity.setTop(top);
 		activity.setType(RecommendActivity.TYPE_SHARE_GOODS);
 		recommendActivityMapper.insertSelective(activity);
-
+		
+		List<CommonGoods> listCommonGoods = new ArrayList<CommonGoods>();
+		
 		BigDecimal taotaoMoney = new BigDecimal(0);
 		for (long auctionId : goodsList) {
 			TaoBaoGoodsBrief tb = null;
@@ -276,6 +332,17 @@
 			recommendActivityTaoBaoGoodsMapper.insertSelective(goods);
 			BigDecimal money = taoBaoGoodsBriefService.getShareGoodsUserHongBao(tb);
 			taotaoMoney = taotaoMoney.add(money);
+			
+			// 杞崲绠�鐗堝晢鍝佷俊鎭�
+			CommonGoods commonGoods = CommonGoodsFactory.create(tb);
+			listCommonGoods.add(commonGoods);
+		}
+		
+		try {
+			// 鏇存柊绠�鐗堜俊鎭�
+			commonGoodsService.addBatchCommonGoods(listCommonGoods);
+		} catch (Exception e) {
+			e.printStackTrace();
 		}
 
 		RecommendActivity updateActivity = new RecommendActivity();

--
Gitblit v1.8.0