fanli/src/main/java/com/yeshi/fanli/controller/admin/GoodsEvaluateAdminController.java
@@ -27,6 +27,7 @@ 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.system.ConfigKeyEnum; import com.yeshi.fanli.entity.taobao.TaoBaoGoodsBrief; import com.yeshi.fanli.exception.dynamic.GoodsEvaluateException; import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; @@ -34,15 +35,22 @@ import com.yeshi.fanli.service.inter.dynamic.GoodsEvaluateService; import com.yeshi.fanli.service.inter.order.config.HongBaoManageService; import com.yeshi.fanli.service.manger.ClipboardAnalysisManager; import com.yeshi.fanli.service.manger.IClipboardAnalysisResult; import com.yeshi.fanli.tag.PageEntity; import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.RedisManager; import com.yeshi.fanli.util.StringUtil; import com.yeshi.fanli.util.TimeUtil; import com.yeshi.fanli.util.VersionUtil; import com.yeshi.fanli.util.cache.JDGoodsCacheUtil; import com.yeshi.fanli.util.cache.PinDuoDuoCacheUtil; import com.yeshi.fanli.util.factory.CommonGoodsFactory; import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory; import com.yeshi.fanli.util.taobao.TaoKeApiUtil; import com.yeshi.fanli.vo.common.JumpDetailContentVO; import com.yeshi.fanli.vo.goods.GoodsDetailVO; import com.yeshi.fanli.vo.msg.TokenVO; import com.yeshi.fanli.vo.search.GoodsDocParseResultVO; import net.sf.json.JSONObject; @@ -74,6 +82,9 @@ @Resource private HongBaoManageService hongBaoManageService; private CommonGoods commonGoods; /** * 保存信息 * @@ -104,8 +115,7 @@ * 保存信息 * * @param callback * @param special * 0a39676f138c4dcba722e321d43c4284 * @param special 0a39676f138c4dcba722e321d43c4284 * @param out */ @RequestMapping(value = "saveSingleGoods") @@ -116,7 +126,8 @@ if (request instanceof MultipartHttpServletRequest) { fileRequest = (MultipartHttpServletRequest) request; } String commentText = goodsEvaluateService.saveSingleGoods(pid, goodsId, goodsType, videoUrl, picNum, picUrls, fileRequest); String commentText = goodsEvaluateService.saveSingleGoods(pid, goodsId, goodsType, videoUrl, picNum, picUrls, fileRequest); JSONObject object = new JSONObject(); object.put("comment", commentText); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult(object)); @@ -132,8 +143,7 @@ * 保存信息 * * @param callback * @param special * 0a39676f138c4dcba722e321d43c4284 * @param special 0a39676f138c4dcba722e321d43c4284 * @param out */ @RequestMapping(value = "saveGoodsCoupon") @@ -154,13 +164,13 @@ * * @param callback * @param pid * @param kind : 1单品 2多品 3活动 * @param kind : 1单品 2多品 3活动 * @param out */ @RequestMapping(value = "saveCurrencyCoupon") public void saveCurrencyCoupon(String callback, String pid, int kind, CommentInfo commentInfo, PrintWriter out) { try { goodsEvaluateService.saveCurrencyCoupon(pid, kind,commentInfo); goodsEvaluateService.saveCurrencyCoupon(pid, kind, commentInfo); JsonUtil.printMode(out, callback, JsonUtil.loadTrueResult("保存成功")); } catch (GoodsEvaluateException e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult(e.getMsg())); @@ -174,8 +184,7 @@ * 获取信息 * * @param callback * @param special * 0a39676f138c4dcba722e321d43c4284 * @param special 0a39676f138c4dcba722e321d43c4284 * @param out */ @RequestMapping(value = "getSingleGoodsinfo") @@ -227,8 +236,7 @@ * 获取信息 * * @param callback * @param special * 0a39676f138c4dcba722e321d43c4284 * @param special 0a39676f138c4dcba722e321d43c4284 * @param out */ @RequestMapping(value = "getCurrencyCoupon") @@ -258,8 +266,7 @@ * 获取信息 * * @param callback * @param special * 0a39676f138c4dcba722e321d43c4284 * @param special 0a39676f138c4dcba722e321d43c4284 * @param out */ @RequestMapping(value = "getSingleGoodsCoupon") @@ -309,8 +316,7 @@ LogHelper.test(e); } } /** * * @param callback @@ -337,7 +343,7 @@ e.printStackTrace(); } } /** * * @param callback @@ -351,13 +357,13 @@ 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) { for (CommentInfo commentInfo : comments) { CommentInfoEnum typeEnum = commentInfo.getTypeEnum(); if (typeEnum == CommentInfoEnum.goodsCoupon) { newList.add(commentInfo); @@ -373,7 +379,6 @@ e.printStackTrace(); } } /** * 获取多个商品信息 @@ -422,8 +427,7 @@ * 保存信息 * * @param callback * @param special * 0a39676f138c4dcba722e321d43c4284 * @param special 0a39676f138c4dcba722e321d43c4284 * @param out */ @RequestMapping(value = "saveActivityPic") @@ -448,8 +452,7 @@ * 获取信息 * * @param callback * @param special * 0a39676f138c4dcba722e321d43c4284 * @param special 0a39676f138c4dcba722e321d43c4284 * @param out */ @RequestMapping(value = "getActivityPic") @@ -490,8 +493,7 @@ * 保存信息 * * @param callback * @param special * 0a39676f138c4dcba722e321d43c4284 * @param special 0a39676f138c4dcba722e321d43c4284 * @param out */ @RequestMapping(value = "saveSuCai") @@ -518,8 +520,7 @@ * 获取信息 * * @param callback * @param special * 0a39676f138c4dcba722e321d43c4284 * @param special 0a39676f138c4dcba722e321d43c4284 * @param out */ @RequestMapping(value = "getSuCaiPic") @@ -560,7 +561,6 @@ } } /** * 保存信息 * @@ -746,7 +746,11 @@ @RequestMapping(value = "getGoodsByUrl") public void getGoodsByUrl(String callback, String link, PrintWriter out) { try { CommonGoods commonGoods = clipboardAnalysisManager.parseLink(link); //CommonGoods commonGoods = clipboardAnalysisManager.parseLink(link); // 根据口令链接获取商品 getGoods(link); CommonGoods commonGoods = getCommonGoods(); if (commonGoods == null) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("未找到该商品")); return; @@ -763,17 +767,17 @@ 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("该商品已下架")); @@ -801,7 +805,37 @@ } catch (Exception e) { JsonUtil.printMode(out, callback, JsonUtil.loadFalseResult("获取失败")); e.printStackTrace(); } finally { setCommonGoods(null); } } private void getGoods(String text) { Long uid = Constant.LINK_TOKEN_VERIFY_UID; clipboardAnalysisManager.parse("android", "55", text, uid, new IClipboardAnalysisResult() { @Override public void onResult(GoodsDocParseResultVO result) {} @Override public void onResult(String result) {} @Override public void onResult(CommonGoods goods) { setCommonGoods(goods); } @Override public void onResult(TokenVO tokenVO) { } @Override public void none() { } @Override public void needLogin(String msg) { } }); } /** @@ -920,4 +954,14 @@ } } public CommonGoods getCommonGoods() { return commonGoods; } public void setCommonGoods(CommonGoods commonGoods) { this.commonGoods = commonGoods; } } fanli/src/main/java/com/yeshi/fanli/dao/dynamic/GoodsEvaluateDao.java
@@ -126,5 +126,21 @@ query.addCriteria(Criteria.where("endTime").gte(now)); return mongoTemplate.count(query, GoodsEvaluate.class); } /** * 查询有效 * @param start * @param count * @param key * @return */ public List<GoodsEvaluate> querySingleExist() { Query query = new Query(); query.addCriteria(Criteria.where("dynamicType").is(1)); query.addCriteria(Criteria.where("state").is(1)); query.addCriteria(Criteria.where("goods.goodsType").is(1)); return mongoTemplate.find(query, GoodsEvaluate.class); } } 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; @@ -1854,7 +1855,27 @@ @Override public void addGoodsEvaluateByDaTaoKe() { try { List<DaTaoKeDetailV2> list = daTaoKeGoodsDetailV2Service.getGoodsNotInList(1L, null, 1); boolean addSuccess = false; 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()); } } } // 热销单品的分类 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; } @@ -1873,19 +1894,40 @@ // 发布用户 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 = getDesc(daTaoKe.getDesc()); String desc = daTaoKe.getDesc().replace(",", ","); System.out.println(desc); String[] split = desc.split(","); System.out.println(split.length); int max = 1; if (Math.random() > 0.5) { max = 2; } int e = 0; String descNew = ""; if (split.length > 0) { for (int i = 0; i < split.length; i ++ ) { if (Math.random() > 0.5 && e < max) { e++; descNew += split[i] + DaTaoKeUtil.getRandomCommonEmoji(); } 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); @@ -1899,16 +1941,14 @@ goodsEvaluate.setCreateTime(new Date()); goodsEvaluate.setUpdateTime(new Date()); List<ImgInfo> imgList = new ArrayList<>(); int lineNum = 0; if (imgList.size() > 0) { if (imgList.size() == 1) { List<String> imgs = goodsBrief.getImgList(); 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; @@ -1917,7 +1957,7 @@ 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); @@ -1982,4 +2022,100 @@ LogHelper.errorDetailInfo(e); } } 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();//转换成char数组 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; } } fanli/src/main/java/com/yeshi/fanli/util/factory/RedPackDetailFactory.java
@@ -165,6 +165,7 @@ RedPackDetail detail = new RedPackDetail(); detail.setId(id); detail.setDisplay(true); detail.setDescInfo("领取人ID:" + giveRecord.getReceiveUid()); detail.setType(RedPackDetailTypeEnum.giveOthersSucceed); detail.setTitle(RedPackDetailTypeEnum.giveOthersSucceed.getDesc()); detail.setIdentifyCode( fanli/src/main/java/com/yeshi/fanli/util/taobao/DaTaoKeUtil.java
@@ -515,7 +515,7 @@ return parseCurrent(url); } private static String getRandomCommonEmoji() { public static String getRandomCommonEmoji() { return commonEmojis[(int) (Math.random() * commonEmojis.length)]; }