| | |
| | | import java.math.BigDecimal; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Arrays; |
| | | import java.util.Collections; |
| | | import java.util.Comparator; |
| | | import java.util.Date; |
| | |
| | | import com.yeshi.fanli.dto.ConfigParamsDTO; |
| | | import com.yeshi.fanli.dto.jd.JDCouponInfo; |
| | | import com.yeshi.fanli.dto.pdd.PDDGoodsDetail; |
| | | import com.yeshi.fanli.dto.suning.SuningGoodsInfo; |
| | | import com.yeshi.fanli.dto.vip.goods.VIPGoodsInfo; |
| | | import com.yeshi.fanli.entity.bus.activity.ActivityRuleUser; |
| | | 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.exception.dynamic.ActivityUserException; |
| | | import com.yeshi.fanli.exception.dynamic.GoodsEvaluateException; |
| | | import com.yeshi.fanli.exception.goods.ConvertLinkExceptionException; |
| | | import com.yeshi.fanli.exception.share.ShareGoodsException; |
| | | import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; |
| | | import com.yeshi.fanli.log.LogHelper; |
| | | import com.yeshi.fanli.service.inter.activity.ActivityUserService; |
| | |
| | | |
| | | @Resource |
| | | private HongBaoManageService hongBaoManageService; |
| | | |
| | | |
| | | @Resource |
| | | private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService; |
| | | |
| | |
| | | @Resource |
| | | private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service; |
| | | |
| | | |
| | | @Override |
| | | public void switchState(String id) throws GoodsEvaluateException { |
| | | if (id == null) { |
| | | throw new GoodsEvaluateException(1, "请传递正确参数"); |
| | | } |
| | | |
| | | |
| | | GoodsEvaluate resultObj = goodsEvaluateDao.getById(id); |
| | | if (resultObj == null) { |
| | | throw new GoodsEvaluateException(1, "此内容已不存在"); |
| | | } |
| | | |
| | | |
| | | Integer state = resultObj.getState(); |
| | | if (state == null || state == 0) { |
| | | state = 1; |
| | |
| | | } |
| | | goodsEvaluateDao.updateSatate(id, state); |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | public String saveHead(MultipartFile file, GoodsEvaluate record) throws GoodsEvaluateException { |
| | | Integer state = record.getState(); |
| | |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | private ImgInfo uploadOriginalPicture(MultipartFile file) { |
| | | try { |
| | | InputStream inputStream = file.getInputStream(); |
| | | String contentType = file.getContentType(); |
| | | String type = contentType.substring(contentType.indexOf("/") + 1); |
| | | String filePath = FilePathEnum.goodsEvaluate.getPath() + UUID.randomUUID().toString().replace("-", "") + "."+ type; |
| | | |
| | | String filePath = FilePathEnum.goodsEvaluate.getPath() + UUID.randomUUID().toString().replace("-", "") + "." |
| | | + type; |
| | | |
| | | BufferedImage sourceImg = ImageIO.read(inputStream); |
| | | ImgInfo info = new ImgInfo(); |
| | | int width = sourceImg.getWidth(); |
| | | int height = sourceImg.getHeight(); |
| | | |
| | | |
| | | String picLink = COSManager.getInstance().uploadFile(file.getInputStream(), filePath).getUrl(); |
| | | |
| | | |
| | | info.setH(height); |
| | | info.setW(width); |
| | | info.setUrl(picLink); |
| | |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | |
| | | private String uploadPicture(File file, String contentType) throws Exception { |
| | | InputStream inputStream = new FileInputStream(file); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public String saveSingleGoods(String pid, Long goodsId, Integer goodsType, String videoUrl, Integer picNum, |
| | | public String saveSingleGoods(String pid, String goodsId, Integer goodsType, String videoUrl, Integer picNum, |
| | | String picUrls, MultipartHttpServletRequest fileRequest) throws GoodsEvaluateException, Exception { |
| | | if (StringUtil.isNullOrEmpty(pid)) { |
| | | throw new GoodsEvaluateException(1, "请保存第一部分信息"); |
| | |
| | | params.setBaseFanliRate(hongBaoManageService.getBaseFanliRate()); |
| | | if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { |
| | | try { |
| | | TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(goodsId); |
| | | TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(Long.parseLong(goodsId)); |
| | | goodsDetailVO = GoodsDetailVOFactory.convertTaoBao(goodsBrief, params); |
| | | } catch (TaobaoGoodsDownException e) { |
| | | throw new GoodsEvaluateException(1, "商品已下架"); |
| | | } |
| | | } else if (goodsType == Constant.SOURCE_TYPE_JD) { |
| | | jdGoods = jdGoodsCacheUtil.getGoodsInfo(goodsId); |
| | | jdGoods = jdGoodsCacheUtil.getGoodsInfo(Long.parseLong(goodsId)); |
| | | goodsDetailVO = GoodsDetailVOFactory.convertJDGoods(jdGoods, params); |
| | | } else if (goodsType == Constant.SOURCE_TYPE_PDD) { |
| | | pddGoods = pinDuoDuoCacheUtil.getGoodsInfo(goodsId); |
| | | pddGoods = pinDuoDuoCacheUtil.getGoodsInfo(Long.parseLong(goodsId)); |
| | | goodsDetailVO = GoodsDetailVOFactory.convertPDDGoods(pddGoods, params); |
| | | } |
| | | |
| | |
| | | if (comments != null && comments.size() > 0) { |
| | | for (CommentInfo commentInfo : comments) { |
| | | if (commentInfo.getTypeEnum() == CommentInfoEnum.goodsCoupon) { |
| | | if (oldGoodsVO != null && oldGoodsVO.getGoodsId().longValue() == goodsId.longValue() |
| | | if (oldGoodsVO != null && oldGoodsVO.getGoodsId().equalsIgnoreCase(goodsId) |
| | | && oldGoodsVO.getGoodsType() == goodsType) { |
| | | addComment = false; |
| | | } |
| | |
| | | String commentText = ""; |
| | | if (addComment) { |
| | | if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { |
| | | TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(1L, goodsId, "0"); |
| | | TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(1L, Long.parseLong(goodsId), "0"); |
| | | String template = configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey()); |
| | | commentText = template.replace("[淘口令]", TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken())); |
| | | } else if (goodsType == Constant.SOURCE_TYPE_JD) { |
| | |
| | | } |
| | | commentText = template.replace("[链接]", jumpLink); |
| | | } else if (goodsType == Constant.SOURCE_TYPE_PDD) { |
| | | String jumpLink = PinDuoDuoApiUtil.getPromotionUrl(goodsId, PinDuoDuoApiUtil.PID_SHARE + "", "1"); |
| | | String jumpLink = PinDuoDuoApiUtil.getPromotionUrl(Long.parseLong(goodsId), PinDuoDuoApiUtil.PID_SHARE + "", "1"); |
| | | if (jumpLink == null) { |
| | | throw new GoodsEvaluateException(1, "该商品转链失败"); |
| | | } |
| | |
| | | private String createTokenAndLink(GoodsDetailVO goodsDetailVO) throws Exception { |
| | | String commentText = ""; |
| | | if (goodsDetailVO.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) { |
| | | TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(1L, goodsDetailVO.getGoodsId(), "0"); |
| | | TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(1L,Long.parseLong(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()); |
| | | JDGoods jdGoods = jdGoodsCacheUtil.getGoodsInfo(Long.parseLong(goodsDetailVO.getGoodsId())); |
| | | JDCouponInfo couponInfo = JDUtil.getShowCouponInfo(jdGoods); |
| | | if (couponInfo != null) { |
| | | couponUrl = couponInfo.getLink(); |
| | |
| | | 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(), |
| | | String jumpLink = PinDuoDuoApiUtil.getPromotionUrl(Long.parseLong(goodsDetailVO.getGoodsId()), |
| | | PinDuoDuoApiUtil.PID_SHARE + "", "1"); |
| | | String template = configService.get(ConfigKeyEnum.quickSharePDDCommentText.getKey()); |
| | | commentText = template.replace("[链接]", jumpLink); |
| | |
| | | } |
| | | |
| | | boolean del = false; |
| | | long oldGoodsId = old.getGoods().getGoodsId().longValue(); |
| | | String oldGoodsId = old.getGoods().getGoodsId(); |
| | | int oldGoodsType = old.getGoods().getGoodsType().intValue(); |
| | | for (ImgInfo newInfo : listImg) { |
| | | ImgEnum type2 = old.getType(); |
| | |
| | | continue; |
| | | } |
| | | |
| | | if (oldGoodsId == newInfo.getGoods().getGoodsId().longValue() |
| | | if (oldGoodsId .equalsIgnoreCase(newInfo.getGoods().getGoodsId()) |
| | | && oldGoodsType == newInfo.getGoods().getGoodsType().intValue()) { |
| | | String url = newInfo.getUrl(); |
| | | if (url.equals(old.getUrl())) { |
| | |
| | | if (StringUtil.isNullOrEmpty(commentInfo.getId())) { |
| | | commentInfo.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | } |
| | | |
| | | |
| | | commentInfo.setNeedSpin(true); |
| | | commentInfo.setType(commentInfo.getTags()); |
| | | commentInfo.setTypeEnum(CommentInfoEnum.goodsCoupon); |
| | |
| | | goodsEvaluateDao.save(resultObj); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public void saveCurrencyCoupon(String pid, int kind, CommentInfo commentInfo) |
| | | throws GoodsEvaluateException, Exception { |
| | |
| | | GoodsEvaluate resultObj = goodsEvaluateDao.getById(pid); |
| | | if (resultObj == null) |
| | | throw new GoodsEvaluateException(1, "第一部分信息缺失"); |
| | | |
| | | |
| | | if (EvaluateEnum.activity != resultObj.getType()) { |
| | | if (StringUtil.isNullOrEmpty(commentInfo.getCoupon())) { |
| | | throw new GoodsEvaluateException(1, "券面额不能为空"); |
| | |
| | | if (commentInfo.getNeedSpin() == null) { |
| | | commentInfo.setNeedSpin(false); |
| | | } |
| | | |
| | | |
| | | String content = commentInfo.getContent(); |
| | | if (!StringUtil.isNullOrEmpty(content) && commentInfo.getNeedSpin()) { |
| | | try { |
| | |
| | | throw new GoodsEvaluateException(1, "包含不可转链的口令与链接"); |
| | | } |
| | | } |
| | | |
| | | |
| | | List<CommentInfo> comments = new ArrayList<>(); |
| | | CommentInfo currencyCoupon = null; |
| | |
| | | GoodsEvaluate resultObj = goodsEvaluateDao.getById(pid); |
| | | if (resultObj == null) |
| | | throw new GoodsEvaluateException(1, "第一部分信息缺失"); |
| | | |
| | | |
| | | if (imgInfo == null || StringUtil.isNullOrEmpty(imgInfo.getActivityUrl())) { |
| | | throw new GoodsEvaluateException(1, "活动链接不能为空"); |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | // 视频部分 |
| | | if (fileRequest != null) { |
| | | MultipartFile filevideo = fileRequest.getFile("filevideo"); |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | List<ImgInfo> listImg = new ArrayList<ImgInfo>(); |
| | | if (imgVideo != null) { |
| | | if (!StringUtil.isNullOrEmpty(imgInfo.getVideoUrl())) { |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | String activityUrl = imgInfo.getActivityUrl(); |
| | | // 编辑图片 |
| | | List<ImgInfo> tempList = new ArrayList<ImgInfo>(); |
| | |
| | | String picLink = pics[i]; |
| | | if (picLink.startsWith("http")) { |
| | | if (listOld != null) { |
| | | for (ImgInfo info: listOld) { |
| | | for (ImgInfo info : listOld) { |
| | | if (info.getUrl().equals(picLink)) { |
| | | info.setActivityUrl(activityUrl); |
| | | tempList.add(info); |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | // 上传文件替换 |
| | | if (fileRequest != null) { |
| | | for (int i = 0; i < 9; i++) { |
| | |
| | | } else { |
| | | tempList.add(imgInfo0); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | int lineNum = 0; |
| | | int totalImg = tempList.size(); |
| | | if (totalImg > 0) { |
| | |
| | | lineNum = 3; |
| | | } |
| | | } |
| | | |
| | | |
| | | // 一张图显示为大图 |
| | | if (tempList.size() == 1) { |
| | | tempList.get(0).setLarge(true); |
| | | } |
| | | |
| | | |
| | | if (tempList.size() > 0) { |
| | | listImg.addAll(tempList); |
| | | } |
| | | |
| | | |
| | | // 清理老图片 |
| | | if (listOld != null && listOld.size() > 0) { |
| | | for (ImgInfo infoOld: listOld) { |
| | | for (ImgInfo infoOld : listOld) { |
| | | boolean del = true; |
| | | String oldPic = infoOld.getUrl(); |
| | | for (ImgInfo info : listImg) { |
| | |
| | | listDel.add(infoOld.getUrl()); |
| | | } |
| | | } |
| | | |
| | | |
| | | resultObj.setJumpLink(activityUrl); |
| | | resultObj.setLineNum(lineNum); |
| | | resultObj.setImgList(listImg); |
| | | goodsEvaluateDao.save(resultObj); |
| | | |
| | | |
| | | // 删除图片 |
| | | if (listDel.size() > 0) { |
| | | for (String url : listDel) { |
| | |
| | | public GoodsEvaluate getById(String id) { |
| | | return goodsEvaluateDao.getById(id); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public List<GoodsEvaluate> listByStartTime(Date date) { |
| | | return goodsEvaluateDao.listByStartTime(date); |
| | | } |
| | | |
| | | @Override |
| | | public List<GoodsEvaluate> queryValidSortASC(int start, int count, EvaluateEnum tyepEnum, boolean sortDesc) { |
| | | return goodsEvaluateDao.queryValidSortASC(start, count, tyepEnum, sortDesc); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public List<GoodsEvaluate> queryValidZeroPoint(int start, int count) { |
| | | return goodsEvaluateDao.queryValidZeroPoint(start, count); |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | public void saveComment(String pid, CommentInfo commentInfo) throws GoodsEvaluateException { |
| | | GoodsEvaluate goodsEvaluate = goodsEvaluateDao.getById(pid); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public List<GoodsEvaluate> query(int start, int count, String key, Integer state, int dynamicType, String typeEnum) { |
| | | public List<GoodsEvaluate> query(int start, int count, String key, Integer state, int dynamicType, |
| | | String typeEnum) { |
| | | return goodsEvaluateDao.query(start, count, key, state, dynamicType, typeEnum); |
| | | } |
| | | |
| | |
| | | |
| | | // 删除已过期 |
| | | removeOverdue(); |
| | | |
| | | |
| | | removeDownGoods(); |
| | | } |
| | | }); |
| | |
| | | |
| | | // 删除已过期 |
| | | removeOverdue(); |
| | | |
| | | |
| | | removeDownGoods(); |
| | | } |
| | | }); |
| | |
| | | } |
| | | } |
| | | |
| | | private GoodsDetailVO getGoodsNewInfo(Long goodsId, int goodsType, ConfigParamsDTO paramsDTO) { |
| | | private GoodsDetailVO getGoodsNewInfo(String goodsId, int goodsType, ConfigParamsDTO paramsDTO) { |
| | | GoodsDetailVO vo = null; |
| | | if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { |
| | | TaoBaoGoodsBrief goods; |
| | | try { |
| | | goods = redisManager.getTaoBaoGoodsBrief(goodsId); |
| | | goods = redisManager.getTaoBaoGoodsBrief(Long.parseLong(goodsId)); |
| | | if (goods != null) { |
| | | vo = GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO); |
| | | } |
| | |
| | | } |
| | | |
| | | } else if (goodsType == Constant.SOURCE_TYPE_JD) { |
| | | JDGoods goodsInfo = jdGoodsCacheUtil.getGoodsInfo(goodsId); |
| | | JDGoods goodsInfo = jdGoodsCacheUtil.getGoodsInfo(Long.parseLong(goodsId)); |
| | | if (goodsInfo != null) { |
| | | vo = GoodsDetailVOFactory.convertJDGoods(goodsInfo, paramsDTO); |
| | | } |
| | | } else if (goodsType == Constant.SOURCE_TYPE_PDD) { |
| | | PDDGoodsDetail goodsInfo = pinDuoDuoCacheUtil.getGoodsInfo(goodsId); |
| | | PDDGoodsDetail goodsInfo = pinDuoDuoCacheUtil.getGoodsInfo(Long.parseLong(goodsId)); |
| | | if (goodsInfo != null) |
| | | vo = GoodsDetailVOFactory.convertPDDGoods(goodsInfo, paramsDTO); |
| | | } |
| | |
| | | } |
| | | |
| | | @Override |
| | | public void addGoodsEvaluate(Long goodsId, List<ImgInfo> imgList, ActivityUser user, String title, String comment, |
| | | public void addGoodsEvaluate(String goodsId, List<ImgInfo> imgList, ActivityUser user, String title, String comment, |
| | | Date startTime) throws GoodsEvaluateException { |
| | | if (goodsId == null || user == null || StringUtil.isNullOrEmpty(title)) { |
| | | throw new GoodsEvaluateException(1, "相关参数不能为空"); |
| | | } |
| | | |
| | | List<GoodsEvaluate> evaluateList = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_TAOBAO, goodsId); |
| | | Date limitDate = DateUtil.reduceDay(new Date(), 7); |
| | | |
| | | List<GoodsEvaluate> evaluateList = goodsEvaluateDao.queryExistLimitTime(Constant.SOURCE_TYPE_TAOBAO, goodsId, limitDate); |
| | | if (evaluateList != null && evaluateList.size() > 0) |
| | | return; |
| | | throw new GoodsEvaluateException(1, "该商品已存在"); |
| | | |
| | | TaoBaoGoodsBrief goodsBrief = null; |
| | | try { |
| | | goodsBrief = redisManager.getTaoBaoGoodsBrief(goodsId); |
| | | goodsBrief = redisManager.getTaoBaoGoodsBrief(Long.parseLong(goodsId)); |
| | | } catch (TaobaoGoodsDownException e) { |
| | | throw new GoodsEvaluateException(1, "商品已下架"); |
| | | } |
| | |
| | | |
| | | // 白底图 |
| | | List<String> imgs = new ArrayList<>(); |
| | | if (!StringUtil.isNullOrEmpty(goodsBrief.getPictUrlWhite())) { |
| | | imgs.add(goodsBrief.getPictUrlWhite()); |
| | | } |
| | | |
| | | imgs.addAll(goodsBrief.getImgList()); |
| | | |
| | | // 商品VO |
| | |
| | | |
| | | // 商品图片信息 |
| | | int i = 0; |
| | | if (imgList == null || imgList.size() == 0) |
| | | if (imgList == null) |
| | | imgList = new ArrayList<ImgInfo>(); |
| | | |
| | | if (imgList.size() == 0) |
| | | for (String img : imgs) { |
| | | ImgInfo imgInfo = new ImgInfo(); |
| | | imgInfo.setH(1); |
| | |
| | | commentInfo.setContent(comment); |
| | | commentInfo.setType(""); |
| | | } else { |
| | | goodsBrief.setCouponLink(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)); |
| | | if (!goodsVO.isHasCoupon()) { |
| | | commentText = commentText.replace("领券抢购", "抢购"); |
| | | commentText = commentText.replace("【券后价】[券后价]元", ""); |
| | | commentText = commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n","\r\n"); |
| | | } |
| | | commentText = commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", |
| | | "\r\n"); |
| | | } |
| | | commentInfo.setContent(commentText); |
| | | commentInfo.setType(CommentInfoEnum.goodsCoupon.getDesc()); |
| | | } |
| | |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | public int addGoodsEvaluate(TaoBaoGoodsBrief goodsBrief, List<String> imgs, ActivityUser user, String title) throws GoodsEvaluateException { |
| | | if (goodsBrief == null || user == null || StringUtil.isNullOrEmpty(title)) { |
| | | throw new GoodsEvaluateException(1, "相关参数不能为空"); |
| | | } |
| | | Date limitDate = DateUtil.reduceDay(new Date(), 7); |
| | | |
| | | Long goodsId = goodsBrief.getAuctionId(); |
| | | List<GoodsEvaluate> evaluateList = goodsEvaluateDao.queryExistLimitTime(Constant.SOURCE_TYPE_TAOBAO, goodsId + "", limitDate); |
| | | if (evaluateList != null && evaluateList.size() > 0) |
| | | throw new GoodsEvaluateException(1, "该商品已存在"); |
| | | |
| | | if (imgs == null) { |
| | | imgs = new ArrayList<>(); |
| | | } |
| | | if (imgs.size() == 0) { |
| | | imgs.addAll(goodsBrief.getImgList()); |
| | | } |
| | | |
| | | // 商品VO |
| | | ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55"); |
| | | paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate()); |
| | | GoodsDetailVO goodsVO = GoodsDetailVOFactory.convertTaoBao(goodsBrief, paramsDTO); |
| | | |
| | | // 商品图片信息 |
| | | int i = 0; |
| | | List<ImgInfo> imgList = new ArrayList<ImgInfo>(); |
| | | |
| | | for (String img : imgs) { |
| | | ImgInfo imgInfo = new ImgInfo(); |
| | | imgInfo.setH(1); |
| | | imgInfo.setW(1); |
| | | imgInfo.setLarge(false); |
| | | imgInfo.setUrl(img); |
| | | imgInfo.setUrlHD(img); |
| | | if (i != 0) { |
| | | imgInfo.setType(ImgEnum.img); |
| | | } else { |
| | | imgInfo.setType(ImgEnum.goods); |
| | | SimpleGoods simpleGoods = new SimpleGoods(); |
| | | simpleGoods.setGoodsId(goodsVO.getGoodsId()); |
| | | simpleGoods.setGoodsType(goodsVO.getGoodsType()); |
| | | simpleGoods.setState(goodsVO.getState()); |
| | | CouponInfoVO couponInfo = goodsVO.getCouponInfo(); |
| | | if (couponInfo == null) { |
| | | simpleGoods.setPrice(goodsVO.getZkPrice()); |
| | | } else { |
| | | simpleGoods.setPrice(goodsVO.getCouponPrice()); |
| | | simpleGoods.setAmount(couponInfo.getAmount()); |
| | | } |
| | | imgInfo.setGoods(simpleGoods); |
| | | imgInfo.setGoodsVO(goodsVO); |
| | | } |
| | | imgList.add(imgInfo); |
| | | i++; |
| | | } |
| | | |
| | | |
| | | // 生成口令 |
| | | String token = null; |
| | | try { |
| | | TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(Constant.LINK_TOKEN_VERIFY_UID, goodsBrief.getAuctionId(), "1"); |
| | | token = taoBaoLink.getTaoToken(); |
| | | } catch (ShareGoodsException e) { |
| | | e.printStackTrace(); |
| | | throw new GoodsEvaluateException(1, "转链失败"); |
| | | } |
| | | |
| | | |
| | | String template = configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey()); |
| | | String commentText = template.replace("[淘口令]", TaoBaoUtil.filterTaoToken(token)); |
| | | if (!goodsVO.isHasCoupon()) { |
| | | commentText = commentText.replace("领券抢购", "抢购"); |
| | | commentText = commentText.replace("【券后价】[券后价]元", ""); |
| | | 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.setNeedSpin(true); |
| | | commentInfo.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | commentInfo.setTypeEnum(CommentInfoEnum.goodsCoupon); |
| | | commentInfo.setContent(commentText); |
| | | commentInfo.setType(CommentInfoEnum.goodsCoupon.getDesc()); |
| | | |
| | | List<CommentInfo> commentsNew = new ArrayList<>(); |
| | | commentsNew.add(commentInfo); |
| | | |
| | | // 一行显示多少个图片 |
| | | int lineNum = 0; |
| | | if (imgList.size() > 0) { |
| | | if (imgList.size() == 1) { |
| | | lineNum = 1; |
| | | } else if (imgList.size() == 3) { |
| | | lineNum = 3; |
| | | } else if (imgList.size() == 2 || imgList.size() == 4) { |
| | | lineNum = 2; |
| | | } else { |
| | | lineNum = 3; |
| | | } |
| | | } |
| | | |
| | | int result = 0; |
| | | int zeroPoint = 0; |
| | | // ★深夜大福利:先抢券,0点准时下单★ |
| | | // 含这种文本的定于每晚10点在动态-发圈 集中发,每晚10点在群发单中只发一条。 |
| | | Date startTime = new Date(); |
| | | if (!StringUtil.isNullOrEmpty(title)) { |
| | | String value = configService.get(ConfigKeyEnum.evaluateZeroKey.getKey()); |
| | | if (!StringUtil.isNullOrEmpty(value)) { |
| | | List<String> asList = Arrays.asList(value.split(",")); |
| | | if (asList != null && asList.size() > 0) { |
| | | boolean zero = false; |
| | | for (String zerokey: asList) { |
| | | if(title.contains(zerokey)) { |
| | | zero = true; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | if (zero) { |
| | | result = 1; |
| | | zeroPoint = 1; |
| | | startTime = TimeUtil.parseYYYYMMDD_HHMM(TimeUtil.getGernalTime(startTime) + " 22:00"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | GoodsEvaluate goodsEvaluate = new GoodsEvaluate(); |
| | | goodsEvaluate.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | goodsEvaluate.setUser(user); |
| | | goodsEvaluate.setTitle(getDescNew(title)); |
| | | goodsEvaluate.setState(1); |
| | | goodsEvaluate.setZeroPoint(zeroPoint); |
| | | goodsEvaluate.setDynamicType(1); |
| | | goodsEvaluate.setType(EvaluateEnum.single); |
| | | goodsEvaluate.setShareNum((int) (Math.random() * 5000) + 1000); |
| | | goodsEvaluate.setShareNumReal(0); |
| | | goodsEvaluate.setWeight(0.0); |
| | | goodsEvaluate.setStartTime(startTime); |
| | | goodsEvaluate.setEndTime(DateUtil.plusDayDate(3, startTime)); |
| | | goodsEvaluate.setPublishTime(new Date()); |
| | | goodsEvaluate.setCreateTime(new Date()); |
| | | goodsEvaluate.setUpdateTime(new Date()); |
| | | goodsEvaluate.setGoods(goodsVO); |
| | | goodsEvaluate.setLineNum(lineNum); |
| | | goodsEvaluate.setImgList(imgList); |
| | | goodsEvaluate.setComments(commentsNew); |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | |
| | | return result; |
| | | |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void addGoodsEvaluateByDaTaoKe() { |
| | | List<Long> listId = null; |
| | |
| | | for (GoodsEvaluate goodsEvaluate : listExist) { |
| | | GoodsDetailVO goods = goodsEvaluate.getGoods(); |
| | | if (goods != null && goods.getGoodsType() == 1) { |
| | | listId.add(goods.getGoodsId()); |
| | | listId.add(Long.parseLong(goods.getGoodsId())); |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | for (int i = 0; i < list.size(); i++) { |
| | | boolean cerateGoods = cerateGoods(list.get(i)); |
| | | boolean cerateGoods = addByDaTaoKeGoods(list.get(i)); |
| | | if (cerateGoods) { |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | private boolean cerateGoods(DaTaoKeDetailV2 daTaoKe) { |
| | | |
| | | @Override |
| | | public boolean addByDaTaoKeGoods(DaTaoKeDetailV2 daTaoKe) { |
| | | try { |
| | | Date limitDate = DateUtil.reduceDay(new Date(), 7); |
| | | |
| | | List<GoodsEvaluate> evaluateList = goodsEvaluateDao.queryExistLimitTime(Constant.SOURCE_TYPE_TAOBAO, |
| | | daTaoKe.getGoodsId()+"", limitDate); |
| | | if (evaluateList != null && evaluateList.size() > 0) |
| | | return false; |
| | | |
| | | TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(daTaoKe.getGoodsId()); |
| | | if (goodsBrief == null) { |
| | | return false; |
| | |
| | | ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55"); |
| | | paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate()); |
| | | GoodsDetailVO goodsVO = GoodsDetailVOFactory.convertTaoBao(goodsBrief, paramsDTO); |
| | | // 发布用户 |
| | | ActivityUser user = activityUserService.getRandomByDaTaoKeCid(daTaoKe.getCid()); |
| | | |
| | | ActivityUser user = null; |
| | | if(daTaoKe.getCid() != null) { |
| | | user = activityUserService.getRandomByDaTaoKeCid(daTaoKe.getCid()); |
| | | } else { |
| | | List<ActivityRuleUser> ruleList = activityUserService.listByRuleCode(ActivityRuleUser.RULE_HAOHUO, 1, 20); |
| | | user = ruleList.get((int) (ruleList.size() * Math.random())).getActivityUser(); |
| | | } |
| | | |
| | | |
| | | String desc = daTaoKe.getDesc().replace(",", ","); |
| | | String[] split = desc.split(","); |
| | |
| | | goodsEvaluate.setState(1); |
| | | goodsEvaluate.setDynamicType(1); |
| | | goodsEvaluate.setType(EvaluateEnum.single); |
| | | |
| | | goodsEvaluate.setShareNum((int) (Math.random() * 5000) + 1000); |
| | | goodsEvaluate.setShareNumReal(0); |
| | | goodsEvaluate.setWeight(0.0); |
| | |
| | | List<String> goodsimgs = goodsBrief.getImgList(); |
| | | |
| | | List<String> imgs = new ArrayList<>(); |
| | | if (!StringUtil.isNullOrEmpty(goodsBrief.getPictUrlWhite())) { |
| | | imgs.add(goodsBrief.getPictUrlWhite()); |
| | | } |
| | | imgs.addAll(goodsimgs); |
| | | |
| | | |
| | | int i = 0; |
| | | List<ImgInfo> imgList = new ArrayList<>(); |
| | |
| | | if (!goodsVO.isHasCoupon()) { |
| | | commentText = commentText.replace("领券抢购", "抢购"); |
| | | commentText = commentText.replace("【券后价】[券后价]元", ""); |
| | | commentText = commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n"); |
| | | } |
| | | 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.setNeedSpin(true); |
| | |
| | | imgList.add(imgInfo); |
| | | i++; |
| | | } |
| | | |
| | | |
| | | int lineNum = 0; |
| | | if (imgList.size() > 0) { |
| | | if (imgList.size() == 1) { |
| | |
| | | return; |
| | | } |
| | | List<GoodsEvaluate> queryExist = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_TAOBAO, |
| | | goods.getAuctionId()); |
| | | goods.getAuctionId()+""); |
| | | if (queryExist == null || queryExist.size() == 0) { |
| | | return; |
| | | } |
| | |
| | | if (jdGoods == null) { |
| | | return; |
| | | } |
| | | List<GoodsEvaluate> queryExist = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_JD, jdGoods.getSkuId()); |
| | | List<GoodsEvaluate> queryExist = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_JD, jdGoods.getSkuId()+""); |
| | | if (queryExist == null || queryExist.size() == 0) { |
| | | return; |
| | | } |
| | |
| | | if (pddGoods == null) { |
| | | return; |
| | | } |
| | | List<GoodsEvaluate> queryExist = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_PDD, pddGoods.getGoodsId()); |
| | | List<GoodsEvaluate> queryExist = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_PDD, pddGoods.getGoodsId()+""); |
| | | if (queryExist == null || queryExist.size() == 0) { |
| | | return; |
| | | } |
| | |
| | | updateGoods(queryExist, goodsNew); |
| | | } |
| | | |
| | | @Override |
| | | public void updateVIPGoods(VIPGoodsInfo goods) { |
| | | if (goods == null) { |
| | | return; |
| | | } |
| | | List<GoodsEvaluate> queryExist = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_VIP, |
| | | goods.getGoodsId()); |
| | | if (queryExist == null || queryExist.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55"); |
| | | paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate()); |
| | | GoodsDetailVO goodsNew = GoodsDetailVOFactory.convertVIPGoods(goods, paramsDTO); |
| | | updateGoods(queryExist, goodsNew); |
| | | } |
| | | |
| | | @Override |
| | | public void updateSuningGoods(SuningGoodsInfo goods) { |
| | | if (goods == null) { |
| | | return; |
| | | } |
| | | List<GoodsEvaluate> queryExist = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_SUNING, |
| | | goods.getCommodityInfo().getCommodityCode()); |
| | | if (queryExist == null || queryExist.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55"); |
| | | paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate()); |
| | | GoodsDetailVO goodsNew = GoodsDetailVOFactory.convertSuningGoods(goods, paramsDTO); |
| | | updateGoods(queryExist, goodsNew); |
| | | } |
| | | |
| | | private void updateGoods(List<GoodsEvaluate> listExist, GoodsDetailVO goodsNew) { |
| | | long goodsId = goodsNew.getGoodsId(); |
| | | String goodsId = goodsNew.getGoodsId(); |
| | | int goodsType = goodsNew.getGoodsType(); |
| | | for (GoodsEvaluate goodsEvaluate : listExist) { |
| | | GoodsDetailVO goodsDetailVO = goodsEvaluate.getGoods(); |
| | | if (goodsDetailVO != null && goodsDetailVO.getGoodsId() != null && goodsDetailVO.getGoodsId() == goodsId |
| | | if (goodsDetailVO != null && goodsDetailVO.getGoodsId() != null && goodsDetailVO.getGoodsId().equalsIgnoreCase(goodsId) |
| | | && goodsDetailVO.getGoodsType() == goodsType) { |
| | | goodsEvaluate.setGoods(goodsNew); |
| | | } |
| | |
| | | |
| | | for (ImgInfo imgInfo : imgList) { |
| | | SimpleGoods simpleGoods = imgInfo.getGoods(); |
| | | if (simpleGoods == null || simpleGoods.getGoodsId() != goodsId |
| | | if (simpleGoods == null || !simpleGoods.getGoodsId().equalsIgnoreCase(goodsId) |
| | | || goodsType != simpleGoods.getGoodsType()) { |
| | | continue; |
| | | } |
| | |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | @Override |
| | | public void offlineTaoBaoGoods(Long goodsId) { |
| | | public void offlineTaoBaoGoods(String goodsId) { |
| | | try { |
| | | if (goodsId == null) { |
| | | return; |
| | | } |
| | | List<GoodsEvaluate> list = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_TAOBAO, goodsId); |
| | | List<GoodsEvaluate> list = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_TAOBAO,goodsId); |
| | | if (list == null || list.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | |
| | | // 下架商品 |
| | | offlineGoods(list, Constant.SOURCE_TYPE_TAOBAO, goodsId); |
| | | } catch (Exception e) { |
| | |
| | | } |
| | | |
| | | @CacheEvict(value = "dynamicCache", allEntries = true) |
| | | private void offlineGoods(List<GoodsEvaluate> list, int goodsType, Long goodsId) { |
| | | |
| | | private void offlineGoods(List<GoodsEvaluate> list, int goodsType, String goodsId) { |
| | | |
| | | for (GoodsEvaluate goodsEvaluate : list) { |
| | | // 商品下架 |
| | | GoodsDetailVO goodsDetailVO = goodsEvaluate.getGoods(); |
| | | goodsDetailVO.setState(1); |
| | | |
| | | |
| | | List<ImgInfo> imgList = goodsEvaluate.getImgList(); |
| | | if (imgList == null || imgList.size() == 0) { |
| | | goodsEvaluate.setUpdateTime(new Date()); |
| | |
| | | simpleGoods.setState(1); |
| | | GoodsDetailVO goodsVO = imgInfo.getGoodsVO(); |
| | | goodsVO.setState(1); |
| | | |
| | | |
| | | imgInfo.setGoods(simpleGoods); |
| | | imgInfo.setGoodsVO(goodsVO); |
| | | } |
| | |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 删除已过期时间 |
| | | */ |
| | | private void removeOverdue() { |
| | | if(1>0) |
| | | if (1 > 0) |
| | | return; |
| | | |
| | | |
| | | List<GoodsEvaluate> list = goodsEvaluateDao.queryOverdue(); |
| | | if (list == null || list.size() == 0) { |
| | | return; |
| | |
| | | * 删除商品已下架-单品 |
| | | */ |
| | | private void removeDownGoods() { |
| | | if(1>0) |
| | | if (1 > 0) |
| | | return; |
| | | try { |
| | | List<GoodsEvaluate> list = goodsEvaluateDao.removeDownGoods(); |
| | |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public GoodsEvaluate queryExistSingle(String goodsId, int goodsType) { |
| | | List<GoodsEvaluate> list = goodsEvaluateDao.queryExistSingle(goodsType, goodsId); |
| | | if (list != null && list.size() > 0) |
| | | return list.get(0); |
| | | return null; |
| | | } |
| | | |
| | | |
| | | } |