| | |
| | | package com.yeshi.fanli.service.impl.dynamic; |
| | | |
| | | import java.awt.image.BufferedImage; |
| | | import java.io.File; |
| | | import java.io.FileInputStream; |
| | | import java.io.InputStream; |
| | | import java.math.BigDecimal; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Collections; |
| | | import java.util.Comparator; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.UUID; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.imageio.ImageIO; |
| | | |
| | | import org.apache.commons.beanutils.PropertyUtils; |
| | | import org.springframework.cache.annotation.CacheEvict; |
| | | import org.springframework.cache.annotation.Cacheable; |
| | | import org.springframework.core.task.TaskExecutor; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | import org.springframework.web.multipart.MultipartHttpServletRequest; |
| | | import org.yeshi.utils.DateUtil; |
| | | import org.yeshi.utils.ImageCropUtil; |
| | | import org.yeshi.utils.tencentcloud.COSManager; |
| | | |
| | | import com.yeshi.common.vo.ClientTextStyleVO; |
| | | import com.yeshi.fanli.dao.dynamic.GoodsEvaluateDao; |
| | | import com.yeshi.fanli.dto.ConfigParamsDTO; |
| | | import com.yeshi.fanli.dto.GoodsMoneyConfigParamsDTO; |
| | | 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.SystemEnum; |
| | | import com.yeshi.fanli.entity.SystemFunction; |
| | | import com.yeshi.fanli.entity.SystemPIDInfo; |
| | | 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.entity.dynamic.SimpleGoods; |
| | | 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.entity.taobao.TaoBaoLink; |
| | | import com.yeshi.fanli.entity.taobao.dataoke.DaTaoKeDetailV2; |
| | | 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.goods.ConvertLinkException; |
| | | import com.yeshi.fanli.exception.taobao.TaoBaoConvertLinkException; |
| | | import com.yeshi.fanli.exception.taobao.TaobaoGoodsDownException; |
| | | import com.yeshi.fanli.lijin.manager.GoodsLijinMnager; |
| | | import com.yeshi.fanli.log.LogHelper; |
| | | import com.yeshi.fanli.service.inter.activity.ActivityUserService; |
| | | import com.yeshi.fanli.service.inter.config.ConfigService; |
| | |
| | | import com.yeshi.fanli.service.inter.goods.ShareGoodsService; |
| | | import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService; |
| | | import com.yeshi.fanli.service.inter.order.config.HongBaoManageService; |
| | | import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service; |
| | | import com.yeshi.fanli.service.manger.PIDManager; |
| | | import com.yeshi.fanli.service.manger.goods.ConvertLinkManager; |
| | | 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.service.manger.goods.TaoBaoLinkManager; |
| | | import com.yeshi.fanli.service.manger.goods.tb.DaTaoKeTipOffManager; |
| | | import com.yeshi.fanli.util.*; |
| | | 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.goods.douyin.vo.DYGoods; |
| | | import com.yeshi.fanli.util.goods.douyin.vo.DYGoodsDetail; |
| | | import com.yeshi.fanli.util.jd.JDApiUtil; |
| | | import com.yeshi.fanli.util.jd.JDUtil; |
| | | import com.yeshi.fanli.util.pinduoduo.PinDuoDuoApiUtil; |
| | | import com.yeshi.fanli.util.taobao.DaTaoKeTipOffUtil; |
| | | import com.yeshi.fanli.util.taobao.DaTaoKeUtil; |
| | | import com.yeshi.fanli.util.taobao.TaoBaoUtil; |
| | | import com.yeshi.fanli.util.taobao.TaoKeApiUtil; |
| | | import com.yeshi.fanli.vo.goods.CouponInfoVO; |
| | | import com.yeshi.fanli.vo.goods.GoodsDetailVO; |
| | | import com.yeshi.fanli.vo.msg.ClientTextStyleVO; |
| | | import com.yeshi.goods.facade.dto.taobao.dataoke.DaTaoKeListTopOffDTO; |
| | | import com.yeshi.goods.facade.entity.taobao.TaoBaoGoodsBrief; |
| | | import com.yeshi.goods.facade.entity.taobao.dataoke.DaTaoKeDetailV2; |
| | | import com.yeshi.goods.facade.service.DaTaoKeGoodsDetailV2Service; |
| | | import org.apache.commons.beanutils.PropertyUtils; |
| | | import org.springframework.cache.annotation.CacheEvict; |
| | | import org.springframework.cache.annotation.Cacheable; |
| | | import org.springframework.core.task.TaskExecutor; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | import org.springframework.web.multipart.MultipartHttpServletRequest; |
| | | import org.yeshi.utils.DateUtil; |
| | | import org.yeshi.utils.ImageCropUtil; |
| | | import org.yeshi.utils.MoneyBigDecimalUtil; |
| | | import org.yeshi.utils.TimeUtil; |
| | | import org.yeshi.utils.tencentcloud.COSManager; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.imageio.ImageIO; |
| | | import java.awt.image.BufferedImage; |
| | | import java.io.File; |
| | | import java.io.FileInputStream; |
| | | import java.io.InputStream; |
| | | import java.math.BigDecimal; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | |
| | | @Service |
| | | public class GoodsEvaluateServiceImpl implements GoodsEvaluateService { |
| | | |
| | | @Resource |
| | | private GoodsEvaluateDao goodsEvaluateDao; |
| | | @Resource |
| | | private GoodsEvaluateDao goodsEvaluateDao; |
| | | |
| | | @Resource |
| | | private ActivityUserService activityUserService; |
| | | @Resource |
| | | private ActivityUserService activityUserService; |
| | | |
| | | @Resource |
| | | private RedisManager redisManager; |
| | | @Resource |
| | | private RedisManager redisManager; |
| | | |
| | | @Resource |
| | | private HongBaoManageService hongBaoManageService; |
| | | |
| | | @Resource |
| | | private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService; |
| | | @Resource |
| | | private HongBaoManageService hongBaoManageService; |
| | | |
| | | @Resource(name = "taskExecutor") |
| | | private TaskExecutor executor; |
| | | @Resource |
| | | private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService; |
| | | |
| | | @Resource |
| | | private JDGoodsCacheUtil jdGoodsCacheUtil; |
| | | @Resource(name = "taskExecutor") |
| | | private TaskExecutor executor; |
| | | |
| | | @Resource |
| | | private PinDuoDuoCacheUtil pinDuoDuoCacheUtil; |
| | | @Resource |
| | | private JDGoodsCacheUtil jdGoodsCacheUtil; |
| | | |
| | | @Resource |
| | | private ConfigService configService; |
| | | @Resource |
| | | private PinDuoDuoCacheUtil pinDuoDuoCacheUtil; |
| | | |
| | | @Resource |
| | | private ShareGoodsService shareGoodsService; |
| | | @Resource |
| | | private ConfigService configService; |
| | | |
| | | @Resource |
| | | private ConvertLinkManager convertLinkManager; |
| | | @Resource |
| | | private ShareGoodsService shareGoodsService; |
| | | |
| | | @Resource |
| | | private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service; |
| | | @Resource |
| | | private TaoBaoLinkManager taoBaoLinkManager; |
| | | |
| | | |
| | | @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; |
| | | } else { |
| | | state = 0; |
| | | } |
| | | goodsEvaluateDao.updateSatate(id, state); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public String saveHead(MultipartFile file, GoodsEvaluate record) throws GoodsEvaluateException { |
| | | Integer state = record.getState(); |
| | | if (state == null) { |
| | | state = 0; |
| | | } |
| | | record.setState(state); |
| | | @Resource |
| | | private ConvertLinkManager convertLinkManager; |
| | | |
| | | String tilte = record.getTitle(); |
| | | if (StringUtil.isNullOrEmpty(tilte)) { |
| | | throw new GoodsEvaluateException(1, "推荐语不能为空"); |
| | | } |
| | | @Resource |
| | | private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service; |
| | | |
| | | try { |
| | | ActivityUser activityUser = activityUserService.getActivityUserByNickName(record.getUser(), file); |
| | | if (activityUser == null) |
| | | throw new GoodsEvaluateException(1, "请选择发布者"); |
| | | record.setUser(activityUser); |
| | | } catch (ActivityUserException e) { |
| | | throw new GoodsEvaluateException(1, e.getMsg()); |
| | | } |
| | | |
| | | if (record.getEndTime() != null) { |
| | | if (record.getStartTime() != null && record.getEndTime().getTime() <= record.getStartTime().getTime()) |
| | | throw new GoodsEvaluateException(1, "截止时间必须大于开始时间"); |
| | | } else { |
| | | if (record.getStartTime() == null) { |
| | | record.setEndTime(DateUtil.plusDayDate(3, new Date())); |
| | | } else { |
| | | record.setEndTime(DateUtil.plusDayDate(3, record.getStartTime())); |
| | | } |
| | | } |
| | | @Resource |
| | | private PIDManager pidManager; |
| | | |
| | | Integer dynamicType = record.getDynamicType(); |
| | | if (dynamicType == null) { |
| | | record.setDynamicType(1); |
| | | } |
| | | @Resource |
| | | private GoodsLijinMnager goodsLijinMnager; |
| | | |
| | | if (record.getShareNum() == null || record.getShareNum() <= 0) { |
| | | record.setShareNum((int) (Math.random() * 5000) + 1000); |
| | | } |
| | | @Override |
| | | public void switchState(String id) throws GoodsEvaluateException { |
| | | if (id == null) { |
| | | throw new GoodsEvaluateException(1, "请传递正确参数"); |
| | | } |
| | | |
| | | if (record.getWeight() == null) |
| | | record.setWeight(0.0); |
| | | GoodsEvaluate resultObj = goodsEvaluateDao.getById(id); |
| | | if (resultObj == null) { |
| | | throw new GoodsEvaluateException(1, "此内容已不存在"); |
| | | } |
| | | |
| | | if (record.getStartTime() == null) |
| | | record.setStartTime(new Date()); |
| | | Integer state = resultObj.getState(); |
| | | if (state == null || state == 0) { |
| | | state = 1; |
| | | } else { |
| | | state = 0; |
| | | } |
| | | goodsEvaluateDao.updateSatate(id, state); |
| | | } |
| | | |
| | | record.setPublishTime(record.getStartTime()); |
| | | @Override |
| | | public String saveHead(MultipartFile file, GoodsEvaluate record) throws GoodsEvaluateException { |
| | | Integer state = record.getState(); |
| | | if (state == null) { |
| | | state = 0; |
| | | } |
| | | record.setState(state); |
| | | |
| | | String id = record.getId(); |
| | | if (StringUtil.isNullOrEmpty(id)) { |
| | | id = UUID.randomUUID().toString().replace("-", ""); |
| | | record.setId(id); |
| | | record.setShareNumReal(0); |
| | | record.setCreateTime(new Date()); |
| | | record.setUpdateTime(new Date()); |
| | | goodsEvaluateDao.save(record); |
| | | } else { |
| | | GoodsEvaluate resultObj = goodsEvaluateDao.getById(id); |
| | | if (resultObj == null) |
| | | throw new GoodsEvaluateException(1, "修改内容已不存在"); |
| | | String tilte = record.getTitle(); |
| | | if (StringUtil.isNullOrEmpty(tilte)) { |
| | | throw new GoodsEvaluateException(1, "推荐语不能为空"); |
| | | } |
| | | |
| | | resultObj.setState(record.getState()); |
| | | resultObj.setUser(record.getUser()); |
| | | resultObj.setShareNum(record.getShareNum()); |
| | | resultObj.setWeight(record.getWeight()); |
| | | resultObj.setStartTime(record.getStartTime()); |
| | | resultObj.setEndTime(record.getEndTime()); |
| | | resultObj.setTitle(tilte); |
| | | resultObj.setUpdateTime(new Date()); |
| | | goodsEvaluateDao.save(resultObj); |
| | | } |
| | | return id; |
| | | } |
| | | try { |
| | | ActivityUser activityUser = activityUserService.getActivityUserByNickName(record.getUser(), file); |
| | | if (activityUser == null) |
| | | throw new GoodsEvaluateException(1, "请选择发布者"); |
| | | record.setUser(activityUser); |
| | | } catch (ActivityUserException e) { |
| | | throw new GoodsEvaluateException(1, e.getMsg()); |
| | | } |
| | | |
| | | /** |
| | | * 上传图片 |
| | | * |
| | | * @param file |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | private String uploadPicture(MultipartFile file) throws Exception { |
| | | 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; |
| | | return COSManager.getInstance().uploadFile(inputStream, filePath).getUrl(); |
| | | } |
| | | if (record.getEndTime() != null) { |
| | | if (record.getStartTime() != null && record.getEndTime().getTime() <= record.getStartTime().getTime()) |
| | | throw new GoodsEvaluateException(1, "截止时间必须大于开始时间"); |
| | | } else { |
| | | if (record.getStartTime() == null) { |
| | | record.setEndTime(DateUtil.plusDayDate(3, new Date())); |
| | | } else { |
| | | record.setEndTime(DateUtil.plusDayDate(3, record.getStartTime())); |
| | | } |
| | | } |
| | | |
| | | private ImgInfo uploadVideoPicture(MultipartFile filevideo) { |
| | | try { |
| | | File tempFile = new File(FileUtil.getCacheDir() + "/" + filevideo.getOriginalFilename()); |
| | | if (tempFile.exists()) |
| | | tempFile.delete(); |
| | | tempFile.createNewFile(); |
| | | filevideo.transferTo(tempFile); |
| | | File destFile = new File(FileUtil.getCacheDir() + "/temp_" + filevideo.getOriginalFilename()); |
| | | // 裁剪视频封面,宽高比为2:1 |
| | | ImageCropUtil.centerCrop(tempFile, destFile, 2.0f); |
| | | BufferedImage sourceImg = ImageIO.read(new FileInputStream(destFile)); |
| | | ImgInfo info = new ImgInfo(); |
| | | int width = sourceImg.getWidth(); |
| | | int height = sourceImg.getHeight(); |
| | | String picLink = uploadPicture(destFile, filevideo.getContentType()); |
| | | info.setH(height); |
| | | info.setW(width); |
| | | info.setUrl(picLink); |
| | | return info; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | Integer dynamicType = record.getDynamicType(); |
| | | if (dynamicType == null) { |
| | | record.setDynamicType(1); |
| | | } |
| | | |
| | | private String uploadPicture(File file, String contentType) throws Exception { |
| | | InputStream inputStream = new FileInputStream(file); |
| | | String type = contentType.substring(contentType.indexOf("/") + 1); |
| | | String filePath = FilePathEnum.goodsEvaluate.getPath() + UUID.randomUUID().toString().replace("-", "") + "." |
| | | + type; |
| | | return COSManager.getInstance().uploadFile(inputStream, filePath).getUrl(); |
| | | } |
| | | if (record.getShareNum() == null || record.getShareNum() <= 0) { |
| | | record.setShareNum((int) (Math.random() * 5000) + 1000); |
| | | } |
| | | |
| | | /** |
| | | * 删除图片 |
| | | * |
| | | * @param record |
| | | * @throws Exception |
| | | */ |
| | | private void removePicture(String picture) throws Exception { |
| | | if (picture != null && picture.trim().length() > 0) { |
| | | COSManager.getInstance().deleteFile(picture); |
| | | } |
| | | } |
| | | if (record.getWeight() == null) |
| | | record.setWeight(0.0); |
| | | |
| | | @Override |
| | | public String saveSingleGoods(String pid, Long goodsId, Integer goodsType, String videoUrl, Integer picNum, |
| | | String picUrls, MultipartHttpServletRequest fileRequest) throws GoodsEvaluateException, Exception { |
| | | if (StringUtil.isNullOrEmpty(pid)) { |
| | | throw new GoodsEvaluateException(1, "请保存第一部分信息"); |
| | | } |
| | | if (record.getStartTime() == null) |
| | | record.setStartTime(new Date()); |
| | | |
| | | GoodsEvaluate resultObj = goodsEvaluateDao.getById(pid); |
| | | if (resultObj == null) |
| | | throw new GoodsEvaluateException(1, "第一部分信息缺失"); |
| | | record.setPublishTime(record.getStartTime()); |
| | | |
| | | // 原封视频面图 |
| | | ImgInfo imgVideo = null; |
| | | List<String> listDel = new ArrayList<String>(); |
| | | List<String> listOld = new ArrayList<String>(); |
| | | String id = record.getId(); |
| | | if (StringUtil.isNullOrEmpty(id)) { |
| | | id = UUID.randomUUID().toString().replace("-", ""); |
| | | record.setId(id); |
| | | record.setShareNumReal(0); |
| | | record.setCreateTime(new Date()); |
| | | record.setUpdateTime(new Date()); |
| | | goodsEvaluateDao.save(record); |
| | | } else { |
| | | GoodsEvaluate resultObj = goodsEvaluateDao.getById(id); |
| | | if (resultObj == null) |
| | | throw new GoodsEvaluateException(1, "修改内容已不存在"); |
| | | |
| | | // 处理图片 |
| | | GoodsDetailVO oldGoodsVO = null; |
| | | List<ImgInfo> resultList = resultObj.getImgList(); |
| | | if (resultList != null && resultList.size() > 0) { |
| | | for (ImgInfo info : resultList) { |
| | | ImgEnum type = info.getType(); |
| | | if (type == ImgEnum.video) { |
| | | imgVideo = info; |
| | | } else if (type == ImgEnum.goods) { |
| | | listOld.add(info.getUrl()); |
| | | oldGoodsVO = info.getGoodsVO(); |
| | | } else if (type == ImgEnum.img) { |
| | | listOld.add(info.getUrl()); |
| | | } |
| | | } |
| | | } |
| | | resultObj.setState(record.getState()); |
| | | resultObj.setUser(record.getUser()); |
| | | resultObj.setShareNum(record.getShareNum()); |
| | | resultObj.setWeight(record.getWeight()); |
| | | resultObj.setStartTime(record.getStartTime()); |
| | | resultObj.setEndTime(record.getEndTime()); |
| | | resultObj.setTitle(tilte); |
| | | resultObj.setUpdateTime(new Date()); |
| | | goodsEvaluateDao.save(resultObj); |
| | | } |
| | | return id; |
| | | } |
| | | |
| | | // 视频部分 |
| | | if (fileRequest != null) { |
| | | MultipartFile filevideo = fileRequest.getFile("filevideo"); |
| | | if (filevideo != null) { |
| | | if (StringUtil.isNullOrEmpty(videoUrl)) { |
| | | throw new GoodsEvaluateException(1, "视频链接不能为空"); |
| | | } |
| | | ImgInfo info = uploadVideoPicture(filevideo); |
| | | if (info == null) |
| | | throw new GoodsEvaluateException(2, "视频图片上传失败"); |
| | | if (imgVideo != null) { |
| | | String url = imgVideo.getUrl(); |
| | | if (!StringUtil.isNullOrEmpty(url)) { |
| | | listDel.add(url); |
| | | } |
| | | imgVideo.setUrl(info.getUrl()); |
| | | imgVideo.setUrlHD(info.getUrl()); |
| | | } else { |
| | | imgVideo = new ImgInfo(); |
| | | imgVideo.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | imgVideo.setLarge(true); |
| | | imgVideo.setPid(pid); |
| | | imgVideo.setUrl(info.getUrl()); |
| | | imgVideo.setUrlHD(info.getUrl()); |
| | | imgVideo.setVideoUrl(videoUrl); |
| | | imgVideo.setType(ImgEnum.video); |
| | | } |
| | | imgVideo.setW(info.getW()); |
| | | imgVideo.setH(info.getH()); |
| | | } |
| | | } |
| | | /** |
| | | * 上传图片 |
| | | * |
| | | * @param file |
| | | * @return |
| | | * @throws Exception |
| | | */ |
| | | private String uploadPicture(MultipartFile file) throws Exception { |
| | | 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; |
| | | return COSManager.getInstance().uploadFile(inputStream, filePath).getUrl(); |
| | | } |
| | | |
| | | List<ImgInfo> listImg = new ArrayList<ImgInfo>(); |
| | | if (imgVideo != null) { |
| | | if (!StringUtil.isNullOrEmpty(videoUrl)) { |
| | | if (imgVideo != null && StringUtil.isNullOrEmpty(imgVideo.getUrl())) { |
| | | throw new GoodsEvaluateException(1, "视频封面图不能为空"); |
| | | } |
| | | imgVideo.setVideoUrl(videoUrl); |
| | | listImg.add(imgVideo); |
| | | } else { |
| | | String url = imgVideo.getUrl(); |
| | | if (!StringUtil.isNullOrEmpty(url)) { |
| | | listDel.add(url); |
| | | } |
| | | } |
| | | } |
| | | private ImgInfo uploadVideoPicture(MultipartFile filevideo) { |
| | | try { |
| | | File tempFile = new File(FileUtil.getCacheDir() + "/" + filevideo.getOriginalFilename()); |
| | | if (tempFile.exists()) |
| | | tempFile.delete(); |
| | | tempFile.createNewFile(); |
| | | filevideo.transferTo(tempFile); |
| | | File destFile = new File(FileUtil.getCacheDir() + "/temp_" + filevideo.getOriginalFilename()); |
| | | // 裁剪视频封面,宽高比为2:1 |
| | | ImageCropUtil.centerCrop(tempFile, destFile, 2.0f); |
| | | BufferedImage sourceImg = ImageIO.read(new FileInputStream(destFile)); |
| | | ImgInfo info = new ImgInfo(); |
| | | int width = sourceImg.getWidth(); |
| | | int height = sourceImg.getHeight(); |
| | | String picLink = uploadPicture(destFile, filevideo.getContentType()); |
| | | info.setH(height); |
| | | info.setW(width); |
| | | info.setUrl(picLink); |
| | | return info; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | // 编辑图片 |
| | | List<String> listpic = new ArrayList<>(); |
| | | if (!StringUtil.isNullOrEmpty(picUrls)) { |
| | | String[] pics = picUrls.split(","); |
| | | if (pics != null) { |
| | | for (int i = 0; i < pics.length; i++) { |
| | | String picLink = pics[i]; |
| | | if (picLink.startsWith("http")) { |
| | | listpic.add(picLink); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | 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; |
| | | |
| | | // 上传文件替换 |
| | | if (fileRequest != null) { |
| | | for (int i = 0; i < 9; i++) { |
| | | MultipartFile file = fileRequest.getFile("file" + i); |
| | | if (file != null) { |
| | | String picLink = uploadPicture(file); |
| | | if (i < listpic.size()) { |
| | | listpic.set(i, picLink); |
| | | } else { |
| | | listpic.add(picLink); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | BufferedImage sourceImg = ImageIO.read(inputStream); |
| | | ImgInfo info = new ImgInfo(); |
| | | int width = sourceImg.getWidth(); |
| | | int height = sourceImg.getHeight(); |
| | | |
| | | // 指定主图 |
| | | if (picNum == null || picNum > 9 || picNum < 1) { |
| | | picNum = 1; |
| | | } |
| | | String picLink = COSManager.getInstance().uploadFile(file.getInputStream(), filePath).getUrl(); |
| | | |
| | | GoodsDetailVO goodsDetailVO = null; |
| | | JDGoods jdGoods = null; |
| | | PDDGoodsDetail pddGoods = null; |
| | | ConfigParamsDTO params = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55"); |
| | | params.setBaseFanliRate(hongBaoManageService.getBaseFanliRate()); |
| | | if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { |
| | | try { |
| | | TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(goodsId); |
| | | goodsDetailVO = GoodsDetailVOFactory.convertTaoBao(goodsBrief, params); |
| | | } catch (TaobaoGoodsDownException e) { |
| | | throw new GoodsEvaluateException(1, "商品已下架"); |
| | | } |
| | | } else if (goodsType == Constant.SOURCE_TYPE_JD) { |
| | | jdGoods = jdGoodsCacheUtil.getGoodsInfo(goodsId); |
| | | goodsDetailVO = GoodsDetailVOFactory.convertJDGoods(jdGoods, params); |
| | | } else if (goodsType == Constant.SOURCE_TYPE_PDD) { |
| | | pddGoods = pinDuoDuoCacheUtil.getGoodsInfo(goodsId); |
| | | goodsDetailVO = GoodsDetailVOFactory.convertPDDGoods(pddGoods, params); |
| | | } |
| | | info.setH(height); |
| | | info.setW(width); |
| | | info.setUrl(picLink); |
| | | return info; |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | if (goodsDetailVO == null) { |
| | | throw new GoodsEvaluateException(1, "该商品信息不存在"); |
| | | } |
| | | private String uploadPicture(File file, String contentType) throws Exception { |
| | | InputStream inputStream = new FileInputStream(file); |
| | | String type = contentType.substring(contentType.indexOf("/") + 1); |
| | | String filePath = FilePathEnum.goodsEvaluate.getPath() + UUID.randomUUID().toString().replace("-", "") + "." |
| | | + type; |
| | | return COSManager.getInstance().uploadFile(inputStream, filePath).getUrl(); |
| | | } |
| | | |
| | | List<ImgInfo> tempList = new ArrayList<ImgInfo>(); |
| | | int totalImg = 0; |
| | | if (listpic != null && listpic.size() > 0) { |
| | | for (int i = 0; i < listpic.size() && i < 9; i++) { |
| | | ImgInfo imgInfo0 = new ImgInfo(); |
| | | imgInfo0.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | imgInfo0.setW(1); |
| | | imgInfo0.setH(1); |
| | | imgInfo0.setLarge(false); |
| | | imgInfo0.setPid(pid); |
| | | imgInfo0.setUrl(listpic.get(i)); |
| | | imgInfo0.setUrlHD(listpic.get(i)); |
| | | /** |
| | | * 删除图片 |
| | | * |
| | | * @param picture |
| | | * @throws Exception |
| | | */ |
| | | private void removePicture(String picture) throws Exception { |
| | | if (picture != null && picture.trim().length() > 0) { |
| | | COSManager.getInstance().deleteFile(picture); |
| | | } |
| | | } |
| | | |
| | | if (picNum - 1 == i) { |
| | | imgInfo0.setType(ImgEnum.goods); |
| | | SimpleGoods simpleGoods = new SimpleGoods(); |
| | | simpleGoods.setState(goodsDetailVO.getState()); |
| | | simpleGoods.setGoodsId(goodsId); |
| | | simpleGoods.setGoodsType(goodsType); |
| | | CouponInfoVO couponInfo = goodsDetailVO.getCouponInfo(); |
| | | if (couponInfo == null) { |
| | | simpleGoods.setPrice(goodsDetailVO.getZkPrice()); |
| | | } else { |
| | | simpleGoods.setPrice(goodsDetailVO.getCouponPrice()); |
| | | simpleGoods.setAmount(couponInfo.getAmount()); |
| | | } |
| | | imgInfo0.setGoods(simpleGoods); |
| | | imgInfo0.setGoodsVO(goodsDetailVO); |
| | | listImg.add(imgInfo0); |
| | | } else { |
| | | imgInfo0.setType(ImgEnum.img); |
| | | tempList.add(imgInfo0); |
| | | } |
| | | totalImg++; |
| | | } |
| | | } |
| | | @Override |
| | | public String saveSingleGoods(String pid, String goodsId, Integer goodsType, String videoUrl, Integer picNum, |
| | | String picUrls, SystemEnum system, MultipartHttpServletRequest fileRequest) throws GoodsEvaluateException, Exception { |
| | | if (StringUtil.isNullOrEmpty(pid)) { |
| | | throw new GoodsEvaluateException(1, "请保存第一部分信息"); |
| | | } |
| | | |
| | | if (tempList.size() > 0) { |
| | | listImg.addAll(tempList); |
| | | } |
| | | GoodsEvaluate resultObj = goodsEvaluateDao.getById(pid); |
| | | if (resultObj == null) |
| | | throw new GoodsEvaluateException(1, "第一部分信息缺失"); |
| | | |
| | | if (listOld != null && listOld.size() > 0) { |
| | | for (int j = 0; j < listOld.size(); j++) { |
| | | boolean del = true; |
| | | String oldPic = listOld.get(j); |
| | | for (ImgInfo imgInfo : listImg) { |
| | | String url = imgInfo.getUrl(); |
| | | if (url.equals(oldPic)) { |
| | | del = false; |
| | | } |
| | | } |
| | | if (del) |
| | | listDel.add(listOld.get(j)); |
| | | } |
| | | } |
| | | // 原封视频面图 |
| | | ImgInfo imgVideo = null; |
| | | List<String> listDel = new ArrayList<String>(); |
| | | List<String> listOld = new ArrayList<String>(); |
| | | |
| | | int lineNum = 0; |
| | | if (totalImg > 0) { |
| | | if (totalImg == 1) { |
| | | lineNum = 1; |
| | | } else if (totalImg == 3) { |
| | | lineNum = 3; |
| | | } else if (totalImg == 2 || totalImg == 4) { |
| | | lineNum = 2; |
| | | } else { |
| | | lineNum = 3; |
| | | } |
| | | } |
| | | // 处理图片 |
| | | GoodsDetailVO oldGoodsVO = null; |
| | | List<ImgInfo> resultList = resultObj.getImgList(); |
| | | if (resultList != null && resultList.size() > 0) { |
| | | for (ImgInfo info : resultList) { |
| | | ImgEnum type = info.getType(); |
| | | if (type == ImgEnum.video) { |
| | | imgVideo = info; |
| | | } else if (type == ImgEnum.goods) { |
| | | listOld.add(info.getUrl()); |
| | | oldGoodsVO = info.getGoodsVO(); |
| | | } else if (type == ImgEnum.img) { |
| | | listOld.add(info.getUrl()); |
| | | } |
| | | } |
| | | } |
| | | if (oldGoodsVO != null) { |
| | | oldGoodsVO.setCreatetime(null); |
| | | } |
| | | |
| | | resultObj.setLineNum(lineNum); |
| | | resultObj.setGoods(goodsDetailVO); |
| | | resultObj.setMainPicNum(picNum); |
| | | resultObj.setImgList(listImg); |
| | | // 视频部分 |
| | | if (fileRequest != null) { |
| | | MultipartFile filevideo = fileRequest.getFile("filevideo"); |
| | | if (filevideo != null) { |
| | | if (StringUtil.isNullOrEmpty(videoUrl)) { |
| | | throw new GoodsEvaluateException(1, "视频链接不能为空"); |
| | | } |
| | | ImgInfo info = uploadVideoPicture(filevideo); |
| | | if (info == null) |
| | | throw new GoodsEvaluateException(2, "视频图片上传失败"); |
| | | if (imgVideo != null) { |
| | | String url = imgVideo.getUrl(); |
| | | if (!StringUtil.isNullOrEmpty(url)) { |
| | | listDel.add(url); |
| | | } |
| | | imgVideo.setUrl(info.getUrl()); |
| | | imgVideo.setUrlHD(info.getUrl()); |
| | | } else { |
| | | imgVideo = new ImgInfo(); |
| | | imgVideo.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | imgVideo.setLarge(true); |
| | | imgVideo.setPid(pid); |
| | | imgVideo.setUrl(info.getUrl()); |
| | | imgVideo.setUrlHD(info.getUrl()); |
| | | imgVideo.setVideoUrl(videoUrl); |
| | | imgVideo.setType(ImgEnum.video); |
| | | } |
| | | imgVideo.setW(info.getW()); |
| | | imgVideo.setH(info.getH()); |
| | | } |
| | | } |
| | | |
| | | boolean addComment = true; |
| | | List<CommentInfo> commentsNew = new ArrayList<>(); |
| | | List<CommentInfo> comments = resultObj.getComments(); |
| | | if (comments != null && comments.size() > 0) { |
| | | for (CommentInfo commentInfo : comments) { |
| | | if (commentInfo.getTypeEnum() == CommentInfoEnum.goodsCoupon) { |
| | | if (oldGoodsVO != null && oldGoodsVO.getGoodsId().longValue() == goodsId.longValue() |
| | | && oldGoodsVO.getGoodsType() == goodsType) { |
| | | addComment = false; |
| | | } |
| | | continue; |
| | | } |
| | | commentsNew.add(commentInfo); |
| | | } |
| | | } |
| | | List<ImgInfo> listImg = new ArrayList<ImgInfo>(); |
| | | if (imgVideo != null) { |
| | | if (!StringUtil.isNullOrEmpty(videoUrl)) { |
| | | if (imgVideo != null && StringUtil.isNullOrEmpty(imgVideo.getUrl())) { |
| | | throw new GoodsEvaluateException(1, "视频封面图不能为空"); |
| | | } |
| | | imgVideo.setVideoUrl(videoUrl); |
| | | listImg.add(imgVideo); |
| | | } else { |
| | | String url = imgVideo.getUrl(); |
| | | if (!StringUtil.isNullOrEmpty(url)) { |
| | | listDel.add(url); |
| | | } |
| | | } |
| | | } |
| | | |
| | | /* |
| | | * // 无券不能自动 生成评论 CouponInfoVO couponInfo1 = |
| | | * goodsDetailVO.getCouponInfo(); if (couponInfo1 == null) { addComment |
| | | * = false; } |
| | | */ |
| | | // 编辑图片 |
| | | List<String> listpic = new ArrayList<>(); |
| | | if (!StringUtil.isNullOrEmpty(picUrls)) { |
| | | String[] pics = picUrls.split(","); |
| | | if (pics != null) { |
| | | for (int i = 0; i < pics.length; i++) { |
| | | String picLink = pics[i]; |
| | | if (picLink.startsWith("http")) { |
| | | listpic.add(picLink); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | String commentText = ""; |
| | | if (addComment) { |
| | | if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { |
| | | TaoBaoLink taoBaoLink = shareGoodsService.getTaoBaoLinkForShare(1L, goodsId, "0"); |
| | | String template = configService.get(ConfigKeyEnum.quickShareTBCommentText.getKey()); |
| | | commentText = template.replace("[淘口令]", TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken())); |
| | | } else if (goodsType == Constant.SOURCE_TYPE_JD) { |
| | | String couponUrl = null; |
| | | JDCouponInfo couponInfo = JDUtil.getShowCouponInfo(jdGoods); |
| | | if (couponInfo != null) { |
| | | couponUrl = couponInfo.getLink(); |
| | | } |
| | | String materialId = "https://item.jd.com/" + goodsId + ".html"; |
| | | String jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, |
| | | JDApiUtil.POSITION_SHARE + "", "1"); |
| | | String template = configService.get(ConfigKeyEnum.quickShareJDCommentText.getKey()); |
| | | if (jumpLink == null) { |
| | | throw new GoodsEvaluateException(1, "该商品转链失败"); |
| | | } |
| | | commentText = template.replace("[链接]", jumpLink); |
| | | } else if (goodsType == Constant.SOURCE_TYPE_PDD) { |
| | | String jumpLink = PinDuoDuoApiUtil.getPromotionUrl(goodsId, PinDuoDuoApiUtil.PID_SHARE + "", "1"); |
| | | if (jumpLink == null) { |
| | | throw new GoodsEvaluateException(1, "该商品转链失败"); |
| | | } |
| | | String template = configService.get(ConfigKeyEnum.quickSharePDDCommentText.getKey()); |
| | | commentText = template.replace("[链接]", jumpLink); |
| | | } |
| | | // 上传文件替换 |
| | | if (fileRequest != null) { |
| | | for (int i = 0; i < 9; i++) { |
| | | MultipartFile file = fileRequest.getFile("file" + i); |
| | | if (file != null) { |
| | | String picLink = uploadPicture(file); |
| | | if (i < listpic.size()) { |
| | | listpic.set(i, picLink); |
| | | } else { |
| | | listpic.add(picLink); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | // commentText = commentText.replace("[原价]", |
| | | // MoneyBigDecimalUtil.getWithNoZera(goodsDetailVO.getZkPrice())+""); |
| | | // if (!goodsDetailVO.isHasCoupon()) { |
| | | // commentText = commentText.replace("领券抢购", "抢购"); |
| | | // commentText = commentText.replace("【券后价】[券后价]元", ""); |
| | | // } else { |
| | | // 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", |
| | | // "\r\n"); |
| | | // 指定主图 |
| | | if (picNum == null || picNum > 9 || picNum < 1) { |
| | | picNum = 1; |
| | | } |
| | | |
| | | CommentInfo commentInfo = new CommentInfo(); |
| | | commentInfo.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | commentInfo.setContent(commentText); |
| | | commentInfo.setTypeEnum(CommentInfoEnum.goodsCoupon); |
| | | commentInfo.setNeedSpin(true); |
| | | commentsNew.add(commentInfo); |
| | | resultObj.setComments(commentsNew); |
| | | } |
| | | resultObj.setUpdateTime(new Date()); |
| | | goodsEvaluateDao.save(resultObj); |
| | | GoodsDetailVO goodsDetailVO = null; |
| | | JDGoods jdGoods = null; |
| | | PDDGoodsDetail pddGoods = null; |
| | | GoodsMoneyConfigParamsDTO params = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55", system); |
| | | params.setBaseFanliRate(hongBaoManageService.getBaseFanliRate(system)); |
| | | if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { |
| | | try { |
| | | TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(goodsId); |
| | | goodsDetailVO = GoodsDetailVOFactory.convertTaoBao(goodsBrief, params); |
| | | } catch (TaobaoGoodsDownException e) { |
| | | throw new GoodsEvaluateException(1, "商品已下架"); |
| | | } |
| | | } else if (goodsType == Constant.SOURCE_TYPE_JD) { |
| | | jdGoods = jdGoodsCacheUtil.getGoodsInfo(goodsId); |
| | | goodsDetailVO = GoodsDetailVOFactory.convertJDGoods(jdGoods, params); |
| | | } else if (goodsType == Constant.SOURCE_TYPE_PDD) { |
| | | pddGoods = pinDuoDuoCacheUtil.getGoodsInfo(goodsId); |
| | | goodsDetailVO = GoodsDetailVOFactory.convertPDDGoods(pddGoods, params); |
| | | } |
| | | |
| | | // 删除图片 |
| | | if (listDel.size() > 0) { |
| | | for (String url : listDel) { |
| | | if (url.contains(FilePathEnum.goodsEvaluate.getPath())) { |
| | | removePicture(url); |
| | | } |
| | | } |
| | | } |
| | | if (goodsDetailVO == null) { |
| | | throw new GoodsEvaluateException(1, "该商品信息不存在"); |
| | | } |
| | | |
| | | return commentText; |
| | | } |
| | | goodsDetailVO.setCreatetime(null); |
| | | |
| | | 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; |
| | | List<ImgInfo> tempList = new ArrayList<ImgInfo>(); |
| | | int totalImg = 0; |
| | | if (listpic != null && listpic.size() > 0) { |
| | | for (int i = 0; i < listpic.size() && i < 9; i++) { |
| | | ImgInfo imgInfo0 = new ImgInfo(); |
| | | imgInfo0.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | imgInfo0.setW(1); |
| | | imgInfo0.setH(1); |
| | | imgInfo0.setLarge(false); |
| | | imgInfo0.setPid(pid); |
| | | imgInfo0.setUrl(listpic.get(i)); |
| | | imgInfo0.setUrlHD(listpic.get(i)); |
| | | |
| | | 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); |
| | | } |
| | | if (picNum - 1 == i) { |
| | | imgInfo0.setType(ImgEnum.goods); |
| | | SimpleGoods simpleGoods = new SimpleGoods(); |
| | | simpleGoods.setState(goodsDetailVO.getState()); |
| | | simpleGoods.setGoodsId(goodsId); |
| | | simpleGoods.setGoodsType(goodsType); |
| | | CouponInfoVO couponInfo = goodsDetailVO.getCouponInfo(); |
| | | if (couponInfo == null) { |
| | | simpleGoods.setPrice(goodsDetailVO.getZkPrice()); |
| | | } else { |
| | | simpleGoods.setPrice(goodsDetailVO.getCouponPrice()); |
| | | simpleGoods.setAmount(couponInfo.getAmount()); |
| | | } |
| | | imgInfo0.setGoods(simpleGoods); |
| | | imgInfo0.setGoodsVO(goodsDetailVO); |
| | | listImg.add(imgInfo0); |
| | | } else { |
| | | imgInfo0.setType(ImgEnum.img); |
| | | tempList.add(imgInfo0); |
| | | } |
| | | totalImg++; |
| | | } |
| | | } |
| | | |
| | | commentText = commentText.replace("[原价]", goodsDetailVO.getZkPrice().toString()); |
| | | if (!goodsDetailVO.isHasCoupon()) { |
| | | commentText = commentText.replace("领券抢购", "抢购"); |
| | | commentText = commentText.replace("【券后价】[券后价]元", ""); |
| | | } else { |
| | | commentText = commentText.replace("[券后价]", goodsDetailVO.getCouponPrice().toString()); |
| | | } |
| | | if (tempList.size() > 0) { |
| | | listImg.addAll(tempList); |
| | | } |
| | | |
| | | return commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n"); |
| | | } |
| | | if (listOld != null && listOld.size() > 0) { |
| | | for (int j = 0; j < listOld.size(); j++) { |
| | | boolean del = true; |
| | | String oldPic = listOld.get(j); |
| | | for (ImgInfo imgInfo : listImg) { |
| | | String url = imgInfo.getUrl(); |
| | | if (url.equals(oldPic)) { |
| | | del = false; |
| | | } |
| | | } |
| | | if (del) |
| | | listDel.add(listOld.get(j)); |
| | | } |
| | | } |
| | | |
| | | public GoodsDetailVO getGoodsDetailVO(Long goodsId, Integer goodsType) throws GoodsEvaluateException { |
| | | GoodsDetailVO goodsDetail = null; |
| | | ConfigParamsDTO params = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55"); |
| | | params.setBaseFanliRate(hongBaoManageService.getBaseFanliRate()); |
| | | 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, "商品已下架"); |
| | | } |
| | | } else if (goodsType == Constant.SOURCE_TYPE_JD) { |
| | | JDGoods goodsInfo = jdGoodsCacheUtil.getGoodsInfo(goodsId); |
| | | goodsDetail = GoodsDetailVOFactory.convertJDGoods(goodsInfo, params); |
| | | } else if (goodsType == Constant.SOURCE_TYPE_PDD) { |
| | | PDDGoodsDetail goodsInfo = pinDuoDuoCacheUtil.getGoodsInfo(goodsId); |
| | | goodsDetail = GoodsDetailVOFactory.convertPDDGoods(goodsInfo, params); |
| | | } |
| | | return goodsDetail; |
| | | } |
| | | int lineNum = 0; |
| | | if (totalImg > 0) { |
| | | if (totalImg == 1) { |
| | | lineNum = 1; |
| | | } else if (totalImg == 3) { |
| | | lineNum = 3; |
| | | } else if (totalImg == 2 || totalImg == 4) { |
| | | lineNum = 2; |
| | | } else { |
| | | lineNum = 3; |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void saveMultipleGoods(String pid, String videoUrl, String goodsList, |
| | | MultipartHttpServletRequest fileRequest) throws GoodsEvaluateException, Exception { |
| | | if (StringUtil.isNullOrEmpty(pid)) { |
| | | throw new GoodsEvaluateException(1, "请保存第一部分信息"); |
| | | } |
| | | resultObj.setLineNum(lineNum); |
| | | resultObj.setGoods(goodsDetailVO); |
| | | resultObj.setMainPicNum(picNum); |
| | | resultObj.setImgList(listImg); |
| | | |
| | | GoodsEvaluate resultObj = goodsEvaluateDao.getById(pid); |
| | | if (resultObj == null) |
| | | throw new GoodsEvaluateException(1, "第一部分信息缺失"); |
| | | boolean addComment = true; |
| | | List<CommentInfo> commentsNew = new ArrayList<>(); |
| | | List<CommentInfo> comments = resultObj.getComments(); |
| | | if (comments != null && comments.size() > 0) { |
| | | for (CommentInfo commentInfo : comments) { |
| | | if (commentInfo.getTypeEnum() == CommentInfoEnum.goodsCoupon) { |
| | | if (oldGoodsVO != null && oldGoodsVO.getGoodsId().equalsIgnoreCase(goodsId) |
| | | && oldGoodsVO.getGoodsType() == goodsType) { |
| | | addComment = false; |
| | | } |
| | | continue; |
| | | } |
| | | commentsNew.add(commentInfo); |
| | | } |
| | | } |
| | | |
| | | // 原封视频面图 |
| | | ImgInfo imgVideo = null; |
| | | List<String> listDel = new ArrayList<String>(); |
| | | List<ImgInfo> oldGoodsList = new ArrayList<ImgInfo>(); |
| | | /* |
| | | * // 无券不能自动 生成评论 CouponInfoVO couponInfo1 = |
| | | * goodsDetailVO.getCouponInfo(); if (couponInfo1 == null) { addComment |
| | | * = false; } |
| | | */ |
| | | |
| | | // 处理图片 |
| | | List<ImgInfo> resultList = resultObj.getImgList(); |
| | | if (resultList != null && resultList.size() > 0) { |
| | | for (ImgInfo info : resultList) { |
| | | ImgEnum type = info.getType(); |
| | | if (type == ImgEnum.video) { |
| | | imgVideo = info; |
| | | } else if (type == ImgEnum.goods) { |
| | | oldGoodsList.add(info); |
| | | } |
| | | } |
| | | } |
| | | String commentText = ""; |
| | | if (addComment) { |
| | | if (goodsType == Constant.SOURCE_TYPE_TAOBAO) { |
| | | TaoBaoLink taoBaoLink = taoBaoLinkManager.getTaoBaoLinkForShare(system, 1L, goodsId, "0", null); |
| | | String template = configService.getValue(ConfigKeyEnum.quickShareTBCommentText.getKey(), system); |
| | | commentText = template.replace("[淘口令]", TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken())); |
| | | } else if (goodsType == Constant.SOURCE_TYPE_JD) { |
| | | String couponUrl = null; |
| | | JDCouponInfo couponInfo = JDUtil.getShowCouponInfo(jdGoods); |
| | | if (couponInfo != null) { |
| | | couponUrl = couponInfo.getLink(); |
| | | } |
| | | String materialId = "https://item.jd.com/" + goodsId + ".html"; |
| | | String jumpLink = JDApiUtil.convertLinkWithSubUnionId(materialId, couponUrl, null, |
| | | pidManager.getPidCache(system, Constant.SOURCE_TYPE_JD, SystemPIDInfo.PidType.share), "1"); |
| | | String template = configService.getValue(ConfigKeyEnum.quickShareJDCommentText.getKey(), system); |
| | | if (jumpLink == null) { |
| | | throw new GoodsEvaluateException(1, "该商品转链失败"); |
| | | } |
| | | commentText = template.replace("[链接]", jumpLink); |
| | | } else if (goodsType == Constant.SOURCE_TYPE_PDD) { |
| | | String sharePid = pidManager.getPidCache(system, Constant.SOURCE_TYPE_PDD, SystemPIDInfo.PidType.share); |
| | | PDDGoodsDetail goodsDetail = PinDuoDuoApiUtil.getGoodsDetail(goodsId, sharePid, "1"); |
| | | String jumpLink = PinDuoDuoApiUtil.getPromotionUrl(goodsDetail.getGoodsSign(), sharePid, "1"); |
| | | if (jumpLink == null) { |
| | | throw new GoodsEvaluateException(1, "该商品转链失败"); |
| | | } |
| | | String template = configService.getValue(ConfigKeyEnum.quickSharePDDCommentText.getKey(), system); |
| | | commentText = template.replace("[链接]", jumpLink); |
| | | } |
| | | |
| | | // 视频部分 |
| | | if (fileRequest != null) { |
| | | MultipartFile filevideo = fileRequest.getFile("filevideo"); |
| | | if (filevideo != null) { |
| | | if (StringUtil.isNullOrEmpty(videoUrl)) { |
| | | throw new GoodsEvaluateException(1, "视频链接不能为空"); |
| | | } |
| | | // commentText = commentText.replace("[原价]", |
| | | // MoneyBigDecimalUtil.getWithNoZera(goodsDetailVO.getZkPrice())+""); |
| | | // if (!goodsDetailVO.isHasCoupon()) { |
| | | // commentText = commentText.replace("领券抢购", "抢购"); |
| | | // commentText = commentText.replace("【券后价】[券后价]元", ""); |
| | | // } else { |
| | | // 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", |
| | | // "\r\n"); |
| | | |
| | | ImgInfo info = uploadVideoPicture(filevideo); |
| | | if (info == null) |
| | | throw new GoodsEvaluateException(2, "视频图片上传失败"); |
| | | CommentInfo commentInfo = new CommentInfo(); |
| | | commentInfo.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | commentInfo.setContent(commentText); |
| | | commentInfo.setTypeEnum(CommentInfoEnum.goodsCoupon); |
| | | commentInfo.setNeedSpin(true); |
| | | commentsNew.add(commentInfo); |
| | | resultObj.setComments(commentsNew); |
| | | } |
| | | resultObj.setUpdateTime(new Date()); |
| | | goodsEvaluateDao.save(resultObj); |
| | | |
| | | if (imgVideo != null) { |
| | | String url = imgVideo.getUrl(); |
| | | if (!StringUtil.isNullOrEmpty(url)) { |
| | | listDel.add(url); |
| | | } |
| | | imgVideo.setUrl(info.getUrl()); |
| | | imgVideo.setUrlHD(info.getUrl()); |
| | | } else { |
| | | imgVideo = new ImgInfo(); |
| | | imgVideo.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | imgVideo.setLarge(true); |
| | | imgVideo.setPid(pid); |
| | | imgVideo.setUrl(info.getUrl()); |
| | | imgVideo.setUrlHD(info.getUrl()); |
| | | imgVideo.setVideoUrl(videoUrl); |
| | | imgVideo.setType(ImgEnum.video); |
| | | } |
| | | imgVideo.setW(info.getW()); |
| | | imgVideo.setH(info.getH()); |
| | | } |
| | | } |
| | | // 删除图片 |
| | | if (listDel.size() > 0) { |
| | | for (String url : listDel) { |
| | | if (url.contains(FilePathEnum.goodsEvaluate.getPath())) { |
| | | removePicture(url); |
| | | } |
| | | } |
| | | } |
| | | |
| | | List<ImgInfo> listImg = new ArrayList<ImgInfo>(); |
| | | if (imgVideo != null) { |
| | | if (!StringUtil.isNullOrEmpty(videoUrl)) { |
| | | if (imgVideo != null && StringUtil.isNullOrEmpty(imgVideo.getUrl())) { |
| | | throw new GoodsEvaluateException(1, "视频封面图不能为空"); |
| | | } |
| | | imgVideo.setVideoUrl(videoUrl); |
| | | listImg.add(imgVideo); |
| | | } else { |
| | | String url = imgVideo.getUrl(); |
| | | if (!StringUtil.isNullOrEmpty(url)) { |
| | | listDel.add(url); |
| | | } |
| | | } |
| | | } |
| | | return commentText; |
| | | } |
| | | |
| | | int totalImg = 0; |
| | | if (!StringUtil.isNullOrEmpty(goodsList)) { |
| | | String[] goodsArray = goodsList.split(","); |
| | | if (goodsArray != null && goodsArray.length > 0) { |
| | | for (int i = 0; i < goodsArray.length && i < 9; i++) { |
| | | String goodsids = goodsArray[i]; |
| | | String[] g = goodsids.split("-"); |
| | | GoodsDetailVO goodsDetailVO = getGoodsDetailVO(Long.parseLong(g[0]), Integer.parseInt(g[1])); |
| | | if (goodsDetailVO == null) { |
| | | continue; |
| | | } |
| | | private String createTokenAndLink(GoodsDetailVO goodsDetailVO, SystemEnum system) throws Exception { |
| | | String commentText = ""; |
| | | if (goodsDetailVO.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) { |
| | | TaoBaoLink taoBaoLink = taoBaoLinkManager.getTaoBaoLinkForShare(system, 1L, goodsDetailVO.getGoodsId(), "0", null); |
| | | String template = configService.getValue(ConfigKeyEnum.quickShareTBCommentText.getKey(), system); |
| | | commentText = template.replace("[淘口令]", TaoBaoUtil.filterTaoToken(taoBaoLink.getTaoToken())); |
| | | } else if (goodsDetailVO.getGoodsType() == Constant.SOURCE_TYPE_JD) { |
| | | String couponUrl = null; |
| | | |
| | | String picUrl = goodsDetailVO.getPicUrl(); |
| | | if (fileRequest != null) { |
| | | MultipartFile file = fileRequest.getFile("file" + i); |
| | | if (file != null) { |
| | | picUrl = uploadPicture(file); |
| | | } |
| | | } |
| | | 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, null, pidManager.getPidCache(system, Constant.SOURCE_TYPE_JD, SystemPIDInfo.PidType.share), |
| | | "1"); |
| | | String template = configService.getValue(ConfigKeyEnum.quickShareJDCommentText.getKey(), system); |
| | | commentText = template.replace("[链接]", jumpLink); |
| | | } else if (goodsDetailVO.getGoodsType() == Constant.SOURCE_TYPE_PDD) { |
| | | |
| | | ImgInfo imgInfo0 = new ImgInfo(); |
| | | imgInfo0.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | imgInfo0.setW(1); |
| | | imgInfo0.setH(1); |
| | | imgInfo0.setLarge(false); |
| | | imgInfo0.setPid(pid); |
| | | imgInfo0.setUrl(picUrl); |
| | | imgInfo0.setUrlHD(picUrl); |
| | | imgInfo0.setType(ImgEnum.goods); |
| | | String sharePid = pidManager.getPidCache(system, Constant.SOURCE_TYPE_PDD, SystemPIDInfo.PidType.share); |
| | | |
| | | SimpleGoods simpleGoods = new SimpleGoods(); |
| | | simpleGoods.setState(goodsDetailVO.getState()); |
| | | simpleGoods.setGoodsId(goodsDetailVO.getGoodsId()); |
| | | simpleGoods.setGoodsType(goodsDetailVO.getGoodsType()); |
| | | CouponInfoVO couponInfo = goodsDetailVO.getCouponInfo(); |
| | | if (couponInfo == null) { |
| | | simpleGoods.setPrice(goodsDetailVO.getZkPrice()); |
| | | } else { |
| | | simpleGoods.setPrice(goodsDetailVO.getCouponPrice()); |
| | | simpleGoods.setAmount(couponInfo.getAmount()); |
| | | } |
| | | imgInfo0.setGoods(simpleGoods); |
| | | imgInfo0.setGoodsVO(goodsDetailVO); |
| | | PDDGoodsDetail goodsDetail = PinDuoDuoApiUtil.getGoodsDetail(goodsDetailVO.getGoodsId(), |
| | | sharePid, "1"); |
| | | |
| | | listImg.add(imgInfo0); |
| | | totalImg++; |
| | | } |
| | | } |
| | | } |
| | | String jumpLink = PinDuoDuoApiUtil.getPromotionUrl(goodsDetail.getGoodsSign(), |
| | | sharePid, "1"); |
| | | String template = configService.getValue(ConfigKeyEnum.quickSharePDDCommentText.getKey(), system); |
| | | commentText = template.replace("[链接]", jumpLink); |
| | | } |
| | | |
| | | // 数据对比 删除图片 |
| | | if (oldGoodsList != null && oldGoodsList.size() > 0) { |
| | | for (ImgInfo old : oldGoodsList) { |
| | | ImgEnum type = old.getType(); |
| | | if (type != ImgEnum.goods) { |
| | | continue; |
| | | } |
| | | commentText = commentText.replace("[原价]", goodsDetailVO.getZkPrice().toString()); |
| | | if (!goodsDetailVO.isHasCoupon()) { |
| | | commentText = commentText.replace("领券抢购", "抢购"); |
| | | commentText = commentText.replace("【券后价】[券后价]元", ""); |
| | | } else { |
| | | commentText = commentText.replace("[券后价]", goodsDetailVO.getCouponPrice().toString()); |
| | | } |
| | | |
| | | boolean del = false; |
| | | long oldGoodsId = old.getGoods().getGoodsId().longValue(); |
| | | int oldGoodsType = old.getGoods().getGoodsType().intValue(); |
| | | for (ImgInfo newInfo : listImg) { |
| | | ImgEnum type2 = old.getType(); |
| | | if (type2 != ImgEnum.goods) { |
| | | continue; |
| | | } |
| | | return commentText.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n"); |
| | | } |
| | | |
| | | if (oldGoodsId == newInfo.getGoods().getGoodsId().longValue() |
| | | && oldGoodsType == newInfo.getGoods().getGoodsType().intValue()) { |
| | | String url = newInfo.getUrl(); |
| | | if (url.equals(old.getUrl())) { |
| | | public GoodsDetailVO getGoodsDetailVO(String goodsId, Integer goodsType, SystemEnum system) throws GoodsEvaluateException { |
| | | GoodsDetailVO goodsDetail = null; |
| | | GoodsMoneyConfigParamsDTO params = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55", system); |
| | | params.setBaseFanliRate(hongBaoManageService.getBaseFanliRate(system)); |
| | | 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, "商品已下架"); |
| | | } |
| | | } else if (goodsType == Constant.SOURCE_TYPE_JD) { |
| | | JDGoods goodsInfo = jdGoodsCacheUtil.getGoodsInfo(goodsId); |
| | | goodsDetail = GoodsDetailVOFactory.convertJDGoods(goodsInfo, params); |
| | | } else if (goodsType == Constant.SOURCE_TYPE_PDD) { |
| | | PDDGoodsDetail goodsInfo = pinDuoDuoCacheUtil.getGoodsInfo(goodsId); |
| | | goodsDetail = GoodsDetailVOFactory.convertPDDGoods(goodsInfo, params); |
| | | } |
| | | if (goodsDetail != null) |
| | | goodsDetail.setCreatetime(null); |
| | | return goodsDetail; |
| | | } |
| | | |
| | | } else if (url.contains(FilePathEnum.goodsEvaluate.getPath())) { |
| | | del = true; |
| | | } else { |
| | | newInfo.setUrl(old.getUrl()); |
| | | newInfo.setUrlHD(old.getUrlHD()); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | @Override |
| | | public void saveMultipleGoods(String pid, String videoUrl, String goodsList, |
| | | MultipartHttpServletRequest fileRequest) throws GoodsEvaluateException, Exception { |
| | | if (StringUtil.isNullOrEmpty(pid)) { |
| | | throw new GoodsEvaluateException(1, "请保存第一部分信息"); |
| | | } |
| | | |
| | | if (del) { |
| | | listDel.add(old.getUrl()); |
| | | } |
| | | } |
| | | } |
| | | GoodsEvaluate resultObj = goodsEvaluateDao.getById(pid); |
| | | if (resultObj == null) |
| | | throw new GoodsEvaluateException(1, "第一部分信息缺失"); |
| | | |
| | | int lineNum = 0; |
| | | if (totalImg > 0) { |
| | | if (totalImg == 1) { |
| | | lineNum = 1; |
| | | } else if (totalImg == 3) { |
| | | lineNum = 3; |
| | | } else if (totalImg == 2 || totalImg == 4) { |
| | | lineNum = 2; |
| | | } else { |
| | | lineNum = 3; |
| | | } |
| | | } |
| | | // 原封视频面图 |
| | | ImgInfo imgVideo = null; |
| | | List<String> listDel = new ArrayList<String>(); |
| | | List<ImgInfo> oldGoodsList = new ArrayList<ImgInfo>(); |
| | | |
| | | resultObj.setLineNum(lineNum); |
| | | // 处理图片 |
| | | List<ImgInfo> resultList = resultObj.getImgList(); |
| | | if (resultList != null && resultList.size() > 0) { |
| | | for (ImgInfo info : resultList) { |
| | | ImgEnum type = info.getType(); |
| | | if (type == ImgEnum.video) { |
| | | imgVideo = info; |
| | | } else if (type == ImgEnum.goods) { |
| | | oldGoodsList.add(info); |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 保存图片信息 |
| | | resultObj.setImgList(listImg); |
| | | goodsEvaluateDao.save(resultObj); |
| | | // 视频部分 |
| | | if (fileRequest != null) { |
| | | MultipartFile filevideo = fileRequest.getFile("filevideo"); |
| | | if (filevideo != null) { |
| | | if (StringUtil.isNullOrEmpty(videoUrl)) { |
| | | throw new GoodsEvaluateException(1, "视频链接不能为空"); |
| | | } |
| | | |
| | | // 删除图片 |
| | | if (listDel.size() > 0) { |
| | | for (String url : listDel) { |
| | | if (url.contains(FilePathEnum.goodsEvaluate.getPath())) { |
| | | removePicture(url); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | ImgInfo info = uploadVideoPicture(filevideo); |
| | | if (info == null) |
| | | throw new GoodsEvaluateException(2, "视频图片上传失败"); |
| | | |
| | | @Override |
| | | public void saveGoodsComment(String id, int kind, List<CommentInfo> comments) |
| | | throws GoodsEvaluateException, Exception { |
| | | if (comments == null || comments.size() == 0) { |
| | | throw new GoodsEvaluateException(1, "内容不能为空"); |
| | | } |
| | | if (imgVideo != null) { |
| | | String url = imgVideo.getUrl(); |
| | | if (!StringUtil.isNullOrEmpty(url)) { |
| | | listDel.add(url); |
| | | } |
| | | imgVideo.setUrl(info.getUrl()); |
| | | imgVideo.setUrlHD(info.getUrl()); |
| | | } else { |
| | | imgVideo = new ImgInfo(); |
| | | imgVideo.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | imgVideo.setLarge(true); |
| | | imgVideo.setPid(pid); |
| | | imgVideo.setUrl(info.getUrl()); |
| | | imgVideo.setUrlHD(info.getUrl()); |
| | | imgVideo.setVideoUrl(videoUrl); |
| | | imgVideo.setType(ImgEnum.video); |
| | | } |
| | | imgVideo.setW(info.getW()); |
| | | imgVideo.setH(info.getH()); |
| | | } |
| | | } |
| | | |
| | | GoodsEvaluate resultObj = goodsEvaluateDao.getById(id); |
| | | if (resultObj == null) |
| | | throw new GoodsEvaluateException(1, "第一部分信息缺失"); |
| | | List<ImgInfo> listImg = new ArrayList<ImgInfo>(); |
| | | if (imgVideo != null) { |
| | | if (!StringUtil.isNullOrEmpty(videoUrl)) { |
| | | if (imgVideo != null && StringUtil.isNullOrEmpty(imgVideo.getUrl())) { |
| | | throw new GoodsEvaluateException(1, "视频封面图不能为空"); |
| | | } |
| | | imgVideo.setVideoUrl(videoUrl); |
| | | listImg.add(imgVideo); |
| | | } else { |
| | | String url = imgVideo.getUrl(); |
| | | if (!StringUtil.isNullOrEmpty(url)) { |
| | | listDel.add(url); |
| | | } |
| | | } |
| | | } |
| | | |
| | | GoodsDetailVO goods = resultObj.getGoods(); |
| | | if (kind == 1 && goods == null) { |
| | | throw new GoodsEvaluateException(1, "请先录入商品信息"); |
| | | } |
| | | int totalImg = 0; |
| | | if (!StringUtil.isNullOrEmpty(goodsList)) { |
| | | String[] goodsArray = goodsList.split(","); |
| | | if (goodsArray != null && goodsArray.length > 0) { |
| | | for (int i = 0; i < goodsArray.length && i < 9; i++) { |
| | | String goodsids = goodsArray[i]; |
| | | String[] g = goodsids.split("-"); |
| | | GoodsDetailVO goodsDetailVO = getGoodsDetailVO(g[0], Integer.parseInt(g[1]), resultObj.getSystem()); |
| | | if (goodsDetailVO == null) { |
| | | continue; |
| | | } |
| | | |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | String picUrl = goodsDetailVO.getPicUrl(); |
| | | if (fileRequest != null) { |
| | | MultipartFile file = fileRequest.getFile("file" + i); |
| | | if (file != null) { |
| | | picUrl = uploadPicture(file); |
| | | } |
| | | } |
| | | |
| | | 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, "不包含可转链的口令与链接"); |
| | | } |
| | | } |
| | | ImgInfo imgInfo0 = new ImgInfo(); |
| | | imgInfo0.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | imgInfo0.setW(1); |
| | | imgInfo0.setH(1); |
| | | imgInfo0.setLarge(false); |
| | | imgInfo0.setPid(pid); |
| | | imgInfo0.setUrl(picUrl); |
| | | imgInfo0.setUrlHD(picUrl); |
| | | imgInfo0.setType(ImgEnum.goods); |
| | | |
| | | if (StringUtil.isNullOrEmpty(commentInfo.getId())) { |
| | | commentInfo.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | } |
| | | |
| | | commentInfo.setNeedSpin(true); |
| | | commentInfo.setType(commentInfo.getTags()); |
| | | commentInfo.setTypeEnum(CommentInfoEnum.goodsCoupon); |
| | | newList.add(commentInfo); |
| | | } |
| | | if (currencyCoupon != null) { |
| | | comments.add(currencyCoupon); |
| | | } |
| | | SimpleGoods simpleGoods = new SimpleGoods(); |
| | | simpleGoods.setState(goodsDetailVO.getState()); |
| | | simpleGoods.setGoodsId(goodsDetailVO.getGoodsId()); |
| | | simpleGoods.setGoodsType(goodsDetailVO.getGoodsType()); |
| | | CouponInfoVO couponInfo = goodsDetailVO.getCouponInfo(); |
| | | if (couponInfo == null) { |
| | | simpleGoods.setPrice(goodsDetailVO.getZkPrice()); |
| | | } else { |
| | | simpleGoods.setPrice(goodsDetailVO.getCouponPrice()); |
| | | simpleGoods.setAmount(couponInfo.getAmount()); |
| | | } |
| | | imgInfo0.setGoods(simpleGoods); |
| | | imgInfo0.setGoodsVO(goodsDetailVO); |
| | | |
| | | resultObj.setComments(comments); |
| | | resultObj.setUpdateTime(new Date()); |
| | | goodsEvaluateDao.save(resultObj); |
| | | } |
| | | listImg.add(imgInfo0); |
| | | totalImg++; |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public void saveCurrencyCoupon(String pid, int kind, CommentInfo commentInfo) |
| | | throws GoodsEvaluateException, Exception { |
| | | if (StringUtil.isNullOrEmpty(pid)) { |
| | | throw new GoodsEvaluateException(1, "请保存第一部分信息"); |
| | | } |
| | | // 数据对比 删除图片 |
| | | if (oldGoodsList != null && oldGoodsList.size() > 0) { |
| | | for (ImgInfo old : oldGoodsList) { |
| | | ImgEnum type = old.getType(); |
| | | if (type != ImgEnum.goods) { |
| | | continue; |
| | | } |
| | | |
| | | if (StringUtil.isNullOrEmpty(commentInfo.getCoupon())) { |
| | | throw new GoodsEvaluateException(1, "券面额不能为空"); |
| | | } |
| | | boolean del = false; |
| | | String oldGoodsId = old.getGoods().getGoodsId(); |
| | | int oldGoodsType = old.getGoods().getGoodsType().intValue(); |
| | | for (ImgInfo newInfo : listImg) { |
| | | ImgEnum type2 = old.getType(); |
| | | if (type2 != ImgEnum.goods) { |
| | | continue; |
| | | } |
| | | |
| | | if (StringUtil.isNullOrEmpty(commentInfo.getTagDesc())) { |
| | | throw new GoodsEvaluateException(1, "描述语不能为空"); |
| | | } |
| | | if (oldGoodsId.equalsIgnoreCase(newInfo.getGoods().getGoodsId()) |
| | | && oldGoodsType == newInfo.getGoods().getGoodsType().intValue()) { |
| | | String url = newInfo.getUrl(); |
| | | if (url.equals(old.getUrl())) { |
| | | |
| | | String tagUrl = commentInfo.getTagUrl(); |
| | | String content = commentInfo.getContent(); |
| | | if (StringUtil.isNullOrEmpty(tagUrl) && StringUtil.isNullOrEmpty(content)) { |
| | | throw new GoodsEvaluateException(1, "评论语和链接不能同时为空"); |
| | | } |
| | | } else if (url.contains(FilePathEnum.goodsEvaluate.getPath())) { |
| | | del = true; |
| | | } else { |
| | | newInfo.setUrl(old.getUrl()); |
| | | newInfo.setUrlHD(old.getUrlHD()); |
| | | } |
| | | break; |
| | | } |
| | | } |
| | | |
| | | String endTime = commentInfo.getEndTime(); |
| | | if (!StringUtil.isNullOrEmpty(endTime)) { |
| | | try { |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
| | | sdf.parse(endTime); |
| | | } catch (Exception e) { |
| | | throw new GoodsEvaluateException(1, "请填写正确的时间格式:2020-03-05"); |
| | | } |
| | | } else { |
| | | throw new GoodsEvaluateException(1, "请填写券截止时间"); |
| | | } |
| | | if (del) { |
| | | listDel.add(old.getUrl()); |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (commentInfo.getNeedSpin() == null) { |
| | | commentInfo.setNeedSpin(false); |
| | | } |
| | | |
| | | if (!StringUtil.isNullOrEmpty(content) && commentInfo.getNeedSpin()) { |
| | | try { |
| | | 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, "包含不可转链的口令与链接"); |
| | | } |
| | | } |
| | | int lineNum = 0; |
| | | if (totalImg > 0) { |
| | | if (totalImg == 1) { |
| | | lineNum = 1; |
| | | } else if (totalImg == 3) { |
| | | lineNum = 3; |
| | | } else if (totalImg == 2 || totalImg == 4) { |
| | | lineNum = 2; |
| | | } else { |
| | | lineNum = 3; |
| | | } |
| | | } |
| | | |
| | | GoodsEvaluate resultObj = goodsEvaluateDao.getById(pid); |
| | | if (resultObj == null) |
| | | throw new GoodsEvaluateException(1, "第一部分信息缺失"); |
| | | resultObj.setLineNum(lineNum); |
| | | |
| | | 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()) { |
| | | comments.add(info); |
| | | } else if (CommentInfoEnum.currencyCoupon == info.getTypeEnum()) { |
| | | currencyCoupon = info; |
| | | } |
| | | } |
| | | } |
| | | // 保存图片信息 |
| | | resultObj.setImgList(listImg); |
| | | goodsEvaluateDao.save(resultObj); |
| | | |
| | | if (commentInfo != null) { |
| | | if (currencyCoupon != null) { |
| | | commentInfo.setId(currencyCoupon.getId()); |
| | | } else { |
| | | commentInfo.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | } |
| | | // 券类型 |
| | | // 删除图片 |
| | | if (listDel.size() > 0) { |
| | | for (String url : listDel) { |
| | | if (url.contains(FilePathEnum.goodsEvaluate.getPath())) { |
| | | removePicture(url); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | commentInfo.setType(commentInfo.getTags()); |
| | | commentInfo.setTypeEnum(CommentInfoEnum.currencyCoupon); |
| | | @Override |
| | | public void saveGoodsComment(String id, int kind, List<CommentInfo> comments, SystemEnum system) |
| | | throws GoodsEvaluateException, Exception { |
| | | if (comments == null || comments.size() == 0) { |
| | | throw new GoodsEvaluateException(1, "内容不能为空"); |
| | | } |
| | | |
| | | // 标签信息 |
| | | List<ClientTextStyleVO> tagList = new ArrayList<>(); |
| | | String couponSource = commentInfo.getCouponSource(); |
| | | if (!StringUtil.isNullOrEmpty(couponSource)) { |
| | | ClientTextStyleVO styleVO = new ClientTextStyleVO(); |
| | | styleVO.setColor("#16C253"); |
| | | styleVO.setContent(couponSource); |
| | | tagList.add(styleVO); |
| | | } |
| | | String coupon = commentInfo.getCoupon(); |
| | | if (!StringUtil.isNullOrEmpty(coupon)) { |
| | | ClientTextStyleVO styleVO = new ClientTextStyleVO(); |
| | | styleVO.setColor("#E5005C"); |
| | | styleVO.setContent(coupon); |
| | | tagList.add(styleVO); |
| | | } |
| | | commentInfo.setTagList(tagList); |
| | | 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, system); |
| | | } else { |
| | | continue; |
| | | } |
| | | } else if (i == 0 && kind == 1) { |
| | | try { |
| | | convertLinkManager.convertLinkFromText(system, content, Constant.LINK_TOKEN_VERIFY_UID, true, false); |
| | | } catch (Exception e) { |
| | | throw new GoodsEvaluateException(1, "不包含可转链的口令与链接"); |
| | | } |
| | | } |
| | | |
| | | if (StringUtil.isNullOrEmpty(commentInfo.getId())) { |
| | | commentInfo.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | } |
| | | |
| | | commentInfo.setNeedSpin(true); |
| | | commentInfo.setType(commentInfo.getTags()); |
| | | commentInfo.setTypeEnum(CommentInfoEnum.goodsCoupon); |
| | | newList.add(commentInfo); |
| | | } |
| | | if (currencyCoupon != null) { |
| | | comments.add(currencyCoupon); |
| | | } |
| | | |
| | | resultObj.setComments(comments); |
| | | resultObj.setUpdateTime(new Date()); |
| | | goodsEvaluateDao.save(resultObj); |
| | | } |
| | | |
| | | @Override |
| | | public void saveCurrencyCoupon(SystemEnum system, String pid, int kind, CommentInfo commentInfo) |
| | | throws GoodsEvaluateException, Exception { |
| | | if (StringUtil.isNullOrEmpty(pid)) { |
| | | throw new GoodsEvaluateException(1, "请保存第一部分信息"); |
| | | } |
| | | |
| | | 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 (StringUtil.isNullOrEmpty(commentInfo.getTagDesc())) { |
| | | throw new GoodsEvaluateException(1, "描述语不能为空"); |
| | | } |
| | | |
| | | String tagUrl = commentInfo.getTagUrl(); |
| | | String content = commentInfo.getContent(); |
| | | if (StringUtil.isNullOrEmpty(tagUrl) && StringUtil.isNullOrEmpty(content)) { |
| | | throw new GoodsEvaluateException(1, "评论语和链接不能同时为空"); |
| | | } |
| | | |
| | | String endTime = commentInfo.getEndTime(); |
| | | if (!StringUtil.isNullOrEmpty(endTime)) { |
| | | try { |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
| | | sdf.parse(endTime); |
| | | } catch (Exception e) { |
| | | throw new GoodsEvaluateException(1, "请填写正确的时间格式:2020-03-05"); |
| | | } |
| | | } else { |
| | | throw new GoodsEvaluateException(1, "请填写券截止时间"); |
| | | } |
| | | } |
| | | |
| | | if (commentInfo.getNeedSpin() == null) { |
| | | commentInfo.setNeedSpin(false); |
| | | } |
| | | |
| | | String content = commentInfo.getContent(); |
| | | if (!StringUtil.isNullOrEmpty(content) && commentInfo.getNeedSpin()) { |
| | | try { |
| | | convertLinkManager.convertLinkFromText(system, content, Constant.LINK_TOKEN_VERIFY_UID, true, false); |
| | | } catch (ConvertLinkException e) { |
| | | if (ConvertLinkException.CODE_NONE != e.getCode()) { |
| | | throw new GoodsEvaluateException(1, "包含不可转链的口令与链接"); |
| | | } |
| | | } catch (Exception e) { |
| | | throw new GoodsEvaluateException(1, "包含不可转链的口令与链接"); |
| | | } |
| | | } |
| | | |
| | | 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()) { |
| | | comments.add(info); |
| | | } else if (CommentInfoEnum.currencyCoupon == info.getTypeEnum()) { |
| | | currencyCoupon = info; |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (commentInfo != null) { |
| | | if (currencyCoupon != null) { |
| | | commentInfo.setId(currencyCoupon.getId()); |
| | | } else { |
| | | commentInfo.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | } |
| | | // 券类型 |
| | | |
| | | commentInfo.setType(commentInfo.getTags()); |
| | | commentInfo.setTypeEnum(CommentInfoEnum.currencyCoupon); |
| | | |
| | | // 标签信息 |
| | | List<ClientTextStyleVO> tagList = new ArrayList<>(); |
| | | String couponSource = commentInfo.getCouponSource(); |
| | | if (!StringUtil.isNullOrEmpty(couponSource)) { |
| | | ClientTextStyleVO styleVO = new ClientTextStyleVO(); |
| | | styleVO.setColor("#16C253"); |
| | | styleVO.setContent(couponSource); |
| | | tagList.add(styleVO); |
| | | } |
| | | String coupon = commentInfo.getCoupon(); |
| | | if (!StringUtil.isNullOrEmpty(coupon)) { |
| | | ClientTextStyleVO styleVO = new ClientTextStyleVO(); |
| | | styleVO.setColor("#E5005C"); |
| | | styleVO.setContent(coupon); |
| | | tagList.add(styleVO); |
| | | } |
| | | commentInfo.setTagList(tagList); |
| | | |
| | | comments.add(commentInfo); |
| | | } |
| | | |
| | | resultObj.setComments(comments); |
| | | goodsEvaluateDao.save(resultObj); |
| | | } |
| | | |
| | | @Override |
| | | public void saveActivityPic(String pid, ImgInfo imgInfo, String picUrls, MultipartHttpServletRequest fileRequest) |
| | | throws GoodsEvaluateException, Exception { |
| | | if (StringUtil.isNullOrEmpty(pid)) { |
| | | throw new GoodsEvaluateException(1, "请保存第一部分信息"); |
| | | } |
| | | |
| | | GoodsEvaluate resultObj = goodsEvaluateDao.getById(pid); |
| | | if (resultObj == null) |
| | | throw new GoodsEvaluateException(1, "第一部分信息缺失"); |
| | | |
| | | if (imgInfo == null || StringUtil.isNullOrEmpty(imgInfo.getActivityUrl())) { |
| | | throw new GoodsEvaluateException(1, "活动链接不能为空"); |
| | | } |
| | | |
| | | ImgInfo imgVideo = null; |
| | | List<String> listDel = new ArrayList<String>(); |
| | | List<ImgInfo> listOld = new ArrayList<ImgInfo>(); |
| | | List<ImgInfo> resultList = resultObj.getImgList(); |
| | | if (resultList != null && resultList.size() > 0) { |
| | | for (ImgInfo info : resultList) { |
| | | if (info.getType() == ImgEnum.video) { |
| | | imgVideo = info; |
| | | } else { |
| | | listOld.add(info); |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 视频部分 |
| | | if (fileRequest != null) { |
| | | MultipartFile filevideo = fileRequest.getFile("filevideo"); |
| | | if (filevideo != null) { |
| | | if (StringUtil.isNullOrEmpty(imgInfo.getVideoUrl())) { |
| | | throw new GoodsEvaluateException(1, "视频链接不能为空"); |
| | | } |
| | | ImgInfo info = uploadVideoPicture(filevideo); |
| | | if (info == null) |
| | | throw new GoodsEvaluateException(2, "视频图片上传失败"); |
| | | if (imgVideo != null) { |
| | | String url = imgVideo.getUrl(); |
| | | if (!StringUtil.isNullOrEmpty(url)) { |
| | | listDel.add(url); |
| | | } |
| | | imgVideo.setUrl(info.getUrl()); |
| | | imgVideo.setUrlHD(info.getUrl()); |
| | | } else { |
| | | imgVideo = new ImgInfo(); |
| | | imgVideo.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | imgVideo.setLarge(true); |
| | | imgVideo.setPid(pid); |
| | | imgVideo.setUrl(info.getUrl()); |
| | | imgVideo.setUrlHD(info.getUrl()); |
| | | imgVideo.setVideoUrl(imgInfo.getVideoUrl()); |
| | | imgVideo.setType(ImgEnum.video); |
| | | } |
| | | imgVideo.setW(info.getW()); |
| | | imgVideo.setH(info.getH()); |
| | | } |
| | | } |
| | | |
| | | List<ImgInfo> listImg = new ArrayList<ImgInfo>(); |
| | | if (imgVideo != null) { |
| | | if (!StringUtil.isNullOrEmpty(imgInfo.getVideoUrl())) { |
| | | if (imgVideo != null && StringUtil.isNullOrEmpty(imgVideo.getUrl())) { |
| | | throw new GoodsEvaluateException(1, "视频封面图不能为空"); |
| | | } |
| | | imgVideo.setVideoUrl(imgInfo.getVideoUrl()); |
| | | listImg.add(imgVideo); |
| | | } else { |
| | | String url = imgVideo.getUrl(); |
| | | if (!StringUtil.isNullOrEmpty(url)) { |
| | | listDel.add(url); |
| | | } |
| | | } |
| | | } |
| | | |
| | | String activityUrl = imgInfo.getActivityUrl(); |
| | | // 编辑图片 |
| | | List<ImgInfo> tempList = new ArrayList<ImgInfo>(); |
| | | if (!StringUtil.isNullOrEmpty(picUrls)) { |
| | | String[] pics = picUrls.split(","); |
| | | if (pics != null) { |
| | | for (int i = 0; i < pics.length; i++) { |
| | | String picLink = pics[i]; |
| | | if (picLink.startsWith("http")) { |
| | | if (listOld != null) { |
| | | for (ImgInfo info : listOld) { |
| | | if (info.getUrl().equals(picLink)) { |
| | | info.setActivityUrl(activityUrl); |
| | | tempList.add(info); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 上传文件替换 |
| | | if (fileRequest != null) { |
| | | for (int i = 0; i < 9; i++) { |
| | | MultipartFile file = fileRequest.getFile("file" + i); |
| | | if (file != null) { |
| | | ImgInfo info = uploadOriginalPicture(file); |
| | | ImgInfo imgInfo0 = new ImgInfo(); |
| | | imgInfo0.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | imgInfo0.setLarge(false); |
| | | imgInfo0.setPid(pid); |
| | | imgInfo0.setUrl(info.getUrl()); |
| | | imgInfo0.setUrlHD(info.getUrl()); |
| | | imgInfo0.setType(ImgEnum.activity); |
| | | imgInfo0.setW(info.getW()); |
| | | imgInfo0.setH(info.getH()); |
| | | imgInfo0.setActivityUrl(activityUrl); |
| | | if (i < tempList.size()) { |
| | | tempList.set(i, imgInfo0); |
| | | } else { |
| | | tempList.add(imgInfo0); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | int lineNum = 0; |
| | | int totalImg = tempList.size(); |
| | | if (totalImg > 0) { |
| | | if (totalImg == 1) { |
| | | lineNum = 1; |
| | | } else if (totalImg == 3) { |
| | | lineNum = 3; |
| | | } else if (totalImg == 2 || totalImg == 4) { |
| | | lineNum = 2; |
| | | } else { |
| | | 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) { |
| | | boolean del = true; |
| | | String oldPic = infoOld.getUrl(); |
| | | for (ImgInfo info : listImg) { |
| | | if (info.getUrl().equals(oldPic)) { |
| | | del = false; |
| | | } |
| | | } |
| | | if (del) |
| | | listDel.add(infoOld.getUrl()); |
| | | } |
| | | } |
| | | |
| | | resultObj.setJumpLink(activityUrl); |
| | | resultObj.setLineNum(lineNum); |
| | | resultObj.setImgList(listImg); |
| | | goodsEvaluateDao.save(resultObj); |
| | | |
| | | // 删除图片 |
| | | if (listDel.size() > 0) { |
| | | for (String url : listDel) { |
| | | if (url.contains(FilePathEnum.goodsEvaluate.getPath())) { |
| | | removePicture(url); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void saveSuCai(String pid, String videoUrl, String picUrls, MultipartHttpServletRequest fileRequest) |
| | | throws GoodsEvaluateException, Exception { |
| | | if (StringUtil.isNullOrEmpty(pid)) { |
| | | throw new GoodsEvaluateException(1, "请保存第一部分信息"); |
| | | } |
| | | |
| | | GoodsEvaluate resultObj = goodsEvaluateDao.getById(pid); |
| | | if (resultObj == null) |
| | | throw new GoodsEvaluateException(1, "第一部分信息缺失"); |
| | | |
| | | // 原封视频面图 |
| | | ImgInfo imgVideo = null; |
| | | ImgInfo imgActivity = null; |
| | | List<String> listDel = new ArrayList<String>(); |
| | | List<String> listOld = new ArrayList<String>(); |
| | | |
| | | List<ImgInfo> listOldImgInfo = new ArrayList<ImgInfo>(); |
| | | // 处理图片 |
| | | List<ImgInfo> resultList = resultObj.getImgList(); |
| | | if (resultList != null && resultList.size() > 0) { |
| | | for (ImgInfo info : resultList) { |
| | | ImgEnum type = info.getType(); |
| | | if (type == ImgEnum.video) { |
| | | imgVideo = info; |
| | | } else if (type == ImgEnum.img) { |
| | | listOldImgInfo.add(info); |
| | | String url = info.getUrl(); |
| | | if (!StringUtil.isNullOrEmpty(url)) { |
| | | listOld.add(url); |
| | | } |
| | | } else if (type == ImgEnum.activity) { |
| | | imgActivity = info; |
| | | } |
| | | } |
| | | } |
| | | |
| | | MultipartFile activityFile = null; |
| | | // 视频部分 |
| | | if (fileRequest != null) { |
| | | MultipartFile filevideo = fileRequest.getFile("filevideo"); |
| | | if (filevideo != null) { |
| | | if (StringUtil.isNullOrEmpty(videoUrl)) { |
| | | throw new GoodsEvaluateException(1, "视频链接不能为空"); |
| | | } |
| | | ImgInfo info = uploadVideoPicture(filevideo); |
| | | if (info == null) |
| | | throw new GoodsEvaluateException(2, "视频图片上传失败"); |
| | | if (imgVideo != null) { |
| | | String url = imgVideo.getUrl(); |
| | | if (!StringUtil.isNullOrEmpty(url)) { |
| | | listDel.add(url); |
| | | } |
| | | imgVideo.setUrl(info.getUrl()); |
| | | imgVideo.setUrlHD(info.getUrl()); |
| | | } else { |
| | | imgVideo = new ImgInfo(); |
| | | imgVideo.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | imgVideo.setLarge(true); |
| | | imgVideo.setPid(pid); |
| | | imgVideo.setUrl(info.getUrl()); |
| | | imgVideo.setUrlHD(info.getUrl()); |
| | | imgVideo.setVideoUrl(videoUrl); |
| | | imgVideo.setType(ImgEnum.video); |
| | | } |
| | | imgVideo.setW(info.getW()); |
| | | imgVideo.setH(info.getH()); |
| | | } |
| | | |
| | | activityFile = fileRequest.getFile("activityFile"); |
| | | } |
| | | |
| | | List<ImgInfo> listImg = new ArrayList<ImgInfo>(); |
| | | if (imgVideo != null) { |
| | | if (!StringUtil.isNullOrEmpty(videoUrl)) { |
| | | if (imgVideo != null && StringUtil.isNullOrEmpty(imgVideo.getUrl())) { |
| | | throw new GoodsEvaluateException(1, "视频封面图不能为空"); |
| | | } |
| | | |
| | | imgVideo.setVideoUrl(videoUrl); |
| | | listImg.add(imgVideo); |
| | | } else { |
| | | String url = imgVideo.getUrl(); |
| | | if (!StringUtil.isNullOrEmpty(url)) { |
| | | listDel.add(url); |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (activityFile != null) { |
| | | InputStream inputStream = activityFile.getInputStream(); |
| | | BufferedImage sourceImg = ImageIO.read(inputStream); |
| | | int width = sourceImg.getWidth(); |
| | | int height = sourceImg.getHeight(); |
| | | |
| | | String picLink = uploadPicture(activityFile); |
| | | |
| | | ImgInfo activity = new ImgInfo(); |
| | | activity.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | activity.setLarge(true); |
| | | activity.setPid(pid); |
| | | activity.setUrl(picLink); |
| | | activity.setUrlHD(picLink); |
| | | activity.setActivityPic(picLink); |
| | | activity.setW(width); |
| | | activity.setH(height); |
| | | activity.setType(ImgEnum.activity); |
| | | listImg.add(activity); |
| | | } else if (imgActivity != null) { |
| | | listImg.add(imgActivity); |
| | | } |
| | | |
| | | // 编辑图片 |
| | | List<String> listpic = new ArrayList<>(); |
| | | if (!StringUtil.isNullOrEmpty(picUrls)) { |
| | | String[] pics = picUrls.split(","); |
| | | if (pics != null) { |
| | | for (int i = 0; i < pics.length; i++) { |
| | | String picLink = pics[i]; |
| | | if (picLink.startsWith("http")) { |
| | | listpic.add(picLink); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 上传文件替换 |
| | | if (fileRequest != null) { |
| | | for (int i = 0; i < 9; i++) { |
| | | MultipartFile file = fileRequest.getFile("file" + i); |
| | | if (file != null) { |
| | | String picLink = uploadPicture(file); |
| | | if (i < listpic.size()) { |
| | | listpic.set(i, picLink); |
| | | } else { |
| | | listpic.add(picLink); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | int totalImg = 0; |
| | | for (String pic : listpic) { |
| | | ImgInfo imgInfo0 = new ImgInfo(); |
| | | imgInfo0.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | imgInfo0.setLarge(false); |
| | | imgInfo0.setPid(pid); |
| | | imgInfo0.setUrl(pic); |
| | | imgInfo0.setUrlHD(pic); |
| | | imgInfo0.setType(ImgEnum.img); |
| | | imgInfo0.setW(1); |
| | | imgInfo0.setH(1); |
| | | listImg.add(imgInfo0); |
| | | totalImg++; |
| | | } |
| | | |
| | | // 清理老图片 |
| | | if (listOld != null && listOld.size() > 0) { |
| | | for (int j = 0; j < listOld.size(); j++) { |
| | | boolean del = true; |
| | | String oldPic = listOld.get(j); |
| | | for (ImgInfo imgInfo : listImg) { |
| | | String url = imgInfo.getUrl(); |
| | | if (url.equals(oldPic)) { |
| | | del = false; |
| | | } |
| | | } |
| | | if (del) |
| | | listDel.add(listOld.get(j)); |
| | | } |
| | | } |
| | | |
| | | int lineNum = 0; |
| | | if (totalImg > 0) { |
| | | if (totalImg == 1) { |
| | | lineNum = 1; |
| | | } else if (totalImg == 3) { |
| | | lineNum = 3; |
| | | } else if (totalImg == 2 || totalImg == 4) { |
| | | lineNum = 2; |
| | | } else { |
| | | lineNum = 3; |
| | | } |
| | | } |
| | | |
| | | resultObj.setLineNum(lineNum); |
| | | resultObj.setImgList(listImg); |
| | | goodsEvaluateDao.save(resultObj); |
| | | |
| | | // 删除图片 |
| | | if (listDel.size() > 0) { |
| | | for (String url : listDel) { |
| | | if (url.contains(FilePathEnum.goodsEvaluate.getPath())) { |
| | | removePicture(url); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void deleteBatchByPrimaryKey(List<String> list) { |
| | | if (list == null || list.size() == 0) { |
| | | return; |
| | | } |
| | | for (String id : list) { |
| | | goodsEvaluateDao.deleteById(id); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | 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); |
| | | if (goodsEvaluate == null) { |
| | | throw new GoodsEvaluateException(1, "动态已不存在"); |
| | | } |
| | | |
| | | String tags = commentInfo.getTags(); |
| | | if (!StringUtil.isNullOrEmpty(tags)) { |
| | | String[] arrayTags = tags.split("\\s+"); |
| | | if (arrayTags != null && arrayTags.length > 0) { |
| | | String[] arrayTagsColour = null; |
| | | String tagsColour = commentInfo.getTagsColour(); |
| | | if (!StringUtil.isNullOrEmpty(tagsColour)) { |
| | | arrayTagsColour = tagsColour.split("\\s+"); |
| | | } |
| | | |
| | | String color = "#E5005C"; |
| | | List<ClientTextStyleVO> tagList = new ArrayList<ClientTextStyleVO>(); |
| | | for (int i = 0; i < arrayTags.length; i++) { |
| | | String tag = arrayTags[i]; |
| | | if (arrayTagsColour != null && arrayTagsColour.length == arrayTags.length) { |
| | | color = arrayTagsColour[i]; |
| | | } |
| | | ClientTextStyleVO styleVO = new ClientTextStyleVO(); |
| | | styleVO.setColor(color); |
| | | styleVO.setContent(tag); |
| | | tagList.add(styleVO); |
| | | } |
| | | commentInfo.setTagList(tagList); |
| | | } |
| | | } |
| | | |
| | | List<CommentInfo> comments = goodsEvaluate.getComments(); |
| | | if (comments == null) { |
| | | comments = new ArrayList<>(); |
| | | } |
| | | |
| | | Integer weight = commentInfo.getWeight(); |
| | | if (weight == null) |
| | | commentInfo.setWeight(1); |
| | | |
| | | comments.add(commentInfo); |
| | | |
| | | Collections.shuffle(comments); |
| | | Comparator<CommentInfo> cm = new Comparator<CommentInfo>() { |
| | | @Override |
| | | public int compare(CommentInfo o1, CommentInfo o2) { |
| | | return o1.getWeight() != null && o2.getWeight() != null ? o2.getWeight() - o1.getWeight() : 0; |
| | | } |
| | | }; |
| | | Collections.sort(comments, cm); |
| | | |
| | | goodsEvaluate.setComments(comments); |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | } |
| | | |
| | | @Override |
| | | public void release(String id) throws GoodsEvaluateException { |
| | | GoodsEvaluate goodsEvaluate = goodsEvaluateDao.getById(id); |
| | | if (goodsEvaluate == null) { |
| | | throw new GoodsEvaluateException(1, "动态已不存在"); |
| | | } |
| | | goodsEvaluate.setState(1); |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | } |
| | | |
| | | @Override |
| | | public void deleteComment(String pid, List<String> list) throws GoodsEvaluateException { |
| | | if (list == null || list.size() == 0) { |
| | | return; |
| | | } |
| | | GoodsEvaluate goodsEvaluate = goodsEvaluateDao.getById(pid); |
| | | if (goodsEvaluate == null) { |
| | | throw new GoodsEvaluateException(1, "动态已不存在"); |
| | | } |
| | | |
| | | List<CommentInfo> comments = goodsEvaluate.getComments(); |
| | | if (comments == null || comments.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | for (String id : list) { |
| | | for (int i = 0; i < comments.size(); i++) { |
| | | CommentInfo commentInfo = comments.get(i); |
| | | if (id.equals(commentInfo.getId())) { |
| | | comments.remove(i); |
| | | i--; |
| | | } |
| | | } |
| | | } |
| | | goodsEvaluate.setComments(comments); |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | } |
| | | |
| | | @Override |
| | | public void addShareNum(String id) { |
| | | GoodsEvaluate article = goodsEvaluateDao.getById(id); |
| | | if (article != null) { |
| | | Integer num = article.getShareNum(); |
| | | if (num == null) { |
| | | num = 0; |
| | | } |
| | | article.setShareNum(num + 1); |
| | | |
| | | Integer numReal = article.getShareNumReal(); |
| | | if (numReal == null) { |
| | | numReal = 0; |
| | | } |
| | | article.setShareNumReal(numReal + 1); |
| | | |
| | | goodsEvaluateDao.save(article); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public List<GoodsEvaluate> query(int start, int count, String key, Integer state, int dynamicType, |
| | | String typeEnum, SystemEnum system) { |
| | | return goodsEvaluateDao.query(start, count, key, state, dynamicType, typeEnum, system); |
| | | } |
| | | |
| | | @Override |
| | | public long count(String key, Integer state, int dynamicType, String typeEnum, SystemEnum system) { |
| | | return goodsEvaluateDao.count(key, state, dynamicType, typeEnum, system); |
| | | } |
| | | |
| | | @Override |
| | | public void addRanDomShareCount(SystemEnum system) { |
| | | // 发圈 |
| | | try { |
| | | List<GoodsEvaluate> list = goodsEvaluateDao.queryValid(0, Integer.MAX_VALUE, 1, system); |
| | | if (list != null) { |
| | | for (GoodsEvaluate goodsEvaluate : list) { |
| | | Integer shareNum = goodsEvaluate.getShareNum(); |
| | | if (shareNum == null) { |
| | | shareNum = 0; |
| | | } |
| | | goodsEvaluate.setShareNum(shareNum + (int) (Math.random() * 100) + 10); |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | LogHelper.errorDetailInfo(e); |
| | | } |
| | | |
| | | // 素材 |
| | | try { |
| | | List<GoodsEvaluate> list = goodsEvaluateDao.queryValid(0, Integer.MAX_VALUE, 2, system); |
| | | if (list != null) { |
| | | for (GoodsEvaluate goodsEvaluate : list) { |
| | | Integer shareNum = goodsEvaluate.getShareNum(); |
| | | if (shareNum == null) { |
| | | shareNum = 0; |
| | | } |
| | | goodsEvaluate.setShareNum(shareNum + (int) (Math.random() * 100) + 10); |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | LogHelper.errorDetailInfo(e); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | @Cacheable(value = "dynamicCache", key = "'queryValidEvaluateCache-'+#start") |
| | | public List<GoodsEvaluate> queryValidEvaluateCache(int start, int count, SystemEnum system) { |
| | | List<GoodsEvaluate> list = goodsEvaluateDao.queryValid(start, count, 1, system); |
| | | |
| | | // 更新商品信息 |
| | | executor.execute(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | // 更新信息 |
| | | updateGoodInfo(list); |
| | | |
| | | // 删除已过期 |
| | | removeOverdue(); |
| | | |
| | | removeDownGoods(); |
| | | } |
| | | }); |
| | | |
| | | return list; |
| | | } |
| | | |
| | | @Override |
| | | public long countValid(SystemEnum system) { |
| | | return goodsEvaluateDao.countValid(1, system); |
| | | } |
| | | |
| | | @Override |
| | | @Cacheable(value = "dynamicCache", key = "'queryMaterialsCache-'+#start+'-'+#type+'-'+#system") |
| | | public List<GoodsEvaluate> queryMaterialsCache(int start, int count, int type, SystemEnum system) throws Exception { |
| | | List<GoodsEvaluate> list = goodsEvaluateDao.queryValid(start, count, type, system); |
| | | if (list == null) { |
| | | list = new ArrayList<>(); |
| | | } |
| | | Date now = new Date(); |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | |
| | | List<GoodsEvaluate> listNew = new ArrayList<>(); |
| | | for (GoodsEvaluate goodsEvaluate : list) { |
| | | GoodsEvaluate evaluateNew = new GoodsEvaluate(); |
| | | try { |
| | | PropertyUtils.copyProperties(evaluateNew, goodsEvaluate); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | continue; |
| | | } |
| | | |
| | | // 按照发布显示时间段起始时间为准。 |
| | | evaluateNew.setPublishTime(evaluateNew.getStartTime()); |
| | | |
| | | List<CommentInfo> comments = evaluateNew.getComments(); |
| | | if (comments != null && comments.size() > 0) { |
| | | EvaluateEnum typeEnum = evaluateNew.getType(); |
| | | List<CommentInfo> commentNew = new ArrayList<>(); |
| | | |
| | | boolean singleCoupn = true; |
| | | boolean currencyCoupon = true; |
| | | for (CommentInfo commentInfo : comments) { |
| | | if (StringUtil.isNullOrEmpty(commentInfo.getContent()) |
| | | && StringUtil.isNullOrEmpty(commentInfo.getCoupon())) { |
| | | continue; |
| | | } |
| | | |
| | | CommentInfo commentInfoNew = new CommentInfo(); |
| | | try { |
| | | PropertyUtils.copyProperties(commentInfoNew, commentInfo); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | continue; |
| | | } |
| | | |
| | | if (typeEnum != null && typeEnum == EvaluateEnum.single) { |
| | | GoodsDetailVO goods = evaluateNew.getGoods(); |
| | | goods.setCreatetime(null); |
| | | if (goods != null) { |
| | | String content = commentInfoNew.getContent(); |
| | | if (!StringUtil.isNullOrEmpty(content)) { |
| | | content = content.replace("[原价]", |
| | | MoneyBigDecimalUtil.getWithNoZera(goods.getZkPrice()) + ""); |
| | | if (goods.isHasCoupon()) { |
| | | content = content.replace("[券后价]", |
| | | MoneyBigDecimalUtil.getWithNoZera(goods.getCouponPrice()) + ""); |
| | | } else { |
| | | singleCoupn = false; |
| | | content = content.replace("领券抢购", "抢购"); |
| | | content = content.replace("【券后价】[券后价]元", ""); |
| | | } |
| | | content = content.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n"); |
| | | // 替换淘宝官方活动 |
| | | List<String> activityIdList = convertLinkManager.getTaoBaoOfficialActivityId(content); |
| | | for (String st : activityIdList) |
| | | content = content.replace(st, ""); |
| | | content = content.replace("{relationId}", ""); |
| | | if (system == SystemEnum.yhqjx || system == SystemEnum.hsb) { |
| | | content = content.replace("\n", "<br>"); |
| | | } |
| | | commentInfoNew.setContent(content); |
| | | } |
| | | } |
| | | } |
| | | if (typeEnum != null && typeEnum == EvaluateEnum.activity) { |
| | | // 替换淘宝官方活动 |
| | | String content = commentInfoNew.getContent(); |
| | | List<String> activityIdList = convertLinkManager.getTaoBaoOfficialActivityId(content); |
| | | for (String st : activityIdList) |
| | | content = content.replace(st, ""); |
| | | content = content.replace("{relationId}", ""); |
| | | |
| | | comments.add(commentInfo); |
| | | } |
| | | commentInfoNew.setContent(content); |
| | | } |
| | | |
| | | resultObj.setComments(comments); |
| | | goodsEvaluateDao.save(resultObj); |
| | | } |
| | | CommentInfoEnum typeComment = commentInfoNew.getTypeEnum(); |
| | | if (typeComment != null && typeComment == CommentInfoEnum.goodsCoupon) { |
| | | GoodsDetailVO goods = evaluateNew.getGoods(); |
| | | goods.setCreatetime(null); |
| | | if (goods != null && goods.isHasCoupon()) { |
| | | commentNew.add(commentInfoNew); |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void saveActivityPic(String pid, ImgInfo imgInfo, MultipartHttpServletRequest fileRequest) |
| | | throws GoodsEvaluateException, Exception { |
| | | if (StringUtil.isNullOrEmpty(pid)) { |
| | | throw new GoodsEvaluateException(1, "请保存第一部分信息"); |
| | | } |
| | | String coupon = commentInfoNew.getCoupon(); |
| | | String endTime = commentInfoNew.getEndTime(); |
| | | if (!StringUtil.isNullOrEmpty(coupon) && !StringUtil.isNullOrEmpty(endTime)) { |
| | | Date endDay = sdf.parse(endTime); |
| | | if (endDay.getTime() > now.getTime()) { |
| | | String daysBetween = DateUtil.dateDiff5(now, endDay); |
| | | if (!StringUtil.isNullOrEmpty(daysBetween)) { |
| | | List<ClientTextStyleVO> tagListNew = new ArrayList<>(); |
| | | List<ClientTextStyleVO> tagList = commentInfoNew.getTagList(); |
| | | if (tagList != null) { |
| | | tagListNew.addAll(tagList); |
| | | } |
| | | |
| | | GoodsEvaluate resultObj = goodsEvaluateDao.getById(pid); |
| | | if (resultObj == null) |
| | | throw new GoodsEvaluateException(1, "第一部分信息缺失"); |
| | | ClientTextStyleVO styleVO = new ClientTextStyleVO(); |
| | | styleVO.setColor("#E5005C"); |
| | | styleVO.setContent(daysBetween + "后过期"); |
| | | tagListNew.add(styleVO); |
| | | commentInfoNew.setTagList(tagListNew); |
| | | commentNew.add(commentInfoNew); |
| | | continue; |
| | | } else { |
| | | currencyCoupon = false; |
| | | continue; |
| | | } |
| | | } else { |
| | | currencyCoupon = false; |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | String videoPic = null; |
| | | String activityPic = null; |
| | | ImgInfo imgVideo = null; |
| | | ImgInfo imgactivity = null; |
| | | List<ImgInfo> resultList = resultObj.getImgList(); |
| | | if (resultList != null && resultList.size() > 0) { |
| | | for (ImgInfo info : resultList) { |
| | | if (info.getType() == ImgEnum.activity) { |
| | | activityPic = info.getActivityPic(); |
| | | imgactivity = info; |
| | | } else { |
| | | imgVideo = info; |
| | | videoPic = info.getUrl(); |
| | | } |
| | | } |
| | | } |
| | | commentNew.add(commentInfoNew); |
| | | } |
| | | evaluateNew.setComments(commentNew); |
| | | |
| | | int width = 0; |
| | | int height = 0; |
| | | int width2 = 0; |
| | | int height2 = 0; |
| | | List<ImgInfo> listImg = new ArrayList<ImgInfo>(); |
| | | if (fileRequest != null) { |
| | | MultipartFile filevideo = fileRequest.getFile("filevideo"); |
| | | if (filevideo != null) { |
| | | removePicture(videoPic); |
| | | if (typeEnum != null && typeEnum == EvaluateEnum.single) { |
| | | |
| | | ImgInfo info = uploadVideoPicture(filevideo); |
| | | if (info == null) |
| | | throw new GoodsEvaluateException(2, "视频图片上传失败"); |
| | | videoPic = info.getUrl(); |
| | | width = info.getW(); |
| | | height = info.getH(); |
| | | } |
| | | if (!SystemInfoUtil.hasFunctions(system, SystemFunction.share)) { |
| | | List<ImgInfo> imgList = evaluateNew.getImgList(); |
| | | if (imgList != null) { |
| | | for (ImgInfo imgInfo : imgList) { |
| | | imgInfo.setGoods(null); |
| | | if (imgInfo.getType() == ImgEnum.goods) |
| | | imgInfo.setType(ImgEnum.img); |
| | | } |
| | | } |
| | | } |
| | | |
| | | MultipartFile activityfile = fileRequest.getFile("activityfile"); |
| | | if (activityfile != null) { |
| | | removePicture(activityPic); |
| | | InputStream inputStream = activityfile.getInputStream(); |
| | | BufferedImage sourceImg = ImageIO.read(inputStream); |
| | | width2 = sourceImg.getWidth(); |
| | | height2 = sourceImg.getHeight(); |
| | | String picLink = uploadPicture(activityfile); |
| | | activityPic = picLink; |
| | | } |
| | | } |
| | | |
| | | if (!StringUtil.isNullOrEmpty(videoPic) || !StringUtil.isNullOrEmpty(imgInfo.getVideoUrl())) { |
| | | if (imgVideo != null) { |
| | | imgVideo.setUrl(videoPic); |
| | | imgVideo.setUrlHD(videoPic); |
| | | imgVideo.setVideoUrl(imgInfo.getVideoUrl()); |
| | | } else { |
| | | imgVideo = new ImgInfo(); |
| | | imgVideo.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | imgVideo.setLarge(true); |
| | | imgVideo.setPid(pid); |
| | | imgVideo.setUrl(videoPic); |
| | | imgVideo.setUrlHD(videoPic); |
| | | imgVideo.setVideoUrl(imgInfo.getVideoUrl()); |
| | | imgVideo.setType(ImgEnum.video); |
| | | } |
| | | if (width > 0) { |
| | | imgVideo.setW(width); |
| | | imgVideo.setH(height); |
| | | } else { |
| | | imgVideo.setW(imgVideo.getW()); |
| | | imgVideo.setH(imgVideo.getH()); |
| | | } |
| | | listImg.add(imgVideo); |
| | | } |
| | | if (!currencyCoupon && !singleCoupn) { // 所有券评论下架 |
| | | GoodsDetailVO goods = evaluateNew.getGoods(); |
| | | if (goods != null) { |
| | | goods.setCreatetime(null); |
| | | goods.setState(1); // 评论不存在 下架 |
| | | evaluateNew.setRemarks("评论验证下架"); |
| | | } |
| | | |
| | | int totalImg = 0; |
| | | if (!StringUtil.isNullOrEmpty(activityPic) || !StringUtil.isNullOrEmpty(imgInfo.getActivityUrl())) { |
| | | if (imgactivity != null) { |
| | | imgactivity.setUrl(activityPic); |
| | | imgactivity.setUrlHD(activityPic); |
| | | imgactivity.setActivityUrl(imgInfo.getActivityUrl()); |
| | | } else { |
| | | imgactivity = new ImgInfo(); |
| | | imgactivity.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | imgactivity.setLarge(true); |
| | | imgactivity.setPid(pid); |
| | | imgactivity.setUrl(activityPic); |
| | | imgactivity.setUrlHD(activityPic); |
| | | imgactivity.setActivityUrl(imgInfo.getActivityUrl()); |
| | | imgactivity.setType(ImgEnum.activity); |
| | | } |
| | | if (width2 > 0) { |
| | | imgactivity.setW(width2); |
| | | imgactivity.setH(height2); |
| | | } else { |
| | | imgactivity.setW(imgactivity.getW()); |
| | | imgactivity.setH(imgactivity.getH()); |
| | | } |
| | | listImg.add(imgactivity); |
| | | totalImg++; |
| | | } |
| | | List<ImgInfo> imgList = evaluateNew.getImgList(); |
| | | if (imgList != null) { |
| | | for (ImgInfo imgInfo : imgList) { |
| | | SimpleGoods simpleGoods = imgInfo.getGoods(); |
| | | if (simpleGoods != null) { |
| | | simpleGoods.setState(1); |
| | | simpleGoods.setRemarks("评论验证下架"); |
| | | } |
| | | if (system == SystemEnum.yhqjx || system == SystemEnum.hsb) { |
| | | imgInfo.setGoods(null); |
| | | } |
| | | } |
| | | |
| | | int lineNum = 0; |
| | | if (totalImg > 0) { |
| | | if (totalImg == 1) { |
| | | lineNum = 1; |
| | | } else if (totalImg == 3) { |
| | | lineNum = 3; |
| | | } else if (totalImg == 2 || totalImg == 4) { |
| | | lineNum = 2; |
| | | } else { |
| | | lineNum = 3; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | resultObj.setLineNum(lineNum); |
| | | resultObj.setImgList(listImg); |
| | | goodsEvaluateDao.save(resultObj); |
| | | } |
| | | listNew.add(evaluateNew); |
| | | } |
| | | |
| | | @Override |
| | | public void saveSuCai(String pid, String videoUrl, String picUrls, MultipartHttpServletRequest fileRequest) |
| | | throws GoodsEvaluateException, Exception { |
| | | if (StringUtil.isNullOrEmpty(pid)) { |
| | | throw new GoodsEvaluateException(1, "请保存第一部分信息"); |
| | | } |
| | | List<GoodsEvaluate> listOBJ = list; |
| | | // 更新商品信息 |
| | | executor.execute(new |
| | | |
| | | GoodsEvaluate resultObj = goodsEvaluateDao.getById(pid); |
| | | if (resultObj == null) |
| | | throw new GoodsEvaluateException(1, "第一部分信息缺失"); |
| | | Runnable() { |
| | | @Override |
| | | public void run() { |
| | | updateGoodInfo(listOBJ); |
| | | |
| | | // 原封视频面图 |
| | | ImgInfo imgVideo = null; |
| | | ImgInfo imgActivity = null; |
| | | List<String> listDel = new ArrayList<String>(); |
| | | List<String> listOld = new ArrayList<String>(); |
| | | // 删除已过期 |
| | | removeOverdue(); |
| | | |
| | | List<ImgInfo> listOldImgInfo = new ArrayList<ImgInfo>(); |
| | | // 处理图片 |
| | | List<ImgInfo> resultList = resultObj.getImgList(); |
| | | if (resultList != null && resultList.size() > 0) { |
| | | for (ImgInfo info : resultList) { |
| | | ImgEnum type = info.getType(); |
| | | if (type == ImgEnum.video) { |
| | | imgVideo = info; |
| | | } else if (type == ImgEnum.img) { |
| | | listOldImgInfo.add(info); |
| | | String url = info.getUrl(); |
| | | if (!StringUtil.isNullOrEmpty(url)) { |
| | | listOld.add(url); |
| | | } |
| | | } else if (type == ImgEnum.activity) { |
| | | imgActivity = info; |
| | | } |
| | | } |
| | | } |
| | | removeDownGoods(); |
| | | } |
| | | }); |
| | | |
| | | MultipartFile activityFile = null; |
| | | // 视频部分 |
| | | if (fileRequest != null) { |
| | | MultipartFile filevideo = fileRequest.getFile("filevideo"); |
| | | if (filevideo != null) { |
| | | if (StringUtil.isNullOrEmpty(videoUrl)) { |
| | | throw new GoodsEvaluateException(1, "视频链接不能为空"); |
| | | } |
| | | ImgInfo info = uploadVideoPicture(filevideo); |
| | | if (info == null) |
| | | throw new GoodsEvaluateException(2, "视频图片上传失败"); |
| | | if (imgVideo != null) { |
| | | String url = imgVideo.getUrl(); |
| | | if (!StringUtil.isNullOrEmpty(url)) { |
| | | listDel.add(url); |
| | | } |
| | | imgVideo.setUrl(info.getUrl()); |
| | | imgVideo.setUrlHD(info.getUrl()); |
| | | } else { |
| | | imgVideo = new ImgInfo(); |
| | | imgVideo.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | imgVideo.setLarge(true); |
| | | imgVideo.setPid(pid); |
| | | imgVideo.setUrl(info.getUrl()); |
| | | imgVideo.setUrlHD(info.getUrl()); |
| | | imgVideo.setVideoUrl(videoUrl); |
| | | imgVideo.setType(ImgEnum.video); |
| | | } |
| | | imgVideo.setW(info.getW()); |
| | | imgVideo.setH(info.getH()); |
| | | } |
| | | return listNew; |
| | | } |
| | | |
| | | activityFile = fileRequest.getFile("activityFile"); |
| | | } |
| | | @Override |
| | | public long countValidMaterials(int type, SystemEnum system) { |
| | | return goodsEvaluateDao.countValid(type, system); |
| | | } |
| | | |
| | | List<ImgInfo> listImg = new ArrayList<ImgInfo>(); |
| | | if (imgVideo != null) { |
| | | if (!StringUtil.isNullOrEmpty(videoUrl)) { |
| | | if (imgVideo != null && StringUtil.isNullOrEmpty(imgVideo.getUrl())) { |
| | | throw new GoodsEvaluateException(1, "视频封面图不能为空"); |
| | | } |
| | | /** |
| | | * 更新商品信息 |
| | | */ |
| | | public void updateGoodInfo(List<GoodsEvaluate> list) { |
| | | if (!Constant.IS_OUTNET) { |
| | | return; // 外网进行更新 |
| | | } |
| | | |
| | | imgVideo.setVideoUrl(videoUrl); |
| | | listImg.add(imgVideo); |
| | | } else { |
| | | String url = imgVideo.getUrl(); |
| | | if (!StringUtil.isNullOrEmpty(url)) { |
| | | listDel.add(url); |
| | | } |
| | | } |
| | | } |
| | | if (list == null || list.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | if (activityFile != null) { |
| | | InputStream inputStream = activityFile.getInputStream(); |
| | | BufferedImage sourceImg = ImageIO.read(inputStream); |
| | | int width = sourceImg.getWidth(); |
| | | int height = sourceImg.getHeight(); |
| | | try { |
| | | Date now = new Date(); |
| | | SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | |
| | | String picLink = uploadPicture(activityFile); |
| | | for (GoodsEvaluate goodsEvaluate : list) { |
| | | GoodsMoneyConfigParamsDTO params = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55", goodsEvaluate.getSystem()); |
| | | params.setBaseFanliRate(hongBaoManageService.getBaseFanliRate(goodsEvaluate.getSystem())); |
| | | // 是否2个小时之内已更新 |
| | | Date updateTime = goodsEvaluate.getUpdateTime(); |
| | | if (updateTime != null) { |
| | | long nd = 1000 * 24 * 60 * 60;// 一天的毫秒数 |
| | | long nh = 1000 * 60 * 60;// 一小时的毫秒数 |
| | | long diff = System.currentTimeMillis() - updateTime.getTime(); |
| | | long day = diff / nd;// 计算差多少天 |
| | | long hour = diff % nd / nh + day * 24;// 计算差多少小时 |
| | | if (hour < 2) { |
| | | continue; |
| | | } |
| | | } |
| | | |
| | | ImgInfo activity = new ImgInfo(); |
| | | activity.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | activity.setLarge(true); |
| | | activity.setPid(pid); |
| | | activity.setUrl(picLink); |
| | | activity.setUrlHD(picLink); |
| | | activity.setActivityPic(picLink); |
| | | activity.setW(width); |
| | | activity.setH(height); |
| | | activity.setType(ImgEnum.activity); |
| | | listImg.add(activity); |
| | | } else if (imgActivity != null) { |
| | | listImg.add(imgActivity); |
| | | } |
| | | EvaluateEnum type = goodsEvaluate.getType(); |
| | | if (type != null && type == EvaluateEnum.activity) { |
| | | List<CommentInfo> comments = goodsEvaluate.getComments(); |
| | | if (comments != null) { |
| | | for (CommentInfo commentInfo : comments) { |
| | | CommentInfoEnum commentInfoEnum = commentInfo.getTypeEnum(); |
| | | if (commentInfoEnum != null && commentInfoEnum == CommentInfoEnum.currencyCoupon) { |
| | | String endTime = commentInfo.getEndTime(); |
| | | if (!StringUtil.isNullOrEmpty(endTime)) { |
| | | Date endDay = format.parse(endTime); |
| | | if (endDay.getTime() < now.getTime()) { |
| | | goodsEvaluate.setState(0); // 活动过期 |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 编辑图片 |
| | | List<String> listpic = new ArrayList<>(); |
| | | if (!StringUtil.isNullOrEmpty(picUrls)) { |
| | | String[] pics = picUrls.split(","); |
| | | if (pics != null) { |
| | | for (int i = 0; i < pics.length; i++) { |
| | | String picLink = pics[i]; |
| | | if (picLink.startsWith("http")) { |
| | | listpic.add(picLink); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | // 上传文件替换 |
| | | if (fileRequest != null) { |
| | | for (int i = 0; i < 9; i++) { |
| | | MultipartFile file = fileRequest.getFile("file" + i); |
| | | if (file != null) { |
| | | String picLink = uploadPicture(file); |
| | | if (i < listpic.size()) { |
| | | listpic.set(i, picLink); |
| | | } else { |
| | | listpic.add(picLink); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | GoodsDetailVO goods = goodsEvaluate.getGoods(); |
| | | if (goods != null) { |
| | | GoodsDetailVO goodsNew = getGoodsNewInfo(goods.getGoodsId(), goods.getGoodsType(), params); |
| | | if (goodsNew != null) { |
| | | goodsEvaluate.setGoods(goodsNew); |
| | | } else { |
| | | goodsEvaluate.setRemarks("更新-位置找到商品信息"); |
| | | goodsEvaluate.setState(0); // 已商品下架 |
| | | goods.setState(1); |
| | | goodsEvaluate.setGoods(goods); |
| | | } |
| | | } |
| | | // 更新商品信息 |
| | | List<ImgInfo> imgList = goodsEvaluate.getImgList(); |
| | | if (imgList == null || imgList.size() == 0) { |
| | | continue; |
| | | } |
| | | |
| | | int totalImg = 0; |
| | | for (String pic : listpic) { |
| | | ImgInfo imgInfo0 = new ImgInfo(); |
| | | imgInfo0.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | imgInfo0.setLarge(false); |
| | | imgInfo0.setPid(pid); |
| | | imgInfo0.setUrl(pic); |
| | | imgInfo0.setUrlHD(pic); |
| | | imgInfo0.setType(ImgEnum.img); |
| | | imgInfo0.setW(1); |
| | | imgInfo0.setH(1); |
| | | listImg.add(imgInfo0); |
| | | totalImg++; |
| | | } |
| | | for (ImgInfo imgInfo : imgList) { |
| | | SimpleGoods simpleGoods = imgInfo.getGoods(); |
| | | if (simpleGoods == null) { |
| | | continue; |
| | | } |
| | | |
| | | // 清理老图片 |
| | | if (listOld != null && listOld.size() > 0) { |
| | | for (int j = 0; j < listOld.size(); j++) { |
| | | boolean del = true; |
| | | String oldPic = listOld.get(j); |
| | | for (ImgInfo imgInfo : listImg) { |
| | | String url = imgInfo.getUrl(); |
| | | if (url.equals(oldPic)) { |
| | | del = false; |
| | | } |
| | | } |
| | | if (del) |
| | | listDel.add(listOld.get(j)); |
| | | } |
| | | } |
| | | GoodsDetailVO goodsDetailVO = getGoodsNewInfo(simpleGoods.getGoodsId(), simpleGoods.getGoodsType(), |
| | | params); |
| | | if (goodsDetailVO != null) { |
| | | simpleGoods.setPrice(goodsDetailVO.getCouponPrice()); |
| | | simpleGoods.setState(0); |
| | | CouponInfoVO couponInfo = goodsDetailVO.getCouponInfo(); |
| | | if (couponInfo == null) { |
| | | simpleGoods.setPrice(goodsDetailVO.getZkPrice()); |
| | | } else { |
| | | simpleGoods.setPrice(goodsDetailVO.getCouponPrice()); |
| | | simpleGoods.setAmount(couponInfo.getAmount()); |
| | | } |
| | | imgInfo.setGoods(simpleGoods); |
| | | imgInfo.setGoodsVO(goodsDetailVO); |
| | | } else { |
| | | simpleGoods.setRemarks("更新-位置找到商品信息"); |
| | | simpleGoods.setState(1); |
| | | imgInfo.setGoods(simpleGoods); |
| | | GoodsDetailVO goodsVO = imgInfo.getGoodsVO(); |
| | | if (goodsVO != null) { |
| | | goodsVO.setState(1); |
| | | imgInfo.setGoodsVO(goodsVO); |
| | | } |
| | | } |
| | | } |
| | | goodsEvaluate.setImgList(imgList); |
| | | goodsEvaluate.setUpdateTime(new Date()); |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | } |
| | | } catch (Exception e) { |
| | | LogHelper.errorDetailInfo(e); |
| | | } |
| | | } |
| | | |
| | | int lineNum = 0; |
| | | if (totalImg > 0) { |
| | | if (totalImg == 1) { |
| | | lineNum = 1; |
| | | } else if (totalImg == 3) { |
| | | lineNum = 3; |
| | | } else if (totalImg == 2 || totalImg == 4) { |
| | | lineNum = 2; |
| | | } else { |
| | | lineNum = 3; |
| | | } |
| | | } |
| | | private GoodsDetailVO getGoodsNewInfo(String goodsId, int goodsType, GoodsMoneyConfigParamsDTO 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(); |
| | | } |
| | | |
| | | resultObj.setLineNum(lineNum); |
| | | resultObj.setImgList(listImg); |
| | | goodsEvaluateDao.save(resultObj); |
| | | } else if (goodsType == Constant.SOURCE_TYPE_JD) { |
| | | JDGoods goodsInfo = jdGoodsCacheUtil.getGoodsInfo(goodsId); |
| | | if (goodsInfo != null) { |
| | | vo = GoodsDetailVOFactory.convertJDGoods(goodsInfo, paramsDTO); |
| | | } |
| | | } else if (goodsType == Constant.SOURCE_TYPE_PDD) { |
| | | PDDGoodsDetail goodsInfo = pinDuoDuoCacheUtil.getGoodsInfo(goodsId); |
| | | if (goodsInfo != null) |
| | | vo = GoodsDetailVOFactory.convertPDDGoods(goodsInfo, paramsDTO); |
| | | } |
| | | return vo; |
| | | } |
| | | |
| | | // 删除图片 |
| | | if (listDel.size() > 0) { |
| | | for (String url : listDel) { |
| | | if (url.contains(FilePathEnum.goodsEvaluate.getPath())) { |
| | | removePicture(url); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | @Override |
| | | public void addGoodsEvaluate(String goodsId, List<ImgInfo> imgList, ActivityUser user, String title, String comment, |
| | | Date startTime, SystemEnum system) throws GoodsEvaluateException { |
| | | if (goodsId == null || user == null || StringUtil.isNullOrEmpty(title)) { |
| | | throw new GoodsEvaluateException(1, "相关参数不能为空"); |
| | | } |
| | | |
| | | @Override |
| | | public void deleteBatchByPrimaryKey(List<String> list) { |
| | | if (list == null || list.size() == 0) { |
| | | return; |
| | | } |
| | | for (String id : list) { |
| | | goodsEvaluateDao.deleteById(id); |
| | | } |
| | | } |
| | | Date limitDate = DateUtil.reduceDay(new Date(), 7); |
| | | |
| | | @Override |
| | | public GoodsEvaluate getById(String id) { |
| | | return goodsEvaluateDao.getById(id); |
| | | } |
| | | List<GoodsEvaluate> evaluateList = goodsEvaluateDao.queryExistLimitTime(Constant.SOURCE_TYPE_TAOBAO, goodsId, limitDate); |
| | | if (evaluateList != null && evaluateList.size() > 0) |
| | | throw new GoodsEvaluateException(1, "该商品已存在"); |
| | | |
| | | @Override |
| | | public void saveComment(String pid, CommentInfo commentInfo) throws GoodsEvaluateException { |
| | | GoodsEvaluate goodsEvaluate = goodsEvaluateDao.getById(pid); |
| | | if (goodsEvaluate == null) { |
| | | throw new GoodsEvaluateException(1, "动态已不存在"); |
| | | } |
| | | TaoBaoGoodsBrief goodsBrief = null; |
| | | try { |
| | | goodsBrief = redisManager.getTaoBaoGoodsBrief(goodsId); |
| | | } catch (TaobaoGoodsDownException e) { |
| | | throw new GoodsEvaluateException(1, "商品已下架"); |
| | | } |
| | | |
| | | String tags = commentInfo.getTags(); |
| | | if (!StringUtil.isNullOrEmpty(tags)) { |
| | | String[] arrayTags = tags.split("\\s+"); |
| | | if (arrayTags != null && arrayTags.length > 0) { |
| | | String[] arrayTagsColour = null; |
| | | String tagsColour = commentInfo.getTagsColour(); |
| | | if (!StringUtil.isNullOrEmpty(tagsColour)) { |
| | | arrayTagsColour = tagsColour.split("\\s+"); |
| | | } |
| | | if (goodsBrief == null) { |
| | | throw new GoodsEvaluateException(1, "未找到商品信息"); |
| | | } |
| | | |
| | | String color = "#E5005C"; |
| | | List<ClientTextStyleVO> tagList = new ArrayList<ClientTextStyleVO>(); |
| | | for (int i = 0; i < arrayTags.length; i++) { |
| | | String tag = arrayTags[i]; |
| | | if (arrayTagsColour != null && arrayTagsColour.length == arrayTags.length) { |
| | | color = arrayTagsColour[i]; |
| | | } |
| | | ClientTextStyleVO styleVO = new ClientTextStyleVO(); |
| | | styleVO.setColor(color); |
| | | styleVO.setContent(tag); |
| | | tagList.add(styleVO); |
| | | } |
| | | commentInfo.setTagList(tagList); |
| | | } |
| | | } |
| | | BigDecimal couponAmount = goodsBrief.getCouponAmount(); |
| | | if (couponAmount == null || couponAmount.compareTo(new BigDecimal(0)) < 1) { |
| | | throw new GoodsEvaluateException(1, "该商品无券"); |
| | | } |
| | | |
| | | List<CommentInfo> comments = goodsEvaluate.getComments(); |
| | | if (comments == null) { |
| | | comments = new ArrayList<>(); |
| | | } |
| | | // 白底图 |
| | | List<String> imgs = new ArrayList<>(); |
| | | |
| | | Integer weight = commentInfo.getWeight(); |
| | | if (weight == null) |
| | | commentInfo.setWeight(1); |
| | | imgs.addAll(goodsBrief.getImgList()); |
| | | |
| | | comments.add(commentInfo); |
| | | // 商品VO |
| | | GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55", system); |
| | | paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate(system)); |
| | | GoodsDetailVO goodsVO = GoodsDetailVOFactory.convertTaoBao(goodsBrief, paramsDTO); |
| | | |
| | | Collections.shuffle(comments); |
| | | Comparator<CommentInfo> cm = new Comparator<CommentInfo>() { |
| | | @Override |
| | | public int compare(CommentInfo o1, CommentInfo o2) { |
| | | return o1.getWeight() != null && o2.getWeight() != null ? o2.getWeight() - o1.getWeight() : 0; |
| | | } |
| | | }; |
| | | Collections.sort(comments, cm); |
| | | // 商品图片信息 |
| | | int i = 0; |
| | | if (imgList == null) |
| | | imgList = new ArrayList<ImgInfo>(); |
| | | |
| | | goodsEvaluate.setComments(comments); |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | } |
| | | if (imgList.size() == 0) |
| | | 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++; |
| | | } |
| | | |
| | | @Override |
| | | public void release(String id) throws GoodsEvaluateException { |
| | | GoodsEvaluate goodsEvaluate = goodsEvaluateDao.getById(id); |
| | | if (goodsEvaluate == null) { |
| | | throw new GoodsEvaluateException(1, "动态已不存在"); |
| | | } |
| | | goodsEvaluate.setState(1); |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | } |
| | | // 评论内容 |
| | | CommentInfo commentInfo = new CommentInfo(); |
| | | commentInfo.setNeedSpin(true); |
| | | commentInfo.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | commentInfo.setTypeEnum(CommentInfoEnum.goodsCoupon); |
| | | if (!StringUtil.isNullOrEmpty(comment)) { |
| | | commentInfo.setContent(comment); |
| | | commentInfo.setType(""); |
| | | } else { |
| | | goodsBrief.setCouponLink(null); |
| | | String token = shareGoodsService.createTaoBaoToken(Constant.LINK_TOKEN_VERIFY_UID, goodsBrief); |
| | | String template = configService.getValue(ConfigKeyEnum.quickShareTBCommentText.getKey(), system); |
| | | 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.setContent(commentText); |
| | | commentInfo.setType(CommentInfoEnum.goodsCoupon.getDesc()); |
| | | } |
| | | |
| | | @Override |
| | | public void deleteComment(String pid, List<String> list) throws GoodsEvaluateException { |
| | | if (list == null || list.size() == 0) { |
| | | return; |
| | | } |
| | | GoodsEvaluate goodsEvaluate = goodsEvaluateDao.getById(pid); |
| | | if (goodsEvaluate == null) { |
| | | throw new GoodsEvaluateException(1, "动态已不存在"); |
| | | } |
| | | List<CommentInfo> commentsNew = new ArrayList<>(); |
| | | commentsNew.add(commentInfo); |
| | | |
| | | List<CommentInfo> comments = goodsEvaluate.getComments(); |
| | | if (comments == null || comments.size() == 0) { |
| | | return; |
| | | } |
| | | // 一行显示多少个图片 |
| | | 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; |
| | | } |
| | | } |
| | | |
| | | for (String id : list) { |
| | | for (int i = 0; i < comments.size(); i++) { |
| | | CommentInfo commentInfo = comments.get(i); |
| | | if (id.equals(commentInfo.getId())) { |
| | | comments.remove(i); |
| | | i--; |
| | | } |
| | | } |
| | | } |
| | | goodsEvaluate.setComments(comments); |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | } |
| | | GoodsEvaluate goodsEvaluate = new GoodsEvaluate(); |
| | | goodsEvaluate.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | goodsEvaluate.setUser(user); |
| | | goodsEvaluate.setTitle(getDescNew(title)); |
| | | goodsEvaluate.setState(1); |
| | | goodsEvaluate.setDynamicType(1); |
| | | goodsEvaluate.setType(EvaluateEnum.single); |
| | | goodsEvaluate.setShareNum((int) (Math.random() * 5000) + 1000); |
| | | goodsEvaluate.setShareNumReal(0); |
| | | goodsEvaluate.setWeight(0.0); |
| | | if (startTime == null) |
| | | startTime = new Date(); |
| | | goodsEvaluate.setStartTime(startTime); |
| | | goodsEvaluate.setEndTime(DateUtil.plusDayDate(3, new Date())); |
| | | goodsEvaluate.setPublishTime(new Date()); |
| | | goodsEvaluate.setCreateTime(new Date()); |
| | | goodsEvaluate.setUpdateTime(new Date()); |
| | | goodsEvaluate.setGoods(goodsVO); |
| | | goodsEvaluate.setLineNum(lineNum); |
| | | goodsEvaluate.setImgList(imgList); |
| | | goodsEvaluate.setComments(commentsNew); |
| | | goodsEvaluate.setSystem(system); |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | } |
| | | |
| | | @Override |
| | | public void addShareNum(String id) { |
| | | GoodsEvaluate article = goodsEvaluateDao.getById(id); |
| | | if (article != null) { |
| | | Integer num = article.getShareNum(); |
| | | if (num == null) { |
| | | num = 0; |
| | | } |
| | | article.setShareNum(num + 1); |
| | | |
| | | Integer numReal = article.getShareNumReal(); |
| | | if (numReal == null) { |
| | | numReal = 0; |
| | | } |
| | | article.setShareNumReal(numReal + 1); |
| | | @Override |
| | | public int addGoodsEvaluate(TaoBaoGoodsBrief goodsBrief, List<String> imgs, ActivityUser user, String title, SystemEnum system) throws GoodsEvaluateException { |
| | | if (goodsBrief == null || user == null || StringUtil.isNullOrEmpty(title)) { |
| | | throw new GoodsEvaluateException(1, "相关参数不能为空"); |
| | | } |
| | | Date limitDate = DateUtil.reduceDay(new Date(), 7); |
| | | |
| | | goodsEvaluateDao.save(article); |
| | | } |
| | | } |
| | | String goodsId = goodsBrief.getAuctionId(); |
| | | List<GoodsEvaluate> evaluateList = goodsEvaluateDao.queryExistLimitTime(Constant.SOURCE_TYPE_TAOBAO, goodsId + "", limitDate); |
| | | if (evaluateList != null && evaluateList.size() > 0) |
| | | throw new GoodsEvaluateException(1, "该商品已存在"); |
| | | |
| | | @Override |
| | | public List<GoodsEvaluate> query(int start, int count, String key, Integer state, int dynamicType) { |
| | | return goodsEvaluateDao.query(start, count, key, state, dynamicType); |
| | | } |
| | | if (imgs == null) { |
| | | imgs = new ArrayList<>(); |
| | | } |
| | | if (imgs.size() == 0) { |
| | | imgs.addAll(goodsBrief.getImgList()); |
| | | } |
| | | |
| | | @Override |
| | | public long count(String key, Integer state, int dynamicType) { |
| | | return goodsEvaluateDao.count(key, state, dynamicType); |
| | | } |
| | | // 商品VO |
| | | GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55", system); |
| | | paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate(system)); |
| | | GoodsDetailVO goodsVO = GoodsDetailVOFactory.convertTaoBao(goodsBrief, paramsDTO); |
| | | |
| | | @Override |
| | | public void addRanDomShareCount() { |
| | | // 发圈 |
| | | try { |
| | | List<GoodsEvaluate> list = goodsEvaluateDao.queryValid(0, Integer.MAX_VALUE, 1); |
| | | if (list != null) { |
| | | for (GoodsEvaluate goodsEvaluate : list) { |
| | | Integer shareNum = goodsEvaluate.getShareNum(); |
| | | if (shareNum == null) { |
| | | shareNum = 0; |
| | | } |
| | | goodsEvaluate.setShareNum(shareNum + (int) (Math.random() * 100) + 10); |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | LogHelper.errorDetailInfo(e); |
| | | } |
| | | // 商品图片信息 |
| | | int i = 0; |
| | | List<ImgInfo> imgList = new ArrayList<>(); |
| | | |
| | | // 素材 |
| | | try { |
| | | List<GoodsEvaluate> list = goodsEvaluateDao.queryValid(0, Integer.MAX_VALUE, 2); |
| | | if (list != null) { |
| | | for (GoodsEvaluate goodsEvaluate : list) { |
| | | Integer shareNum = goodsEvaluate.getShareNum(); |
| | | if (shareNum == null) { |
| | | shareNum = 0; |
| | | } |
| | | goodsEvaluate.setShareNum(shareNum + (int) (Math.random() * 100) + 10); |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | LogHelper.errorDetailInfo(e); |
| | | } |
| | | } |
| | | 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++; |
| | | } |
| | | |
| | | @Override |
| | | @Cacheable(value = "dynamicCache", key = "'queryValidEvaluateCache-'+#start") |
| | | public List<GoodsEvaluate> queryValidEvaluateCache(int start, int count) { |
| | | List<GoodsEvaluate> list = goodsEvaluateDao.queryValid(start, count, 1); |
| | | |
| | | // 更新商品信息 |
| | | executor.execute(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | // 更新信息 |
| | | updateGoodInfo(list); |
| | | // 生成口令 |
| | | String token = null; |
| | | try { |
| | | TaoBaoLink taoBaoLink = taoBaoLinkManager.getTaoBaoLinkForShare(system, Constant.LINK_TOKEN_VERIFY_UID, goodsBrief.getAuctionId(), Constant.LINK_TOKEN_VERIFY_RELATION_ID, null); |
| | | token = taoBaoLink.getTaoToken(); |
| | | } catch (TaoBaoConvertLinkException e) { |
| | | e.printStackTrace(); |
| | | throw new GoodsEvaluateException(1, "转链失败"); |
| | | } |
| | | |
| | | // 删除已过期 |
| | | removeOverdue(); |
| | | |
| | | removeDownGoods(); |
| | | } |
| | | }); |
| | | |
| | | return list; |
| | | } |
| | | String template = configService.getValue(ConfigKeyEnum.quickShareTBCommentText.getKey(), system); |
| | | 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()); |
| | | |
| | | @Override |
| | | public long countValid() { |
| | | return goodsEvaluateDao.countValid(1); |
| | | } |
| | | List<CommentInfo> commentsNew = new ArrayList<>(); |
| | | commentsNew.add(commentInfo); |
| | | |
| | | @Override |
| | | @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); |
| | | if (list == null) { |
| | | list = new ArrayList<>(); |
| | | } |
| | | Date now = new Date(); |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
| | | // 一行显示多少个图片 |
| | | 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; |
| | | } |
| | | } |
| | | |
| | | List<GoodsEvaluate> listNew = new ArrayList<>(); |
| | | for (GoodsEvaluate goodsEvaluate : list) { |
| | | GoodsEvaluate evaluateNew = new GoodsEvaluate(); |
| | | try { |
| | | PropertyUtils.copyProperties(evaluateNew, goodsEvaluate); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | continue; |
| | | } |
| | | int result = 0; |
| | | int zeroPoint = 0; |
| | | // ★深夜大福利:先抢券,0点准时下单★ |
| | | // 含这种文本的定于每晚10点在动态-发圈 集中发,每晚10点在群发单中只发一条。 |
| | | Date startTime = new Date(); |
| | | if (!StringUtil.isNullOrEmpty(title)) { |
| | | String value = configService.getValue(ConfigKeyEnum.evaluateZeroKey.getKey(), system); |
| | | 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; |
| | | } |
| | | } |
| | | |
| | | // 按照发布显示时间段起始时间为准。 |
| | | goodsEvaluate.setPublishTime(goodsEvaluate.getStartTime()); |
| | | if (zero) { |
| | | result = 1; |
| | | zeroPoint = 1; |
| | | startTime = TimeUtil.parseYYYYMMDD_HHMM(TimeUtil.getGernalTime(startTime) + " 22:00"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | List<CommentInfo> comments = evaluateNew.getComments(); |
| | | if (comments != null && comments.size() > 0) { |
| | | EvaluateEnum typeEnum = evaluateNew.getType(); |
| | | List<CommentInfo> commentNew = new ArrayList<>(); |
| | | |
| | | boolean singleCoupn = true; |
| | | boolean currencyCoupon = true; |
| | | for (CommentInfo commentInfo : comments) { |
| | | if (StringUtil.isNullOrEmpty(commentInfo.getContent()) |
| | | && StringUtil.isNullOrEmpty(commentInfo.getCoupon())) { |
| | | continue; |
| | | } |
| | | 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); |
| | | goodsEvaluate.setSystem(system); |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | return result; |
| | | } |
| | | |
| | | CommentInfo commentInfoNew = new CommentInfo(); |
| | | try { |
| | | PropertyUtils.copyProperties(commentInfoNew, commentInfo); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | continue; |
| | | } |
| | | @Resource |
| | | private DaTaoKeTipOffManager daTaoKeTipOffManager; |
| | | |
| | | if (typeEnum != null && typeEnum == EvaluateEnum.single) { |
| | | GoodsDetailVO goods = evaluateNew.getGoods(); |
| | | if (goods != null) { |
| | | String content = commentInfoNew.getContent(); |
| | | if (!StringUtil.isNullOrEmpty(content)) { |
| | | content = content.replace("[原价]", |
| | | MoneyBigDecimalUtil.getWithNoZera(goods.getZkPrice()) + ""); |
| | | if (goods.isHasCoupon()) { |
| | | content = content.replace("[券后价]", |
| | | MoneyBigDecimalUtil.getWithNoZera(goods.getCouponPrice()) + ""); |
| | | } else { |
| | | singleCoupn = false; |
| | | content = content.replace("领券抢购", "抢购"); |
| | | content = content.replace("【券后价】[券后价]元", ""); |
| | | } |
| | | content = content.replace("\r\n\r\n", "\r\n").replace("\r\n\r\n", "\r\n"); |
| | | // 替换淘宝官方活动 |
| | | List<String> activityIdList = convertLinkManager.getTaoBaoOfficialActivityId(content); |
| | | for (String st : activityIdList) |
| | | content = content.replace(st, ""); |
| | | @Override |
| | | public int addGoodsEvaluate(DaTaoKeListTopOffDTO dto, ActivityUser user, SystemEnum system) throws GoodsEvaluateException { |
| | | if (dto == null || user == null || system == null) { |
| | | throw new GoodsEvaluateException(1, "相关参数不能为空"); |
| | | } |
| | | |
| | | commentInfoNew.setContent(content); |
| | | } |
| | | } |
| | | } |
| | | if (typeEnum != null && typeEnum == EvaluateEnum.activity) { |
| | | // 替换淘宝官方活动 |
| | | String content = commentInfoNew.getContent(); |
| | | List<String> activityIdList = convertLinkManager.getTaoBaoOfficialActivityId(content); |
| | | for (String st : activityIdList) |
| | | content = content.replace(st, ""); |
| | | commentInfoNew.setContent(content); |
| | | } |
| | | String title = null; |
| | | |
| | | CommentInfoEnum typeComment = commentInfoNew.getTypeEnum(); |
| | | if (typeComment != null && typeComment == CommentInfoEnum.goodsCoupon) { |
| | | GoodsDetailVO goods = evaluateNew.getGoods(); |
| | | if (goods != null && goods.isHasCoupon()) { |
| | | commentNew.add(commentInfoNew); |
| | | continue; |
| | | } |
| | | } |
| | | try { |
| | | title = daTaoKeTipOffManager.convertLinkForEvaluateWithEncode(dto, system); |
| | | } catch (Exception e) { |
| | | throw new GoodsEvaluateException(1, "转链出错"); |
| | | } |
| | | |
| | | String coupon = commentInfoNew.getCoupon(); |
| | | String endTime = commentInfoNew.getEndTime(); |
| | | if (!StringUtil.isNullOrEmpty(coupon) && !StringUtil.isNullOrEmpty(endTime)) { |
| | | Date endDay = sdf.parse(endTime); |
| | | if (endDay.getTime() > now.getTime()) { |
| | | String daysBetween = DateUtil.dateDiff5(now, endDay); |
| | | if (!StringUtil.isNullOrEmpty(daysBetween)) { |
| | | List<ClientTextStyleVO> tagListNew = new ArrayList<>(); |
| | | List<ClientTextStyleVO> tagList = commentInfoNew.getTagList(); |
| | | if (tagList != null) { |
| | | tagListNew.addAll(tagList); |
| | | } |
| | | |
| | | ClientTextStyleVO styleVO = new ClientTextStyleVO(); |
| | | styleVO.setColor("#E5005C"); |
| | | styleVO.setContent(daysBetween + "后过期"); |
| | | tagListNew.add(styleVO); |
| | | commentInfoNew.setTagList(tagListNew); |
| | | commentNew.add(commentInfoNew); |
| | | continue; |
| | | } else { |
| | | currencyCoupon = false; |
| | | continue; |
| | | } |
| | | } else { |
| | | currencyCoupon = false; |
| | | continue; |
| | | } |
| | | } |
| | | Date limitDate = DateUtil.reduceDay(new Date(), 7); |
| | | |
| | | commentNew.add(commentInfoNew); |
| | | } |
| | | evaluateNew.setComments(commentNew); |
| | | String identifyCode = "dataoke-" + StringUtil.Md5(DaTaoKeTipOffUtil.getRecoomendDesc(dto)); |
| | | |
| | | if (typeEnum != null && typeEnum == EvaluateEnum.single) { |
| | | if (!currencyCoupon && !singleCoupn) { // 所有券评论下架 |
| | | GoodsDetailVO goods = evaluateNew.getGoods(); |
| | | if (goods != null) { |
| | | goods.setState(1); // 评论不存在 下架 |
| | | evaluateNew.setRemarks("评论验证下架"); |
| | | } |
| | | GoodsEvaluate evaluate = goodsEvaluateDao.selectExistLimitTime(identifyCode, limitDate); |
| | | if (evaluate != null) |
| | | throw new GoodsEvaluateException(1, "线报已存在"); |
| | | |
| | | List<ImgInfo> imgList = evaluateNew.getImgList(); |
| | | if (imgList != null) { |
| | | for (ImgInfo imgInfo : imgList) { |
| | | SimpleGoods simpleGoods = imgInfo.getGoods(); |
| | | if (simpleGoods != null) { |
| | | simpleGoods.setState(1); |
| | | simpleGoods.setRemarks("评论验证下架"); |
| | | } |
| | | } |
| | | List<String> imgs = new ArrayList<>(); |
| | | if (!StringUtil.isNullOrEmpty(dto.getPicUrls())) { |
| | | imgs.addAll(Arrays.asList(dto.getPicUrls().split(","))); |
| | | } |
| | | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | GoodsDetailVO goods = null; |
| | | |
| | | listNew.add(evaluateNew); |
| | | } |
| | | //获取图片 |
| | | if (!StringUtil.isNullOrEmpty( dto.getItemIds())) { |
| | | Set<String> imgSet = new HashSet<>(); |
| | | imgSet.addAll(imgs); |
| | | String id = dto.getItemIds().split(",")[0]; |
| | | String source = dto.getPlatform(); |
| | | switch (source) { |
| | | case "淘宝": |
| | | try { |
| | | TaoBaoGoodsBrief goodsBrief = TaoKeApiUtil.searchGoodsDetail(id); |
| | | if (goodsBrief != null && goodsBrief.getImgList() != null) { |
| | | GoodsMoneyConfigParamsDTO params = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55", system); |
| | | goods = GoodsDetailVOFactory.convertTaoBao(goodsBrief, params); |
| | | goods = goodsLijinMnager.loadTBMoneyInfo(system, null, goodsBrief, goods, false); |
| | | for (String img : goodsBrief.getImgList()) { |
| | | if (!imgSet.contains(img) && imgs.size() < 9) { |
| | | imgSet.add(img); |
| | | imgs.add(img); |
| | | } |
| | | } |
| | | } |
| | | |
| | | List<GoodsEvaluate> listOBJ = list; |
| | | // 更新商品信息 |
| | | executor.execute(new Runnable() { |
| | | @Override |
| | | public void run() { |
| | | updateGoodInfo(listOBJ); |
| | | } catch (TaobaoGoodsDownException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | break; |
| | | case "京东": { |
| | | JDGoods jdGoods = JDApiUtil.queryGoodsDetail(id); |
| | | if (jdGoods != null && jdGoods.getImageList() != null) { |
| | | GoodsMoneyConfigParamsDTO params = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55", system); |
| | | goods = GoodsDetailVOFactory.convertJDGoods(jdGoods, params); |
| | | goods = goodsLijinMnager.loadOtherMoneyInfo(system, null, CommonGoodsFactory.create(jdGoods), goods); |
| | | for (String img : jdGoods.getImageList()) { |
| | | if (!imgSet.contains(img) && imgs.size() < 9) { |
| | | imgSet.add(img); |
| | | imgs.add(img); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | case "拼多多": { |
| | | PDDGoodsDetail goodsDetail = PinDuoDuoApiUtil.getGoodsDetail(id); |
| | | if (goodsDetail != null && goodsDetail.getGoodsGalleryUrls() != null) { |
| | | GoodsMoneyConfigParamsDTO params = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55", system); |
| | | goods = GoodsDetailVOFactory.convertPDDGoods(goodsDetail, params); |
| | | goods = goodsLijinMnager.loadOtherMoneyInfo(system, null, CommonGoodsFactory.create(goodsDetail), goods); |
| | | |
| | | // 删除已过期 |
| | | removeOverdue(); |
| | | |
| | | removeDownGoods(); |
| | | } |
| | | }); |
| | | for (String img : goodsDetail.getGoodsGalleryUrls()) { |
| | | if (!imgSet.contains(img) && imgs.size() < 9) { |
| | | imgSet.add(img); |
| | | imgs.add(img); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | break; |
| | | default: |
| | | throw new GoodsEvaluateException(1, "不支持的source:" + source); |
| | | } |
| | | } |
| | | |
| | | return listNew; |
| | | } |
| | | |
| | | @Override |
| | | public long countValidMaterials(int type) { |
| | | return goodsEvaluateDao.countValid(type); |
| | | } |
| | | // 商品图片信息 |
| | | List<ImgInfo> imgList = new ArrayList<>(); |
| | | for (String img : imgs) { |
| | | ImgInfo imgInfo = new ImgInfo(); |
| | | imgInfo.setH(1); |
| | | imgInfo.setW(1); |
| | | imgInfo.setLarge(false); |
| | | imgInfo.setUrl(img); |
| | | imgInfo.setUrlHD(img); |
| | | imgInfo.setType(ImgEnum.img); |
| | | imgList.add(imgInfo); |
| | | } |
| | | |
| | | /** |
| | | * 更新商品信息 |
| | | */ |
| | | public void updateGoodInfo(List<GoodsEvaluate> list) { |
| | | if (!Constant.IS_OUTNET) { |
| | | return; // 外网进行更新 |
| | | } |
| | | // 一行显示多少个图片 |
| | | int lineNum = 3; |
| | | int result = 0; |
| | | int zeroPoint = 0; |
| | | Date startTime = new Date(); |
| | | |
| | | if (list == null || list.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | try { |
| | | Date now = new Date(); |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); |
| | | ConfigParamsDTO params = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55"); |
| | | params.setBaseFanliRate(hongBaoManageService.getBaseFanliRate()); |
| | | for (GoodsEvaluate goodsEvaluate : list) { |
| | | // 是否2个小时之内已更新 |
| | | Date updateTime = goodsEvaluate.getUpdateTime(); |
| | | if (updateTime != null) { |
| | | long nd = 1000 * 24 * 60 * 60;// 一天的毫秒数 |
| | | long nh = 1000 * 60 * 60;// 一小时的毫秒数 |
| | | long diff = System.currentTimeMillis() - updateTime.getTime(); |
| | | long day = diff / nd;// 计算差多少天 |
| | | long hour = diff % nd / nh + day * 24;// 计算差多少小时 |
| | | if (hour < 2) { |
| | | continue; |
| | | } |
| | | } |
| | | GoodsEvaluate goodsEvaluate = new GoodsEvaluate(); |
| | | goodsEvaluate.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | goodsEvaluate.setUser(user); |
| | | goodsEvaluate.setTitle(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()); |
| | | //线报不显示商品 |
| | | if (goods != null && goods.getGoodsType() == Constant.SOURCE_TYPE_TAOBAO) { |
| | | goods.setCreatetime(null); |
| | | goodsEvaluate.setGoods(goods); |
| | | } |
| | | goodsEvaluate.setLineNum(lineNum); |
| | | goodsEvaluate.setImgList(imgList); |
| | | goodsEvaluate.setComments(null); |
| | | goodsEvaluate.setSystem(system); |
| | | goodsEvaluate.setIdentifyCode(identifyCode); |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | return result; |
| | | } |
| | | |
| | | EvaluateEnum type = goodsEvaluate.getType(); |
| | | if (type != null && type == EvaluateEnum.activity) { |
| | | List<CommentInfo> comments = goodsEvaluate.getComments(); |
| | | if (comments != null) { |
| | | for (CommentInfo commentInfo : comments) { |
| | | CommentInfoEnum commentInfoEnum = commentInfo.getTypeEnum(); |
| | | if (commentInfoEnum != null && commentInfoEnum == CommentInfoEnum.currencyCoupon) { |
| | | String endTime = commentInfo.getEndTime(); |
| | | if (!StringUtil.isNullOrEmpty(endTime)) { |
| | | Date endDay = sdf.parse(endTime); |
| | | if (endDay.getTime() < now.getTime()) { |
| | | goodsEvaluate.setState(0); // 活动过期 |
| | | } |
| | | } |
| | | } |
| | | @Override |
| | | public void addGoodsEvaluateByDaTaoKe(SystemEnum system) { |
| | | List<Long> listId = null; |
| | | List<GoodsEvaluate> listExist = goodsEvaluateDao.querySingleExist(system); |
| | | 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(Long.parseLong(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; |
| | | } |
| | | |
| | | GoodsDetailVO goods = goodsEvaluate.getGoods(); |
| | | if (goods != null) { |
| | | GoodsDetailVO goodsNew = getGoodsNewInfo(goods.getGoodsId(), goods.getGoodsType(), params); |
| | | if (goodsNew != null) { |
| | | goodsEvaluate.setGoods(goodsNew); |
| | | } else { |
| | | goodsEvaluate.setRemarks("更新-位置找到商品信息"); |
| | | goodsEvaluate.setState(0); // 已商品下架 |
| | | goods.setState(1); |
| | | goodsEvaluate.setGoods(goods); |
| | | } |
| | | } |
| | | // 更新商品信息 |
| | | List<ImgInfo> imgList = goodsEvaluate.getImgList(); |
| | | if (imgList == null || imgList.size() == 0) { |
| | | continue; |
| | | } |
| | | for (int i = 0; i < list.size(); i++) { |
| | | boolean cerateGoods = addByDaTaoKeGoods(list.get(i), system); |
| | | if (cerateGoods) { |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | for (ImgInfo imgInfo : imgList) { |
| | | SimpleGoods simpleGoods = imgInfo.getGoods(); |
| | | if (simpleGoods == null) { |
| | | continue; |
| | | } |
| | | |
| | | GoodsDetailVO goodsDetailVO = getGoodsNewInfo(simpleGoods.getGoodsId(), simpleGoods.getGoodsType(), |
| | | params); |
| | | if (goodsDetailVO != null) { |
| | | simpleGoods.setPrice(goodsDetailVO.getCouponPrice()); |
| | | simpleGoods.setState(0); |
| | | CouponInfoVO couponInfo = goodsDetailVO.getCouponInfo(); |
| | | if (couponInfo == null) { |
| | | simpleGoods.setPrice(goodsDetailVO.getZkPrice()); |
| | | } else { |
| | | simpleGoods.setPrice(goodsDetailVO.getCouponPrice()); |
| | | simpleGoods.setAmount(couponInfo.getAmount()); |
| | | } |
| | | imgInfo.setGoods(simpleGoods); |
| | | imgInfo.setGoodsVO(goodsDetailVO); |
| | | } else { |
| | | simpleGoods.setRemarks("更新-位置找到商品信息"); |
| | | simpleGoods.setState(1); |
| | | imgInfo.setGoods(simpleGoods); |
| | | GoodsDetailVO goodsVO = imgInfo.getGoodsVO(); |
| | | if (goodsVO != null) { |
| | | goodsVO.setState(1); |
| | | imgInfo.setGoodsVO(goodsVO); |
| | | } |
| | | } |
| | | } |
| | | goodsEvaluate.setImgList(imgList); |
| | | goodsEvaluate.setUpdateTime(new Date()); |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | } |
| | | } catch (Exception e) { |
| | | LogHelper.errorDetailInfo(e); |
| | | } |
| | | } |
| | | @Override |
| | | public boolean addByDaTaoKeGoods(DaTaoKeDetailV2 daTaoKe, SystemEnum system) { |
| | | try { |
| | | Date limitDate = DateUtil.reduceDay(new Date(), 7); |
| | | |
| | | 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(); |
| | | } |
| | | List<GoodsEvaluate> evaluateList = goodsEvaluateDao.queryExistLimitTime(Constant.SOURCE_TYPE_TAOBAO, |
| | | daTaoKe.getGoodsId() + "", limitDate); |
| | | if (evaluateList != null && evaluateList.size() > 0) |
| | | return false; |
| | | |
| | | } else if (goodsType == Constant.SOURCE_TYPE_JD) { |
| | | JDGoods goodsInfo = jdGoodsCacheUtil.getGoodsInfo(goodsId); |
| | | if (goodsInfo != null) { |
| | | vo = GoodsDetailVOFactory.convertJDGoods(goodsInfo, paramsDTO); |
| | | } |
| | | } else if (goodsType == Constant.SOURCE_TYPE_PDD) { |
| | | PDDGoodsDetail goodsInfo = pinDuoDuoCacheUtil.getGoodsInfo(goodsId); |
| | | if (goodsInfo != null) |
| | | vo = GoodsDetailVOFactory.convertPDDGoods(goodsInfo, paramsDTO); |
| | | } |
| | | return vo; |
| | | } |
| | | TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(daTaoKe.getGoodsId()); |
| | | if (goodsBrief == null) { |
| | | return false; |
| | | } |
| | | |
| | | @Override |
| | | public void addGoodsEvaluate(Long 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, "相关参数不能为空"); |
| | | } |
| | | BigDecimal couponAmount = goodsBrief.getCouponAmount(); |
| | | if (couponAmount == null || couponAmount.compareTo(new BigDecimal(0)) < 1) { |
| | | return false; |
| | | } |
| | | |
| | | List<GoodsEvaluate> evaluateList = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_TAOBAO, goodsId); |
| | | if (evaluateList != null && evaluateList.size() > 0) |
| | | return; |
| | | GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55", system); |
| | | paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate(system)); |
| | | GoodsDetailVO goodsVO = GoodsDetailVOFactory.convertTaoBao(goodsBrief, paramsDTO); |
| | | |
| | | TaoBaoGoodsBrief goodsBrief = null; |
| | | try { |
| | | goodsBrief = redisManager.getTaoBaoGoodsBrief(goodsId); |
| | | } catch (TaobaoGoodsDownException e) { |
| | | throw new GoodsEvaluateException(1, "商品已下架"); |
| | | } |
| | | 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(); |
| | | } |
| | | |
| | | if (goodsBrief == null) { |
| | | throw new GoodsEvaluateException(1, "未找到商品信息"); |
| | | } |
| | | |
| | | BigDecimal couponAmount = goodsBrief.getCouponAmount(); |
| | | if (couponAmount == null || couponAmount.compareTo(new BigDecimal(0)) < 1) { |
| | | throw new GoodsEvaluateException(1, "该商品无券"); |
| | | } |
| | | 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; |
| | | } |
| | | |
| | | // 白底图 |
| | | List<String> imgs = new ArrayList<>(); |
| | | if (!StringUtil.isNullOrEmpty(goodsBrief.getPictUrlWhite())) { |
| | | imgs.add(goodsBrief.getPictUrlWhite()); |
| | | } |
| | | imgs.addAll(goodsBrief.getImgList()); |
| | | if (descNew.endsWith(",")) { |
| | | descNew = descNew.substring(0, descNew.length() - 1); |
| | | } |
| | | |
| | | // 商品VO |
| | | ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55"); |
| | | paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate()); |
| | | GoodsDetailVO goodsVO = GoodsDetailVOFactory.convertTaoBao(goodsBrief, paramsDTO); |
| | | GoodsEvaluate goodsEvaluate = new GoodsEvaluate(); |
| | | goodsEvaluate.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | goodsEvaluate.setUser(user); |
| | | 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); |
| | | goodsEvaluate.setStartTime(new Date()); |
| | | goodsEvaluate.setEndTime(DateUtil.plusDayDate(3, new Date())); |
| | | goodsEvaluate.setPublishTime(new Date()); |
| | | goodsEvaluate.setCreateTime(new Date()); |
| | | goodsEvaluate.setUpdateTime(new Date()); |
| | | goodsEvaluate.setSystem(system); |
| | | |
| | | // 商品图片信息 |
| | | int i = 0; |
| | | if (imgList == null || imgList.size() == 0) |
| | | 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++; |
| | | } |
| | | List<String> goodsimgs = goodsBrief.getImgList(); |
| | | |
| | | // 评论内容 |
| | | CommentInfo commentInfo = new CommentInfo(); |
| | | commentInfo.setNeedSpin(true); |
| | | commentInfo.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | commentInfo.setTypeEnum(CommentInfoEnum.goodsCoupon); |
| | | if (!StringUtil.isNullOrEmpty(comment)) { |
| | | commentInfo.setContent(comment); |
| | | commentInfo.setType(""); |
| | | } else { |
| | | 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"); |
| | | } |
| | | commentInfo.setContent(commentText); |
| | | commentInfo.setType(CommentInfoEnum.goodsCoupon.getDesc()); |
| | | } |
| | | List<String> imgs = new ArrayList<>(); |
| | | imgs.addAll(goodsimgs); |
| | | |
| | | List<CommentInfo> commentsNew = new ArrayList<>(); |
| | | commentsNew.add(commentInfo); |
| | | int i = 0; |
| | | List<ImgInfo> imgList = new ArrayList<>(); |
| | | 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); |
| | | |
| | | // 一行显示多少个图片 |
| | | 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; |
| | | } |
| | | } |
| | | // TaoBaoLink taoBaoLink = |
| | | // shareGoodsService.getTaoBaoLinkForShare(Constant.LINK_TOKEN_VERIFY_UID, |
| | | // goodsVO.getGoodsId(), null); |
| | | |
| | | GoodsEvaluate goodsEvaluate = new GoodsEvaluate(); |
| | | goodsEvaluate.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | goodsEvaluate.setUser(user); |
| | | goodsEvaluate.setTitle(getDescNew(title)); |
| | | goodsEvaluate.setState(1); |
| | | goodsEvaluate.setDynamicType(1); |
| | | goodsEvaluate.setType(EvaluateEnum.single); |
| | | goodsEvaluate.setShareNum((int) (Math.random() * 5000) + 1000); |
| | | goodsEvaluate.setShareNumReal(0); |
| | | goodsEvaluate.setWeight(0.0); |
| | | if (startTime == null) |
| | | startTime = new Date(); |
| | | goodsEvaluate.setStartTime(startTime); |
| | | goodsEvaluate.setEndTime(DateUtil.plusDayDate(3, new Date())); |
| | | 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); |
| | | } |
| | | String token = shareGoodsService.createTaoBaoToken(Constant.LINK_TOKEN_VERIFY_UID, goodsBrief); |
| | | |
| | | @Override |
| | | public void addGoodsEvaluateByDaTaoKe() { |
| | | 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(); |
| | | String template = configService.getValue(ConfigKeyEnum.quickShareTBCommentText.getKey(), system); |
| | | 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"); |
| | | } |
| | | |
| | | List<DaTaoKeDetailV2> list = daTaoKeGoodsDetailV2Service.getGoodsNotInList(subId, listId, 1); |
| | | if (list == null || list.size() == 0) { |
| | | return; |
| | | } |
| | | CommentInfo commentInfo = new CommentInfo(); |
| | | commentInfo.setNeedSpin(true); |
| | | commentInfo.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | commentInfo.setContent(commentText); |
| | | commentInfo.setTypeEnum(CommentInfoEnum.goodsCoupon); |
| | | commentInfo.setType(CommentInfoEnum.goodsCoupon.getDesc()); |
| | | |
| | | for (int i = 0; i < list.size(); i++) { |
| | | boolean cerateGoods = cerateGoods(list.get(i)); |
| | | if (cerateGoods) { |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | String text2 = ""; |
| | | String evaluateEmojis = configService.getValue(ConfigKeyEnum.evaluateEmojis.getKey(), system); |
| | | if (!StringUtil.isNullOrEmpty(evaluateEmojis)) { |
| | | text2 = evaluateEmojis + "\n"; |
| | | } |
| | | |
| | | private boolean cerateGoods(DaTaoKeDetailV2 daTaoKe) { |
| | | try { |
| | | TaoBaoGoodsBrief goodsBrief = redisManager.getTaoBaoGoodsBrief(daTaoKe.getGoodsId()); |
| | | if (goodsBrief == null) { |
| | | return false; |
| | | } |
| | | String evaluateText = configService.getValue(ConfigKeyEnum.evaluateText.getKey(), system); |
| | | if (!StringUtil.isNullOrEmpty(evaluateText)) { |
| | | text2 += evaluateText; |
| | | } |
| | | |
| | | BigDecimal couponAmount = goodsBrief.getCouponAmount(); |
| | | if (couponAmount == null || couponAmount.compareTo(new BigDecimal(0)) < 1) { |
| | | return false; |
| | | } |
| | | String dtitle = daTaoKe.getDtitle(); |
| | | if (!StringUtil.isNullOrEmpty(dtitle)) { |
| | | text2 = text2 + dtitle + "\n"; |
| | | } else if (!StringUtil.isNullOrEmpty(evaluateText)) { |
| | | text2 += "\n"; |
| | | } |
| | | text2 += "先领【" + couponAmount + "元优惠券】下单"; |
| | | |
| | | ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55"); |
| | | paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate()); |
| | | GoodsDetailVO goodsVO = GoodsDetailVOFactory.convertTaoBao(goodsBrief, paramsDTO); |
| | | // 发布用户 |
| | | ActivityUser user = activityUserService.getRandomByDaTaoKeCid(daTaoKe.getCid()); |
| | | CommentInfo commentInfo2 = new CommentInfo(); |
| | | commentInfo2.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | commentInfo2.setContent(text2); |
| | | commentInfo2.setTypeEnum(CommentInfoEnum.goodsCoupon); |
| | | commentInfo2.setType(""); |
| | | commentInfo2.setNeedSpin(true); |
| | | |
| | | 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; |
| | | } |
| | | List<CommentInfo> commentsNew = new ArrayList<>(); |
| | | commentsNew.add(commentInfo); |
| | | commentsNew.add(commentInfo2); |
| | | goodsEvaluate.setComments(commentsNew); |
| | | } |
| | | imgList.add(imgInfo); |
| | | i++; |
| | | } |
| | | |
| | | if (descNew.endsWith(",")) { |
| | | descNew = descNew.substring(0, descNew.length() - 1); |
| | | } |
| | | 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; |
| | | } |
| | | } |
| | | goodsEvaluate.setLineNum(lineNum); |
| | | |
| | | GoodsEvaluate goodsEvaluate = new GoodsEvaluate(); |
| | | goodsEvaluate.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | goodsEvaluate.setUser(user); |
| | | goodsEvaluate.setTitle(descNew); |
| | | goodsEvaluate.setState(1); |
| | | goodsEvaluate.setDynamicType(1); |
| | | goodsEvaluate.setType(EvaluateEnum.single); |
| | | goodsEvaluate.setGoods(goodsVO); |
| | | goodsEvaluate.setImgList(imgList); |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | LogHelper.errorDetailInfo(e); |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | goodsEvaluate.setShareNum((int) (Math.random() * 5000) + 1000); |
| | | goodsEvaluate.setShareNumReal(0); |
| | | goodsEvaluate.setWeight(0.0); |
| | | goodsEvaluate.setStartTime(new Date()); |
| | | goodsEvaluate.setEndTime(DateUtil.plusDayDate(3, new Date())); |
| | | goodsEvaluate.setPublishTime(new Date()); |
| | | goodsEvaluate.setCreateTime(new Date()); |
| | | goodsEvaluate.setUpdateTime(new Date()); |
| | | /** |
| | | * 发圈标题 加入表情 |
| | | * |
| | | * @param desc |
| | | * @return |
| | | */ |
| | | private String getDescNew(String desc) { |
| | | 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; |
| | | } |
| | | |
| | | List<String> goodsimgs = goodsBrief.getImgList(); |
| | | if (descNew.endsWith(",")) { |
| | | descNew = descNew.substring(0, descNew.length() - 1); |
| | | } |
| | | return descNew; |
| | | } |
| | | |
| | | List<String> imgs = new ArrayList<>(); |
| | | if (!StringUtil.isNullOrEmpty(goodsBrief.getPictUrlWhite())) { |
| | | imgs.add(goodsBrief.getPictUrlWhite()); |
| | | } |
| | | imgs.addAll(goodsimgs); |
| | | @Override |
| | | public void updateTaoBaoGoods(TaoBaoGoodsBrief goods) { |
| | | try { |
| | | if (goods == null) { |
| | | return; |
| | | } |
| | | for (SystemEnum system : SystemEnum.values()) { |
| | | List<GoodsEvaluate> queryExist = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_TAOBAO, |
| | | goods.getAuctionId(), system); |
| | | if (queryExist == null || queryExist.size() == 0) { |
| | | continue; |
| | | } |
| | | GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55", system); |
| | | paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate(system)); |
| | | GoodsDetailVO goodsNew = GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO); |
| | | updateGoods(queryExist, goodsNew); |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | int i = 0; |
| | | List<ImgInfo> imgList = new ArrayList<>(); |
| | | 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); |
| | | @Override |
| | | public void updateJDGoods(JDGoods jdGoods) { |
| | | if (jdGoods == null) { |
| | | return; |
| | | } |
| | | for (SystemEnum system : SystemEnum.values()) { |
| | | List<GoodsEvaluate> queryExist = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_JD, jdGoods.getItemId() + "", system); |
| | | if (queryExist == null || queryExist.size() == 0) { |
| | | continue; |
| | | } |
| | | |
| | | // TaoBaoLink taoBaoLink = |
| | | // shareGoodsService.getTaoBaoLinkForShare(Constant.LINK_TOKEN_VERIFY_UID, |
| | | // goodsVO.getGoodsId(), null); |
| | | GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55", system); |
| | | paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate(system)); |
| | | GoodsDetailVO goodsNew = GoodsDetailVOFactory.convertJDGoods(jdGoods, paramsDTO); |
| | | |
| | | String token = shareGoodsService.createTaoBaoToken(Constant.LINK_TOKEN_VERIFY_UID, goodsBrief); |
| | | updateGoods(queryExist, goodsNew); |
| | | } |
| | | } |
| | | |
| | | 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"); |
| | | } |
| | | @Override |
| | | public void updatePDDGoods(PDDGoodsDetail pddGoods) { |
| | | if (pddGoods == null) { |
| | | return; |
| | | } |
| | | for (SystemEnum system : SystemEnum.values()) { |
| | | List<GoodsEvaluate> queryExist = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_PDD, pddGoods.getGoodsId() + "", system); |
| | | if (queryExist == null || queryExist.size() == 0) { |
| | | continue; |
| | | } |
| | | |
| | | CommentInfo commentInfo = new CommentInfo(); |
| | | commentInfo.setNeedSpin(true); |
| | | commentInfo.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | commentInfo.setContent(commentText); |
| | | commentInfo.setTypeEnum(CommentInfoEnum.goodsCoupon); |
| | | commentInfo.setType(CommentInfoEnum.goodsCoupon.getDesc()); |
| | | GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55", system); |
| | | paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate(system)); |
| | | GoodsDetailVO goodsNew = GoodsDetailVOFactory.convertPDDGoods(pddGoods, paramsDTO); |
| | | updateGoods(queryExist, goodsNew); |
| | | } |
| | | } |
| | | |
| | | String text2 = ""; |
| | | String evaluateEmojis = configService.get(ConfigKeyEnum.evaluateEmojis.getKey()); |
| | | if (!StringUtil.isNullOrEmpty(evaluateEmojis)) { |
| | | text2 = evaluateEmojis + "\n"; |
| | | } |
| | | @Override |
| | | public void updateVIPGoods(VIPGoodsInfo goods) { |
| | | if (goods == null) { |
| | | return; |
| | | } |
| | | for (SystemEnum system : SystemEnum.values()) { |
| | | List<GoodsEvaluate> queryExist = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_VIP, |
| | | goods.getGoodsId(), system); |
| | | if (queryExist == null || queryExist.size() == 0) { |
| | | continue; |
| | | } |
| | | |
| | | String evaluateText = configService.get(ConfigKeyEnum.evaluateText.getKey()); |
| | | if (!StringUtil.isNullOrEmpty(evaluateText)) { |
| | | text2 += evaluateText; |
| | | } |
| | | GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55", system); |
| | | paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate(system)); |
| | | GoodsDetailVO goodsNew = GoodsDetailVOFactory.convertVIPGoods(goods, paramsDTO); |
| | | updateGoods(queryExist, goodsNew); |
| | | } |
| | | } |
| | | |
| | | String dtitle = daTaoKe.getDtitle(); |
| | | if (!StringUtil.isNullOrEmpty(dtitle)) { |
| | | text2 = text2 + dtitle + "\n"; |
| | | } else if (!StringUtil.isNullOrEmpty(evaluateText)) { |
| | | text2 += "\n"; |
| | | } |
| | | text2 += "先领【" + couponAmount + "元优惠券】下单"; |
| | | @Override |
| | | public void updateDYGoods(DYGoodsDetail goods) { |
| | | if (goods == null) { |
| | | return; |
| | | } |
| | | for (SystemEnum system : SystemEnum.values()) { |
| | | List<GoodsEvaluate> queryExist = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_DY, |
| | | goods.getProduct_id()+"", system); |
| | | if (queryExist == null || queryExist.size() == 0) { |
| | | continue; |
| | | } |
| | | |
| | | CommentInfo commentInfo2 = new CommentInfo(); |
| | | commentInfo2.setId(UUID.randomUUID().toString().replace("-", "")); |
| | | commentInfo2.setContent(text2); |
| | | commentInfo2.setTypeEnum(CommentInfoEnum.goodsCoupon); |
| | | commentInfo2.setType(""); |
| | | commentInfo2.setNeedSpin(true); |
| | | GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55", system); |
| | | paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate(system)); |
| | | GoodsDetailVO goodsNew = GoodsDetailVOFactory.convertDYGoods(goods, paramsDTO); |
| | | updateGoods(queryExist, goodsNew); |
| | | } |
| | | } |
| | | |
| | | List<CommentInfo> commentsNew = new ArrayList<>(); |
| | | commentsNew.add(commentInfo); |
| | | commentsNew.add(commentInfo2); |
| | | goodsEvaluate.setComments(commentsNew); |
| | | } |
| | | imgList.add(imgInfo); |
| | | i++; |
| | | } |
| | | |
| | | 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; |
| | | } |
| | | } |
| | | goodsEvaluate.setLineNum(lineNum); |
| | | @Override |
| | | public void updateSuningGoods(SuningGoodsInfo goods) { |
| | | if (goods == null) { |
| | | return; |
| | | } |
| | | for (SystemEnum system : SystemEnum.values()) { |
| | | List<GoodsEvaluate> queryExist = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_SUNING, |
| | | goods.getCommodityInfo().getCommodityCode(), system); |
| | | if (queryExist == null || queryExist.size() == 0) { |
| | | continue; |
| | | } |
| | | GoodsMoneyConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55", system); |
| | | paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate(system)); |
| | | GoodsDetailVO goodsNew = GoodsDetailVOFactory.convertSuningGoods(goods, paramsDTO); |
| | | updateGoods(queryExist, goodsNew); |
| | | } |
| | | } |
| | | |
| | | goodsEvaluate.setGoods(goodsVO); |
| | | goodsEvaluate.setImgList(imgList); |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | LogHelper.errorDetailInfo(e); |
| | | return false; |
| | | } |
| | | return true; |
| | | } |
| | | private void updateGoods(List<GoodsEvaluate> listExist, GoodsDetailVO goodsNew) { |
| | | for (GoodsEvaluate goodsEvaluate : listExist) { |
| | | String goodsId = goodsNew.getGoodsId(); |
| | | int goodsType = goodsNew.getGoodsType(); |
| | | |
| | | /** |
| | | * 发圈标题 加入表情 |
| | | * @param desc |
| | | * @return |
| | | */ |
| | | private String getDescNew(String desc) { |
| | | 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; |
| | | } |
| | | GoodsDetailVO goodsDetailVO = goodsEvaluate.getGoods(); |
| | | if (goodsDetailVO != null && goodsDetailVO.getGoodsId() != null && goodsDetailVO.getGoodsId().equalsIgnoreCase(goodsId) |
| | | && goodsDetailVO.getGoodsType() == goodsType) { |
| | | goodsEvaluate.setGoods(goodsNew); |
| | | } |
| | | |
| | | if (descNew.endsWith(",")) { |
| | | descNew = descNew.substring(0, descNew.length() - 1); |
| | | } |
| | | return descNew; |
| | | } |
| | | // 更新商品信息 |
| | | List<ImgInfo> imgList = goodsEvaluate.getImgList(); |
| | | if (imgList == null || imgList.size() == 0) { |
| | | continue; |
| | | } |
| | | |
| | | @Override |
| | | public void updateTaoBaoGoods(TaoBaoGoodsBrief goods) { |
| | | try { |
| | | if (goods == null) { |
| | | return; |
| | | } |
| | | List<GoodsEvaluate> queryExist = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_TAOBAO, |
| | | goods.getAuctionId()); |
| | | if (queryExist == null || queryExist.size() == 0) { |
| | | return; |
| | | } |
| | | for (ImgInfo imgInfo : imgList) { |
| | | SimpleGoods simpleGoods = imgInfo.getGoods(); |
| | | if (simpleGoods == null || !simpleGoods.getGoodsId().equalsIgnoreCase(goodsId) |
| | | || goodsType != simpleGoods.getGoodsType()) { |
| | | continue; |
| | | } |
| | | |
| | | ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55"); |
| | | paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate()); |
| | | GoodsDetailVO goodsNew = GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO); |
| | | updateGoods(queryExist, goodsNew); |
| | | simpleGoods.setState(0); |
| | | simpleGoods.setPrice(goodsNew.getCouponPrice()); |
| | | CouponInfoVO couponInfo = goodsNew.getCouponInfo(); |
| | | if (couponInfo == null) { |
| | | simpleGoods.setPrice(goodsNew.getZkPrice()); |
| | | } else { |
| | | simpleGoods.setPrice(goodsNew.getCouponPrice()); |
| | | simpleGoods.setAmount(couponInfo.getAmount()); |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | imgInfo.setGoods(simpleGoods); |
| | | imgInfo.setGoodsVO(goodsNew); |
| | | } |
| | | |
| | | @Override |
| | | public void updateJDGoods(JDGoods jdGoods) { |
| | | if (jdGoods == null) { |
| | | return; |
| | | } |
| | | List<GoodsEvaluate> queryExist = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_JD, jdGoods.getSkuId()); |
| | | if (queryExist == null || queryExist.size() == 0) { |
| | | return; |
| | | } |
| | | goodsEvaluate.setImgList(imgList); |
| | | goodsEvaluate.setUpdateTime(new Date()); |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | } |
| | | } |
| | | |
| | | ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55"); |
| | | paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate()); |
| | | GoodsDetailVO goodsNew = GoodsDetailVOFactory.convertJDGoods(jdGoods, paramsDTO); |
| | | @Override |
| | | public void offlineTaoBaoGoods(String goodsId) { |
| | | try { |
| | | if (goodsId == null) { |
| | | return; |
| | | } |
| | | |
| | | updateGoods(queryExist, goodsNew); |
| | | } |
| | | for (SystemEnum system : SystemEnum.values()) { |
| | | List<GoodsEvaluate> list = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_TAOBAO, goodsId, system); |
| | | if (list == null || list.size() == 0) { |
| | | continue; |
| | | } |
| | | // 下架商品 |
| | | offlineGoods(list, Constant.SOURCE_TYPE_TAOBAO, goodsId); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void updatePDDGoods(PDDGoodsDetail pddGoods) { |
| | | if (pddGoods == null) { |
| | | return; |
| | | } |
| | | List<GoodsEvaluate> queryExist = goodsEvaluateDao.queryExist(Constant.SOURCE_TYPE_PDD, pddGoods.getGoodsId()); |
| | | if (queryExist == null || queryExist.size() == 0) { |
| | | return; |
| | | } |
| | | @CacheEvict(value = "dynamicCache", allEntries = true) |
| | | public void offlineGoods(List<GoodsEvaluate> list, int goodsType, String goodsId) { |
| | | |
| | | ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55"); |
| | | paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate()); |
| | | GoodsDetailVO goodsNew = GoodsDetailVOFactory.convertPDDGoods(pddGoods, paramsDTO); |
| | | updateGoods(queryExist, goodsNew); |
| | | } |
| | | for (GoodsEvaluate goodsEvaluate : list) { |
| | | // 商品下架 |
| | | GoodsDetailVO goodsDetailVO = goodsEvaluate.getGoods(); |
| | | goodsDetailVO.setState(1); |
| | | |
| | | private void updateGoods(List<GoodsEvaluate> listExist, GoodsDetailVO goodsNew) { |
| | | long goodsId = goodsNew.getGoodsId(); |
| | | int goodsType = goodsNew.getGoodsType(); |
| | | for (GoodsEvaluate goodsEvaluate : listExist) { |
| | | GoodsDetailVO goodsDetailVO = goodsEvaluate.getGoods(); |
| | | if (goodsDetailVO != null && goodsDetailVO.getGoodsId() != null && goodsDetailVO.getGoodsId() == goodsId |
| | | && goodsDetailVO.getGoodsType() == goodsType) { |
| | | goodsEvaluate.setGoods(goodsNew); |
| | | } |
| | | List<ImgInfo> imgList = goodsEvaluate.getImgList(); |
| | | if (imgList == null || imgList.size() == 0) { |
| | | goodsEvaluate.setUpdateTime(new Date()); |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | continue; |
| | | } |
| | | |
| | | // 更新商品信息 |
| | | List<ImgInfo> imgList = goodsEvaluate.getImgList(); |
| | | if (imgList == null || imgList.size() == 0) { |
| | | continue; |
| | | } |
| | | for (ImgInfo imgInfo : imgList) { |
| | | SimpleGoods simpleGoods = imgInfo.getGoods(); |
| | | if (simpleGoods == null || simpleGoods.getGoodsId() != goodsId |
| | | || goodsType != simpleGoods.getGoodsType()) { |
| | | continue; |
| | | } |
| | | simpleGoods.setState(1); |
| | | GoodsDetailVO goodsVO = imgInfo.getGoodsVO(); |
| | | goodsVO.setState(1); |
| | | |
| | | for (ImgInfo imgInfo : imgList) { |
| | | SimpleGoods simpleGoods = imgInfo.getGoods(); |
| | | if (simpleGoods == null || simpleGoods.getGoodsId() != goodsId |
| | | || goodsType != simpleGoods.getGoodsType()) { |
| | | continue; |
| | | } |
| | | imgInfo.setGoods(simpleGoods); |
| | | imgInfo.setGoodsVO(goodsVO); |
| | | } |
| | | |
| | | simpleGoods.setState(0); |
| | | simpleGoods.setPrice(goodsNew.getCouponPrice()); |
| | | CouponInfoVO couponInfo = goodsNew.getCouponInfo(); |
| | | if (couponInfo == null) { |
| | | simpleGoods.setPrice(goodsNew.getZkPrice()); |
| | | } else { |
| | | simpleGoods.setPrice(goodsNew.getCouponPrice()); |
| | | simpleGoods.setAmount(couponInfo.getAmount()); |
| | | } |
| | | goodsEvaluate.setImgList(imgList); |
| | | goodsEvaluate.setUpdateTime(new Date()); |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | } |
| | | } |
| | | |
| | | imgInfo.setGoods(simpleGoods); |
| | | imgInfo.setGoodsVO(goodsNew); |
| | | } |
| | | /** |
| | | * 删除已过期时间 |
| | | */ |
| | | private void removeOverdue() { |
| | | if (1 > 0) |
| | | return; |
| | | |
| | | goodsEvaluate.setImgList(imgList); |
| | | goodsEvaluate.setUpdateTime(new Date()); |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | } |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public void offlineTaoBaoGoods(Long goodsId) { |
| | | try { |
| | | if (goodsId == null) { |
| | | return; |
| | | } |
| | | 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) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | List<GoodsEvaluate> list = goodsEvaluateDao.queryOverdue(); |
| | | if (list == null || list.size() == 0) { |
| | | return; |
| | | } |
| | | long nm = 1000 * 60;// 一分钟的毫秒数 |
| | | long nh = 1000 * 60 * 60;// 一小时的毫秒数 |
| | | long nd = 1000 * 24 * 60 * 60;// 一天的毫秒数 |
| | | |
| | | @CacheEvict(value = "dynamicCache", allEntries = true) |
| | | private void offlineGoods(List<GoodsEvaluate> list, int goodsType, Long 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()); |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | continue; |
| | | } |
| | | long time = java.lang.System.currentTimeMillis(); |
| | | for (GoodsEvaluate goodsEvaluate : list) { |
| | | long diff = time - goodsEvaluate.getEndTime().getTime(); |
| | | long min = diff % nd % nh / nm; |
| | | |
| | | for (ImgInfo imgInfo : imgList) { |
| | | SimpleGoods simpleGoods = imgInfo.getGoods(); |
| | | if (simpleGoods == null || simpleGoods.getGoodsId() != goodsId |
| | | || goodsType != simpleGoods.getGoodsType()) { |
| | | continue; |
| | | } |
| | | simpleGoods.setState(1); |
| | | GoodsDetailVO goodsVO = imgInfo.getGoodsVO(); |
| | | goodsVO.setState(1); |
| | | |
| | | imgInfo.setGoods(simpleGoods); |
| | | imgInfo.setGoodsVO(goodsVO); |
| | | } |
| | | // 过期超过10分钟就删除 |
| | | if (min > 10) { |
| | | goodsEvaluateDao.remove(goodsEvaluate); |
| | | } |
| | | } |
| | | } |
| | | |
| | | goodsEvaluate.setImgList(imgList); |
| | | goodsEvaluate.setUpdateTime(new Date()); |
| | | goodsEvaluateDao.save(goodsEvaluate); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 删除商品已下架-单品 |
| | | */ |
| | | private void removeDownGoods() { |
| | | if (1 > 0) |
| | | return; |
| | | try { |
| | | List<GoodsEvaluate> list = goodsEvaluateDao.removeDownGoods(); |
| | | if (list == null || list.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | /** |
| | | * 删除已过期时间 |
| | | */ |
| | | private void removeOverdue() { |
| | | List<GoodsEvaluate> list = goodsEvaluateDao.queryOverdue(); |
| | | if (list == null || list.size() == 0) { |
| | | return; |
| | | } |
| | | long nm = 1000 * 60;// 一分钟的毫秒数 |
| | | long nh = 1000 * 60 * 60;// 一小时的毫秒数 |
| | | long nd = 1000 * 24 * 60 * 60;// 一天的毫秒数 |
| | | for (GoodsEvaluate goodsEvaluate : list) { |
| | | goodsEvaluateDao.remove(goodsEvaluate); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | |
| | | long time = java.lang.System.currentTimeMillis(); |
| | | for (GoodsEvaluate goodsEvaluate : list) { |
| | | long diff = time - goodsEvaluate.getEndTime().getTime(); |
| | | long min = diff % nd % nh / nm; |
| | | |
| | | // 过期超过10分钟就删除 |
| | | if (min > 10) { |
| | | goodsEvaluateDao.remove(goodsEvaluate); |
| | | } |
| | | } |
| | | } |
| | | @Override |
| | | public GoodsEvaluate queryExistSingle(String goodsId, int goodsType, SystemEnum system) { |
| | | List<GoodsEvaluate> list = goodsEvaluateDao.queryExistSingle(goodsType, goodsId, system); |
| | | if (list != null && list.size() > 0) |
| | | return list.get(0); |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 删除商品已下架-单品 |
| | | */ |
| | | private void removeDownGoods() { |
| | | try { |
| | | List<GoodsEvaluate> list = goodsEvaluateDao.removeDownGoods(); |
| | | if (list == null || list.size() == 0) { |
| | | return; |
| | | } |
| | | |
| | | for (GoodsEvaluate goodsEvaluate : list) { |
| | | goodsEvaluateDao.remove(goodsEvaluate); |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } |
| | | } |