admin
2020-05-06 24a8d17e007545f7426c48352109aa1a9c6587ee
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java
@@ -2,6 +2,7 @@
import java.io.PrintWriter;
import java.lang.reflect.Type;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
@@ -11,6 +12,7 @@
import javax.annotation.Resource;
import org.springframework.core.task.TaskExecutor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@@ -40,12 +42,13 @@
import com.yeshi.fanli.entity.dynamic.ImgInfo.ImgEnum;
import com.yeshi.fanli.entity.jd.JDGoods;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief;
import com.yeshi.fanli.entity.taobao.TaoBaoLink;
import com.yeshi.fanli.exception.goods.ConvertLinkExceptionException;
import com.yeshi.fanli.exception.share.ShareGoodsException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.count.DailyCountMomentsService;
import com.yeshi.fanli.service.inter.dynamic.ArticleOfficialService;
import com.yeshi.fanli.service.inter.dynamic.DynamicInfoService;
import com.yeshi.fanli.service.inter.dynamic.GoodsEvaluateService;
@@ -60,6 +63,7 @@
import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService;
import com.yeshi.fanli.service.manger.goods.ConvertLinkManager;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.VersionUtil;
import com.yeshi.fanli.util.cache.JDGoodsCacheUtil;
@@ -128,11 +132,15 @@
   @Resource
   private ConvertLinkManager convertLinkManager;
   @Resource
   private ShareGoodsService shareGoodsService;
   @Resource
   private DailyCountMomentsService dailyCountMomentsService;
   @Resource(name = "taskExecutor")
   private TaskExecutor executor;
   private final static long TYPE_REXIAO = 1;// 热销
   private final static long TYPE_TUIJIAN = 2;// 推荐
@@ -247,9 +255,8 @@
         // 2.0.7返回发圈+活动+学院+素材
         list.add(map.get(TYPE_FAQUAN));
         list.add(map.get(TYPE_HUODONG));
