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/activity/ActivityServiceImpl.java | 617 +++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 477 insertions(+), 140 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 11ae431..494f6d1 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,15 +1,20 @@ package com.yeshi.fanli.service.impl.activity; -import java.io.InputStream; import java.math.BigDecimal; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.annotation.Resource; +import org.jsoup.Jsoup; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.yeshi.utils.NumberUtil; +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; @@ -17,39 +22,43 @@ import com.yeshi.fanli.dao.mybatis.activity.RecommendActivityInviteInfoMapper; import com.yeshi.fanli.dao.mybatis.activity.RecommendActivityMapper; import com.yeshi.fanli.dao.mybatis.activity.RecommendActivityTaoBaoGoodsMapper; +import com.yeshi.fanli.dto.share.ShareGoodsRecordDTO; import com.yeshi.fanli.entity.bus.activity.ActivityShareResult; import com.yeshi.fanli.entity.bus.activity.ActivityUser; import com.yeshi.fanli.entity.bus.activity.RecommendActivity; 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.goods.CommonGoods; +import com.yeshi.fanli.entity.system.ConfigKeyEnum; 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.activity.ActivityUserService; import com.yeshi.fanli.service.inter.config.ConfigService; +import com.yeshi.fanli.service.inter.dynamic.DynamicInfoService; +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; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; @Service public class ActivityServiceImpl implements ActivityService { @@ -96,6 +105,19 @@ @Resource private TaoBaoGoodsUpdateService taoBaoGoodsUpdateService; + @Resource + private UserShareGoodsRecordService userShareGoodsRecordService; + + @Resource + private CommonGoodsService commonGoodsService; + + @Resource + private DynamicInfoService dynamicInfoService; + + @Resource + private ActivityUserService activityUserService; + + @Override public List<RecommendActivity> getRecommendActivityList(int page, int pageSize) { return recommendActivityMapper.getRecommendActivityList((page - 1) * pageSize, pageSize); @@ -107,100 +129,167 @@ } @Override - public long getRecommendActivityCount() { - return recommendActivityMapper.getRecommendActivityCount(); + public long getRecommendActivityCount(String title) { + return recommendActivityMapper.getRecommendActivityCount(title); } @Override - public ActivityShareResult shareActivityGoods(Long uid, Long activityId) throws ActivityException { + public ActivityShareResult shareActivityGoods(Long uid, Long activityId) + throws ActivityException, UserShareGoodsRecordException { + 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(); - result.setTitle(activity.getTitle().replace("<br>", "/n").replace("<p>", "").replace("</p>", "")); + + 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); + activity.getGoodsList().stream().parallel().forEach(goodsActivity -> { - 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())) { 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() < 1) { + throw new ActivityException(1, "鍟嗗搧涓嬫灦"); + } + + ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordActivity(uid, listGoodsBrief); + FileUploadResult loadResult = new FileUploadResult(); + loadResult.setUrl(shareRecord.getSharePictureUrl()); + + imgList.add(loadResult); result.setImgList(imgList); + return result; + } + + @Override + public JSONObject shareGoodsV2(Long uid, Long activityId) throws ActivityException, UserShareGoodsRecordException { + + 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<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(); + } + } + }); + } + + if (listGoodsBrief.size() < 1) { + throw new ActivityException(1, "鍟嗗搧涓嬫灦"); + } + + String fontColor1 = "#000000"; + String fontColor2 = "#E5005C"; + JSONArray array = new JSONArray(); + + JSONObject contentJson1 = new JSONObject(); + contentJson1.put("color", fontColor1); + contentJson1.put("content", "棰勪及鍒嗕韩濂栭噾:"); + String shareMoney = "0"; + String revenue = "楼0"; + String totalGetMoney = activity.getTotalGetMoney(); + if (totalGetMoney != null && totalGetMoney.trim().length() > 0) { + String[] split = totalGetMoney.split("锛�"); + if (split != null) { + revenue = split[1]; + } + + String[] splitMoney = totalGetMoney.split("楼"); + if (splitMoney != null) { + shareMoney = splitMoney[1]; + } + } + + JSONObject contentJson2 = new JSONObject(); + contentJson2.put("color", fontColor2); + contentJson2.put("content", revenue); + + array.add(contentJson1); + array.add(contentJson2); + + ShareGoodsRecordDTO shareRecord = userShareGoodsRecordService.addRecordActivity(uid, listGoodsBrief); + FileUploadResult loadResult = new FileUploadResult(); + loadResult.setUrl(shareRecord.getSharePictureUrl()); + + JSONObject data = new JSONObject(); + data.put("title", title); + data.put("revenue", array); + data.put("fanMoney", shareMoney); + data.put("shareId", shareRecord.getRedisKey()); + data.put("shareImg", loadResult); + data.put("notifyDesc", configService.get(ConfigKeyEnum.goodsShareMultipleNotify.getKey())); + + return data; + } @Override @@ -232,29 +321,45 @@ return activityUserMapper.selectList(); } + @Transactional(rollbackFor=Exception.class) @Override - public RecommendActivity addShareGoodsRecommendActivity(Long activityUid, String title, List<Long> goodsList, - boolean top, int shareCount) throws ActivityException { + public RecommendActivity addShareGoodsRecommendActivity(Long activityUid, List<Long> goodsList, + RecommendActivity activity) throws ActivityException , Exception{ if (goodsList == null || goodsList.size() == 0 || goodsList.size() > 9) throw new ActivityException(1, "鍟嗗搧鏁伴噺閿欒锛�10>鍟嗗搧鏁伴噺>0"); - - RecommendActivity activity = new RecommendActivity(); + + if (StringUtil.isNullOrEmpty(activity.getTitle())) { + throw new ActivityException(1, "鏍囬涓嶈兘涓虹┖"); + } + + Integer shareCount = activity.getShareCount(); + if (shareCount == null) { + activity.setShareCount(0); + } + + Boolean top = activity.getTop(); + if (top == null) { + activity.setTop(false); + } + + // 鏃堕棿杞崲 + conversionTime(activity); + activity.setActivityUser(new ActivityUser(activityUid)); activity.setCreateTime(new Date()); activity.setGoodsList(null); activity.setOrderBy(0); - activity.setShareCount(shareCount); - activity.setTitle(title); - 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; try { - tb = TaoKeApiUtil.searchGoodsDetail(auctionId); + tb = redisManager.getTaoBaoGoodsBrief(auctionId); } catch (TaobaoGoodsDownException e) { e.printStackTrace(); } @@ -272,27 +377,51 @@ 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(); updateActivity.setId(activity.getId()); - updateActivity.setTotalGetMoney("棰勮鍒嗕韩濂栭噾锛毬�" + taotaoMoney.toString()); + updateActivity.setTotalGetMoney("棰勪及鍒嗕韩濂栭噾锛毬�" + taotaoMoney.toString()); recommendActivityMapper.updateByPrimaryKeySelective(updateActivity); return activity; } + @Transactional(rollbackFor=Exception.class) @Override - public RecommendActivity addInviteImgRecommendActivity(Long activityUid, String title, String url, boolean top, - int shareCount, int px, int py, int erCodeSize) throws ActivityException { - RecommendActivity activity = new RecommendActivity(); + public RecommendActivity addInviteImgRecommendActivity(Long activityUid, RecommendActivity activity, String url, + int px, int py, int erCodeSize) throws ActivityException, Exception { + if (StringUtil.isNullOrEmpty(url)) + throw new ActivityException(1, "鍥剧墖涓虹┖"); + + Integer shareCount = activity.getShareCount(); + if (shareCount == null) { + activity.setShareCount(0); + } + + Boolean top = activity.getTop(); + if (top == null) { + activity.setTop(false); + } + + // 鏃堕棿杞崲 + conversionTime(activity); + activity.setActivityUser(new ActivityUser(activityUid)); activity.setCreateTime(new Date()); activity.setGoodsList(null); activity.setOrderBy(0); - activity.setShareCount(shareCount); - activity.setTitle(title); - activity.setTop(top); activity.setType(RecommendActivity.TYPE_INVITE); recommendActivityMapper.insertSelective(activity); RecommendActivityImg img = new RecommendActivityImg(); @@ -314,22 +443,32 @@ recommendActivityInviteInfo.setRecommendActivity(activity); recommendActivityInviteInfo.setSize(erCodeSize); recommendActivityInviteInfoMapper.insertSelective(recommendActivityInviteInfo); - recommendActivityImgMapper.insertSelective(img); return activity; } + @Transactional(rollbackFor=Exception.class) @Override - public RecommendActivity addTextAndImgRecommendActivity(Long activityUid, String title, List<String> imgList, - boolean top, int shareCount) throws ActivityException { - RecommendActivity activity = new RecommendActivity(); + public RecommendActivity addTextAndImgRecommendActivity(Long activityUid, List<String> imgList, + RecommendActivity activity) throws ActivityException, Exception { + + Integer shareCount = activity.getShareCount(); + if (shareCount == null) { + activity.setShareCount(0); + } + + Boolean top = activity.getTop(); + if (top == null) { + activity.setTop(false); + } + + // 鏃堕棿杞崲 + conversionTime(activity); + activity.setActivityUser(new ActivityUser(activityUid)); activity.setCreateTime(new Date()); activity.setGoodsList(null); activity.setOrderBy(0); - activity.setShareCount(shareCount); - activity.setTitle(title); - activity.setTop(top); activity.setType(RecommendActivity.TYPE_TEXTIMG); recommendActivityMapper.insertSelective(activity); for (String imgUrl : imgList) { @@ -349,11 +488,20 @@ return activity; } + @Transactional @Override public void deleteRecommendActivity(long[] ids) { recommendActivityMapper.batchDeleteByPrimaryKey(ids); recommendActivityImgMapper.batchDeleteByActivityid(ids); recommendActivityTaoBaoGoodsMapper.batchDeleteByActivityid(ids); + + try { + for (Long id: ids) { + dynamicInfoService.deleteActivity(id); + } + } catch (Exception e) { + e.printStackTrace(); + } } @@ -362,31 +510,45 @@ return recommendActivityMapper.selectByPrimaryKey(id); } + @Transactional(rollbackFor=Exception.class) @Override - public RecommendActivity updateShareGoodsRecommendActivity(Long id, Long activityUid, String title, - List<Long> goodsList, boolean top, int shareCount) throws ActivityException { + public RecommendActivity updateShareGoodsRecommendActivity(Long activityUid, + List<Long> goodsList, RecommendActivity activity) throws ActivityException , Exception{ + if (goodsList == null || goodsList.size() == 0 || goodsList.size() > 9) throw new ActivityException(1, "鍟嗗搧鏁伴噺閿欒锛�10>鍟嗗搧鏁伴噺>0"); + // 鍒犻櫎涔嬪墠鐨勫晢鍝� - recommendActivityTaoBaoGoodsMapper.batchDeleteByActivityid(new long[] { id }); - RecommendActivity activity = new RecommendActivity(); - activity.setId(id); + recommendActivityTaoBaoGoodsMapper.batchDeleteByActivityid(new long[] { activity.getId() }); + + activity.setActivityUser(new ActivityUser(activityUid)); activity.setGoodsList(null); activity.setOrderBy(0); - activity.setShareCount(shareCount); - activity.setTitle(title); - activity.setTop(top); + + Integer shareCount = activity.getShareCount(); + if (shareCount == null) { + activity.setShareCount(0); + } + + Boolean top = activity.getTop(); + if (top == null) { + activity.setTop(false); + } + + // 鏃堕棿杞崲 + conversionTime(activity); activity.setType(RecommendActivity.TYPE_SHARE_GOODS); recommendActivityMapper.updateByPrimaryKeySelective(activity); + List<RecommendActivityTaoBaoGoods> listgoods = new ArrayList<RecommendActivityTaoBaoGoods>(); BigDecimal taotaoMoney = new BigDecimal(0); for (long auctionId : goodsList) { TaoBaoGoodsBrief tb = null; try { - tb = TaoKeApiUtil.searchGoodsDetail(auctionId); + tb = redisManager.getTaoBaoGoodsBrief(auctionId); } catch (TaobaoGoodsDownException e) { e.printStackTrace(); } @@ -406,28 +568,53 @@ recommendActivityTaoBaoGoodsMapper.insertSelective(goods); BigDecimal money = taoBaoGoodsBriefService.getShareGoodsUserHongBao(tb); taotaoMoney = taotaoMoney.add(money); + + listgoods.add(goods); } RecommendActivity updateActivity = new RecommendActivity(); updateActivity.setId(activity.getId()); - updateActivity.setTotalGetMoney("棰勮鍒嗕韩濂栭噾锛毬�" + taotaoMoney.toString()); + updateActivity.setTotalGetMoney("棰勪及鍒嗕韩濂栭噾锛毬�" + taotaoMoney.toString()); recommendActivityMapper.updateByPrimaryKeySelective(updateActivity); - + + // 1.5.4 鍔ㄦ�佷俊鎭洿鏂� + RecommendActivity exist = recommendActivityMapper.selectByPrimaryKey(activity.getId()); + if (exist.getState() != null && exist.getState() == 1) { + try { + ActivityUser activityUser = activityUserService.selectByPrimaryKey(activityUid); + exist.setActivityUser(activityUser); + exist.setGoodsList(listgoods); + dynamicInfoService.insertActivityRecommend(exist); + } catch (Exception e) { + e.printStackTrace(); + } + } + return activity; } + @Transactional(rollbackFor=Exception.class) @Override - public RecommendActivity updateInviteImgRecommendActivity(Long id, Long activityUid, String title, String url, - boolean top, int shareCount, int px, int py, int erCodeSize) throws ActivityException { - recommendActivityImgMapper.batchDeleteByActivityid(new long[] { id }); - RecommendActivity activity = new RecommendActivity(); - activity.setId(id); + public RecommendActivity updateInviteImgRecommendActivity(Long activityUid, RecommendActivity activity, String url, + int px, int py, int erCodeSize) throws ActivityException , Exception{ + recommendActivityImgMapper.batchDeleteByActivityid(new long[] { activity.getId() }); + + Integer shareCount = activity.getShareCount(); + if (shareCount == null) { + activity.setShareCount(0); + } + + Boolean top = activity.getTop(); + if (top == null) { + activity.setTop(false); + } + + // 鏃堕棿杞崲 + conversionTime(activity); + activity.setActivityUser(new ActivityUser(activityUid)); activity.setGoodsList(null); activity.setOrderBy(0); - activity.setShareCount(shareCount); - activity.setTitle(title); - activity.setTop(top); activity.setType(RecommendActivity.TYPE_INVITE); recommendActivityMapper.updateByPrimaryKeySelective(activity); RecommendActivityImg img = new RecommendActivityImg(); @@ -455,21 +642,45 @@ recommendActivityInviteInfo.setSize(erCodeSize); recommendActivityInviteInfoMapper.insertSelective(recommendActivityInviteInfo); + + RecommendActivity exist = recommendActivityMapper.selectByPrimaryKey(activity.getId()); + if (exist.getState() != null && exist.getState() == 1) { + try { + ActivityUser activityUser = activityUserService.selectByPrimaryKey(activityUid); + activity.setActivityUser(activityUser); + activity.setInviteInfo(recommendActivityInviteInfo); + List<String> imageList = new ArrayList<String>(); + imageList.add(url); + activity.setImageList(imageList); + dynamicInfoService.insertInviteActivity(activity); + } catch (Exception e) { + e.printStackTrace(); + } + } return activity; } + @Transactional(rollbackFor=Exception.class) @Override - public RecommendActivity updateTextAndImgRecommendActivity(Long id, Long activityUid, String title, - List<String> imgList, boolean top, int shareCount) throws ActivityException { - recommendActivityImgMapper.batchDeleteByActivityid(new long[] { id }); - RecommendActivity activity = new RecommendActivity(); - activity.setId(id); + public RecommendActivity updateTextAndImgRecommendActivity(Long activityUid, List<String> imgList, + RecommendActivity activity) throws ActivityException , Exception{ + recommendActivityImgMapper.batchDeleteByActivityid(new long[] { activity.getId() }); + + Integer shareCount = activity.getShareCount(); + if (shareCount == null) { + activity.setShareCount(0); + } + + Boolean top = activity.getTop(); + if (top == null) { + activity.setTop(false); + } + // 鏃堕棿杞崲 + conversionTime(activity); + activity.setActivityUser(new ActivityUser(activityUid)); activity.setGoodsList(null); activity.setOrderBy(0); - activity.setShareCount(shareCount); - activity.setTitle(title); - activity.setTop(top); activity.setType(RecommendActivity.TYPE_TEXTIMG); recommendActivityMapper.updateByPrimaryKeySelective(activity); for (String imgUrl : imgList) { @@ -498,22 +709,54 @@ @Override public List<RecommendActivity> getRecommendActivityListCache(int page, int pageSize) { List<RecommendActivity> activityList = getRecommendActivityList(page, pageSize); - if (activityList != null) - for (RecommendActivity activity : activityList) { - if (activity != null && activity.getGoodsList() != null) + if (activityList != null) { + for (int i = 0; i < activityList.size(); i++) { + + RecommendActivity activity = activityList.get(i); + + // 绛涢�夊嚭涓嶈冻9涓殑鍟嗗搧 + if (RecommendActivity.TYPE_SHARE_GOODS == activity.getType() + && (activity.getGoodsList() == null || activity.getGoodsList().size() < 9)) { + activityList.remove(activity); + i--; + continue; + } + + + if (activity != null && activity.getGoodsList() != null) { for (RecommendActivityTaoBaoGoods goods : activity.getGoodsList()) { goods.setQuanPrice(goods.getDesc().replace("鍒稿悗浠凤細楼", "")); } + } + + // 杩囨护涓�閬� + if (!StringUtil.isNullOrEmpty(activity.getTitle())) { + activity.setTitle(Jsoup.parse(activity.getTitle()).text()); + if (activity.getShareCount() >= 10000) { + activity.setShareCountShow(NumberUtil.get1PointNumber(activity.getShareCount() / 10000.0) + "涓�"); + } else { + activity.setShareCountShow(activity.getShareCount() + ""); + } + } + + Date startTime = activity.getStartTime(); + if (startTime != null) { + activity.setCreateTime(startTime); + } + } + + } return activityList; } @Cacheable(value = "activityCache", key = "'getRecommendActivityCount'") @Override public long getRecommendActivityCountCache() { - return getRecommendActivityCount(); + return recommendActivityMapper.getRecommendActivityEffectiveCount(); } + @Transactional(rollbackFor=Exception.class) @Override public void upgradeShareGoodsRecommendActivity(Long id) throws ActivityException { // 鑾峰彇鍟嗗搧 @@ -549,7 +792,7 @@ update.setId(goods.getId()); update.setState(RecommendActivityTaoBaoGoods.STATE_UNSHELVE); recommendActivityTaoBaoGoodsMapper.updateByPrimaryKeySelective(update); - taoBaoGoodsUpdateService.downTaoBaoGoods(Long.parseLong(goods.getAuctionId())); + taoBaoGoodsUpdateService.offlineTaoBaoGoods(Long.parseLong(goods.getAuctionId())); } } } @@ -588,4 +831,98 @@ return activity; } + + @Override + public int insert(RecommendActivity record) { + return recommendActivityMapper.insert(record); + } + + @Override + public int insertSelective(RecommendActivity record) { + return recommendActivityMapper.insertSelective(record); + } + + @Override + public RecommendActivity selectByPrimaryKey(Long id) { + return recommendActivityMapper.selectByPrimaryKey(id); + } + + @Override + public int updateByPrimaryKeySelective(RecommendActivity record) { + return recommendActivityMapper.updateByPrimaryKeySelective(record); + } + + @Override + public int updateByPrimaryKey(RecommendActivity record) { + return recommendActivityMapper.updateByPrimaryKey(record); + } + + @Override + public ActivityUser selectActivityUserByPrimaryKey(Long id) { + return activityUserMapper.selectByPrimaryKey(id); + } + + @Transactional + @Override + public void updateRecommendActivityGoods(TaoBaoGoodsBrief goods) { + List<RecommendActivityTaoBaoGoods> list = recommendActivityTaoBaoGoodsMapper + .selectByAuctionId(goods.getAuctionId()); + + BigDecimal d = TaoBaoUtil.getAfterUseCouplePrice(goods); + + RecommendActivityTaoBaoGoods updateGoods = new RecommendActivityTaoBaoGoods(); + if (!StringUtil.isNullOrEmpty(goods.getCouponInfo()) && !"鏃�".equalsIgnoreCase(goods.getCouponInfo())) { + updateGoods.setDesc("鍒稿悗浠凤細楼" + d); + updateGoods.setState(RecommendActivityTaoBaoGoods.STATE_NORMAL); + } else { + updateGoods.setState(RecommendActivityTaoBaoGoods.STATE_UNSHELVE); + } + + if (list != null) + for (RecommendActivityTaoBaoGoods tbGoods : list) { + updateGoods.setId(tbGoods.getId()); + recommendActivityTaoBaoGoodsMapper.updateByPrimaryKeySelective(updateGoods); + } + } + + /** + * web娈垫椂闂磋浆鎹� + * @param record + */ + public void conversionTime(RecommendActivity record) throws ActivityException, Exception { + // 鏄惁鏃堕棿鎺у埗 + if(!record.isTimeTask()) { + record.setStartTime(null); + record.setEndTime(null); + } else { + String startTime_str = record.getStartTime_str(); + String endTime_str = record.getEndTime_str(); + + if ((startTime_str == null|| startTime_str.trim().length() == 0) + && (endTime_str == null || endTime_str.trim().length() == 0)) { + throw new ActivityException(1, "璇疯緭鍏ユ帶鍒舵椂闂�"); + } else { + SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm"); + if (startTime_str != null && startTime_str.trim().length() > 0) { + startTime_str = startTime_str.replaceAll("T", " "); + record.setStartTime(format.parse(startTime_str)); + } + + if (endTime_str != null && endTime_str.trim().length() > 0) { + endTime_str = endTime_str.replaceAll("T", " "); + record.setEndTime(format.parse(endTime_str)); + } + } + } + } + + @Override + public List<String> getImgByActivityId(Long activityId){ + return recommendActivityImgMapper.getImgByActivityId(activityId); + } + + @Override + public List<RecommendActivity> getNeedPublish() { + return recommendActivityMapper.getNeedPublish(); + } } -- Gitblit v1.8.0