提交 aa1c0486 作者: duanxincheng

用户邮件推送许可优化

父级 e0f9ff7d
......@@ -242,6 +242,7 @@ public class MeetingInfoController {
.subMeetingId(meetingInfo.getSubMeetingId())
.toUserCode(userCode)
.toUser(meetingInfo.getHost())
.emailPushAccess(meetingInfo.getEmailPushAccess())
.build();
emailSender.sendEmailWithAttachment(emailPushBuilder);
return R.ok("发送纪要邮件成功");
......
......@@ -33,6 +33,11 @@ public class UserDTO {
*/
private String email;
/**
* 邮件推送许可(企微表存储)
*/
private Boolean emailPushAccess;
@Override
public String toString() {
return "UserDTO{" +
......
......@@ -185,8 +185,8 @@ public class EmailSender {
if(!pushSwitch){
log.info("【邮箱推送】:应用未开启邮件推送功能");
return false;
}
AtomicInteger retryCount = new AtomicInteger(0);
boolean isSent = false;
String toEmail = "test".equals(environment) ? testReceiver : emailPushBuilder.getToEmail();
......@@ -195,10 +195,18 @@ public class EmailSender {
String subMeetingId = emailPushBuilder.getSubMeetingId();
Integer meetingInstanceId = emailPushBuilder.getMeetingInstanceId();
String toUserCode = emailPushBuilder.getToUserCode();
String toUser = emailPushBuilder.getToUser();
Boolean emailPushAccess = emailPushBuilder.getEmailPushAccess();
//用户自定义邮件推送许可
if(emailPushAccess){
log.info("用户允许邮件推送,准备推送邮件至{}------", emailPushBuilder.getToEmail());
} else{
log.info("用户关闭了邮件推送,推送终止------");
processLogService.log(meetingId,subMeetingId,"用户关闭了邮件推送,推送终止");
}
if(StringUtils.isEmpty(toEmail)){
log.error("收件邮箱为空,推送失败");
processLogService.log(meetingId,null,"收件邮箱为空,推送失败。environment->"+environment+",testReceiver->"+testReceiver+",realEmail->"+emailPushBuilder.getToEmail());
processLogService.log(meetingId,subMeetingId,"收件邮箱为空,推送失败。environment->"+environment+",testReceiver->"+testReceiver+",realEmail->"+emailPushBuilder.getToEmail());
return false;
}
log.info("准备开始邮件推送...");
......
......@@ -118,6 +118,7 @@ public class EmailPushTask {
.subMeetingId(meetingInfo.getSubMeetingId())
.toUserCode(userCode)
.toUser(meetingInfo.getHost())
.emailPushAccess(meetingInfo.getEmailPushAccess())
.build();
isSuccess = emailSender.sendEmailWithAttachment(emailPushBuilder);
} catch (Exception e) {
......
......@@ -330,6 +330,7 @@ public class FileProcessTask {
.subMeetingId(meetingInfo.getSubMeetingId())
.toUserCode(toUserCode)
.toUser(meetingInfo.getHost())
.emailPushAccess(meetingInfo.getEmailPushAccess())
.build();
emailPush(emailPushBuilder);
isSuccess = true;
......@@ -583,12 +584,9 @@ public class FileProcessTask {
private void emailPush(EmailPush emailPushBuilder) {
Boolean isPushed;
log.info("开始邮件推送------");
if(true){
log.info("用户允许邮件推送,准备推送邮件至{}------", emailPushBuilder.getToEmail());
//邮件推送
isPushed = emailSender.sendEmailWithAttachment(emailPushBuilder);
try {
// isPushed = emailSender.sendEmailWithAttachment(emailPushBuilder);
isPushed = emailSender.sendEmailWithAttachment(emailPushBuilder);
} catch (Exception e) {
log.error("邮件推送失败: {}", e.getMessage(), e);
StringWriter sw = new StringWriter();
......@@ -599,11 +597,7 @@ public class FileProcessTask {
}
if(isPushed)
processLogService.log(meetingId,subMeetingId,"用户允许邮件推送,推送邮件至"+ emailPushBuilder.getToEmail());
}else{
log.info("用户关闭了邮件推送,推送终止------");
processLogService.log(meetingId,subMeetingId,"用户关闭了邮件推送,推送终止");
isPushed = Boolean.FALSE;
}
meetingInfoMapper.update(null,
new LambdaUpdateWrapper<MeetingInfo>()
.eq(MeetingInfo::getMeetingId,meetingId)
......
......@@ -44,6 +44,7 @@ import java.security.SecureRandom;
import java.time.*;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service
......@@ -256,7 +257,6 @@ public class TencentMeetingServiceImpl extends ServiceImpl<TecentMeetingMapper,T
}
}
String email;
//判断是否有权限生成纪要
boolean generateAccess = accessUserIds.stream().anyMatch(item -> item.getTid().equals(hostId));
if(!generateAccess){
......@@ -271,14 +271,15 @@ public class TencentMeetingServiceImpl extends ServiceImpl<TecentMeetingMapper,T
UserDTO userDTO = accessUserIds.stream().filter(item -> item.getTid().equals(hostId)).findFirst().get();
email = userDTO.getEmail();
String email = userDTO.getEmail();
Boolean emailPushAccess = userDTO.getEmailPushAccess();
//会议基本信息保存
MeetingInfo meetingItem = MeetingInfo.builder().meetingId(meetingId).meetingCode(meeting.getMeetingCode())
.subject(meeting.getSubject())
.startTime(mediaStartTime)
// .endTime(LocalDateTime.ofInstant(Instant.ofEpochSecond(Long.valueOf(meeting.getEndTime())), ZoneId.systemDefault()))
.isGenerated(Boolean.FALSE).emailPushAccess(Boolean.TRUE).isPushed(Boolean.FALSE).syncTime(LocalDateTime.now())
.isGenerated(Boolean.FALSE).emailPushAccess(emailPushAccess).isPushed(Boolean.FALSE).syncTime(LocalDateTime.now())
.subMeetingId(subMeetingId).generateRetry(Boolean.FALSE).pushRetry(Boolean.FALSE)
.host(hostName)
.hostUid(hostId)
......@@ -348,10 +349,10 @@ public class TencentMeetingServiceImpl extends ServiceImpl<TecentMeetingMapper,T
//已被直接授权的人员追加进去
accessUserIds.addAll(auths.stream().filter(item -> item.getType().equals(1)).map(CoreModulePermissions::getRelId).collect(Collectors.toList()));
if(!CollectionUtils.isEmpty(accessUserIds)){
//查出人员邮箱
//查出人员邮箱+邮件推送许可
List<UserDTO> userEmailList = sysUserSyncMapper.getUserEmail(permissionTenantId);
Map<String, String> userEmailMap = CollectionUtils.isEmpty(userEmailList) ? new HashMap<>()
: userEmailList.stream().collect(Collectors.toMap(UserDTO::getWid, UserDTO::getEmail,(existing, replacement) -> existing));
Map<String, UserDTO> userEmailMap = CollectionUtils.isEmpty(userEmailList) ? new HashMap<>()
: userEmailList.stream().collect(Collectors.toMap(UserDTO::getWid, Function.identity(),(existing, replacement) -> existing));
List<UserDTO> accessUsers = new ArrayList<>();
for (String accessUserId : accessUserIds) {
......@@ -359,8 +360,11 @@ public class TencentMeetingServiceImpl extends ServiceImpl<TecentMeetingMapper,T
UserDTO accessUser = new UserDTO();
accessUser.setWid(accessUserId);
accessUser.setTid(userIdRelations.get(accessUserId));
if(userEmailMap.containsKey(accessUserId))
accessUser.setEmail(userEmailMap.get(accessUserId));
if(userEmailMap.containsKey(accessUserId)){
UserDTO emailMsg = userEmailMap.get(accessUserId);
accessUser.setEmail(emailMsg.getEmail());
accessUser.setEmailPushAccess(emailMsg.getEmailPushAccess());
}
accessUsers.add(accessUser);
}
}
......
......@@ -258,6 +258,17 @@ public class WeComServiceImpl extends ServiceImpl<WeComUserMapper, WeComUser> i
}
WeComUser weComUser = getOne(new LambdaQueryWrapper<WeComUser>()
.eq(WeComUser::getUserId, userId));
//如果咨询窗用户操作的邮件推送许可,这名用户不在企微的授权范围内
// 可以预先保存这位企微人员的信息,同时设置一下推送许可
if(weComUser == null){
WeComUser newUser = WeComUser.builder()
.userId(userId)
.userName(user.getUsername())
.isrepeatName("0")
.emailPushAccess(Boolean.TRUE).build();
save(newUser);
return newUser.getEmailPushAccess();
}
return weComUser.getEmailPushAccess();
}
......
......@@ -43,6 +43,8 @@ public class EmailPush {
*/
private List<Attachment> attachments;
private Boolean emailPushAccess;
@Data
@NoArgsConstructor
@AllArgsConstructor
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论