Pārlūkot izejas kodu

1.商品预警邮件发送改为发送html格式

2.预警结果新增字段平台和比对状态
wq_dev
wangqiang pirms 1 mēnesi
vecāks
revīzija
db20550fa3

+ 10
- 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/ZsOperationWarnresult.java Parādīt failu

*/ */
private String snapshotUrl; private String snapshotUrl;


/**
* 平台
*/
private String platform;

/**
* 比对状态
*/
private Integer compareStatus;

} }

+ 11
- 1
ruoyi-system/src/main/java/com/ruoyi/system/domain/bo/ZsOperationWarnresultBo.java Parādīt failu

/** /**
* 图片快照 * 图片快照
*/ */
@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;





} }

+ 13
- 0
ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/ZsOperationWarnresultVo.java Parādīt failu

@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;


} }

+ 1
- 0
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/ZsOperationWarnresultServiceImpl.java Parādīt failu

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;
} }



+ 19
- 4
ruoyi-system/src/main/java/com/ruoyi/system/task/MonitorTaskScheduler.java Parādīt failu

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);
} }
} }

+ 37
- 0
ruoyi-system/src/main/java/com/ruoyi/system/utils/EmailUtils.java Parādīt failu

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);
}
}
} }

Notiek ielāde…
Atcelt
Saglabāt