package com.yeshi.fanli.controller.client.v2; 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; import java.util.List; import javax.annotation.Resource; 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; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonElement; import com.google.gson.JsonPrimitive; import com.google.gson.JsonSerializationContext; 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; 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.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.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.TaoBaoGoodsBriefService; 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; import com.yeshi.fanli.service.inter.user.QrCodeService; import com.yeshi.fanli.service.inter.user.UserInfoService; import com.yeshi.fanli.service.inter.user.tb.UserExtraTaoBaoInfoService; import com.yeshi.fanli.util.AESUtil; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.VersionUtil; import com.yeshi.fanli.util.cache.JDGoodsCacheUtil; import com.yeshi.fanli.util.jd.JDApiUtil; import com.yeshi.fanli.util.jd.JDUtil; 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.GoodsDetailVO; import com.yeshi.fanli.vo.msg.ClientTextStyleVO; import net.sf.json.JSONObject; /** * 动态 * * @author Administrator * */ @Controller @RequestMapping("api/v2/dynamic") public class DynamicControllerV2 { @Resource private HongBaoManageService hongBaoManageService; @Resource private TaoBaoGoodsBriefService taoBaoGoodsBriefService; @Resource private JumpDetailV2Service jumpDetailV2Service; @Resource private DynamicInfoService dynamicInfoService; @Resource private SpecialService specialService; @Resource private ArticleOfficialService articleOfficialService; @Resource private SwiperPictureService swiperPictureService; @Resource private ConfigService configService; @Resource private GoodsEvaluateService goodsEvaluateService; @Resource private UserInfoService userInfoService; @Resource private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService; @Resource private JDGoodsCacheUtil jdGoodsCacheUtil; @Resource private QrCodeService qrCodeService; /** * 查询顶部分类 * * @param acceptData * @param page * @param cid * @param out */ @RequestMapping(value = "getClass", method = RequestMethod.POST) public void getClass(AcceptData acceptData, Integer cid, PrintWriter out) { // ios 只返回子集分类 if (cid != null) { List list = new ArrayList(); switch (cid) { case 1: list.add(new GoodsClass(0L, "今日单品")); list.addAll(DaTaoKeUtil.goodsClasses); break; case 2: break; case 3: break; case 4: break; case 5: list.add(new GoodsClass(0L, "全部")); list.add(new GoodsClass(1L, "淘宝")); list.add(new GoodsClass(2L, "京东")); list.add(new GoodsClass(3L, "拼多多")); break; default: break; } JSONObject data = new JSONObject(); data.put("list", JsonUtil.getApiCommonGson().toJson(list)); out.print(JsonUtil.loadTrueResult(data)); return; } // Android 返回分类以及顶部数据 List listSub = new ArrayList(); listSub.add(new GoodsClass(0L, "今日单品")); listSub.addAll(DaTaoKeUtil.goodsClasses); GoodsClass menu1 = new GoodsClass(1L, "热销"); menu1.setListSub(listSub); GoodsClass menu2 = new GoodsClass(2L, "推荐"); menu2.setListSub(new ArrayList()); GoodsClass menu3 = new GoodsClass(3L, "好店"); menu3.setListSub(new ArrayList()); GoodsClass menu4 = new GoodsClass(4L, "邀请"); menu4.setListSub(new ArrayList()); GoodsClass menu5 = new GoodsClass(5L, "活动"); List sub5 = new ArrayList(); sub5.add(new GoodsClass(0L, "全部")); sub5.add(new GoodsClass(1L, "淘宝")); sub5.add(new GoodsClass(2L, "京东")); sub5.add(new GoodsClass(3L, "拼多多")); menu5.setListSub(sub5); GoodsClass menu6 = new GoodsClass(6L, "学院"); menu6.setListSub(new ArrayList()); List list = new ArrayList(); list.add(menu1); list.add(menu5); list.add(menu2); // 2.0.5版本隐藏 好店栏目 if (!VersionUtil.greaterThan_2_0_5(acceptData.getPlatform(), acceptData.getVersion())) { list.add(menu3); } // 2.0.6版本增加 学院栏目 if (VersionUtil.greaterThan_2_0_6(acceptData.getPlatform(), acceptData.getVersion())) { // list.add(menu6); } list.add(menu4); JSONObject data = new JSONObject(); data.put("list", JsonUtil.getApiCommonGson().toJson(list)); out.print(JsonUtil.loadTrueResult(data)); } /** * 动态商品列表 * * @param acceptData * @param page * @param cid * @param subId * @param out */ @RequestMapping(value = "getList", method = RequestMethod.POST) public void getList(AcceptData acceptData, Integer page, Long cid, Long subId, PrintWriter out) { if (cid == null) { out.print(JsonUtil.loadFalseResult("主分类id不能为空")); return; } if (cid != null) { if (cid == 5) { // 活动主题 getSpecialList(acceptData, page, subId, out); return; } else if (cid == 6) { // 学院 getArticleList(acceptData, page, null, false, out); return; } } long count = 0; int platform = 1; if ("ios".equalsIgnoreCase(acceptData.getPlatform())) { platform = 2; } int version = Integer.parseInt(acceptData.getVersion()); List list = dynamicInfoService.queryV2(platform, version, (page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, cid, subId); if (list == null) { list = new ArrayList(); } else { count = dynamicInfoService.count(cid, subId); } JSONObject data = new JSONObject(); data.put("count", count); data.put("list", getGson().toJson(list)); out.print(JsonUtil.loadTrueResult(data)); } /** * 活动列表 * * @param acceptData * @param out */ private void getSpecialList(AcceptData acceptData, Integer page, Long subId, PrintWriter out) { if (subId == null) { out.print(JsonUtil.loadFalseResult("分类id不能为空")); return; } // 平台区分 int platformCode = Constant.getPlatformCode(acceptData.getPlatform()); List listKey = new ArrayList(); if (subId == 1) { // 淘宝 listKey.add("special_channel_tb"); } else if (subId == 2) { // 京东 listKey.add("special_channel_jd"); } else if (subId == 3) { // 拼多多 listKey.add("special_channel_pdd"); } else { // 全部 listKey.add("special_channel_tb"); listKey.add("special_channel_jd"); listKey.add("special_channel_pdd"); } List list = specialService.listByPlaceKeyHasLabel((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, listKey, platformCode, Integer.parseInt(acceptData.getVersion())); long time = System.currentTimeMillis(); // 删除尚未启用的过期的 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 listLabels = special.getListLabels(); if (listLabels != null && !listLabels.isEmpty()) { List labels = new ArrayList<>(); for (SpecialLabel specialLabel : listLabels) { labels.add(new ClientTextStyleVO(specialLabel.getName(), specialLabel.getBgColor())); } special.setLabels(labels); } } } long count = specialService.countByPlaceKeyList(listKey, platformCode, Integer.parseInt(acceptData.getVersion())); GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); Gson gson = gsonBuilder.create(); JSONObject data = new JSONObject(); data.put("count", count); data.put("list", gson.toJson(list)); out.print(JsonUtil.loadTrueResult(data)); } /** * 时间处理 * * @return */ private Gson getGson() { GsonBuilder gb = JsonUtil.getConvertBigDecimalToStringSubZeroBuilder(new GsonBuilder()); gb.excludeFieldsWithoutExposeAnnotation(); gb.registerTypeAdapter(Date.class, new JsonSerializer() { @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 = gb.create(); return gson; } /** * 活动列表 * * @param acceptData * @param out */ private void getArticleList(AcceptData acceptData, Integer page, String key, boolean search, PrintWriter out) { List list = articleOfficialService.queryValid((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, key); if (list != null) { for (ArticleVO article : list) { String tags = article.getTags(); if (StringUtil.isNullOrEmpty(tags)) { continue; } String[] arrayTags = tags.split("\\s+"); if (arrayTags == null || arrayTags.length == 0) { continue; } String[] arrayTagsColour = null; String tagsColour = article.getTagsColour(); if (!StringUtil.isNullOrEmpty(tagsColour)) { arrayTagsColour = tagsColour.split("\\s+"); } String color = "#FE0014"; List labels = new ArrayList(); for (int i = 0; i < arrayTags.length; i++) { String tag = arrayTags[i]; if (arrayTagsColour != null && arrayTagsColour.length == arrayTags.length) { color = arrayTagsColour[i]; } ClientTextStyleVO styleVO = new ClientTextStyleVO(); styleVO.setColor(color); styleVO.setContent(tag); labels.add(styleVO); } article.setLabels(labels); } } GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); Gson gson = gsonBuilder.create(); JSONObject data = new JSONObject(); if (page == 1 && !search) { List banners = swiperPictureService.getByBannerCardAndVersion("article_banners", acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion())); if (banners == null) banners = new ArrayList<>(); data.put("banners", gson.toJson(banners)); List listSpecial = specialService.listByVersion(0, Integer.MAX_VALUE, "article_specials", acceptData.getPlatform(), Integer.parseInt(acceptData.getVersion())); if (listSpecial == null) listSpecial = new ArrayList<>(); for (Special special : listSpecial) { boolean needLogin = special.isJumpLogin(); JumpDetailV2 jumpDetail = special.getJumpDetail(); if (jumpDetail != null) { jumpDetail.setNeedLogin(needLogin); special.setJumpDetail(jumpDetail); } } data.put("specials", gson.toJson(listSpecial)); } data.put("count", articleOfficialService.countValid(key)); data.put("list", gson.toJson(list)); out.print(JsonUtil.loadTrueResult(data)); } /** * 文章搜索 * * @param acceptData * @param page * @param key * @param out */ @RequestMapping(value = "readArticle", method = RequestMethod.POST) public void readArticle(AcceptData acceptData, String id, PrintWriter out) { if (StringUtil.isNullOrEmpty(id)) { out.print(JsonUtil.loadFalseResult("id不能为空")); return; } articleOfficialService.updateReadNum(id); out.print(JsonUtil.loadTrueResult("操作成功")); } /** * 文章搜索 * * @param acceptData * @param page * @param key * @param out */ @RequestMapping(value = "searchArticle", method = RequestMethod.POST) public void searchArticle(AcceptData acceptData, Integer page, String key, PrintWriter out) { getArticleList(acceptData, page, key, true, out); } /** * 文章搜索 * * @param acceptData * @param page * @param key * @param out */ @RequestMapping(value = "getArticleHot", method = RequestMethod.POST) public void getArticleHot(AcceptData acceptData, PrintWriter out) { JSONObject data = new JSONObject(); data.put("words", configService.get(ConfigKeyEnum.articleHotWords.getKey())); out.print(JsonUtil.loadTrueResult(data)); } /** * 发圈列表 * * @param acceptData * @param page * @param out */ @RequestMapping(value = "evaluate", method = RequestMethod.POST) public void evaluate(AcceptData acceptData, Integer page, PrintWriter out) { long cid = 1; long subId = 1; List listd = dynamicInfoService.queryV2(2, 74, (page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE, cid, subId); if (listd == null) { listd = new ArrayList(); } List list = new ArrayList<>(); for (DynamicInfo info : listd) { GoodsEvaluate goodsEvaluate = new GoodsEvaluate(); goodsEvaluate.setId(info.getId()); ActivityUser user = info.getUser(); user.setTag("烧烤达人"); goodsEvaluate.setUser(user); goodsEvaluate.setTitle(info.getTitle().get(0).getContent()); goodsEvaluate.setShareNum(info.getShareCount()); goodsEvaluate.setPublishTime(info.getCreateTime()); goodsEvaluate.setLineNum(2); List imgs = info.getImgs(); List imgList = new ArrayList<>(); int i = 0; for (GoodsPicture goodsPicture : imgs) { ImgInfo imgInfo = new ImgInfo(); GoodsDetailVO goodsVO = goodsPicture.getGoodsVO(); imgInfo.setH(100); imgInfo.setW(100); if (goodsVO != null) { imgInfo.setType(ImgEnum.goods); SimpleGoods simpleGoods = new SimpleGoods(); simpleGoods.setPrice(goodsVO.getZkPrice()); simpleGoods.setAmount(new BigDecimal(115)); simpleGoods.setGoodsId(goodsVO.getGoodsId()); simpleGoods.setGoodsType(1); simpleGoods.setState(1); imgInfo.setGoods(simpleGoods); goodsEvaluate.setGoods(goodsVO); } else { imgInfo.setType(ImgEnum.img); } imgInfo.setLarge(false); imgInfo.setUrl(goodsPicture.getUrl()); imgInfo.setUrlHD(goodsPicture.getUrl()); // if (i == 0) { // imgInfo.setUrl(goodsPicture.getUrl()); // imgInfo.setType(ImgEnum.video); // imgInfo.setLarge(true); // imgInfo.setVideoUrl( // "http://pgcvideo.cdn.xiaodutv.com/754825344_367171606_2020010816001720200108174342.mp4?Cache-Control=max-age%3D8640000&responseExpires=Fri%2C+17+Apr+2020+18%3A11%3A55+GMT&xcode=0b0f3962eddaf66837d4af61a22c57bae3a5055540c75232&time=1579077845&_=1578992502888"); // } else { // imgInfo.setType(ImgEnum.img); // imgInfo.setLarge(true); // imgInfo.setUrl(goodsPicture.getUrl()); // } // i++; imgList.add(imgInfo); } goodsEvaluate.setImgList(imgList); CommentInfo commentInfo = new CommentInfo(); commentInfo.setId(info.getId() + "09"); commentInfo.setContent("😆7.9元🉐1只儿童牙刷!!安妮贝拉卡通版儿童牙⭕PBT材质,毛刷细腻柔⭕外观卡通人物造型设计"); commentInfo.setType(CommentInfoEnum.goodsCoupon); // ClientTextStyleVO text1 = new ClientTextStyleVO(); // text1.setContent("猫超"); // text1.setColor("#1D9B31"); // // ClientTextStyleVO text2 = new ClientTextStyleVO(); // text2.setContent("满150减15"); // text2.setColor("#E5005C"); // List tagList = new ArrayList<>(); // tagList.add(text1); // tagList.add(text2); // commentInfo.setTagList(tagList); // commentInfo.setTagDesc("除生鲜及部分酒水除生鲜及除生鲜及"); CommentInfo commentInfo2 = new CommentInfo(); commentInfo2.setContent("😆7.9元🉐1只儿童牙刷!!安妮贝拉卡通版儿童牙⭕PBT材质,毛刷细腻柔⭕外观卡通人物造型设计"); commentInfo2.setType(CommentInfoEnum.goodsCoupon); ClientTextStyleVO text1 = new ClientTextStyleVO(); text1.setContent("猫超"); text1.setColor("#1D9B31"); ClientTextStyleVO text2 = new ClientTextStyleVO(); text2.setContent("满150减15"); text2.setColor("#E5005C"); List tagList = new ArrayList<>(); tagList.add(text1); tagList.add(text2); commentInfo2.setTagList(tagList); commentInfo2.setTagDesc("除生鲜及部分酒水除生鲜及除生鲜及"); commentInfo.setTagUrl("http://www.baidu.com"); List commentList = new ArrayList<>(); commentList.add(commentInfo); commentList.add(commentInfo2); goodsEvaluate.setComments(commentList); list.add(goodsEvaluate); } // List list = goodsEvaluateService.queryValidEvaluateCache((page - 1) * Constant.PAGE_SIZE, Constant.PAGE_SIZE); // if (list == null) { // list = new ArrayList<>(); // } GsonBuilder gsonBuilder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); gsonBuilder.registerTypeAdapter(CommentInfoEnum.class, new JsonSerializer() { @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() { @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() { @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(); long count = dynamicInfoService.count(cid, subId); // goodsEvaluateService.countValid() JSONObject data = new JSONObject(); data.put("count", count); data.put("list", gson.toJson(list)); out.print(JsonUtil.loadTrueResult(data)); } @RequestMapping(value = "evaluateShare", method = RequestMethod.POST) public void evaluateShare(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; } List imgs = dynamicInfo.getImgs(); if (imgs == null) { out.print(JsonUtil.loadFalseResult("该图片内容已不存在")); return; } int total = 0; for (GoodsPicture goodsPicture : imgs) { GoodsDetailVO goodsVO = goodsPicture.getGoodsVO(); if (goodsVO != null) { total ++; } } List list = new ArrayList<>(); for (GoodsPicture goodsPicture : imgs) { GoodsDetailVO goodsVO = goodsPicture.getGoodsVO(); if (goodsVO == null && total <= 1) { list.add(goodsPicture.getUrl()); continue; } if (type == 1) { if (goodsVO.getGoodsId().longValue() == goodsId.longValue() && goodsVO.getGoodsType() == goodsType.intValue()) { String jumpLink = getJumpLink(goodsVO, user); if (!StringUtil.isNullOrEmpty(jumpLink)) { list.add(jumpLink); } } } else { String jumpLink = getJumpLink(goodsVO, user); 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)); } private String getJumpLink(GoodsDetailVO goodsVO, UserInfo user) { 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; } } else if (goodsVO.getGoodsType() == Constant.SOURCE_TYPE_JD) { JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(goodsVO.getGoodsId()); if (jdGoods == null ) { return null; } String couponUrl = null; JDCouponInfo couponInfo = JDUtil.getShowCouponInfo(jdGoods); if (couponInfo != null) { couponUrl = couponInfo.getLink(); } String materialId = "https://item.jd.com/" + goodsVO.getGoodsId() + ".html"; jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_SHARE + "", user.getId() + ""); } else if (goodsVO.getGoodsType() == Constant.SOURCE_TYPE_PDD) { jumpLink = PinDuoDuoApiUtil.getPromotionUrl(goodsVO.getGoodsId(), PinDuoDuoApiUtil.PID_SHARE + "", user.getId() + ""); } FileUploadResult uploadResult = qrCodeService.drawGoodsPoster(jumpLink, user.getPortrait(), goodsVO); if (uploadResult != null) { return uploadResult.getUrl(); } return null; } /** * 评论复制 * @param acceptData * @param id * @param cid 评论id * @param out */ @RequestMapping(value = "evaluateComment", method = RequestMethod.POST) public void evaluateComment(AcceptData acceptData, Long uid, String id, String cid, PrintWriter out) { if (StringUtil.isNullOrEmpty(id)) { out.print(JsonUtil.loadFalseResult("id不能为空")); 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; } JSONObject data = new JSONObject(); data.put("text", "安妮贝拉卡通版儿拉卡通版拉卡通版拉卡通版拉卡通版拉卡通版拉卡通版拉卡通版"); out.print(JsonUtil.loadTrueResult(data)); } }