ruoyi-admin/src/main/java/com/ruoyi/web/controller/api/TBillController.java
@@ -89,7 +89,7 @@ @PreAuthorize("@ss.hasPermi('system:bill:sendMailBatchByBillIds')") @ApiOperation("账单批量发送短信通知") @ApiOperation("账单批量发送邮件通知") @PostMapping("sendMailBatchByBillIds") public R sendMailBatchByBillIds(@Validated @RequestBody SmsByBillDto dto){ Integer failNum = tBillService.sendMailBatchByBillIds(dto); @@ -100,6 +100,7 @@ @ApiOperation("收款") @PostMapping("cashPay") public R cashPay(@RequestBody OfflinePayDto offlinePayDto){ return null; } ruoyi-common/src/main/java/com/ruoyi/common/config/MailProperties.java
@@ -17,4 +17,14 @@ private String userName = "测试"; /** * 账单提醒 ,同一个用户离上次发送短信的最小间隔 * 单位分钟 */ private Integer billSmsDelayPeriod = 60; /** * 账单提醒 ,同一个用户离上次发送邮件的最小间隔 * 单位分钟 */ private Integer billMailDelayPeriod = 60; } ruoyi-common/src/main/java/com/ruoyi/common/utils/SmsUtil.java
@@ -25,6 +25,11 @@ SmsProperties smsProperties; static SmsClient smsClient; public SmsProperties getPro() { return smsProperties; } public SmsClient createSmsClient(SmsProperties properties) { // 实例化一个认证对象,入参需要传入腾讯云账户 SecretId,SecretKey。 // 为了保护密钥安全,建议将密钥设置在环境变量中或者配置文件中,请参考凭证管理 https://github.com/TencentCloud/tencentcloud-sdk-java?tab=readme-ov-file#%E5%87%AD%E8%AF%81%E7%AE%A1%E7%90%86。 ruoyi-common/src/main/java/com/ruoyi/common/utils/TencentMailUtil.java
@@ -21,6 +21,10 @@ @Autowired MailProperties properties; public MailProperties getPro() { return properties; } /** * * @param emailAddress 邮件接收者email地址 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TBillServiceImpl.java
@@ -9,6 +9,7 @@ import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.SmsUtil; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.TencentMailUtil; import com.ruoyi.common.utils.uuid.UUID; import com.ruoyi.system.dto.OfflinePayCheckDto; import com.ruoyi.system.dto.SmsByBillDto; @@ -80,6 +81,9 @@ @Resource SmsUtil smsUtil; @Resource TencentMailUtil mailUtil; public PageInfo<TBillDto> queryPage(TBillQuery query){ PageInfo<TBill> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); @@ -391,7 +395,7 @@ for (String billId : dto.getBillIds()) { TBillDto bill = getDetailByBillId(billId); if (bill.getSmsLastTime()!=null && (System.currentTimeMillis()-bill.getSmsLastTime().getTime()<smsUtil.getPro().getBillMailDelayPeriod()*60*1000L)){ && (System.currentTimeMillis()-bill.getSmsLastTime().getTime()<mailUtil.getPro().getBillMailDelayPeriod()*60*1000L)){ throw new ServiceException("有账单最近一次发送的时间是:"+DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,bill.getSmsLastTime())); } if (StringUtils.isEmpty(bill.getEmail())){ @@ -401,7 +405,7 @@ TBill save = new TBill(); save.setId(bill.getId()); try { //todo 发送邮件 mailUtil.send(bill.getEmail(),bill.getHouseName()); save.setMailStatus(1); }catch (ServiceException e){ failNum++;