24282 2 жил өмнө
parent
commit
8a0dfca19a

+ 0 - 18
src/main/java/com/fjhx/email/controller/EnterpriseDomainController.java

@@ -1,18 +0,0 @@
-package com.fjhx.email.controller;
-
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 企业邮箱域名 前端控制器
- * </p>
- *
- * @author zlj
- * @since 2023-04-06
- */
-@RestController
-@RequestMapping("/enterpriseDomain")
-public class EnterpriseDomainController {
-
-}

+ 0 - 18
src/main/java/com/fjhx/email/controller/EnterpriseFolderController.java

@@ -1,18 +0,0 @@
-package com.fjhx.email.controller;
-
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 企业邮箱文件夹 前端控制器
- * </p>
- *
- * @author zlj
- * @since 2023-04-06
- */
-@RestController
-@RequestMapping("/enterpriseFolder")
-public class EnterpriseFolderController {
-
-}

+ 0 - 18
src/main/java/com/fjhx/email/controller/EnterpriseMailboxController.java

@@ -1,18 +0,0 @@
-package com.fjhx.email.controller;
-
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 企业邮箱 前端控制器
- * </p>
- *
- * @author zlj
- * @since 2023-04-06
- */
-@RestController
-@RequestMapping("/enterpriseMailbox")
-public class EnterpriseMailboxController {
-
-}

+ 0 - 18
src/main/java/com/fjhx/email/controller/EnterpriseMessageController.java

@@ -1,18 +0,0 @@
-package com.fjhx.email.controller;
-
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 企业邮件 前端控制器
- * </p>
- *
- * @author zlj
- * @since 2023-04-06
- */
-@RestController
-@RequestMapping("/enterpriseMessage")
-public class EnterpriseMessageController {
-
-}

+ 87 - 0
src/main/java/com/fjhx/email/controller/MailController.java

@@ -0,0 +1,87 @@
+package com.fjhx.email.controller;
+
+import cn.hutool.core.io.IORuntimeException;
+import cn.hutool.core.thread.ThreadUtil;
+import com.fjhx.email.config.base.R;
+import com.fjhx.email.config.exception.ServiceException;
+import com.fjhx.email.entity.dto.MailSyncInfo;
+import com.fjhx.email.entity.dto.MailboxInfo;
+import com.fjhx.email.service.IMailService;
+import com.fjhx.email.utils.HxHttpUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Slf4j
+@RestController
+@RequestMapping("/mailService")
+public class MailController {
+
+    private static final Object syncLock = new Object();
+
+    @Autowired
+    private IMailService mailService;
+
+    /**
+     * 每小时同步一次在线用户
+     */
+    @Scheduled(cron = "0 0 0/1 * * ?")
+    public void checkStart() {
+        try {
+            synchronized (syncLock) {
+                List<Long> onlineUserIdList = HxHttpUtil.getOnlineUserIdList();
+                MailSyncInfo.mailboxInfoList = mailService.getMailboxInfoListByUserId(onlineUserIdList);
+            }
+        } catch (IORuntimeException e) {
+            log.error("获取主服务在线用户超时");
+            ThreadUtil.sleep(1000 * 5);
+            checkStart();
+        } catch (ServiceException e) {
+            log.error("主服务返回信息错误:{}", e.getMessage());
+            ThreadUtil.sleep(1000 * 5);
+            checkStart();
+        } catch (Exception e) {
+            log.error("解析错误", e);
+            ThreadUtil.sleep(1000 * 5);
+            checkStart();
+        }
+    }
+
+    @GetMapping("/userLogin/{userId}")
+    public R userLogin(@PathVariable("userId") Long userId) {
+        try {
+            synchronized (syncLock) {
+
+                List<MailboxInfo> mailboxInfoList = mailService.getMailboxInfoListByUserId(Collections.singletonList(userId));
+
+                if (mailboxInfoList.size() == 0) {
+                    return R.ok();
+                }
+
+                List<Long> mailBoxInfoIdList = MailSyncInfo.mailboxInfoList.stream()
+                        .map(MailboxInfo::getId).collect(Collectors.toList());
+
+                for (MailboxInfo mailboxInfo : mailboxInfoList) {
+                    if (!mailBoxInfoIdList.contains(mailboxInfo.getId())) {
+                        MailSyncInfo.mailboxInfoList.add(mailboxInfo);
+                    }
+                }
+
+            }
+        } catch (Exception e) {
+            log.error("登录信息异常", e);
+            return userLogin(userId);
+        }
+        return R.ok();
+    }
+
+
+}

+ 0 - 18
src/main/java/com/fjhx/email/controller/PersonalFolderController.java

@@ -1,18 +0,0 @@
-package com.fjhx.email.controller;
-
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 个人邮箱文件夹 前端控制器
- * </p>
- *
- * @author zlj
- * @since 2023-04-06
- */
-@RestController
-@RequestMapping("/personalFolder")
-public class PersonalFolderController {
-
-}

+ 0 - 18
src/main/java/com/fjhx/email/controller/PersonalMailboxController.java

@@ -1,18 +0,0 @@
-package com.fjhx.email.controller;
-
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- * 个人邮箱 前端控制器
- * </p>
- *
- * @author zlj
- * @since 2023-04-04
- */
-@RestController
-@RequestMapping("/personalMailbox")
-public class PersonalMailboxController {
-
-}

+ 0 - 18
src/main/java/com/fjhx/email/controller/PersonalMessageController.java

@@ -1,18 +0,0 @@
-package com.fjhx.email.controller;
-
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * <p>
- *  前端控制器
- * </p>
- *
- * @author zlj
- * @since 2023-04-06
- */
-@RestController
-@RequestMapping("/personalMessage")
-public class PersonalMessageController {
-
-}

+ 2 - 2
src/main/java/com/fjhx/email/service/impl/CoreServiceImpl.java

@@ -178,7 +178,7 @@ public class CoreServiceImpl implements ApplicationRunner {
         }
 
         try {
-            boolean awaitFlag = countDownLatch.await(5, TimeUnit.MINUTES);
+            boolean awaitFlag = countDownLatch.await(MailSyncInfo.awaitTimeout, TimeUnit.MINUTES);
             if (!awaitFlag) {
                 log.error("超时执行");
             }
@@ -297,7 +297,7 @@ public class CoreServiceImpl implements ApplicationRunner {
             // 添加异常次数
             map.merge(id, 1, Integer::sum);
 
-            // 异常次数连续超过3次,不再同步邮件
+            // 异常次数连续超过n次,不再同步邮件
             if (map.get(id) >= MailSyncInfo.errorNumber) {
                 mailboxInfo.setSkip(true);
                 map.remove(id);