admin
2020-03-01 ec8a1c6f81b5747e9efce86faaba33d10df7f61d
fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java
@@ -2,7 +2,6 @@
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;
@@ -15,7 +14,6 @@
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.yeshi.utils.HttpUtil;
import org.yeshi.utils.JsonUtil;
import org.yeshi.utils.entity.FileUploadResult;
@@ -27,7 +25,6 @@
import com.google.gson.JsonSerializer;
import com.yeshi.fanli.dto.jd.JDCouponInfo;
import com.yeshi.fanli.entity.accept.AcceptData;
import com.yeshi.fanli.entity.bus.activity.ActivityUser;
import com.yeshi.fanli.entity.bus.clazz.GoodsClass;
import com.yeshi.fanli.entity.bus.homemodule.Special;
import com.yeshi.fanli.entity.bus.homemodule.SpecialLabel;
@@ -40,17 +37,18 @@
import com.yeshi.fanli.entity.dynamic.DynamicInfo;
import com.yeshi.fanli.entity.dynamic.GoodsEvaluate;
import com.yeshi.fanli.entity.dynamic.GoodsEvaluate.EvaluateEnum;
import com.yeshi.fanli.entity.dynamic.GoodsPicture;
import com.yeshi.fanli.entity.dynamic.ImgInfo;
import com.yeshi.fanli.entity.dynamic.ImgInfo.ImgEnum;
import com.yeshi.fanli.entity.dynamic.SimpleGoods;
import com.yeshi.fanli.entity.jd.JDGoods;
import com.yeshi.fanli.entity.system.ConfigKeyEnum;
import com.yeshi.fanli.entity.taobao.TaoBaoLink;
import com.yeshi.fanli.exception.share.ShareGoodsException;
import com.yeshi.fanli.service.inter.common.JumpDetailV2Service;
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.dynamic.ArticleOfficialService;
import com.yeshi.fanli.service.inter.dynamic.DynamicInfoService;
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.SpecialService;
import com.yeshi.fanli.service.inter.homemodule.SwiperPictureService;
@@ -60,7 +58,6 @@
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService;
import com.yeshi.fanli.service.manger.goods.ConvertLinkManager;
import com.yeshi.fanli.util.AESUtil;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.VersionUtil;
@@ -70,7 +67,6 @@
import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil;
import com.yeshi.fanli.util.taobao.DaTaoKeUtil;
import com.yeshi.fanli.vo.dynamic.ArticleVO;
import com.yeshi.fanli.vo.goods.CouponInfoVO;
import com.yeshi.fanli.vo.goods.GoodsDetailVO;
import com.yeshi.fanli.vo.msg.ClientTextStyleVO;
@@ -126,7 +122,7 @@
   @Resource
   private QrCodeService qrCodeService;
   @Resource
   private ConvertLinkManager convertLinkManager;
