admin
2020-05-12 2ec42a5aacea35d2918f0e17f07685cf5b4d25c8
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java
@@ -12,6 +12,7 @@
import javax.annotation.Resource;
import org.apache.commons.beanutils.PropertyUtils;
import org.springframework.core.task.TaskExecutor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -29,13 +30,13 @@
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.clazz.GoodsClass;
import com.yeshi.fanli.entity.bus.homemodule.Special;
import com.yeshi.fanli.entity.bus.homemodule.SpecialExtra;
import com.yeshi.fanli.entity.bus.homemodule.SpecialLabel;
import com.yeshi.fanli.entity.bus.homemodule.SwiperPicture;
import com.yeshi.fanli.entity.bus.user.UserExtraTaoBaoInfo;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.common.JumpDetailV2;
import com.yeshi.fanli.entity.dynamic.CommentInfo;
import com.yeshi.fanli.entity.dynamic.CommentInfo.CommentInfoEnum;
import com.yeshi.fanli.entity.dynamic.DynamicInfo;
import com.yeshi.fanli.entity.dynamic.GoodsEvaluate;
import com.yeshi.fanli.entity.dynamic.GoodsEvaluate.EvaluateEnum;
@@ -55,6 +56,7 @@
import com.yeshi.fanli.service.inter.dynamic.GoodsEvaluateService;
import com.yeshi.fanli.service.inter.goods.ShareGoodsService;
import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService;
import com.yeshi.fanli.service.inter.homemodule.SpecialExtraService;
import com.yeshi.fanli.service.inter.homemodule.SpecialService;
import com.yeshi.fanli.service.inter.homemodule.SwiperPictureService;
import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
@@ -75,6 +77,7 @@
import com.yeshi.fanli.util.taobao.TaoBaoUtil;
import com.yeshi.fanli.vo.dynamic.ArticleVO;
import com.yeshi.fanli.vo.goods.GoodsDetailVO;
import com.yeshi.fanli.vo.homemodule.SpecialVO;
import com.yeshi.fanli.vo.msg.ClientTextStyleVO;
import net.sf.json.JSONArray;
@@ -136,13 +139,17 @@
   @Resource
   private ShareGoodsService shareGoodsService;
   @Resource
   private DailyCountMomentsService dailyCountMomentsService;
   
   @Resource
   private SpecialExtraService specialExtraService;
   @Resource(name = "taskExecutor")
   private TaskExecutor executor;
   private final static long TYPE_REXIAO = 1;// 热销
   private final static long TYPE_TUIJIAN = 2;// 推荐
