*/ | */ | ||||
private String snapshotUrl; | private String snapshotUrl; | ||||
/** | |||||
* 平台 | |||||
*/ | |||||
private String platform; | |||||
/** | |||||
* 比对状态 | |||||
*/ | |||||
private Integer compareStatus; | |||||
} | } |
/** | /** | ||||
* 图片快照 | * 图片快照 | ||||
*/ | */ | ||||
@NotBlank(message = "图片快照不能为空", groups = { AddGroup.class, EditGroup.class }) | |||||
// @NotBlank(message = "图片快照不能为空", groups = { AddGroup.class, EditGroup.class }) | |||||
private String snapshotUrl; | private String snapshotUrl; | ||||
/** | |||||
* 平台 | |||||
*/ | |||||
private String platform; | |||||
/** | |||||
* 比对状态 | |||||
*/ | |||||
private Integer compareStatus; | |||||
} | } |
@ExcelProperty(value = "图片快照") | @ExcelProperty(value = "图片快照") | ||||
private String snapshotUrl; | private String snapshotUrl; | ||||
/** | |||||
* 平台 | |||||
*/ | |||||
@ExcelProperty(value = "平台", converter = ExcelDictConvert.class) | |||||
@ExcelDictFormat(dictType = "zs_operation_platform") | |||||
private String platform; | |||||
/** | |||||
* 比对状态 | |||||
*/ | |||||
@ExcelProperty(value = "比对状态") | |||||
@ExcelDictFormat(dictType = "zs_operation_compare_status") | |||||
private Integer compareStatus; | |||||
} | } |
lqw.like(StringUtils.isNotBlank(bo.getGoodsSkuName()), ZsOperationWarnresult::getGoodsSkuName, bo.getGoodsSkuName()); | lqw.like(StringUtils.isNotBlank(bo.getGoodsSkuName()), ZsOperationWarnresult::getGoodsSkuName, bo.getGoodsSkuName()); | ||||
lqw.eq(StringUtils.isNotBlank(bo.getGoodsSkuSn()), ZsOperationWarnresult::getGoodsSkuSn, bo.getGoodsSkuSn()); | lqw.eq(StringUtils.isNotBlank(bo.getGoodsSkuSn()), ZsOperationWarnresult::getGoodsSkuSn, bo.getGoodsSkuSn()); | ||||
lqw.eq(bo.getStatus() != null, ZsOperationWarnresult::getStatus, bo.getStatus()); | lqw.eq(bo.getStatus() != null, ZsOperationWarnresult::getStatus, bo.getStatus()); | ||||
lqw.eq(bo.getCompareStatus() != null, ZsOperationWarnresult::getCompareStatus, bo.getCompareStatus()); | |||||
return lqw; | return lqw; | ||||
} | } | ||||
import javax.annotation.PostConstruct; | import javax.annotation.PostConstruct; | ||||
import java.math.BigDecimal; | import java.math.BigDecimal; | ||||
import java.math.RoundingMode; | import java.math.RoundingMode; | ||||
import java.text.SimpleDateFormat; | |||||
import java.time.LocalTime; | import java.time.LocalTime; | ||||
import java.util.Date; | import java.util.Date; | ||||
import java.util.List; | import java.util.List; | ||||
zsOperationWarnresult.setCurPrice(newPrice); | zsOperationWarnresult.setCurPrice(newPrice); | ||||
zsOperationWarnresult.setPriceChangeRatio(percentageChange.toString()); | zsOperationWarnresult.setPriceChangeRatio(percentageChange.toString()); | ||||
zsOperationWarnresult.setWarnTypes(warnTypes); | zsOperationWarnresult.setWarnTypes(warnTypes); | ||||
String warnContent = "商品编号:"+newSn+"价格发生变动!"+ | |||||
"原价格=:"+initPrice+"新价格=:"+newPrice.doubleValue(); | |||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | |||||
String warnDate = sdf.format(zsOperationWarnresult.getWarnTime()); | |||||
String warnContent = "<html>" + | |||||
"<h2>商品价格发生变动!</h2>"+ | |||||
"<p>商品名称=:"+zsOperationGoods.getGoodsSkuName()+"</p>"+ | |||||
"<p>商品编号=:"+newSn+"</p>"+ | |||||
"<p>商品url=:"+curUrl+"</p>"+ | |||||
"<p>原价格=:"+initPrice+"</p>"+ | |||||
"<p>新价格=:"+newPrice.doubleValue()+"</p>"+ | |||||
"<p>预警时间=:"+warnDate+"</p>"+ | |||||
"<p>图片=:"+"<img src=\""+dataMap.get("screenshotUrl")+"\" ></p>"+ | |||||
"</html>"; | |||||
zsOperationWarnresult.setWarnContent(warnContent); | zsOperationWarnresult.setWarnContent(warnContent); | ||||
zsOperationWarnresult.setSnapshotUrl((String)dataMap.get("screenshotUrl")); | zsOperationWarnresult.setSnapshotUrl((String)dataMap.get("screenshotUrl")); | ||||
zsOperationWarnresult.setStatus(0); | zsOperationWarnresult.setStatus(0); | ||||
zsOperationWarnresult.setPlatform(zsOperationGoods.getPlatform()); | |||||
zsOperationWarnresult.setCompareStatus(1); | |||||
zsOperationWarnresultMapper.insert(zsOperationWarnresult); | zsOperationWarnresultMapper.insert(zsOperationWarnresult); | ||||
//8.发送邮件 | //8.发送邮件 | ||||
//发送数据 1立刻发送 0 9:00-18:00 发送 | //发送数据 1立刻发送 0 9:00-18:00 发送 | ||||
String warnTimeRange = zsOperationWarnconfig.getWarnTimeRange(); | String warnTimeRange = zsOperationWarnconfig.getWarnTimeRange(); | ||||
if ("1".equals(warnTimeRange)) { | if ("1".equals(warnTimeRange)) { | ||||
emailUtils.sendMailByTransport(zsOperationSendconfig.getSendEmail(),receiveEmail,"商品价格变化预警",warnContent,zsOperationSendconfig.getSmtpId()); | |||||
emailUtils.sendMailByTransportHtml(zsOperationSendconfig.getSendEmail(),receiveEmail,"商品价格变化预警 商品名=:"+zsOperationGoods.getGoodsSkuName(),warnContent,zsOperationSendconfig.getSmtpId()); | |||||
} else { | } else { | ||||
if (isBetween9And18()) { | if (isBetween9And18()) { | ||||
emailUtils.sendMailByTransport(zsOperationSendconfig.getSendEmail(),receiveEmail,"商品价格变化预警",warnContent,zsOperationSendconfig.getSmtpId()); | |||||
emailUtils.sendMailByTransportHtml(zsOperationSendconfig.getSendEmail(),receiveEmail,"商品价格变化预警 商品名=:"+zsOperationGoods.getGoodsSkuName(),warnContent,zsOperationSendconfig.getSmtpId()); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
String warnContent = "商品编号:"+zsOperationGoods.getGoodsSkuSn()+"抓取失败!"; | String warnContent = "商品编号:"+zsOperationGoods.getGoodsSkuSn()+"抓取失败!"; | ||||
zsOperationWarnresult.setWarnContent(warnContent); | zsOperationWarnresult.setWarnContent(warnContent); | ||||
zsOperationWarnresult.setStatus(0); | zsOperationWarnresult.setStatus(0); | ||||
zsOperationWarnresult.setPlatform(zsOperationGoods.getPlatform()); | |||||
zsOperationWarnresult.setCompareStatus(0); | |||||
zsOperationWarnresultMapper.insert(zsOperationWarnresult); | zsOperationWarnresultMapper.insert(zsOperationWarnresult); | ||||
} | } | ||||
} | } |
import com.sun.mail.util.MailSSLSocketFactory; | import com.sun.mail.util.MailSSLSocketFactory; | ||||
import lombok.extern.slf4j.Slf4j; | import lombok.extern.slf4j.Slf4j; | ||||
import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
import org.springframework.mail.javamail.JavaMailSender; | |||||
import org.springframework.mail.javamail.MimeMessageHelper; | |||||
import org.springframework.scheduling.annotation.Async; | import org.springframework.scheduling.annotation.Async; | ||||
import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
import javax.annotation.Resource; | |||||
import javax.mail.*; | import javax.mail.*; | ||||
import javax.mail.internet.InternetAddress; | import javax.mail.internet.InternetAddress; | ||||
import javax.mail.internet.MimeMessage; | import javax.mail.internet.MimeMessage; | ||||
log.error("邮件发送失败",e); | log.error("邮件发送失败",e); | ||||
} | } | ||||
} | } | ||||
// @Resource | |||||
// private JavaMailSender javaMailSender; | |||||
public void sendMailByTransportHtml(String sendEmail ,String receiveEmail,String title,String content,Long smtpId) { | |||||
try { | |||||
ZsOperationSmtp smtp = zsOperationSmtpMapper.selectById(smtpId); | |||||
Properties props = new Properties(); | |||||
props.put("mail.smtp.host", smtp.getHost()); | |||||
props.put("mail.smtp.socketFactory.port", String.valueOf(smtp.getPort())); | |||||
MailSSLSocketFactory sf = new MailSSLSocketFactory(); | |||||
sf.setTrustAllHosts(true); | |||||
props.put("mail.smtp.ssl.enable", "true"); | |||||
props.put("mail.smtp.ssl.socketFactory", sf); | |||||
props.put("mail.smtp.auth", "true"); | |||||
props.put("mail.smtp.port", String.valueOf(smtp.getPort())); | |||||
final String username = smtp.getUsername().trim(); | |||||
final String password = smtp.getPassword().trim(); | |||||
Session session = Session.getInstance(props, | |||||
new Authenticator() { | |||||
@Override | |||||
protected PasswordAuthentication getPasswordAuthentication() { | |||||
return new PasswordAuthentication(username,password); | |||||
} | |||||
}); | |||||
MimeMessage message = new MimeMessage(session); | |||||
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(message,true,"utf-8"); | |||||
mimeMessageHelper.setFrom(new InternetAddress(sendEmail)); | |||||
mimeMessageHelper.setTo(InternetAddress.parse(receiveEmail)); | |||||
mimeMessageHelper.setSubject(title); | |||||
mimeMessageHelper.setText(content,true); | |||||
Transport.send(message); | |||||
} catch (Exception e) { | |||||
log.error("邮件发送失败",e); | |||||
} | |||||
} | |||||
} | } |