admin
2020-05-19 744594ef1a2f530fc3e86ea9dc48b62247f79420
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,103 +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();
      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) {
         // 提前分配好PID
         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
@@ -235,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();
         }
@@ -275,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();
@@ -317,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) {
@@ -352,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();
      }
   }
@@ -365,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();
         }
@@ -409,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();
@@ -458,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) {
@@ -501,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 {
      // 获取商品
@@ -552,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()));
            }
         }
   }
@@ -591,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();
   }
}