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