//         list.add(map.get(TYPE_XUEYUAN));
         list.add(map.get(TYPE_SUCAI));
         // list.add(map.get(TYPE_XUEYUAN));
         // list.add(map.get(TYPE_SUCAI));
      } else if (VersionUtil.greaterThan_2_0_6(acceptData.getPlatform(), acceptData.getVersion())) {
         // 2.0.6返回热销+活动+推荐+学院+邀请
         list.add(map.get(TYPE_REXIAO));
@@ -364,12 +371,7 @@
         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 (special.getStartTime() != null && special.getEndTime() != null) {
               if (time < special.getStartTime().getTime() || time > special.getEndTime().getTime()) {
                  list.remove(i--);
               } else// 设置倒计时
@@ -600,7 +602,7 @@
      try {
         int type = 1;
         if (cid == TYPE_FAQUAN){
         if (cid == TYPE_FAQUAN) {
            type = 1;
         } else if (cid == TYPE_SUCAI) {
            type = 2;
@@ -611,7 +613,7 @@
         if (list == null) {
            list = new ArrayList<>();
         }
         GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
         gsonBuilder.registerTypeAdapter(ImgEnum.class, new JsonSerializer<ImgEnum>() {
            @Override
@@ -620,6 +622,16 @@
                  return new JsonPrimitive("");
               } else {
                  return new JsonPrimitive(value.getVlaue());
               }
            }
         }).registerTypeAdapter(BigDecimal.class, new JsonSerializer<BigDecimal>() {
            @Override
            public JsonElement serialize(BigDecimal value, Type theType, JsonSerializationContext context) {
               if (value == null) {
                  return new JsonPrimitive("");
               } else {
                  // 保留2位小数
                  return new JsonPrimitive(MoneyBigDecimalUtil.getWithNoZera(value) + "");
               }
            }
         }).registerTypeAdapter(Date.class, new JsonSerializer<Date>() {
@@ -677,27 +689,31 @@
         });
         Gson gson = gsonBuilder.create();
         long count = goodsEvaluateService.countValidMaterials(type);
         JSONArray jsonArray = new JSONArray();
         String listStr = gson.toJson(list);
         JSONArray array = JSONArray.fromObject(listStr);
         for (int i = 0; i< array.size() ; i++) {
         for (int i = 0; i < array.size(); i++) {
            Object object = array.get(i);
            JSONObject json = JSONObject.fromObject(object);
            Object shareNum = json.get("shareNum");
            if (shareNum != null) {
               int num = Integer.parseInt(shareNum.toString());
               if (num >= 10000) {
               if (num >= 100000000) {
                  double sales = num;
                  String salesCountMidea = String.format("%.1f", sales / 100000000);
                  json.put("shareNum", salesCountMidea + "亿");
               } else if (num >= 10000) {
                  double sales = num;
                  String salesCountMidea = String.format("%.1f", sales / 10000);
                  json.put("shareNum", salesCountMidea + "万");
               }
               }
            }
            jsonArray.add(json);
         }
         JSONObject data = new JSONObject();
         data.put("count", count);
         data.put("list", jsonArray);
@@ -707,7 +723,7 @@
         out.print(JsonUtil.loadFalseResult(1, "查询信息失败"));
         LogHelper.errorDetailInfo(e);
      }
   }
   /**
@@ -797,16 +813,17 @@
            // 单品
            if (goodsEvaluate.getType() == EvaluateEnum.single) {
               for (ImgInfo imgInfo : imgs) {
                  if ( type == 3 && imgInfo.getType() == ImgEnum.video)
                  if (imgInfo.getType() == ImgEnum.video)
                     continue;
                  GoodsDetailVO goodsVO = imgInfo.getGoodsVO();
                  if (goodsVO == null) {
                     list.add(StringUtil.isNullOrEmpty(imgInfo.getUrlHD()) ? imgInfo.getUrl() : imgInfo.getUrlHD());
                     list.add(StringUtil.isNullOrEmpty(imgInfo.getUrlHD()) ? imgInfo.getUrl()
                           : imgInfo.getUrlHD());
                     continue;
                  }
                  String jumpLink = getJumpLink(goodsVO, user, relationId, inviteCode);
                  String jumpLink = getJumpLink(goodsVO, user, relationId, inviteCode, imgInfo.getUrl());
                  if (!StringUtil.isNullOrEmpty(jumpLink)) {
                     list.add(jumpLink);
                  }
@@ -818,7 +835,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);
                           String jumpLink = getJumpLink(imgInfo.getGoodsVO(), user, relationId, inviteCode,
                                 imgInfo.getUrl());
                           if (!StringUtil.isNullOrEmpty(jumpLink)) {
                              list.add(jumpLink);
                           }
@@ -828,7 +846,8 @@
               } else if (type == 2 || type == 3) {
                  for (ImgInfo imgInfo : imgs) {
                     if (imgInfo.getGoodsVO() != null) {
                        String jumpLink = getJumpLink(imgInfo.getGoodsVO(), user, relationId, inviteCode);
                        String jumpLink = getJumpLink(imgInfo.getGoodsVO(), user, relationId, inviteCode,
                              imgInfo.getUrl());
                        if (!StringUtil.isNullOrEmpty(jumpLink)) {
                           list.add(jumpLink);
                        }
@@ -841,10 +860,13 @@
                  if (imgInfo.getType() == ImgEnum.goods || imgInfo.getType() == ImgEnum.video)
                     continue;
                  if (imgInfo.getType() == ImgEnum.img)
                     list.add(StringUtil.isNullOrEmpty(imgInfo.getUrlHD()) ? imgInfo.getUrl() : imgInfo.getUrlHD());
                     list.add(StringUtil.isNullOrEmpty(imgInfo.getUrlHD()) ? imgInfo.getUrl()
                           : imgInfo.getUrlHD());
                  else if (imgInfo.getType() == ImgEnum.activity)
                     if (!StringUtil.isNullOrEmpty(imgInfo.getActivityPic())) {
                        list.add(imgInfo.getActivityPic());
                     } else if (!StringUtil.isNullOrEmpty(imgInfo.getUrl())) {
                        list.add(imgInfo.getUrl());
                     }
               }
            }
@@ -858,6 +880,13 @@
         if (type == 3) {
            shareCount++;
            goodsEvaluateService.addShareNum(id);
            executor.execute(new Runnable() {
               @Override
               public void run() { // 添加每日统计
                  dailyCountMomentsService.addShareClick();
               }
            });
         }
         if (list.size() == 0) {
@@ -875,8 +904,8 @@
      }
   }
   private String getJumpLink(GoodsDetailVO goodsVO, UserInfo user, String relationId, String inviteCode) {
   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;
@@ -885,8 +914,9 @@
         } catch (ShareGoodsException e) {
            e.printStackTrace();
         }
         jumpLink = ShareControllerV2.getERCodeContentNew(configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey()),
               taoBaoLink.getGoods(), TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken()));
         jumpLink = ShareControllerV2.getERCodeContentNew(
               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());
         if (jdGoods == null) {
@@ -907,14 +937,13 @@
      }
      FileUploadResult uploadResult = qrCodeService.drawDynamicGoodsPoster(jumpLink, user.getPortrait(), inviteCode,
            goodsVO);
            mainPic, goodsVO);
      if (uploadResult != null) {
         return uploadResult.getUrl();
      }
      return null;
   }
   /**
    * 评论复制
    * 
@@ -960,26 +989,57 @@
      }
      String text = "";
      CommentInfo comment = null;
      List<CommentInfo> comments = goodsEvaluate.getComments();
      if (comments != null) {
         for (CommentInfo commentInfo : comments) {
            if (cid.equals(commentInfo.getId())) {
               text = commentInfo.getContent();
               comment = commentInfo;
               break;
            }
         }
      }
      try {
         text = convertLinkManager.convertLinkFromText(text, uid, true);
      } catch (Exception e) {
         e.printStackTrace();
         out.print(JsonUtil.loadFalseResult("评论生成失败"));
         return;
      String newText = text; // 非通用券需要验证
      if (comment != null && (comment.getNeedSpin() == null || comment.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;
         }
      }
      // 替换价格
      if (goodsEvaluate.getType() == EvaluateEnum.single) {
         GoodsDetailVO goods = goodsEvaluate.getGoods();
         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.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", text);
      data.put("text", newText);
      out.print(JsonUtil.loadTrueResult(data));
      executor.execute(new Runnable() {
         @Override
         public void run() { // 添加每日统计
            dailyCountMomentsService.addCopyComment();
         }
      });
   }
}