zjr0325-新增邮件管理-优化

This commit is contained in:
10002617 2026-03-30 11:48:01 +08:00
parent 80e89777d2
commit 5e09b83df0
5 changed files with 21 additions and 27 deletions

View File

@ -1,6 +1,7 @@
package com.nflg.mobilebroken.admin.controller;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.nflg.mobilebroken.admin.annotation.ApiMark;
import com.nflg.mobilebroken.common.constant.STATE;
import com.nflg.mobilebroken.common.exception.NflgException;
@ -11,7 +12,9 @@ import com.nflg.mobilebroken.common.pojo.request.SendMsgConfigGetPageRequest;
import com.nflg.mobilebroken.common.pojo.request.SendMsgConfigUpdateRequest;
import com.nflg.mobilebroken.common.pojo.vo.SendMsgConfigGetPageVO;
import com.nflg.mobilebroken.repository.entity.SendMsgConfig;
import com.nflg.mobilebroken.repository.entity.SendMsgConfigUser;
import com.nflg.mobilebroken.repository.service.ISendMsgConfigService;
import com.nflg.mobilebroken.repository.service.ISendMsgConfigUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@ -55,7 +58,7 @@ public class SendMsgConfigController extends ControllerBase{
if (CollectionUtil.isEmpty(ids)) {
throw new NflgException(STATE.ParamErr, "ids必传");
}
sendMsgConfigService.removeByIds(ids);
sendMsgConfigService.removeSendMsgConfigByIds(ids);
return ApiResult.success(true);
}
}

View File

