From 30d8e227e8d823b6c38c3b9c90ac2df03b63befe Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 25 二月 2025 16:41:22 +0800 Subject: [PATCH] 淘宝转链接口更新 --- fanli/src/main/java/com/yeshi/fanli/service/impl/activity/ActivityServiceImpl.java | 1847 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 920 insertions(+), 927 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 9307183..6b9d45f 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,927 +1,920 @@ -package com.yeshi.fanli.service.impl.activity; - -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; -import com.yeshi.fanli.dao.mybatis.activity.RecommendActivityImgMapper; -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.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.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.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 net.sf.json.JSONArray; -import net.sf.json.JSONObject; - -@Service -public class ActivityServiceImpl implements ActivityService { - - @Resource - private RecommendActivityMapper recommendActivityMapper; - - @Resource - private ShareGoodsService shareGoodsService; - - @Resource - private SpreadUserImgService spreadUserImgService; - - @Resource - private ActivityUserMapper activityUserMapper; - - @Resource - private TaoBaoGoodsBriefService taoBaoGoodsBriefService; - - @Resource - private RecommendActivityTaoBaoGoodsMapper recommendActivityTaoBaoGoodsMapper; - - @Resource - private RecommendActivityImgMapper recommendActivityImgMapper; - - @Resource - private RecommendActivityInviteInfoMapper recommendActivityInviteInfoMapper; - - @Resource - private RedisManager redisManager; - - @Resource - private TBPidService tbPidService; - - @Resource - private ConfigService configService; - - @Resource - private UserInfoMapper userInfoMapper; - - @Resource - private UserAccountService userAccountService; - - @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); - } - - @Override - public List<RecommendActivity> queryRecommendActivityList(String title, int page, int pageSize) { - return recommendActivityMapper.queryRecommendActivityList(title, (page - 1) * pageSize, pageSize); - } - - @Override - public long getRecommendActivityCount(String title) { - return recommendActivityMapper.getRecommendActivityCount(title); - } - - @Override - 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(); - - 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(); - } - } - }); - } - - 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("goods_share_multiple_notify")); - - return data; - - } - - @Override - public ActivityShareResult shareInviteImg(Long uid, Long activityId) throws ActivityException { - RecommendActivity activity = recommendActivityMapper.selectByPrimaryKey(activityId); - if (activity == null) - throw new ActivityException(2, "鍔ㄦ�佷笉瀛樺湪"); - if (activity.getType() != RecommendActivity.TYPE_INVITE) - throw new ActivityException(3, "涓嶅睘浜庨個璇峰姩鎬�"); - if (activity.getImageList() == null || activity.getImageList().size() < 1) - throw new ActivityException(4, "鏃犺儗鏅浘"); - - ActivityShareResult result = new ActivityShareResult(); - result.setTitle(activity.getTitle().replace("<br>", "/n").replace("<p>", "").replace("</p>", "")); - List<FileUploadResult> imgList = new ArrayList<>(); - - RecommendActivityInviteInfo inviteInfo = recommendActivityInviteInfoMapper.selectByActivityId(activityId); - - String img = spreadUserImgService.getUserSpreadImg(uid, activity.getImageList().get(0), inviteInfo.getPx(), - inviteInfo.getPy(), inviteInfo.getSize()); - if (!StringUtil.isNullOrEmpty(img)) - imgList.add(new FileUploadResult(img, "")); - result.setImgList(imgList); - return result; - } - - @Override - public List<ActivityUser> getActivityUserList() { - return activityUserMapper.selectList(); - } - - @Transactional(rollbackFor=Exception.class) - @Override - 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"); - - 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.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 = redisManager.getTaoBaoGoodsBrief(auctionId); - } catch (TaobaoGoodsDownException e) { - e.printStackTrace(); - } - if (tb == null) - continue; - RecommendActivityTaoBaoGoods goods = new RecommendActivityTaoBaoGoods(); - goods.setAuctionId(tb.getAuctionId() + ""); - goods.setCreateTime(new Date()); - goods.setDesc(ActivityUtil.getGoodsShowPrice(tb)); - goods.setOrderBy(0); - goods.setPictUrl(TbImgUtil.getTBSize220ImgWebp(tb.getPictUrl())); - goods.setTaoBaoGoodsBrief(tb); - goods.setRecommendActivity(activity); - goods.setCouponAmount(tb.getCouponAmount()); - 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()); - recommendActivityMapper.updateByPrimaryKeySelective(updateActivity); - - return activity; - } - - @Transactional(rollbackFor=Exception.class) - @Override - 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.setType(RecommendActivity.TYPE_INVITE); - recommendActivityMapper.insertSelective(activity); - RecommendActivityImg img = new RecommendActivityImg(); - img.setImg(url); - img.setOrderBy(0); - img.setRecommendActivity(activity); - try { - int[] hw = ImageUtil.getImgWidthAndHeight(url); - img.setImgHeight(hw[1]); - img.setImgWidth(hw[0]); - } catch (Exception e) { - throw new ActivityException(2, "鍥剧墖灏哄鑾峰彇澶辫触"); - } - - // 鎻掑叆浜岀淮鐮佷綅缃俊鎭� - RecommendActivityInviteInfo recommendActivityInviteInfo = new RecommendActivityInviteInfo(); - recommendActivityInviteInfo.setPx(px); - recommendActivityInviteInfo.setPy(py); - recommendActivityInviteInfo.setRecommendActivity(activity); - recommendActivityInviteInfo.setSize(erCodeSize); - recommendActivityInviteInfoMapper.insertSelective(recommendActivityInviteInfo); - recommendActivityImgMapper.insertSelective(img); - return activity; - } - - @Transactional(rollbackFor=Exception.class) - @Override - 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.setType(RecommendActivity.TYPE_TEXTIMG); - recommendActivityMapper.insertSelective(activity); - for (String imgUrl : imgList) { - RecommendActivityImg img = new RecommendActivityImg(); - img.setImg(imgUrl); - img.setOrderBy(0); - img.setRecommendActivity(activity); - try { - int[] hw = ImageUtil.getImgWidthAndHeight(imgUrl); - img.setImgHeight(hw[1]); - img.setImgWidth(hw[0]); - } catch (Exception e) { - throw new ActivityException(2, "鍥剧墖灏哄鑾峰彇澶辫触"); - } - recommendActivityImgMapper.insertSelective(img); - } - 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(); - } - - } - - @Override - public RecommendActivity getRecommendActivityById(Long id) { - return recommendActivityMapper.selectByPrimaryKey(id); - } - - @Transactional(rollbackFor=Exception.class) - @Override - 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[] { activity.getId() }); - - - activity.setActivityUser(new ActivityUser(activityUid)); - activity.setGoodsList(null); - activity.setOrderBy(0); - - 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 = redisManager.getTaoBaoGoodsBrief(auctionId); - } catch (TaobaoGoodsDownException e) { - e.printStackTrace(); - } - - if (tb == null) - continue; - RecommendActivityTaoBaoGoods goods = new RecommendActivityTaoBaoGoods(); - goods.setAuctionId(tb.getAuctionId() + ""); - goods.setCreateTime(new Date()); - goods.setDesc(ActivityUtil.getGoodsShowPrice(tb)); - goods.setOrderBy(0); - goods.setPictUrl(TbImgUtil.getTBSize220ImgWebp(tb.getPictUrl())); - goods.setTaoBaoGoodsBrief(tb); - goods.setRecommendActivity(activity); - goods.setTitle(tb.getTitle()); - goods.setCouponAmount(tb.getCouponAmount()); - 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()); - 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 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.setType(RecommendActivity.TYPE_INVITE); - recommendActivityMapper.updateByPrimaryKeySelective(activity); - RecommendActivityImg img = new RecommendActivityImg(); - img.setImg(url); - img.setOrderBy(0); - img.setRecommendActivity(activity); - try { - int[] hw = ImageUtil.getImgWidthAndHeight(url); - img.setImgHeight(hw[1]); - img.setImgWidth(hw[0]); - } catch (Exception e) { - throw new ActivityException(2, "鍥剧墖灏哄鑾峰彇澶辫触"); - } - recommendActivityImgMapper.insertSelective(img); - - RecommendActivityInviteInfo inviteInfo = recommendActivityInviteInfoMapper.selectByActivityId(activity.getId()); - if (inviteInfo != null) - recommendActivityInviteInfoMapper.deleteByPrimaryKey(inviteInfo.getId()); - - // 鎻掑叆浜岀淮鐮佷綅缃俊鎭� - RecommendActivityInviteInfo recommendActivityInviteInfo = new RecommendActivityInviteInfo(); - recommendActivityInviteInfo.setPx(px); - recommendActivityInviteInfo.setPy(py); - recommendActivityInviteInfo.setRecommendActivity(activity); - 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 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.setType(RecommendActivity.TYPE_TEXTIMG); - recommendActivityMapper.updateByPrimaryKeySelective(activity); - for (String imgUrl : imgList) { - RecommendActivityImg img = new RecommendActivityImg(); - img.setImg(imgUrl); - img.setOrderBy(0); - img.setRecommendActivity(activity); - try { - int[] hw = ImageUtil.getImgWidthAndHeight(imgUrl); - img.setImgHeight(hw[1]); - img.setImgWidth(hw[0]); - } catch (Exception e) { - throw new ActivityException(2, "鍥剧墖灏哄鑾峰彇澶辫触"); - } - recommendActivityImgMapper.insertSelective(img); - } - return activity; - } - - @Override - public void addShareCount(Long activityId, int count) { - recommendActivityMapper.addShareCount(activityId, count); - } - - @Cacheable(value = "activityCache", key = "'getRecommendActivityList-'+#page+'-'+#pageSize") - @Override - public List<RecommendActivity> getRecommendActivityListCache(int page, int pageSize) { - List<RecommendActivity> activityList = getRecommendActivityList(page, pageSize); - 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 recommendActivityMapper.getRecommendActivityEffectiveCount(); - } - - @Transactional(rollbackFor=Exception.class) - @Override - public void upgradeShareGoodsRecommendActivity(Long id) throws ActivityException { - // 鑾峰彇鍟嗗搧 - List<RecommendActivityTaoBaoGoods> list = recommendActivityTaoBaoGoodsMapper.selectByActivityId(id); - if (list != null) - for (RecommendActivityTaoBaoGoods goods : list) { - // 涓嬫灦鍟嗗搧涓嶅繀鏇存柊 - if (goods.getState() == RecommendActivityTaoBaoGoods.STATE_UNSHELVE) - continue; - try { - TaoBaoGoodsBrief tbGoods = TaoKeApiUtil.searchGoodsDetail(Long.parseLong(goods.getAuctionId())); - if (tbGoods != null) { - RecommendActivityTaoBaoGoods update = new RecommendActivityTaoBaoGoods(); - update.setPictUrl(TbImgUtil.getTBSize220ImgWebp(tbGoods.getPictUrl())); - update.setId(goods.getId()); - update.setDesc(ActivityUtil.getGoodsShowPrice(tbGoods)); - update.setCouponAmount(tbGoods.getCouponAmount()); - // 褰撴病鏈夊埜鐨勬椂鍊欏晢鍝佹棤鏁� - if (StringUtil.isNullOrEmpty(tbGoods.getCouponActivityId()) - || tbGoods.getCouponLeftCount() == null || tbGoods.getCouponLeftCount() == 0) - update.setState(RecommendActivityTaoBaoGoods.STATE_UNSHELVE); - else - update.setState(RecommendActivityTaoBaoGoods.STATE_NORMAL); - recommendActivityTaoBaoGoodsMapper.updateByPrimaryKeySelective(update); - try { - taoBaoGoodsUpdateService.updateTaoBaoGoods(tbGoods); - } catch (TaobaoGoodsUpdateException e) { - e.printStackTrace(); - } - } - } catch (TaobaoGoodsDownException e) { - RecommendActivityTaoBaoGoods update = new RecommendActivityTaoBaoGoods(); - update.setId(goods.getId()); - update.setState(RecommendActivityTaoBaoGoods.STATE_UNSHELVE); - recommendActivityTaoBaoGoodsMapper.updateByPrimaryKeySelective(update); - taoBaoGoodsUpdateService.offlineTaoBaoGoods(Long.parseLong(goods.getAuctionId())); - } - } - } - - @Override - public List<RecommendActivity> getRecommendActivityList(int type, int page, int pageSize) { - return recommendActivityMapper.getRecommendActivityListByType(type, (page - 1) * pageSize, pageSize); - } - - @Override - public long getRecommendActivityCount(int type) { - return recommendActivityMapper.getRecommendActivityCountByType(type); - } - - @Override - public RecommendActivityInviteInfo getRecommendActivityInviteInfoByActivityId(Long activityId) { - return recommendActivityInviteInfoMapper.selectByActivityId(activityId); - } - - @Override - public void downTaoBaoGoods(Long auctionId) { - recommendActivityTaoBaoGoodsMapper.updateStateByAuctionId(auctionId, - RecommendActivityTaoBaoGoods.STATE_UNSHELVE); - } - - @Override - public RecommendActivity getRecommendActivityDetail(Long activityId) { - - RecommendActivity activity = recommendActivityMapper.selectByPrimaryKey(activityId); - if (activity != null && activity.getGoodsList() != null) { - for (RecommendActivityTaoBaoGoods goods : activity.getGoodsList()) { - goods.setQuanPrice(goods.getDesc().replace("鍒稿悗浠凤細楼", "")); - goods.setPictUrl(goods.getPictUrl().replace("_.webp", "")); - } - } - - 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(); - } -} +package com.yeshi.fanli.service.impl.activity; + +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 com.yeshi.fanli.entity.SystemEnum; +import com.yeshi.fanli.service.inter.user.*; +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.activity.ActivityUserMapper; +import com.yeshi.fanli.dao.mybatis.activity.RecommendActivityImgMapper; +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.goods.CommonGoods; +import com.yeshi.fanli.entity.system.ConfigKeyEnum; +import com.yeshi.goods.facade.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.TaoBaoGoodsBriefService; +import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService; +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 net.sf.json.JSONArray; +import net.sf.json.JSONObject; + +@Service +public class ActivityServiceImpl implements ActivityService { + + @Resource + private RecommendActivityMapper recommendActivityMapper; + + @Resource + private SpreadUserImgService spreadUserImgService; + + @Resource + private ActivityUserMapper activityUserMapper; + + @Resource + private TaoBaoGoodsBriefService taoBaoGoodsBriefService; + + @Resource + private RecommendActivityTaoBaoGoodsMapper recommendActivityTaoBaoGoodsMapper; + + @Resource + private RecommendActivityImgMapper recommendActivityImgMapper; + + @Resource + private RecommendActivityInviteInfoMapper recommendActivityInviteInfoMapper; + + @Resource + private RedisManager redisManager; + + + @Resource + private ConfigService configService; + + @Resource + private UserInfoService userInfoService; + + + @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); + } + + @Override + public List<RecommendActivity> queryRecommendActivityList(String title, int page, int pageSize) { + return recommendActivityMapper.queryRecommendActivityList(title, (page - 1) * pageSize, pageSize); + } + + @Override + public long getRecommendActivityCount(String title) { + return recommendActivityMapper.getRecommendActivityCount(title); + } + + @Override + 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(); + + 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(goodsActivity.getAuctionId()); + listGoodsBrief.add(goodsBrief); + } catch (TaobaoGoodsDownException e) { + + CommonGoods commonGoods = commonGoodsService.getCommonGoodsByGoodsIdAndGoodsType( + 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, "鍟嗗搧涓嬫灦"); + } + + 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(goodsActivity.getAuctionId()); + listGoodsBrief.add(goodsBrief); + + } catch (TaobaoGoodsDownException e) { + + CommonGoods commonGoods = commonGoodsService.getCommonGoodsByGoodsIdAndGoodsType( + 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()); + + SystemEnum system = userInfoService.getUserSystem(uid); + + 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.getValue(ConfigKeyEnum.goodsShareMultipleNotify.getKey(),system)); + + return data; + + } + + @Override + public ActivityShareResult shareInviteImg(Long uid, Long activityId) throws ActivityException { + RecommendActivity activity = recommendActivityMapper.selectByPrimaryKey(activityId); + if (activity == null) + throw new ActivityException(2, "鍔ㄦ�佷笉瀛樺湪"); + if (activity.getType() != RecommendActivity.TYPE_INVITE) + throw new ActivityException(3, "涓嶅睘浜庨個璇峰姩鎬�"); + if (activity.getImageList() == null || activity.getImageList().size() < 1) + throw new ActivityException(4, "鏃犺儗鏅浘"); + + ActivityShareResult result = new ActivityShareResult(); + result.setTitle(activity.getTitle().replace("<br>", "/n").replace("<p>", "").replace("</p>", "")); + List<FileUploadResult> imgList = new ArrayList<>(); + + RecommendActivityInviteInfo inviteInfo = recommendActivityInviteInfoMapper.selectByActivityId(activityId); + + String img = spreadUserImgService.getUserSpreadImg(uid, activity.getImageList().get(0), inviteInfo.getPx(), + inviteInfo.getPy(), inviteInfo.getSize()); + if (!StringUtil.isNullOrEmpty(img)) + imgList.add(new FileUploadResult(img, "")); + result.setImgList(imgList); + return result; + } + + @Override + public List<ActivityUser> getActivityUserList() { + return activityUserMapper.selectList(); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public RecommendActivity addShareGoodsRecommendActivity(Long activityUid, List<String> goodsList, + RecommendActivity activity) throws ActivityException, Exception { + + if (goodsList == null || goodsList.size() == 0 || goodsList.size() > 9) + throw new ActivityException(1, "鍟嗗搧鏁伴噺閿欒锛�10>鍟嗗搧鏁伴噺>0"); + + 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.setType(RecommendActivity.TYPE_SHARE_GOODS); + recommendActivityMapper.insertSelective(activity); + + List<CommonGoods> listCommonGoods = new ArrayList<CommonGoods>(); + + BigDecimal taotaoMoney = new BigDecimal(0); + for (String auctionId : goodsList) { + TaoBaoGoodsBrief tb = null; + try { + tb = redisManager.getTaoBaoGoodsBrief(auctionId); + } catch (TaobaoGoodsDownException e) { + e.printStackTrace(); + } + if (tb == null) + continue; + RecommendActivityTaoBaoGoods goods = new RecommendActivityTaoBaoGoods(); + goods.setAuctionId(tb.getAuctionId() + ""); + goods.setCreateTime(new Date()); + goods.setDesc(ActivityUtil.getGoodsShowPrice(tb)); + goods.setOrderBy(0); + goods.setPictUrl(TbImgUtil.getTBSize220ImgWebp(tb.getPictUrl())); + goods.setTaoBaoGoodsBrief(tb); + goods.setRecommendActivity(activity); + goods.setCouponAmount(tb.getCouponAmount()); + recommendActivityTaoBaoGoodsMapper.insertSelective(goods); + BigDecimal money = taoBaoGoodsBriefService.getShareGoodsUserHongBao(tb,SystemEnum.blks); + 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()); + recommendActivityMapper.updateByPrimaryKeySelective(updateActivity); + + return activity; + } + + @Transactional(rollbackFor = Exception.class) + @Override + 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.setType(RecommendActivity.TYPE_INVITE); + recommendActivityMapper.insertSelective(activity); + RecommendActivityImg img = new RecommendActivityImg(); + img.setImg(url); + img.setOrderBy(0); + img.setRecommendActivity(activity); + try { + int[] hw = ImageUtil.getImgWidthAndHeight(url); + img.setImgHeight(hw[1]); + img.setImgWidth(hw[0]); + } catch (Exception e) { + throw new ActivityException(2, "鍥剧墖灏哄鑾峰彇澶辫触"); + } + + // 鎻掑叆浜岀淮鐮佷綅缃俊鎭� + RecommendActivityInviteInfo recommendActivityInviteInfo = new RecommendActivityInviteInfo(); + recommendActivityInviteInfo.setPx(px); + recommendActivityInviteInfo.setPy(py); + recommendActivityInviteInfo.setRecommendActivity(activity); + recommendActivityInviteInfo.setSize(erCodeSize); + recommendActivityInviteInfoMapper.insertSelective(recommendActivityInviteInfo); + recommendActivityImgMapper.insertSelective(img); + return activity; + } + + @Transactional(rollbackFor = Exception.class) + @Override + 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.setType(RecommendActivity.TYPE_TEXTIMG); + recommendActivityMapper.insertSelective(activity); + for (String imgUrl : imgList) { + RecommendActivityImg img = new RecommendActivityImg(); + img.setImg(imgUrl); + img.setOrderBy(0); + img.setRecommendActivity(activity); + try { + int[] hw = ImageUtil.getImgWidthAndHeight(imgUrl); + img.setImgHeight(hw[1]); + img.setImgWidth(hw[0]); + } catch (Exception e) { + throw new ActivityException(2, "鍥剧墖灏哄鑾峰彇澶辫触"); + } + recommendActivityImgMapper.insertSelective(img); + } + 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(); + } + + } + + @Override + public RecommendActivity getRecommendActivityById(Long id) { + return recommendActivityMapper.selectByPrimaryKey(id); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public RecommendActivity updateShareGoodsRecommendActivity(Long activityUid, + List<String> 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[]{activity.getId()}); + + + activity.setActivityUser(new ActivityUser(activityUid)); + activity.setGoodsList(null); + activity.setOrderBy(0); + + 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 (String auctionId : goodsList) { + TaoBaoGoodsBrief tb = null; + + try { + tb = redisManager.getTaoBaoGoodsBrief(auctionId); + } catch (TaobaoGoodsDownException e) { + e.printStackTrace(); + } + + if (tb == null) + continue; + RecommendActivityTaoBaoGoods goods = new RecommendActivityTaoBaoGoods(); + goods.setAuctionId(tb.getAuctionId() + ""); + goods.setCreateTime(new Date()); + goods.setDesc(ActivityUtil.getGoodsShowPrice(tb)); + goods.setOrderBy(0); + goods.setPictUrl(TbImgUtil.getTBSize220ImgWebp(tb.getPictUrl())); + goods.setTaoBaoGoodsBrief(tb); + goods.setRecommendActivity(activity); + goods.setTitle(tb.getTitle()); + goods.setCouponAmount(tb.getCouponAmount()); + recommendActivityTaoBaoGoodsMapper.insertSelective(goods); + BigDecimal money = taoBaoGoodsBriefService.getShareGoodsUserHongBao(tb,SystemEnum.blks); + taotaoMoney = taotaoMoney.add(money); + + listgoods.add(goods); + } + + RecommendActivity updateActivity = new RecommendActivity(); + updateActivity.setId(activity.getId()); + 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 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.setType(RecommendActivity.TYPE_INVITE); + recommendActivityMapper.updateByPrimaryKeySelective(activity); + RecommendActivityImg img = new RecommendActivityImg(); + img.setImg(url); + img.setOrderBy(0); + img.setRecommendActivity(activity); + try { + int[] hw = ImageUtil.getImgWidthAndHeight(url); + img.setImgHeight(hw[1]); + img.setImgWidth(hw[0]); + } catch (Exception e) { + throw new ActivityException(2, "鍥剧墖灏哄鑾峰彇澶辫触"); + } + recommendActivityImgMapper.insertSelective(img); + + RecommendActivityInviteInfo inviteInfo = recommendActivityInviteInfoMapper.selectByActivityId(activity.getId()); + if (inviteInfo != null) + recommendActivityInviteInfoMapper.deleteByPrimaryKey(inviteInfo.getId()); + + // 鎻掑叆浜岀淮鐮佷綅缃俊鎭� + RecommendActivityInviteInfo recommendActivityInviteInfo = new RecommendActivityInviteInfo(); + recommendActivityInviteInfo.setPx(px); + recommendActivityInviteInfo.setPy(py); + recommendActivityInviteInfo.setRecommendActivity(activity); + 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 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.setType(RecommendActivity.TYPE_TEXTIMG); + recommendActivityMapper.updateByPrimaryKeySelective(activity); + for (String imgUrl : imgList) { + RecommendActivityImg img = new RecommendActivityImg(); + img.setImg(imgUrl); + img.setOrderBy(0); + img.setRecommendActivity(activity); + try { + int[] hw = ImageUtil.getImgWidthAndHeight(imgUrl); + img.setImgHeight(hw[1]); + img.setImgWidth(hw[0]); + } catch (Exception e) { + throw new ActivityException(2, "鍥剧墖灏哄鑾峰彇澶辫触"); + } + recommendActivityImgMapper.insertSelective(img); + } + return activity; + } + + @Override + public void addShareCount(Long activityId, int count) { + recommendActivityMapper.addShareCount(activityId, count); + } + + @Cacheable(value = "activityCache", key = "'getRecommendActivityList-'+#page+'-'+#pageSize") + @Override + public List<RecommendActivity> getRecommendActivityListCache(int page, int pageSize) { + List<RecommendActivity> activityList = getRecommendActivityList(page, pageSize); + 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 recommendActivityMapper.getRecommendActivityEffectiveCount(); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void upgradeShareGoodsRecommendActivity(Long id) throws ActivityException { + // 鑾峰彇鍟嗗搧 + List<RecommendActivityTaoBaoGoods> list = recommendActivityTaoBaoGoodsMapper.selectByActivityId(id); + if (list != null) + for (RecommendActivityTaoBaoGoods goods : list) { + // 涓嬫灦鍟嗗搧涓嶅繀鏇存柊 + if (goods.getState() == RecommendActivityTaoBaoGoods.STATE_UNSHELVE) + continue; + try { + TaoBaoGoodsBrief tbGoods = TaoKeApiUtil.searchGoodsDetail((goods.getAuctionId())); + if (tbGoods != null) { + RecommendActivityTaoBaoGoods update = new RecommendActivityTaoBaoGoods(); + update.setPictUrl(TbImgUtil.getTBSize220ImgWebp(tbGoods.getPictUrl())); + update.setId(goods.getId()); + update.setDesc(ActivityUtil.getGoodsShowPrice(tbGoods)); + update.setCouponAmount(tbGoods.getCouponAmount()); + // 褰撴病鏈夊埜鐨勬椂鍊欏晢鍝佹棤鏁� + if (StringUtil.isNullOrEmpty(tbGoods.getCouponActivityId()) + || tbGoods.getCouponLeftCount() == null || tbGoods.getCouponLeftCount() == 0) + update.setState(RecommendActivityTaoBaoGoods.STATE_UNSHELVE); + else + update.setState(RecommendActivityTaoBaoGoods.STATE_NORMAL); + recommendActivityTaoBaoGoodsMapper.updateByPrimaryKeySelective(update); + try { + taoBaoGoodsUpdateService.updateTaoBaoGoods(tbGoods); + } catch (TaobaoGoodsUpdateException e) { + e.printStackTrace(); + } + } + } catch (TaobaoGoodsDownException e) { + RecommendActivityTaoBaoGoods update = new RecommendActivityTaoBaoGoods(); + update.setId(goods.getId()); + update.setState(RecommendActivityTaoBaoGoods.STATE_UNSHELVE); + recommendActivityTaoBaoGoodsMapper.updateByPrimaryKeySelective(update); + taoBaoGoodsUpdateService.offlineTaoBaoGoods((goods.getAuctionId())); + } + } + } + + @Override + public List<RecommendActivity> getRecommendActivityList(int type, int page, int pageSize) { + return recommendActivityMapper.getRecommendActivityListByType(type, (page - 1) * pageSize, pageSize); + } + + @Override + public long getRecommendActivityCount(int type) { + return recommendActivityMapper.getRecommendActivityCountByType(type); + } + + @Override + public RecommendActivityInviteInfo getRecommendActivityInviteInfoByActivityId(Long activityId) { + return recommendActivityInviteInfoMapper.selectByActivityId(activityId); + } + + @Override + public void downTaoBaoGoods(String auctionId) { + recommendActivityTaoBaoGoodsMapper.updateStateByAuctionId(auctionId, + RecommendActivityTaoBaoGoods.STATE_UNSHELVE); + } + + @Override + public RecommendActivity getRecommendActivityDetail(Long activityId) { + + RecommendActivity activity = recommendActivityMapper.selectByPrimaryKey(activityId); + if (activity != null && activity.getGoodsList() != null) { + for (RecommendActivityTaoBaoGoods goods : activity.getGoodsList()) { + goods.setQuanPrice(goods.getDesc().replace("鍒稿悗浠凤細楼", "")); + goods.setPictUrl(goods.getPictUrl().replace("_.webp", "")); + } + } + + 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.getCouponPrice(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