@@ -594,10 +590,8 @@
   @RequestMapping(value = "getDynamicList", method = RequestMethod.POST)
   public void getDynamicListNew(AcceptData acceptData, Integer page, Long cid, String subId, PrintWriter out) {
      int type = 1;
      if (cid == TYPE_FAQUAN){
      if (cid == TYPE_FAQUAN) {
         type = 1;
         oldDynamicInfo(acceptData, page, subId, out); // 老版动态
         return;
      } else if (cid == TYPE_SUCAI) {
         type = 2;
      }
@@ -702,14 +696,6 @@
   @RequestMapping(value = "evaluateShare", method = RequestMethod.POST)
   public void evaluateShare(AcceptData acceptData, Long uid, String id, Integer type, Long goodsId, Integer goodsType,
         PrintWriter out) {
      // 老版动态
      if (1 > 0) {
         oldDynamicShare(acceptData, uid, id, type, goodsId, goodsType, out);
         return;
      }
      if (uid == null) {
         out.print(JsonUtil.loadFalseResult("用户未登录"));
         return;
@@ -766,46 +752,8 @@
      }
      List<String> list = new ArrayList<>();
      // 单品
      if (goodsEvaluate.getType() == EvaluateEnum.single) {
         for (ImgInfo imgInfo : imgs) {
            GoodsDetailVO goodsVO = imgInfo.getGoodsVO();
            if (goodsVO == null) {
               list.add(StringUtil.isNullOrEmpty(imgInfo.getUrlHD()) ? imgInfo.getUrl() : imgInfo.getUrlHD());
               continue;
            }
            String jumpLink = getJumpLink(goodsVO, user, inviteCode);
            if (!StringUtil.isNullOrEmpty(jumpLink)) {
               list.add(jumpLink);
            }
         }
      } else if (goodsEvaluate.getType() == EvaluateEnum.multiple) {
         if (type == 1) {
            for (ImgInfo imgInfo : imgs) {
               if (imgInfo.getGoodsVO() != null)
                  if (imgInfo.getGoodsVO().getGoodsId().longValue() == goodsId.longValue()
                        && imgInfo.getGoodsVO().getGoodsType() == goodsType.intValue()) {
                     String jumpLink = getJumpLink(imgInfo.getGoodsVO(), user, inviteCode);
                     if (!StringUtil.isNullOrEmpty(jumpLink)) {
                        list.add(jumpLink);
                     }
                     break;
                  }
            }
         } else if (type == 2 || type == 3) {
            for (ImgInfo imgInfo : imgs) {
               if (imgInfo.getGoodsVO() != null) {
                  String jumpLink = getJumpLink(imgInfo.getGoodsVO(), user, inviteCode);
                  if (!StringUtil.isNullOrEmpty(jumpLink)) {
                     list.add(jumpLink);
                  }
               }
            }
         }
      } else if (goodsEvaluate.getType() == EvaluateEnum.activity) {
      Integer dynamicType = goodsEvaluate.getDynamicType();
      if (dynamicType == null || dynamicType.intValue() == 2) {
         for (ImgInfo imgInfo : imgs) {
            if (imgInfo.getType() == ImgEnum.goods || imgInfo.getType() == ImgEnum.video)
               continue;
@@ -815,6 +763,58 @@
               if (!StringUtil.isNullOrEmpty(imgInfo.getActivityPic())) {
                  list.add(imgInfo.getActivityPic());
               }
         }
      } else {
         // 单品
         if (goodsEvaluate.getType() == EvaluateEnum.single) {
            for (ImgInfo imgInfo : imgs) {
               GoodsDetailVO goodsVO = imgInfo.getGoodsVO();
               if (goodsVO == null) {
                  list.add(StringUtil.isNullOrEmpty(imgInfo.getUrlHD()) ? imgInfo.getUrl() : imgInfo.getUrlHD());
                  continue;
               }
               String jumpLink = getJumpLink(goodsVO, user, relationId, inviteCode);
               if (!StringUtil.isNullOrEmpty(jumpLink)) {
                  list.add(jumpLink);
               }
            }
         } else if (goodsEvaluate.getType() == EvaluateEnum.multiple) {
            if (type == 1) {
               for (ImgInfo imgInfo : imgs) {
                  if (imgInfo.getGoodsVO() != null)
                     if (imgInfo.getGoodsVO().getGoodsId().longValue() == goodsId.longValue()
                           && imgInfo.getGoodsVO().getGoodsType() == goodsType.intValue()) {
                        String jumpLink = getJumpLink(imgInfo.getGoodsVO(), user, relationId, inviteCode);
                        if (!StringUtil.isNullOrEmpty(jumpLink)) {
                           list.add(jumpLink);
                        }
                        break;
                     }
               }
            } else if (type == 2 || type == 3) {
               for (ImgInfo imgInfo : imgs) {
                  if (imgInfo.getGoodsVO() != null) {
                     String jumpLink = getJumpLink(imgInfo.getGoodsVO(), user, relationId, inviteCode);
                     if (!StringUtil.isNullOrEmpty(jumpLink)) {
                        list.add(jumpLink);
                     }
                  }
               }
            }
         } else if (goodsEvaluate.getType() == EvaluateEnum.activity) {
            for (ImgInfo imgInfo : imgs) {
               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());
               else if (imgInfo.getType() == ImgEnum.activity)
                  if (!StringUtil.isNullOrEmpty(imgInfo.getActivityPic())) {
                     list.add(imgInfo.getActivityPic());
                  }
            }
         }
      }
@@ -839,17 +839,21 @@
      out.print(JsonUtil.loadTrueResult(data));
   }
   private String getJumpLink(GoodsDetailVO goodsVO, UserInfo user, String inviteCode) {
   @Resource
   private ShareGoodsService shareGoodsService;
   private String getJumpLink(GoodsDetailVO goodsVO, UserInfo user, String relationId, String inviteCode) {
      String jumpLink = null;
      if (goodsVO.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) {
         String url = String.format("http://%s%s?uid=%s&id=%s&appType=flq", configService.getH5Host(),
               Constant.systemCommonConfig.getShareGoodsPagePath(),
               AESUtil.encrypt(user.getId() + "", Constant.UIDAESKEY), goodsVO.getGoodsId() + "");
         String shortLink = HttpUtil.getShortLink(url);
         if (!StringUtil.isNullOrEmpty(shortLink)) {
            url = shortLink;
         TaoBaoLink taoBaoLink = null;
         try {
            taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(user.getId(), goodsVO.getGoodsId(), relationId);
         } catch (ShareGoodsException e) {
            e.printStackTrace();
         }
         jumpLink = url;
         jumpLink = configService.get(ConfigKeyEnum.taobaoShareQrcodeText.getKey()).replace("[淘口令]",
               taoBaoLink.getTaoToken());
      } else if (goodsVO.getGoodsType() == Constant.SOURCE_TYPE_JD) {
         JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(goodsVO.getGoodsId());
         if (jdGoods == null) {
@@ -930,12 +934,12 @@
            }
         }
      }
      try {
         text=convertLinkManager.convertLinkFromText(text, uid, true);
         text = convertLinkManager.convertLinkFromText(text, uid, true);
      } catch (Exception e) {
         e.printStackTrace();
         out.print(JsonUtil.loadFalseResult("转链失败"));
         out.print(JsonUtil.loadFalseResult("评论生成失败"));
         return;
      }
@@ -943,252 +947,5 @@
      data.put("text", text);
      out.print(JsonUtil.loadTrueResult(data));
   }
   public void oldDynamicInfo(AcceptData acceptData, Integer page, String subId, PrintWriter out) {
      long cid = 1;
      Long sid = null;
      if (!StringUtil.isNullOrEmpty(subId)){
         sid = Long.parseLong(subId);
      }
      List<DynamicInfo> listd = dynamicInfoService.queryV2(2, 74, (page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE,
            cid, sid);
      if (listd == null) {
         listd = new ArrayList<DynamicInfo>();
      }
      List<GoodsEvaluate> list = new ArrayList<>();
      for (DynamicInfo info : listd) {
         GoodsEvaluate goodsEvaluate = new GoodsEvaluate();
         goodsEvaluate.setId(info.getId());
         ActivityUser user = info.getUser();
         goodsEvaluate.setUser(user);
         List<ClientTextStyleVO> titles = info.getTitle();
         if (titles != null) {
            goodsEvaluate.setTitle(info.getTitle().get(0).getContent());
         } else {
            goodsEvaluate.setTitle("");
         }
         goodsEvaluate.setShareNum(info.getShareCount());
         goodsEvaluate.setPublishTime(info.getCreateTime());
         goodsEvaluate.setLineNum(2);
         List<GoodsPicture> imgs = info.getImgs();
         int i = 0;
         GoodsDetailVO goods= null;
         List<ImgInfo> imgList = new ArrayList<>();
         for (GoodsPicture goodsPicture : imgs) {
            ImgInfo imgInfo = new ImgInfo();
            imgInfo.setH(1);
            imgInfo.setW(1);
            imgInfo.setLarge(false);
            imgInfo.setUrl(goodsPicture.getUrl());
             imgInfo.setUrlHD(goodsPicture.getUrl());
             GoodsDetailVO goodsVO = goodsPicture.getGoodsVO();
            if (goodsVO == null) {
               imgInfo.setType(ImgEnum.img);
            } else {
               imgInfo.setType(ImgEnum.goods);
               SimpleGoods simpleGoods = new SimpleGoods();
               simpleGoods.setGoodsId(goodsVO.getGoodsId());
               simpleGoods.setGoodsType(goodsVO.getGoodsType());
               CouponInfoVO couponInfo = goodsVO.getCouponInfo();
               if (couponInfo == null) {
                  simpleGoods.setState(0);
                  simpleGoods.setPrice(goodsVO.getZkPrice());
               } else {
                  simpleGoods.setState(goodsVO.getState());
                  simpleGoods.setPrice(goodsVO.getCouponPrice());
                  simpleGoods.setAmount(couponInfo.getAmount());
               }
               imgInfo.setGoods(simpleGoods);
               goods = goodsVO;
               i++;
            }
            imgList.add(imgInfo);
         }
         goodsEvaluate.setImgList(imgList);
         if (i == 1) {
            goodsEvaluate.setGoods(goods);
         }
         list.add(goodsEvaluate);
      }
      GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation();
      gsonBuilder.registerTypeAdapter(CommentInfoEnum.class, new JsonSerializer<CommentInfoEnum>() {
         @Override
         public JsonElement serialize(CommentInfoEnum value, Type theType, JsonSerializationContext context) {
            if (value == null) {
               return new JsonPrimitive(1);
            } else {
               return new JsonPrimitive(value.getDesc());
            }
         }
      }).registerTypeAdapter(ImgEnum.class, new JsonSerializer<ImgEnum>() {
         @Override
         public JsonElement serialize(ImgEnum value, Type theType, JsonSerializationContext context) {
            if (value == null) {
               return new JsonPrimitive("");
            } else {
               return new JsonPrimitive(value.getVlaue());
            }
         }
      }).registerTypeAdapter(Date.class, new JsonSerializer<Date>() {
         @Override
         public JsonElement serialize(Date value, Type theType, JsonSerializationContext context) {
            String desc = "";
            if (value != null) {
               // 判断是否是同一天
               Calendar calendar = Calendar.getInstance();
               calendar.setTime(value);
               int y1 = calendar.get(Calendar.YEAR);// 获取年份
               int d1 = calendar.get(Calendar.DAY_OF_YEAR);// 获取年中第几天
               Date nowDate = new Date();
               Calendar calendar2 = Calendar.getInstance();
               calendar2.setTime(nowDate);
               int y2 = calendar2.get(Calendar.YEAR);// 获取年份
               int d2 = calendar2.get(Calendar.DAY_OF_YEAR);// 获取年中第几天
               long old = value.getTime();
               long now = nowDate.getTime();
               if (y1 == y2) {
                  if (d1 == d2) {
                     long cha = now - old;
                     if (cha < 1000 * 60 * 2L) {
                        desc = "刚刚";
                     } else if (cha < 1000 * 60 * 60L) {
                        desc = (cha / (1000 * 60)) + "分钟前";
                     } else {
                        desc = (cha / (1000 * 60 * 60)) + "小时前";
                     }
                  } else if (d2 - d1 == 1) {
                     desc = "昨天";
                  } else {
                     desc = (d2 - d1) + "天前";
                  }
               } else {
                  int timeDistance = 0;
                  for (int i = y1; i < y2; i++) {
                     if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
                        timeDistance += 366; // 闰年
                     } else {
                        timeDistance += 365; // 不是闰年
                     }
                  }
                  desc = timeDistance + (d2 - d1) + "天前";
               }
               return new JsonPrimitive(desc);
            }
            return new JsonPrimitive("");
         }
      });
      Gson gson = gsonBuilder.create();
      JSONObject data = new JSONObject();
      data.put("list", gson.toJson(list));
      data.put("count",  dynamicInfoService.count(cid, sid));
      out.print(JsonUtil.loadTrueResult(data));
   }
   public void oldDynamicShare(AcceptData acceptData, Long uid, String id, Integer type, Long goodsId, Integer goodsType,
         PrintWriter out) {
      if (uid == null) {
         out.print(JsonUtil.loadFalseResult("用户未登录"));
         return;
      }
      if (StringUtil.isNullOrEmpty(id) || type == null) {
         out.print(JsonUtil.loadFalseResult("传递参数不能为空"));
         return;
      }
      if (type == 1 && (goodsId == null || goodsType == null)) {
         out.print(JsonUtil.loadFalseResult("商品参数不能为空"));
         return;
      }
      DynamicInfo dynamicInfo = dynamicInfoService.getById(id);
      if (dynamicInfo == null) {
         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 inviteCode = userInfoExtraService.getInviteCodeByUid(uid);
      if (StringUtil.isNullOrEmpty(inviteCode)) {
         out.print(JsonUtil.loadFalseResult(1, "邀请码未激活"));
         return;
      }
      List<GoodsPicture> imgs = dynamicInfo.getImgs();
      if (imgs == null) {
         out.print(JsonUtil.loadFalseResult("该图片内容已不存在"));
         return;
      }
      List<String> list = new ArrayList<>();
      // 热销为单品
      for (GoodsPicture imgInfo : imgs) {
         GoodsDetailVO goodsVO = imgInfo.getGoodsVO();
         if (goodsVO == null) {
            list.add(imgInfo.getUrl());
            continue;
         }
         String jumpLink = getJumpLink(goodsVO, user, inviteCode);
         if (!StringUtil.isNullOrEmpty(jumpLink)) {
            list.add(jumpLink);
         }
      }
      Integer shareCount = dynamicInfo.getShareCount();
      if (shareCount == null) {
         shareCount = 0;
      }
      if (type == 3) {
         shareCount++;
         dynamicInfoService.updateShareCount(dynamicInfo);
      }
      if (list.size() == 0) {
         out.print(JsonUtil.loadFalseResult("该信息已下架"));
         return;
      }
      JSONObject data = new JSONObject();
      data.put("count", shareCount);
      data.put("list", list);
      out.print(JsonUtil.loadTrueResult(data));
   }
}