@@ -368,34 +375,48 @@
      long time = System.currentTimeMillis();
      // 删除尚未启用的过期的
      List<SpecialVO> listVo = new ArrayList<SpecialVO>();
      for (int i = 0; i < list.size(); i++) {
         Special special = list.get(i);
         if (special.getState() == 1L) {
            list.remove(i--);
         } else {
            if (special.getStartTime() != null && special.getEndTime() != null)
               special.setTimeTask(true);
            else
               special.setTimeTask(false);
            if (special.isTimeTask()) {
               if (time < special.getStartTime().getTime() || time > special.getEndTime().getTime()) {
                  list.remove(i--);
               } else// 设置倒计时
               {
                  special.setCountDownTime((special.getEndTime().getTime() - time) / 1000);
               }
            }
            List<SpecialLabel> listLabels = special.getListLabels();
            if (listLabels != null && !listLabels.isEmpty()) {
               List<ClientTextStyleVO> labels = new ArrayList<>();
               for (SpecialLabel specialLabel : listLabels) {
                  labels.add(new ClientTextStyleVO(specialLabel.getName(), specialLabel.getBgColor()));
               }
               special.setLabels(labels);
            continue;
         }
         // 是否活动已过期
         if (special.getStartTime() != null && special.getEndTime() != null) {
            if (time < special.getStartTime().getTime() || time > special.getEndTime().getTime()) {
               continue;
            } else {
               special.setCountDownTime((special.getEndTime().getTime() - time) / 1000);
            }
         }
         SpecialVO specialVO = new SpecialVO();
         try {
            PropertyUtils.copyProperties(specialVO, special);
         } catch (Exception e) {
            e.printStackTrace();
            continue;
         }
         // 设置标签
         List<SpecialLabel> listLabels = specialVO.getListLabels();
         if (listLabels != null && !listLabels.isEmpty()) {
            List<ClientTextStyleVO> labels = new ArrayList<>();
            for (SpecialLabel specialLabel : listLabels) {
               labels.add(new ClientTextStyleVO(specialLabel.getName(), specialLabel.getBgColor()));
            }
            specialVO.setLabels(labels);
         }
         // 评论信息
         if (VersionUtil.greaterThan_2_1_1(acceptData.getPlatform(), acceptData.getVersion())) {
            SpecialExtra extra = specialExtraService.selectByPrimaryKey(specialVO.getId());
            if (extra != null && !StringUtil.isNullOrEmpty(extra.getComment())) {
               specialVO.setComment(extra.getComment());
            }
         }
         listVo.add(specialVO);
      }
      long count = specialService.countByPlaceKeyList(listKey, platformCode,
@@ -405,7 +426,7 @@
      Gson gson = gsonBuilder.create();
      JSONObject data = new JSONObject();
      data.put("count", count);
      data.put("list", gson.toJson(list));
      data.put("list", gson.toJson(listVo));
      out.print(JsonUtil.loadTrueResult(data));
   }
@@ -638,7 +659,7 @@
                  return new JsonPrimitive("");
               } else {
                  // 保留2位小数
                  return new JsonPrimitive(MoneyBigDecimalUtil.getWithNoZera(value)+"");
                  return new JsonPrimitive(MoneyBigDecimalUtil.getWithNoZera(value) + "");
               }
            }
         }).registerTypeAdapter(Date.class, new JsonSerializer<Date>() {
@@ -842,7 +863,8 @@
                     if (imgInfo.getGoodsVO() != null)
                        if (imgInfo.getGoodsVO().getGoodsId().longValue() == goodsId.longValue()
                              && imgInfo.getGoodsVO().getGoodsType() == goodsType.intValue()) {
                           String jumpLink = getJumpLink(imgInfo.getGoodsVO(), user, relationId, inviteCode, imgInfo.getUrl());
                           String jumpLink = getJumpLink(imgInfo.getGoodsVO(), user, relationId, inviteCode,
                                 imgInfo.getUrl());
                           if (!StringUtil.isNullOrEmpty(jumpLink)) {
                              list.add(jumpLink);
                           }
@@ -852,7 +874,8 @@
               } else if (type == 2 || type == 3) {
                  for (ImgInfo imgInfo : imgs) {
                     if (imgInfo.getGoodsVO() != null) {
                        String jumpLink = getJumpLink(imgInfo.getGoodsVO(), user, relationId, inviteCode, imgInfo.getUrl() );
                        String jumpLink = getJumpLink(imgInfo.getGoodsVO(), user, relationId, inviteCode,
                              imgInfo.getUrl());
                        if (!StringUtil.isNullOrEmpty(jumpLink)) {
                           list.add(jumpLink);
                        }
@@ -870,7 +893,7 @@
                  else if (imgInfo.getType() == ImgEnum.activity)
                     if (!StringUtil.isNullOrEmpty(imgInfo.getActivityPic())) {
                        list.add(imgInfo.getActivityPic());
                     }else if(!StringUtil.isNullOrEmpty(imgInfo.getUrl())){
                     } else if (!StringUtil.isNullOrEmpty(imgInfo.getUrl())) {
                        list.add(imgInfo.getUrl());
                     }
               }
@@ -885,7 +908,7 @@
         if (type == 3) {
            shareCount++;
            goodsEvaluateService.addShareNum(id);
            executor.execute(new Runnable() {
               @Override
               public void run() { // 添加每日统计
@@ -909,7 +932,8 @@
      }
   }
   private String getJumpLink(GoodsDetailVO goodsVO, UserInfo user, String relationId, String inviteCode, String mainPic) {
   private String getJumpLink(GoodsDetailVO goodsVO, UserInfo user, String relationId, String inviteCode,
         String mainPic) {
      String jumpLink = null;
      if (goodsVO.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) {
         TaoBaoLink taoBaoLink = null;
@@ -919,7 +943,7 @@
            e.printStackTrace();
         }
         jumpLink = ShareControllerV2.getERCodeContentNew(
               configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey()), taoBaoLink.getGoods(),
               configService.get(ConfigKeyEnum.taobaoShareQrcodeText.getKey()), taoBaoLink.getGoods(),
               TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken()));
      } else if (goodsVO.getGoodsType() == Constant.SOURCE_TYPE_JD) {
         JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(goodsVO.getGoodsId());
@@ -1006,8 +1030,7 @@
      }
      String newText = text; // 非通用券需要验证
      if ((comment != null && comment.getTypeEnum() != CommentInfoEnum.currencyCoupon)
            || goodsEvaluate.getType() == EvaluateEnum.activity) {
      if (comment != null && (comment.getNeedSpin() == null || comment.getNeedSpin())) {
         try {
            newText = convertLinkManager.convertLinkFromText(text, uid, true);
         } catch (ConvertLinkExceptionException e) {
@@ -1021,26 +1044,24 @@
            return;
         }
      }
      // 替换价格
      if (goodsEvaluate.getType() == EvaluateEnum.single) {
         GoodsDetailVO goods = goodsEvaluate.getGoods();
         newText = newText.replace("[原价]", MoneyBigDecimalUtil.getWithNoZera(goods.getZkPrice()) +"");
         newText = newText.replace("[原价]", MoneyBigDecimalUtil.getWithNoZera(goods.getZkPrice()) + "");
         if (!goods.isHasCoupon()) {
            newText = newText.replace("领券抢购", "抢购");
            newText = newText.replace("【券后价】[券后价]元", "");
         } else {
            newText = newText.replace("[券后价]", MoneyBigDecimalUtil.getWithNoZera(goods.getCouponPrice())+"");
            newText = newText.replace("[券后价]", MoneyBigDecimalUtil.getWithNoZera(goods.getCouponPrice()) + "");
         }
         newText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n");
      }
      JSONObject data = new JSONObject();
      data.put("text", newText);
      out.print(JsonUtil.loadTrueResult(data));
      executor.execute(new Runnable() {
         @Override
         public void run() { // 添加每日统计
@@ -1048,5 +1069,70 @@
         }
      });
   }
   /**
    * 评论复制-专题
    *
    * @param acceptData
    * @param id
    * @param out
    */
   @RequestMapping(value = "copySpecialComment", method = RequestMethod.POST)
   public void copySpecialComment(AcceptData acceptData, Long uid, Long id, PrintWriter out) {
      if (uid == null || id == null) {
         out.print(JsonUtil.loadFalseResult("参数不能为空"));
         return;
      }
      SpecialExtra extra = specialExtraService.selectByPrimaryKey(id);
      if (extra == null ||  StringUtil.isNullOrEmpty(extra.getComment())) {
         out.print(JsonUtil.loadFalseResult("该内容已不存在"));
         return;
      }
      UserInfo user = userInfoService.getUserByIdWithMybatis(uid);
      if (user == null) {
         out.print(JsonUtil.loadFalseResult("用户未登录"));
         return;
      }
      if (user != null && user.getState() != UserInfo.STATE_NORMAL) {
         out.print(JsonUtil.loadFalseResult(Constant.CODE_FORBIDDEN_USER, Constant.FORBIDDEN_USER_REASON_DESC));
         return;
      }
      UserExtraTaoBaoInfo taoBaoInfo = userExtraTaoBaoInfoService.getByUid(uid);
      String relationId = null;
      if (taoBaoInfo != null && taoBaoInfo.getRelationId() != null && taoBaoInfo.getRelationValid() != null
            && taoBaoInfo.getRelationValid() == true)
         relationId = taoBaoInfo.getRelationId();
      if (StringUtil.isNullOrEmpty(relationId)) {
         out.print(JsonUtil.loadFalseResult(2, "淘宝未授权,请前往\"我的\"绑定淘宝账号"));
         return;
      }
      String text = extra.getComment();
      String newText = text;
      if (extra.getNeedSpin() != null && extra.getNeedSpin()) {
         try {
            newText = convertLinkManager.convertLinkFromText(text, uid, true);
         } catch (ConvertLinkExceptionException e) {
            if (e.getCode() != ConvertLinkExceptionException.CODE_NONE) {
               out.print(JsonUtil.loadFalseResult("评论生成失败"));
               return;
            }
         } catch (Exception e) {
            LogHelper.errorDetailInfo(e);
            out.print(JsonUtil.loadFalseResult("评论生成失败"));
            return;
         }
      }
      JSONObject data = new JSONObject();
      data.put("text", newText);
      out.print(JsonUtil.loadTrueResult(data));
   }
}