|
@@ -16,10 +16,7 @@ import com.fjhx.config.exception.EmailEngineException;
|
|
|
import com.fjhx.config.exception.ServiceException;
|
|
|
import com.fjhx.config.redis.RedisCache;
|
|
|
import com.fjhx.constants.RedisConstant;
|
|
|
-import com.fjhx.entity.EmailInfo;
|
|
|
-import com.fjhx.entity.EmailMessage;
|
|
|
-import com.fjhx.entity.EmailMessageAttachment;
|
|
|
-import com.fjhx.entity.EmailMessageContent;
|
|
|
+import com.fjhx.entity.*;
|
|
|
import com.fjhx.enums.SendEventEnum;
|
|
|
import com.fjhx.service.*;
|
|
|
import com.fjhx.utils.EmailEngineUtil;
|
|
@@ -53,6 +50,9 @@ public class AccountServiceImpl implements IAccountService, ServletContextAware
|
|
|
@Autowired
|
|
|
private IEmailMessageContentService emailMessageContentService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IEmailUserService emailUserService;
|
|
|
+
|
|
|
|
|
|
@Qualifier(TaskPoolConfig.SYNC_MAILBOX_EXECUTOR)
|
|
|
@Autowired
|
|
@@ -221,6 +221,7 @@ public class AccountServiceImpl implements IAccountService, ServletContextAware
|
|
|
EmailInfo emailInfo = emailInfoService.getOne(q -> q.eq(EmailInfo::getEmail, email));
|
|
|
// 如果存在,直接返回邮箱信息
|
|
|
if (emailInfo != null) {
|
|
|
+ bindingUser(bindingVo.getUserId(), bindingVo.getEmail());
|
|
|
return emailInfo;
|
|
|
}
|
|
|
ProgressVo progressVo;
|
|
@@ -228,8 +229,11 @@ public class AccountServiceImpl implements IAccountService, ServletContextAware
|
|
|
// 保存账号信息到数据库
|
|
|
emailInfo = BeanUtil.copyProperties(bindingVo, EmailInfo.class);
|
|
|
emailInfoService.save(emailInfo);
|
|
|
+
|
|
|
+ bindingUser(bindingVo.getUserId(), bindingVo.getEmail());
|
|
|
+
|
|
|
// 添加账号
|
|
|
- RetryUtil.execute(() -> EmailEngineUtil.createAccount(bindingVo), 3, 3000L);
|
|
|
+ RetryUtil.execute(() -> EmailEngineUtil.createAccount(bindingVo), 5, 3000L);
|
|
|
// redis添加同步进度
|
|
|
progressVo = this.progressInitialization(emailInfo.getId(), bindingVo);
|
|
|
} catch (Exception e) {
|
|
@@ -264,6 +268,24 @@ public class AccountServiceImpl implements IAccountService, ServletContextAware
|
|
|
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 用户绑定邮箱
|
|
|
+ *
|
|
|
+ * @param userId 用户id
|
|
|
+ * @param email 邮箱
|
|
|
+ */
|
|
|
+ private void bindingUser(String userId, String email) {
|
|
|
+ long count = emailUserService.count(q -> q.eq(EmailUser::getUserId, userId).eq(EmailUser::getEmail, email));
|
|
|
+ if (count > 0) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ EmailUser emailUser = new EmailUser();
|
|
|
+ emailUser.setUserId(userId);
|
|
|
+ emailUser.setEmail(email);
|
|
|
+ emailUserService.save(emailUser);
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 同步邮件进度初始化
|
|
|
*/
|
|
@@ -362,7 +384,7 @@ public class AccountServiceImpl implements IAccountService, ServletContextAware
|
|
|
emailMessage.setMessageId(messagesDTO.getId());
|
|
|
emailMessage.setEmailInfoId(emailInfoId);
|
|
|
emailMessage.setEmail(email);
|
|
|
- emailMessage.setUnseen(messagesDTO.getUnseen());
|
|
|
+ emailMessage.setUnseen(ObjectUtil.defaultIfNull(messagesDTO.getUnseen(), true));
|
|
|
emailMessage.setFlagged(messagesDTO.getFlagged());
|
|
|
emailMessage.setSubject(messagesDTO.getSubject());
|
|
|
emailMessage.setFromDate(messagesDTO.getDate());
|
|
@@ -391,7 +413,7 @@ public class AccountServiceImpl implements IAccountService, ServletContextAware
|
|
|
emailMessageAttachment.setEmail(message.getEmail());
|
|
|
emailMessageAttachment.setName(attachment.getFilename());
|
|
|
emailMessageAttachment.setSize(attachment.getEncodedSize());
|
|
|
- emailMessageAttachment.setPath(message.getEmail() + "\\" + newFileName);
|
|
|
+ emailMessageAttachment.setPath(message.getEmail() + "/" + newFileName);
|
|
|
emailMessageAttachment.setIsDownload(false);
|
|
|
emailMessageAttachment.setFromDate(fromDate);
|
|
|
|