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