From d8fc4263dad4bf8112a9146dd8afbaceb6d4ea10 Mon Sep 17 00:00:00 2001 From: yj <Administrator@192> Date: 星期一, 09 三月 2020 22:28:48 +0800 Subject: [PATCH] 自动发圈 --- fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java | 300 ++++++++++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 241 insertions(+), 59 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java index 9094646..c252c6d 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java @@ -31,6 +31,7 @@ import com.yeshi.fanli.dto.jd.JDCouponInfo; import com.yeshi.fanli.dto.pdd.PDDGoodsDetail; import com.yeshi.fanli.entity.bus.activity.ActivityUser; +import com.yeshi.fanli.entity.bus.clazz.GoodsClass; import com.yeshi.fanli.entity.dynamic.CommentInfo; import com.yeshi.fanli.entity.dynamic.CommentInfo.CommentInfoEnum; import com.yeshi.fanli.entity.dynamic.DynamicInfo; @@ -60,6 +61,7 @@ import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.FilePathEnum; import com.yeshi.fanli.util.FileUtil; +import com.yeshi.fanli.util.MoneyBigDecimalUtil; import com.yeshi.fanli.util.RedisManager; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.cache.JDGoodsCacheUtil; @@ -107,11 +109,9 @@ @Resource private ConvertLinkManager convertLinkManager; - + @Resource private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service; - - @Override public String saveHead(MultipartFile file, GoodsEvaluate record) throws GoodsEvaluateException { @@ -469,9 +469,8 @@ } /* - * // 鏃犲埜涓嶈兘鑷姩 鐢熸垚璇勮 CouponInfoVO couponInfo1 = - * goodsDetailVO.getCouponInfo(); if (couponInfo1 == null) { addComment - * = false; } + * // 鏃犲埜涓嶈兘鑷姩 鐢熸垚璇勮 CouponInfoVO couponInfo1 = goodsDetailVO.getCouponInfo(); if + * (couponInfo1 == null) { addComment = false; } */ String commentText = ""; @@ -497,12 +496,12 @@ commentText = template.replace("[閾炬帴]", jumpLink); } - commentText = commentText.replace("[鍘熶环]", goodsDetailVO.getZkPrice().toString()); + commentText = commentText.replace("[鍘熶环]", MoneyBigDecimalUtil.getWithNoZera(goodsDetailVO.getZkPrice())+""); if (!goodsDetailVO.isHasCoupon()) { commentText = commentText.replace("棰嗗埜鎶㈣喘", "鎶㈣喘"); commentText = commentText.replace("銆愬埜鍚庝环銆慬鍒稿悗浠穄鍏�", ""); } else { - commentText = commentText.replace("[鍒稿悗浠穄", goodsDetailVO.getCouponPrice().toString()); + commentText = commentText.replace("[鍒稿悗浠穄", MoneyBigDecimalUtil.getWithNoZera(goodsDetailVO.getCouponPrice())+""); } commentText = commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", @@ -525,7 +524,7 @@ } } } - + return commentText; } @@ -1046,8 +1045,8 @@ if (info == null) throw new GoodsEvaluateException(2, "瑙嗛鍥剧墖涓婁紶澶辫触"); videoPic = info.getUrl(); - width=info.getW(); - height=info.getH(); + width = info.getW(); + height = info.getH(); } MultipartFile activityfile = fileRequest.getFile("activityfile"); @@ -1111,9 +1110,9 @@ imgactivity.setH(imgactivity.getH()); } listImg.add(imgactivity); - totalImg ++; + totalImg++; } - + int lineNum = 0; if (totalImg > 0) { if (totalImg == 1) { @@ -1266,7 +1265,7 @@ imgInfo0.setW(1); imgInfo0.setH(1); listImg.add(imgInfo0); - totalImg ++; + totalImg++; continue; } } @@ -1277,7 +1276,7 @@ String url = imgInfo.getUrl(); if (picLink.equals(url)) { listImg.add(imgInfo); - totalImg ++; + totalImg++; break; } } @@ -1301,7 +1300,7 @@ listDel.add(listOld.get(j)); } } - + int lineNum = 0; if (totalImg > 0) { if (totalImg == 1) { @@ -1518,11 +1517,11 @@ List<CommentInfo> commentNew = new ArrayList<>(); for (CommentInfo commentInfo : comments) { - if (StringUtil.isNullOrEmpty(commentInfo.getContent()) && - StringUtil.isNullOrEmpty(commentInfo.getCoupon())) { + if (StringUtil.isNullOrEmpty(commentInfo.getContent()) + && StringUtil.isNullOrEmpty(commentInfo.getCoupon())) { continue; } - + CommentInfo commentInfoNew = new CommentInfo(); try { PropertyUtils.copyProperties(commentInfoNew, commentInfo); @@ -1530,7 +1529,7 @@ e.printStackTrace(); continue; } - + comment++; CommentInfoEnum typeComment = commentInfoNew.getTypeEnum(); if (typeComment != null && typeComment == CommentInfoEnum.goodsCoupon) { @@ -1553,7 +1552,7 @@ if (tagList != null) { tagListNew.addAll(tagList); } - + ClientTextStyleVO styleVO = new ClientTextStyleVO(); styleVO.setColor("#E5005C"); styleVO.setContent(daysBetween + "鍚庤繃鏈�"); @@ -1813,7 +1812,7 @@ imgInfo.setGoods(simpleGoods); TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(1L, goodsVO.getGoodsId(), "0"); - + // TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(Constant.LINK_TOKEN_VERIFY_UID, goodsVO.getGoodsId(), null); String template = configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey()); String commentText = template.replace("[娣樺彛浠", TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken())); @@ -1850,21 +1849,49 @@ } } - @Override public void addGoodsEvaluateByDaTaoKe() { - try { - List<DaTaoKeDetailV2> list = daTaoKeGoodsDetailV2Service.getGoodsNotInList(1L, null, 1); - if (list == null || list.size() == 0) { - return; + List<Long> listId = null; + List<GoodsEvaluate> listExist = goodsEvaluateDao.querySingleExist(); + if (listExist != null && listExist.size() > 0) { + listId = new ArrayList<Long>(); + for (GoodsEvaluate goodsEvaluate : listExist) { + GoodsDetailVO goods = goodsEvaluate.getGoods(); + if (goods != null && goods.getGoodsType() == 1) { + listId.add(goods.getGoodsId()); + } } - - DaTaoKeDetailV2 daTaoKe = list.get(0); + } + // 鐑攢鍗曞搧鐨勫垎绫� + List<GoodsClass> listClass = DaTaoKeUtil.goodsClasses; + int ci = (int) (Math.random() * listClass.size()); + Long subId = listClass.get(ci).getId(); + + List<DaTaoKeDetailV2> list = daTaoKeGoodsDetailV2Service.getGoodsNotInList(subId, listId, 1); + if (list == null || list.size() == 0) { + return; + } + + for (int i = 0; i < list.size(); i++) { + boolean cerateGoods = cerateGoods(list.get(i)); + if (cerateGoods) { + break; + } + } + } + + private boolean cerateGoods(DaTaoKeDetailV2 daTaoKe) { + try { TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(daTaoKe.getGoodsId()); if (goodsBrief == null) { - return; + return false; } - + + BigDecimal couponAmount = goodsBrief.getCouponAmount(); + if (couponAmount == null || couponAmount.compareTo(new BigDecimal(0)) < 1) { + return false; + } + BigDecimal fanLiRate = hongBaoManageService.getFanLiRate(); BigDecimal shareRate = hongBaoManageService.getShareRate(); BigDecimal vipFanLiRate = hongBaoManageService.getVIPFanLiRate(); @@ -1872,24 +1899,48 @@ GoodsDetailVO goodsVO = GoodsDetailVOFactory.convertTaoBao(goodsBrief, params); // 鍙戝竷鐢ㄦ埛 ActivityUser user = activityUserService.getRandomByDaTaoKeCid(daTaoKe.getCid()); - - String desc = DaTaoKeUtil.getDesc(daTaoKe); - if (!StringUtil.isNullOrEmpty(desc)) { - int index = desc.lastIndexOf("\n"); - String newDesc = desc.substring(index + 1); - if (StringUtil.isNullOrEmpty(newDesc)) { - desc = desc.substring(0, index); - } + + String desc = daTaoKe.getDesc().replace(",", "锛�"); + String[] split = desc.split("锛�"); + int max = 1; + if (Math.random() > 0.5) { + max = 2; } - + int e = 0; + String emojis = ""; + String descNew = ""; + if (split.length > 0) { + for (int i = 0; i < split.length; i++) { + if (Math.random() > 0.5 && e < max) { + for (int j = 0; j < 10; j++) { + String emojisTemp = DaTaoKeUtil.getEvaluateEmojis(); + if (!emojis.equals(emojisTemp)) { + emojis = emojisTemp; + break; + } + } + e++; + descNew += split[i] + emojis; + } else { + descNew += split[i] + "锛�"; + } + } + } else { + descNew = desc; + } + + if (descNew.endsWith("锛�")) { + descNew = descNew.substring(0, descNew.length() - 1); + } + GoodsEvaluate goodsEvaluate = new GoodsEvaluate(); goodsEvaluate.setId(UUID.randomUUID().toString().replace("-", "")); goodsEvaluate.setUser(user); - goodsEvaluate.setTitle(desc); + goodsEvaluate.setTitle(descNew); goodsEvaluate.setState(1); goodsEvaluate.setDynamicType(1); goodsEvaluate.setType(EvaluateEnum.single); - + goodsEvaluate.setShareNum((int) (Math.random() * 5000) + 1000); goodsEvaluate.setShareNumReal(0); goodsEvaluate.setWeight(0.0); @@ -1898,26 +1949,31 @@ goodsEvaluate.setPublishTime(new Date()); goodsEvaluate.setCreateTime(new Date()); goodsEvaluate.setUpdateTime(new Date()); - - - List<ImgInfo> imgList = new ArrayList<>(); - + + List<String> goodsimgs = goodsBrief.getImgList(); + + List<String> imgs = new ArrayList<>(); + if (!StringUtil.isNullOrEmpty(goodsBrief.getPictUrlWhite())) { + imgs.add(goodsBrief.getPictUrlWhite()); + } + imgs.addAll(goodsimgs); + int lineNum = 0; - if (imgList.size() > 0) { - if (imgList.size() == 1) { + if (imgs.size() > 0) { + if (imgs.size() == 1) { lineNum = 1; - } else if (imgList.size() == 3) { + } else if (imgs.size() == 3) { lineNum = 3; - } else if (imgList.size() <= 4) { + } else if (imgs.size() <= 4) { lineNum = 2; } else { lineNum = 3; } } goodsEvaluate.setLineNum(lineNum); - + int i = 0; - List<String> imgs = goodsBrief.getImgList(); + List<ImgInfo> imgList = new ArrayList<>(); for (String img : imgs) { ImgInfo imgInfo = new ImgInfo(); imgInfo.setH(1); @@ -1941,20 +1997,23 @@ simpleGoods.setAmount(couponInfo.getAmount()); } imgInfo.setGoods(simpleGoods); + imgInfo.setGoodsVO(goodsVO); - //TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(Constant.LINK_TOKEN_VERIFY_UID, goodsVO.getGoodsId(), null); + // TaoBaoLink taoBaoLink = + // shareGoodsService.getTaoBaoLinkForShare(Constant.LINK_TOKEN_VERIFY_UID, + // goodsVO.getGoodsId(), null); String token = shareGoodsService.createTaoBaoToken(Constant.LINK_TOKEN_VERIFY_UID, goodsBrief); - + String template = configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey()); String commentText = template.replace("[娣樺彛浠", TaoBaoUtil.filterTaoToken(token)); - commentText = commentText.replace("[鍘熶环]", goodsVO.getZkPrice().toString()); + commentText = commentText.replace("[鍘熶环]", MoneyBigDecimalUtil.getWithNoZera(goodsVO.getZkPrice())+""); if (!goodsVO.isHasCoupon()) { commentText = commentText.replace("棰嗗埜鎶㈣喘", "鎶㈣喘"); commentText = commentText.replace("銆愬埜鍚庝环銆慬鍒稿悗浠穄鍏�", ""); } else { - commentText = commentText.replace("[鍒稿悗浠穄", goodsVO.getCouponPrice().toString()); + commentText = commentText.replace("[鍒稿悗浠穄", MoneyBigDecimalUtil.getWithNoZera(goodsVO.getCouponPrice())+""); } commentText = commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n") .replace("\r\n\r\n", "\r\n"); @@ -1965,21 +2024,144 @@ commentInfo.setTypeEnum(CommentInfoEnum.goodsCoupon); commentInfo.setType(CommentInfoEnum.goodsCoupon.getDesc()); + String text2 = ""; + String evaluateEmojis = configService.get(ConfigKeyEnum.evaluateEmojis.getKey()); + if (!StringUtil.isNullOrEmpty(evaluateEmojis)) { + text2 = evaluateEmojis + "\n"; + } + + String evaluateText = configService.get(ConfigKeyEnum.evaluateText.getKey()); + if (!StringUtil.isNullOrEmpty(evaluateText)) { + text2 += evaluateText; + } + + String dtitle = daTaoKe.getDtitle(); + if (!StringUtil.isNullOrEmpty(dtitle)) { + text2 = text2 + dtitle +"\n"; + } else if (!StringUtil.isNullOrEmpty(evaluateText)) { + text2 += "\n"; + } + text2 += "鍏堥銆�"+ couponAmount +"鍏冧紭鎯犲埜銆戜笅鍗�"; + + CommentInfo commentInfo2 = new CommentInfo(); + commentInfo2.setId(UUID.randomUUID().toString().replace("-", "")); + commentInfo2.setContent(text2); + commentInfo2.setTypeEnum(CommentInfoEnum.goodsCoupon); + commentInfo2.setType(""); + + List<CommentInfo> commentsNew = new ArrayList<>(); commentsNew.add(commentInfo); + commentsNew.add(commentInfo2); goodsEvaluate.setComments(commentsNew); - + goodsEvaluate.setGoods(goodsVO); } - imgList.add(imgInfo); - i ++; + i++; } goodsEvaluate.setImgList(imgList); goodsEvaluateDao.save(goodsEvaluate); } catch (Exception e) { e.printStackTrace(); LogHelper.errorDetailInfo(e); + return false; } + return true; + } + + private String getDesc(String desc) { + System.out.println(desc); + String newDesc = ""; + int emoji = 0; + String content = desc.replace("锛�", ","); + while (content.length() > 0) { + int length = 0; + boolean end = true; + for (int i = 0; i < content.length(); i++) { + if (content.substring(0, i).length() >= 18) { + length = i; + end = false; + break; + } + } + + if (end) { + length = content.length(); + } + + String introduce = content.substring(0, length); + System.out.println(introduce); + if (verify(introduce)) { + if (emoji >= 4) { + introduce = introduce.replace(",", "\n"); // 闇�瑕佹崲琛� + } else { + emoji++; + introduce = introduce.replace(",", DaTaoKeUtil.getRandomCommonEmoji() + "\n"); // 闇�瑕佹崲琛� + } + } + + // 闅忔満鏇挎崲emoji + if (emoji <= 4 && Math.random() > 0.5) { + introduce = introduce.replace(",", DaTaoKeUtil.getRandomCommonEmoji()); + emoji++; + } + newDesc += introduce; + content = content.substring(length); + } + return newDesc; + } + + private boolean verify(String content) { + // 18涓瓧绗﹀唴锛堝寘鍚爣鐐逛篃绠椾竴涓瓧绗︼級鏈夊涓�楀彿锛屽垯涓嶆崲琛� + char d = ','; + int count = 0; + char chs[] = content.toCharArray();// 杞崲鎴恈har鏁扮粍 + for (int i = 0; i < chs.length; i++) { + if (d == chs[i]) { + count++; + } + } + if (count > 1) { + return false; + } + + // 涔﹀悕鍙凤紝澶ф嫭鍙凤紝灏忔嫭鍙烽噷闈㈢殑鍐呭涓嶆崲琛� + if (content.contains("[") && content.contains("]")) { + return false; + } else if (content.contains("銆�") && content.contains("銆�")) { + return false; + } else if (content.contains("{") && content.contains("}")) { + return false; + } else if (content.contains("(") && content.contains(")")) { + return false; + } + + int index = content.lastIndexOf(","); + // (闄ゅ紑閫楀彿浠ュ鐨勭鍙凤級鎰熷徆鍙�/鍙ュ彿/闂彿鍓嶉潰鏈夐�楀彿锛屼笉鎹㈣ + if (content.contains("!") && index < content.lastIndexOf("!")) { + return false; + } + + if (content.contains("锛�") && index < content.lastIndexOf("锛�")) { + return false; + } + + if (content.contains("銆�") && index < content.lastIndexOf("銆�")) { + return false; + } + + if (content.contains("?") && index < content.lastIndexOf("?")) { + return false; + } + + if (content.contains("锛�") && index < content.lastIndexOf("锛�")) { + return false; + } + + if (content.contains("锛�")) { + return false; + } + return true; } } -- Gitblit v1.8.0