fanli/src/main/java/com/yeshi/fanli/controller/admin/GoodsEvaluateAdminController.java
@@ -24,6 +24,7 @@ import com.yeshi.fanli.entity.dynamic.GoodsEvaluate; import com.yeshi.fanli.entity.dynamic.ImgInfo; import com.yeshi.fanli.entity.dynamic.ImgInfo.ImgEnum; import com.yeshi.fanli.entity.dynamic.ListComment; import com.yeshi.fanli.entity.goods.CommonGoods; import com.yeshi.fanli.entity.jd.JDGoods; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; @@ -41,8 +42,6 @@ import com.yeshi.fanli.util.cache.JDGoodsCacheUtil; import com.yeshi.fanli.util.cache.PinDuoDuoCacheUtil; import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory; import com.yeshi.fanli.util.jd.JDApiUtil; import com.yeshi.fanli.util.jd.JDUtil; import com.yeshi.fanli.vo.goods.GoodsDetailVO; import net.sf.json.JSONObject; @@ -152,14 +151,14 @@ * 保存信息 * * @param callback * @param special * 0a39676f138c4dcba722e321d43c4284 * @param pid * @param kind : 1单品 2多品 3活动 * @param out */ @RequestMapping(value = "saveSingleGoodsCoupon") public void saveSingleGoodsCoupon(String callback, String pid, CommentInfo commentInfo, PrintWriter out) { @RequestMapping(value = "saveCurrencyCoupon") public void saveCurrencyCoupon(String callback, String pid, int kind, CommentInfo commentInfo, PrintWriter out) { try { goodsEvaluateService.saveSingleGoodsCoupon(pid, commentInfo); goodsEvaluateService.saveCurrencyCoupon(pid, kind,commentInfo); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("保存成功")); } catch (GoodsEvaluateException e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg())); @@ -304,8 +303,75 @@ } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("保存失败")); e.printStackTrace(); LogHelper.errorDetailInfo(e); LogHelper.test(e); } } /** * * @param callback * @param comments * @param out */ @RequestMapping(value = "saveGoodsComment") public void saveGoodsComment(String callback, String id, int kind, ListComment comments, PrintWriter out) { try { if (StringUtil.isNullOrEmpty(id)) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请先保存推荐语信息")); return; } if (comments == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("文本内容为空")); return; } goodsEvaluateService.saveGoodsComment(id, kind, comments.getComment()); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("成功")); } catch (GoodsEvaluateException e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg())); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("保存失败")); e.printStackTrace(); } } /** * * @param callback * @param comments * @param out */ @RequestMapping(value = "getGoodsComment") public void getGoodsComment(String callback, String id, PrintWriter out) { try { if (StringUtil.isNullOrEmpty(id)) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("请先保存推荐语信息")); return; } List<CommentInfo> newList = new ArrayList<>(); GoodsEvaluate goodsEvaluate = goodsEvaluateService.getById(id); if (goodsEvaluate != null) { List<CommentInfo> comments = goodsEvaluate.getComments(); if (comments != null && comments.size() > 0) { for (CommentInfo commentInfo: comments) { CommentInfoEnum typeEnum = commentInfo.getTypeEnum(); if (typeEnum == CommentInfoEnum.goodsCoupon) { newList.add(commentInfo); } } } } JSONObject data = new JSONObject(); data.put("list", newList); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(data)); } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("保存失败")); e.printStackTrace(); } } /** * 获取多个商品信息 @@ -442,6 +508,7 @@ JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("保存失败")); e.printStackTrace(); LogHelper.errorDetailInfo(e); LogHelper.test(e); } } @@ -691,6 +758,20 @@ if (commonGoods.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) { try { TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(commonGoods.getGoodsId()); String pictUrlWhite = goodsBrief.getPictUrlWhite(); if (!StringUtil.isNullOrEmpty(pictUrlWhite)) { goodsBrief.setPictUrl(pictUrlWhite); List<String> picList = new ArrayList<>(); picList.add(pictUrlWhite); List<String> imgList = goodsBrief.getImgList(); if (imgList != null) { picList.addAll(imgList); } goodsBrief.setImgList(picList); } goodsDetail = GoodsDetailVOFactory.convertTaoBao(goodsBrief, params); } catch (TaobaoGoodsDownException e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("该商品已下架")); fanli/src/main/java/com/yeshi/fanli/controller/client/v2/DynamicControllerV2.java
@@ -128,6 +128,11 @@ @Resource private ConvertLinkManager convertLinkManager; @Resource private ShareGoodsService shareGoodsService; private final static long TYPE_REXIAO = 1;// 热销 private final static long TYPE_TUIJIAN = 2;// 推荐 @@ -719,115 +724,65 @@ @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; } GoodsEvaluate goodsEvaluate = goodsEvaluateService.getById(id); if (goodsEvaluate == 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<ImgInfo> imgs = goodsEvaluate.getImgList(); if (imgs == null) { out.print(JsonUtil.loadFalseResult("该图片内容已不存在")); return; } List<String> list = new ArrayList<>(); Integer dynamicType = goodsEvaluate.getDynamicType(); if (dynamicType == null || dynamicType.intValue() == 2) { 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()); } try { if (uid == null) { out.print(JsonUtil.loadFalseResult("用户未登录")); return; } } 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); } } if (StringUtil.isNullOrEmpty(id) || type == null) { out.print(JsonUtil.loadFalseResult("传递参数不能为空")); return; } } 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); } } } } if (type == 1 && (goodsId == null || goodsType == null)) { out.print(JsonUtil.loadFalseResult("商品参数不能为空")); return; } } else if (goodsEvaluate.getType() == EvaluateEnum.activity) { GoodsEvaluate goodsEvaluate = goodsEvaluateService.getById(id); if (goodsEvaluate == 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<ImgInfo> imgs = goodsEvaluate.getImgList(); if (imgs == null) { out.print(JsonUtil.loadFalseResult("该图片内容已不存在")); return; } List<String> list = new ArrayList<>(); Integer dynamicType = goodsEvaluate.getDynamicType(); if (dynamicType == null || dynamicType.intValue() == 2) { for (ImgInfo imgInfo : imgs) { if (imgInfo.getType() == ImgEnum.goods || imgInfo.getType() == ImgEnum.video) continue; @@ -838,33 +793,89 @@ list.add(imgInfo.getActivityPic()); } } } else { // 单品 if (goodsEvaluate.getType() == EvaluateEnum.single) { for (ImgInfo imgInfo : imgs) { if ( type == 3 && imgInfo.getType() == ImgEnum.video) continue; 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()); } } } } } Integer shareCount = goodsEvaluate.getShareNum(); if (shareCount == null) { shareCount = 0; } Integer shareCount = goodsEvaluate.getShareNum(); if (shareCount == null) { shareCount = 0; } if (type == 3) { shareCount++; goodsEvaluateService.addShareNum(id); } if (type == 3) { shareCount++; goodsEvaluateService.addShareNum(id); } if (list.size() == 0) { out.print(JsonUtil.loadFalseResult("该信息已下架")); 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)); } catch (Exception e) { out.print(JsonUtil.loadFalseResult("分享图生成失败")); return; } JSONObject data = new JSONObject(); data.put("count", shareCount); data.put("list", list); out.print(JsonUtil.loadTrueResult(data)); } @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) { fanli/src/main/java/com/yeshi/fanli/entity/dynamic/ImgInfo.java
@@ -60,6 +60,7 @@ private GoodsDetailVO goodsVO; private String activityPic; @Expose private String activityUrl; public ImgEnum getType() { fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java
@@ -43,6 +43,7 @@ import com.yeshi.fanli.entity.taobao.TaoBaoLink; import com.yeshi.fanli.exception.dynamic.ActivityUserException; import com.yeshi.fanli.exception.dynamic.GoodsEvaluateException; import com.yeshi.fanli.exception.goods.ConvertLinkExceptionException; import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; import com.yeshi.fanli.log.LogHelper; import com.yeshi.fanli.service.inter.activity.ActivityUserService; @@ -57,6 +58,7 @@ import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.cache.JDGoodsCacheUtil; import com.yeshi.fanli.util.cache.PinDuoDuoCacheUtil; import com.yeshi.fanli.util.cache.TaoBaoGoodsCacheUtil; import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory; import com.yeshi.fanli.util.jd.JDApiUtil; import com.yeshi.fanli.util.jd.JDUtil; @@ -83,6 +85,7 @@ @Resource(name = "taskExecutor") private TaskExecutor executor; @Resource private JDGoodsCacheUtil jdGoodsCacheUtil; @@ -123,11 +126,10 @@ } if (record.getEndTime() != null) { if (record.getEndTime().getTime() <= java.lang.System.currentTimeMillis()) throw new GoodsEvaluateException(1, "截止时间必须大于当前时间"); if (record.getStartTime() != null && record.getEndTime().getTime() <= record.getStartTime().getTime()) throw new GoodsEvaluateException(1, "截止时间必须大于开始时间"); } else { record.setEndTime(DateUtil.plusDayDate(3,new Date())); } Integer dynamicType = record.getDynamicType(); @@ -135,8 +137,9 @@ record.setDynamicType(1); } if (record.getShareNum() == null) record.setShareNum(0); if (record.getShareNum() == null || record.getShareNum() <=0 ) { record.setShareNum((int)(Math.random()*5000)+1000); } if (record.getWeight() == null) record.setWeight(0.0); @@ -334,9 +337,10 @@ throw new GoodsEvaluateException(1, "该商品信息不存在"); } List<ImgInfo> tempList = new ArrayList<ImgInfo>(); int totalImg = 0; if (listpic != null && listpic.size() > 0) { for (int i = 0; i < listpic.size(); i++) { for (int i = 0; i < listpic.size() && i < 9; i++) { ImgInfo imgInfo0 = new ImgInfo(); imgInfo0.setId(UUID.randomUUID().toString().replace("-", "")); imgInfo0.setW(1); @@ -361,12 +365,17 @@ } imgInfo0.setGoods(simpleGoods); imgInfo0.setGoodsVO(goodsDetailVO); listImg.add(imgInfo0); } else { imgInfo0.setType(ImgEnum.img); tempList.add(imgInfo0); } listImg.add(imgInfo0); totalImg++; } } if (tempList.size() > 0) { listImg.addAll(tempList); } if (listOld != null && listOld.size() > 0) { @@ -403,7 +412,7 @@ boolean addComment = true; List<CommentInfo> commentsNew = new ArrayList<>(); List<CommentInfo> comments = resultObj.getComments(); if (comments != null) { if (comments != null && comments.size() > 0) { for (CommentInfo commentInfo: comments) { if (commentInfo.getTypeEnum() == CommentInfoEnum.goodsCoupon) { if (oldGoodsVO != null && oldGoodsVO.getGoodsId().longValue() == goodsId.longValue() @@ -416,11 +425,10 @@ } } CouponInfoVO couponInfo1 = goodsDetailVO.getCouponInfo(); if (couponInfo1 == null) { addComment = false; } /* * // 无券不能自动 生成评论 CouponInfoVO couponInfo1 = goodsDetailVO.getCouponInfo(); if * (couponInfo1 == null) { addComment = false; } */ if (addComment) { @@ -475,6 +483,42 @@ } } private String createTokenAndLink(GoodsDetailVO goodsDetailVO) throws Exception { String commentText = ""; if (goodsDetailVO.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) { TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(1L, goodsDetailVO.getGoodsId(), "0"); String template = configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey()); commentText = template.replace("[淘口令]", TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken())); } else if (goodsDetailVO.getGoodsType() == Constant.SOURCE_TYPE_JD) { String couponUrl = null; JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(goodsDetailVO.getGoodsId()); JDCouponInfo couponInfo = JDUtil.getShowCouponInfo(jdGoods); if (couponInfo != null) { couponUrl = couponInfo.getLink(); } String materialId = "https://item.jd.com/" + goodsDetailVO.getGoodsId() + ".html"; String jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, JDApiUtil.POSITION_SHARE + "","1"); String template = configService.get(ConfigKeyEnum.quickShareJDCommentText.getKey()); commentText = template.replace("[链接]", jumpLink); } else if (goodsDetailVO.getGoodsType() == Constant.SOURCE_TYPE_PDD) { String jumpLink = PinDuoDuoApiUtil.getPromotionUrl(goodsDetailVO.getGoodsId(), PinDuoDuoApiUtil.PID_SHARE + "", "1"); String template = configService.get(ConfigKeyEnum.quickSharePDDCommentText.getKey()); commentText = template.replace("[链接]", jumpLink); } commentText = commentText.replace("[原价]", goodsDetailVO.getZkPrice().toString()); if (!goodsDetailVO.isHasCoupon()) { commentText = commentText.replace("领券抢购", "抢购"); commentText = commentText.replace("【券后价】[券后价]元", ""); } else { commentText = commentText.replace("[券后价]", goodsDetailVO.getCouponPrice().toString()); } return commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n"); } public GoodsDetailVO getGoodsDetailVO(Long goodsId, Integer goodsType) throws GoodsEvaluateException { GoodsDetailVO goodsDetail = null; BigDecimal fanLiRate = hongBaoManageService.getFanLiRate(); @@ -484,6 +528,10 @@ if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { try { TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(goodsId); String pictUrlWhite = goodsBrief.getPictUrlWhite(); if (!StringUtil.isNullOrEmpty(pictUrlWhite)) { goodsBrief.setPictUrl(pictUrlWhite); } goodsDetail = GoodsDetailVOFactory.convertTaoBao(goodsBrief, params); } catch (TaobaoGoodsDownException e) { throw new GoodsEvaluateException(1, "商品已下架"); @@ -592,6 +640,7 @@ } String picUrl = goodsDetailVO.getPicUrl(); if (fileRequest != null) { MultipartFile file = fileRequest.getFile("file" + i); if (file != null) { @@ -694,6 +743,68 @@ } } @Override public void saveGoodsComment(String id, int kind, List<CommentInfo> comments) throws GoodsEvaluateException, Exception { if (comments == null || comments.size() == 0 ) { throw new GoodsEvaluateException(1, "内容不能为空"); } GoodsEvaluate resultObj = goodsEvaluateDao.getById(id); if (resultObj == null) throw new GoodsEvaluateException(1, "第一部分信息缺失"); GoodsDetailVO goods = resultObj.getGoods(); if(kind == 1 && goods == null) { throw new GoodsEvaluateException(1, "请先录入商品信息"); } CommentInfo currencyCoupon = null; List<CommentInfo> oldComments = resultObj.getComments(); if (oldComments != null) { for (int i =0;i < oldComments.size(); i ++) { CommentInfo info = oldComments.get(i); if (CommentInfoEnum.currencyCoupon == info.getTypeEnum()) { currencyCoupon = info; continue; } } } List<CommentInfo> newList = new ArrayList<>(); for (int i =0;i < comments.size(); i ++) { CommentInfo commentInfo = comments.get(i); String content = commentInfo.getContent(); if (StringUtil.isNullOrEmpty(content)) { if (i == 0 && kind == 1) { content = createTokenAndLink(goods); } else { continue; } } else if (i == 0 && kind == 1) { try { convertLinkManager.convertLinkFromText(content, Constant.LINK_TOKEN_VERIFY_UID, true); } catch (Exception e) { throw new GoodsEvaluateException(1, "不包含可转链的口令与链接"); } } if (StringUtil.isNullOrEmpty(commentInfo.getId())) { commentInfo.setId(UUID.randomUUID().toString().replace("-", "")); } commentInfo.setType(commentInfo.getTags()); commentInfo.setTypeEnum(CommentInfoEnum.goodsCoupon); newList.add(commentInfo); } if (currencyCoupon != null) { comments.add(currencyCoupon); } resultObj.setComments(comments); goodsEvaluateDao.save(resultObj); } @Override public void saveGoodsCoupon(String pid, String content) throws GoodsEvaluateException, Exception { if (StringUtil.isNullOrEmpty(pid)) { @@ -719,6 +830,15 @@ List<CommentInfo> comments = new ArrayList<>(); if (!StringUtil.isNullOrEmpty(content)) { if(!StringUtil.isNullOrEmpty(content)) { try { convertLinkManager.convertLinkFromText(content, 1L, true); } catch (Exception e) { throw new GoodsEvaluateException(1, "不包含可转链的口令与链接"); } } CommentInfo commentInfo = new CommentInfo(); if (goodsCoupon != null) { commentInfo.setId(goodsCoupon.getId()); @@ -726,7 +846,7 @@ commentInfo.setId(UUID.randomUUID().toString().replace("-", "")); } commentInfo.setContent(content); commentInfo.setType(CommentInfoEnum.goodsCoupon.getDesc()); commentInfo.setType(commentInfo.getTags()); commentInfo.setTypeEnum(CommentInfoEnum.goodsCoupon); comments.add(commentInfo); } @@ -740,7 +860,7 @@ } @Override public void saveSingleGoodsCoupon(String pid, CommentInfo commentInfo) throws GoodsEvaluateException, Exception { public void saveCurrencyCoupon(String pid, int kind, CommentInfo commentInfo) throws GoodsEvaluateException, Exception { if (StringUtil.isNullOrEmpty(pid)) { throw new GoodsEvaluateException(1, "请保存第一部分信息"); } @@ -752,7 +872,6 @@ if (StringUtil.isNullOrEmpty(commentInfo.getTagDesc())) { throw new GoodsEvaluateException(1, "描述语不能为空"); } String tagUrl = commentInfo.getTagUrl(); String content = commentInfo.getContent(); @@ -772,11 +891,15 @@ throw new GoodsEvaluateException(1, "请填写券截止时间"); } if(!StringUtil.isNullOrEmpty(content)) { if(!StringUtil.isNullOrEmpty(content) && kind != 3) { // 活动不验证 try { convertLinkManager.convertLinkFromText(content, 1L, true); convertLinkManager.convertLinkFromText(content, Constant.LINK_TOKEN_VERIFY_UID, true); } catch (ConvertLinkExceptionException e) { if (ConvertLinkExceptionException.CODE_NONE != e.getCode()) { throw new GoodsEvaluateException(1, "包含不可转链的口令与链接"); } } catch (Exception e) { throw new GoodsEvaluateException(1, "转链失败"); throw new GoodsEvaluateException(1, "包含不可转链的口令与链接"); } } @@ -784,22 +907,17 @@ if (resultObj == null) throw new GoodsEvaluateException(1, "第一部分信息缺失"); CommentInfo goodsCoupon = null; List<CommentInfo> comments = new ArrayList<>(); CommentInfo currencyCoupon = null; List<CommentInfo> oldComments = resultObj.getComments(); if (oldComments != null) { for (CommentInfo info : oldComments) { if (CommentInfoEnum.goodsCoupon == info.getTypeEnum()) { goodsCoupon = info; comments.add(info); } else if (CommentInfoEnum.currencyCoupon == info.getTypeEnum()) { currencyCoupon = info; } } } List<CommentInfo> comments = new ArrayList<>(); if (goodsCoupon != null) { comments.add(goodsCoupon); } if (commentInfo != null) { @@ -810,12 +928,7 @@ } // 券类型 String tags = commentInfo.getTags(); if (StringUtil.isNullOrEmpty(tags)) { commentInfo.setType(CommentInfoEnum.currencyCoupon.getDesc()); } else { commentInfo.setType(tags); } commentInfo.setType(commentInfo.getTags()); commentInfo.setTypeEnum(CommentInfoEnum.currencyCoupon); // 标签信息 @@ -840,7 +953,6 @@ } resultObj.setComments(comments); goodsEvaluateDao.save(resultObj); } @@ -1301,7 +1413,7 @@ } @Override // @Cacheable(value = "dynamicCache", key = "'queryMaterialsCache-'+#start+'-'+#type") @Cacheable(value = "dynamicCache", key = "'queryMaterialsCache-'+#start+'-'+#type") public List<GoodsEvaluate> queryMaterialsCache(int start, int count, int type) throws Exception { List<GoodsEvaluate> list = goodsEvaluateDao.queryValid(start, count, type); @@ -1320,24 +1432,15 @@ Date now = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); for (GoodsEvaluate goodsEvaluate: list) { int comment = 0; List<CommentInfo> comments = goodsEvaluate.getComments(); if (comments != null) { if (comments != null && comments.size() > 0) { EvaluateEnum typeEnum = goodsEvaluate.getType(); List<CommentInfo> commentNew = new ArrayList<>(); for (CommentInfo commentInfo: comments) { String typeCoupon = commentInfo.getType(); if (StringUtil.isNullOrEmpty(typeCoupon)) { if (commentInfo.getTypeEnum() == null) { commentInfo.setType(""); } else { commentInfo.setType(commentInfo.getTypeEnum().getDesc()); } } else if (typeCoupon.equals(CommentInfoEnum.goodsCoupon.name())) { commentInfo.setType("商品优惠券"); } else if (typeCoupon.equals(CommentInfoEnum.currencyCoupon.name())) { commentInfo.setType("通用优惠券"); } comment ++; CommentInfoEnum typeComment = commentInfo.getTypeEnum(); if (typeComment != null && typeComment ==CommentInfoEnum.goodsCoupon) { @@ -1353,33 +1456,32 @@ if (!StringUtil.isNullOrEmpty(coupon) && !StringUtil.isNullOrEmpty(endTime)) { Date endDay = sdf.parse(endTime); if (endDay.getTime() > now.getTime()) { int daysBetween = DateUtil.daysBetween(endDay, now); int daysBetween = DateUtil.daysBetween(now, endDay); if (daysBetween > 0) { ClientTextStyleVO styleVO = new ClientTextStyleVO(); styleVO.setColor("#E5005C"); styleVO.setContent(daysBetween + "天后过期"); styleVO.setContent(coupon); List<ClientTextStyleVO> tagList = commentInfo.getTagList(); tagList.add(styleVO); commentInfo.setTagList(tagList); if (typeEnum != null && typeEnum == EvaluateEnum.single) { //新增 commentNew.add(commentInfo); } commentNew.add(commentInfo); continue; } } } commentNew.add(commentInfo); } goodsEvaluate.setComments(commentNew); if (typeEnum != null && typeEnum == EvaluateEnum.single) { if (commentNew.size() == 0) { if (comment > 0 && commentNew.size() == 0) { // 所有券评论下架 GoodsDetailVO goods = goodsEvaluate.getGoods(); if (goods != null) { goods.setState(1); // 评论不存在 下架 LogHelper.test("获取列表商品下架1"); } List<ImgInfo> imgList = goodsEvaluate.getImgList(); @@ -1388,6 +1490,7 @@ SimpleGoods simpleGoods = imgInfo.getGoods(); if (simpleGoods != null) { simpleGoods.setState(1); LogHelper.test("获取列表商品下架2"); } } @@ -1450,7 +1553,7 @@ if (!StringUtil.isNullOrEmpty(endTime)) { Date endDay = sdf.parse(endTime); if (endDay.getTime() < now.getTime()) { goodsEvaluate.setState(1); // 活动过期 goodsEvaluate.setState(0); // 活动过期 } } } @@ -1486,6 +1589,7 @@ paramsDTO); if (goodsDetailVO != null) { simpleGoods.setPrice(goodsDetailVO.getCouponPrice()); simpleGoods.setState(0); CouponInfoVO couponInfo = goodsDetailVO.getCouponInfo(); if (couponInfo == null) { simpleGoods.setPrice(goodsDetailVO.getZkPrice()); @@ -1517,7 +1621,16 @@ private GoodsDetailVO getGoodsNewInfo(Long goodsId, int goodsType, ConfigParamsDTO paramsDTO) { GoodsDetailVO vo = null; if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { TaoBaoGoodsBrief goods; try { goods = redisManager.getTaoBaoGoodsBrief(goodsId); if (goods != null) { vo = GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO); } } catch (TaobaoGoodsDownException e) { e.printStackTrace(); } } else if (goodsType == Constant.SOURCE_TYPE_JD) { JDGoods goodsInfo = jdGoodsCacheUtil.getGoodsInfo(goodsId); if (goodsInfo != null) { @@ -1533,6 +1646,14 @@ @Override public void addGoodsEvaluateByDynamicInfo(DynamicInfo info) { if (1 > 0) { return; // 暂不启用自动生成 } if (info == null) { return; } try { GoodsEvaluate goodsEvaluate = new GoodsEvaluate(); goodsEvaluate.setId(UUID.randomUUID().toString().replace("-", "")); @@ -1584,32 +1705,33 @@ } else { simpleGoods.setPrice(goodsVO.getCouponPrice()); simpleGoods.setAmount(couponInfo.getAmount()); TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(1L, goodsVO.getGoodsId(), null); String template = configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey()); String commentText = template.replace("[淘口令]", TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken())); commentText = commentText.replace("[原价]", goodsVO.getZkPrice().toString()); if (!goodsVO.isHasCoupon()) { commentText = commentText.replace("领券抢购", "抢购"); commentText = commentText.replace("【券后价】[券后价]元", ""); } else { commentText = commentText.replace("[券后价]", goodsVO.getCouponPrice().toString()); } commentText =commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n"); CommentInfo commentInfo = new CommentInfo(); commentInfo.setId(UUID.randomUUID().toString().replace("-", "")); commentInfo.setContent(commentText); commentInfo.setTypeEnum(CommentInfoEnum.goodsCoupon); commentInfo.setType(CommentInfoEnum.goodsCoupon.getDesc()); List<CommentInfo> commentsNew = new ArrayList<>(); commentsNew.add(commentInfo); goodsEvaluate.setComments(commentsNew); } imgInfo.setGoods(simpleGoods); TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(1L, goodsVO.getGoodsId(), null); String template = configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey()); String commentText = template.replace("[淘口令]", TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken())); commentText = commentText.replace("[原价]", goodsVO.getZkPrice().toString()); if (!goodsVO.isHasCoupon()) { commentText = commentText.replace("领券抢购", "抢购"); commentText = commentText.replace("【券后价】[券后价]元", ""); } else { commentText = commentText.replace("[券后价]", goodsVO.getCouponPrice().toString()); } commentText =commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n"); CommentInfo commentInfo = new CommentInfo(); commentInfo.setId(UUID.randomUUID().toString().replace("-", "")); commentInfo.setContent(commentText); commentInfo.setTypeEnum(CommentInfoEnum.goodsCoupon); commentInfo.setType(CommentInfoEnum.goodsCoupon.getDesc()); List<CommentInfo> commentsNew = new ArrayList<>(); commentsNew.add(commentInfo); goodsEvaluate.setComments(commentsNew); goodsEvaluate.setGoods(goodsVO); } fanli/src/main/java/com/yeshi/fanli/service/inter/dynamic/GoodsEvaluateService.java
@@ -85,7 +85,7 @@ * @throws GoodsEvaluateException * @throws Exception */ public void saveSingleGoodsCoupon(String pid, CommentInfo commentInfo) throws GoodsEvaluateException, Exception; public void saveCurrencyCoupon(String pid, int kind, CommentInfo commentInfo) throws GoodsEvaluateException, Exception; public void saveActivityPic(String pid, ImgInfo imgInfo, MultipartHttpServletRequest fileRequest) @@ -138,4 +138,7 @@ public void addGoodsEvaluateByDynamicInfo(DynamicInfo info); public void saveGoodsComment(String id, int kind, List<CommentInfo> comments) throws GoodsEvaluateException, Exception; } fanli/src/main/java/com/yeshi/fanli/util/Constant.java
@@ -25,6 +25,10 @@ public static boolean IS_TEST = true; public static int PAGE_SIZE = 20; // 验证文本口令或链接uid public static Long LINK_TOKEN_VERIFY_UID = 437032L; public static String YINGYONGBAO_LINK = "https://w.url.cn/s/AHUuT7i"; fanli/src/main/java/com/yeshi/fanli/util/ImageUtil.java
@@ -379,10 +379,12 @@ InputStream ziying = null; if (goods.getShopType() == 21) { ziying = ImageUtil.class.getClassLoader().getResourceAsStream("image/icon_ziying.png"); g2d.drawImage(ImageIO.read(ziying), baoYouLength, y + 150, 60, 30, null); } else if (goods.isBaoyou()) { ziying = ImageUtil.class.getClassLoader().getResourceAsStream("image/icon_baoyou.png"); g2d.drawImage(ImageIO.read(ziying), baoYouLength, y + 150, 60, 30, null); } g2d.drawImage(ImageIO.read(ziying), baoYouLength, y + 150, 60, 30, null); // 销量 String sale = null;