@ -291,7 +291,9 @@ public class TicketScheduledTasks {
.replace("${createTime}", toTimeString(ticket.getCreateTime()))
.replace("${msg}", subject);
try {
sendEamilForAdminUser(adminUsers, configEmailsAdminUsers, subject, content);
log.info("【工单超时提醒】发送邮件到adminUsers: {}",CollectionUtil.isNotEmpty(adminUsers) ? adminUsers.stream().map(AdminUser::getEmail).collect(Collectors.toList()) : Lists.newArrayList());
log.info("【工单超时提醒】发送邮件到configEmailsAdminUsers: {}",CollectionUtil.isNotEmpty(configEmailsAdminUsers) ? configEmailsAdminUsers.stream().map(AdminUser::getEmail).collect(Collectors.toList()) : Lists.newArrayList());
emailService.sendEmailForAdminUser(adminUsers, configEmailsAdminUsers, subject, content);
} catch (Exception e) {
log.error("【工单超时提醒】邮件发送失败", e);
}
@ -346,16 +348,6 @@ public class TicketScheduledTasks {
}
}
private void sendEamilForAdminUser(List<AdminUser> adminUsers, List<AdminUser> configAdminUsers, String subject,String content) throws MessagingException {
Set<AdminUser> adminUserSet = Sets.union(Sets.newHashSet(adminUsers), Sets.newHashSet(configAdminUsers));
if (CollectionUtil.isNotEmpty(adminUserSet)){
for (AdminUser adminUser:adminUserSet) {
log.info("【工单超时提醒】发送邮件到{}",adminUser.getEmail());
emailService.sendEmail(adminUser.getEmail(),subject,content);
}
}
}
private void sendEamilForAppUser(List<AppUser> users,String subject,String content) throws MessagingException {
if (CollectionUtil.isNotEmpty(users)){
for (AppUser user:users) {

View File

@ -184,7 +184,7 @@ public class TicketScheduledTasks {
* 工单超时提醒
* 每天午夜12点执行一次
*/
@Scheduled(cron = "0 0 0 * * ?")
@Scheduled(fixedRate = 10000)
public void timeoutRemind() {
log.info("【工单超时提醒】开始执行");
ParamConfig config = paramConfigService.lambdaQuery().eq(ParamConfig::getCode, "TiketTimeout").one();
@ -279,7 +279,7 @@ public class TicketScheduledTasks {
adminUserIds.addAll(followUserIds);
}
Map<SendMsgConfigUserReceiverTypeEnum, List<AdminUser>> sendMsgConfigAdminUserMap = sendMsgConfigService.getAdminUserMapByDataTypeAndRemindType(SendMsgConfigDataTypeEnum.MOBILE_BROKEN_TICKET, SendMsgConfigRemindTypeEnum.TITLE_TICKET_TIMEOUT);
Map<SendMsgConfigUserReceiverTypeEnum, List<AdminUser>> sendMsgConfigAdminUserMap = sendMsgConfigService.getAdminUserMapByDataTypeAndRemindType(SendMsgConfigDataTypeEnum.GONGFU_TICKET, SendMsgConfigRemindTypeEnum.TITLE_TICKET_TIMEOUT);
List<AdminUser> configEmailsAdminUsers = sendMsgConfigAdminUserMap.getOrDefault(SendMsgConfigUserReceiverTypeEnum.EMAIL, Lists.newArrayList());
@ -294,7 +294,9 @@ public class TicketScheduledTasks {
.replace("${createTime}", toTimeString(ticket.getCreateTime()))
.replace("${msg}", subject);
try {
sendEamilForAdminUser(adminUsers, configEmailsAdminUsers, subject, content);
log.info("【工单超时提醒】发送邮件到adminUsers: {}",CollectionUtil.isNotEmpty(adminUsers) ? adminUsers.stream().map(AdminUser::getEmail).collect(Collectors.toList()) : Lists.newArrayList());
log.info("【工单超时提醒】发送邮件到configEmailsAdminUsers: {}",CollectionUtil.isNotEmpty(configEmailsAdminUsers) ? configEmailsAdminUsers.stream().map(AdminUser::getEmail).collect(Collectors.toList()) : Lists.newArrayList());
emailService.sendEmailForAdminUser(adminUsers, configEmailsAdminUsers, subject, content);
} catch (Exception e) {
log.error("【工单超时提醒】邮件发送失败", e);
}
@ -309,7 +311,7 @@ public class TicketScheduledTasks {
.setTitle(ticket.getTitle())
.setUserId(c.getId())
.setSourceId(Long.valueOf(ticket.getId()))
.setSource(0)
.setSource(3)
.setType(MessageType.WorkOrderAssignment.getState())
.setSubType(MessageSubType.TicketTimeout.getState())
.setIsRead(false)
@ -349,16 +351,6 @@ public class TicketScheduledTasks {
}
}
private void sendEamilForAdminUser(List<AdminUser> adminUsers, List<AdminUser> configAdminUsers, String subject,String content) throws MessagingException {
Set<AdminUser> adminUserSet = Sets.union(Sets.newHashSet(adminUsers), Sets.newHashSet(configAdminUsers));
if (CollectionUtil.isNotEmpty(adminUserSet)){
for (AdminUser adminUser:adminUserSet) {
log.info("【工单超时提醒】发送邮件到{}",adminUser.getEmail());
emailService.sendEmail(adminUser.getEmail(),subject,content);
}
}
}
private void sendEamilForAppUser(List<AppUser> users, String subject, String content) throws MessagingException {
if (CollectionUtil.isNotEmpty(users)) {
for (AppUser user : users) {

View File

@ -29,4 +29,5 @@ public interface ISendMsgConfigService extends IService<SendMsgConfig> {
Map<SendMsgConfigUserReceiverTypeEnum, List<AppUser>> getAppUserMapByDataTypeAndRemindType(SendMsgConfigDataTypeEnum dataTypeEnum, SendMsgConfigRemindTypeEnum remindTypeEnum);
void removeSendMsgConfigByIds(List<Long> ids);
}

View File

@ -29,6 +29,7 @@ import com.nflg.mobilebroken.repository.service.ISendMsgConfigService;
import com.nflg.mobilebroken.repository.service.ISendMsgConfigUserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDateTime;
@ -199,5 +200,10 @@ public class SendMsgConfigServiceImpl extends ServiceImpl<SendMsgConfigMapper, S
return resultMap;
}
@Override
@Transactional(rollbackFor = Exception.class)
public void removeSendMsgConfigByIds(List<Long> ids) {
removeByIds(ids);
sendMsgConfigUserService.remove(Wrappers.lambdaQuery(SendMsgConfigUser.class).in(SendMsgConfigUser::getSendMsgConfigId, ids));
}
}