Bob пре 2 година
родитељ
комит
e1f7c1c251

+ 12 - 5
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/service/impl/VppLicenseCodeServiceImpl.java

@@ -13,6 +13,7 @@ import cn.kdan.pdf.tech.core.pojo.vo.VppRTeamMemberRoleVO;
 import cn.kdan.pdf.tech.core.service.*;
 import cn.kdan.pdf.tech.core.utils.ExcelUtils;
 import cn.kdan.pdf.tech.core.utils.FileUtil;
+import cn.kdan.pdf.tech.core.utils.ThreadPoolSingleUtil;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
@@ -272,8 +273,12 @@ public class VppLicenseCodeServiceImpl implements VppLicenseCodeService {
         // 解绑激活设备
         vppDeviceService.unBindByMemberId(null, Collections.singletonList(vppLicenseCode.getCdkey()));
         // 发送邮件
-        String text = String.format(CaptchaActionEnum.CANCEL_LICENSE_ASSIGN.text(), vppMember.getEmail(), products.getName(), products.getName(), user.getEmail()) + CommonConstant.signHtml;
-        emailUtils.sendMail(CaptchaActionEnum.CANCEL_LICENSE_ASSIGN.subject(), text, Collections.singletonList(vppMember.getEmail()));
+        log.info(new Date().toString());
+        ThreadPoolSingleUtil.getInstance().excute(() -> {
+            String text = String.format(CaptchaActionEnum.CANCEL_LICENSE_ASSIGN.text(), vppMember.getEmail(), products.getName(), products.getName(), user.getEmail()) + CommonConstant.signHtml;
+            emailUtils.sendMail(CaptchaActionEnum.CANCEL_LICENSE_ASSIGN.subject(), text, Collections.singletonList(vppMember.getEmail()));
+        });
+        log.info(new Date().toString());
     }
 
     @Override
@@ -339,10 +344,12 @@ public class VppLicenseCodeServiceImpl implements VppLicenseCodeService {
                     licenseCodeMapper.updateByPrimaryKey(vppLicenseCode);
                     // 解绑激活设备
                     vppDeviceService.unBindByMemberId(null, Collections.singletonList(vppLicenseCode.getCdkey()));
-                    // 发送邮件
-                    String text = String.format(CaptchaActionEnum.CANCEL_LICENSE_ASSIGN.text(), vppMember.getEmail(), product.getName(), product.getName(), user.getEmail()) + CommonConstant.signHtml;
-                    emailUtils.sendMail(CaptchaActionEnum.CANCEL_LICENSE_ASSIGN.subject(), text, Collections.singletonList(vppMember.getEmail()));
                     count++;
+                    // 发送邮件
+                    ThreadPoolSingleUtil.getInstance().excute(() -> {
+                        String text = String.format(CaptchaActionEnum.CANCEL_LICENSE_ASSIGN.text(), vppMember.getEmail(), product.getName(), product.getName(), user.getEmail()) + CommonConstant.signHtml;
+                        emailUtils.sendMail(CaptchaActionEnum.CANCEL_LICENSE_ASSIGN.subject(), text, Collections.singletonList(vppMember.getEmail()));
+                    });
                 }
             }
         } catch (IOException e) {

+ 22 - 18
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/service/impl/VppRTeamMemberRoleServiceImpl.java

@@ -15,6 +15,7 @@ import cn.kdan.pdf.tech.core.service.*;
 import cn.kdan.pdf.tech.core.utils.EmailUtils;
 import cn.kdan.pdf.tech.core.utils.ExcelUtils;
 import cn.kdan.pdf.tech.core.utils.FileUtil;
+import cn.kdan.pdf.tech.core.utils.ThreadPoolSingleUtil;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import constant.CommonConstant;
@@ -139,14 +140,16 @@ public class VppRTeamMemberRoleServiceImpl implements VppRTeamMemberRoleService
         }
 
         // 发送邮件
-        CaptchaActionEnum actionEnum = CaptchaActionEnum.JOIN_TEAM_FOR_MEMBER;
-        String code = CommonUtils.generateVerifyCode();
-        String url = readerproUrl + confirmAddUrl + "?teamId=" + dto.getTeamId() + "&code=" + code + "&memberEmail=" + dto.getMemberEmail() + "&memberName=" + dto.getMemberName() + "&action=" + actionEnum.value();
-        String text = String.format(actionEnum.text(), dto.getMemberEmail(), vppTeam.getName(), url) + CommonConstant.signHtml;
-        String subject = String.format(actionEnum.subject(), user.getFullName());
-        if(emailUtils.sendMail(subject, text, Collections.singletonList(dto.getMemberEmail()))) {
-            redisUtils.hset(AuthConstant.VERIFY_CODE_KEY + actionEnum.value(), dto.getMemberEmail(), code, AuthConstant.INVITE_VERIFY_CODE_KEY_EXPIRE_TIME);
-        }
+        ThreadPoolSingleUtil.getInstance().excute(() -> {
+            CaptchaActionEnum actionEnum = CaptchaActionEnum.JOIN_TEAM_FOR_MEMBER;
+            String code = CommonUtils.generateVerifyCode();
+            String url = readerproUrl + confirmAddUrl + "?teamId=" + dto.getTeamId() + "&code=" + code + "&memberEmail=" + dto.getMemberEmail() + "&memberName=" + dto.getMemberName() + "&action=" + actionEnum.value();
+            String text = String.format(actionEnum.text(), dto.getMemberEmail(), vppTeam.getName(), url) + CommonConstant.signHtml;
+            String subject = String.format(actionEnum.subject(), user.getFullName());
+            if(emailUtils.sendMail(subject, text, Collections.singletonList(dto.getMemberEmail()))) {
+                redisUtils.hset(AuthConstant.VERIFY_CODE_KEY + actionEnum.value(), dto.getMemberEmail(), code, AuthConstant.INVITE_VERIFY_CODE_KEY_EXPIRE_TIME);
+            }
+        });
     }
 
     /**
@@ -227,17 +230,18 @@ public class VppRTeamMemberRoleServiceImpl implements VppRTeamMemberRoleService
 //                        throw new BackendRuntimeException(VppMemberConstant.MEMBEU_HAS_ADMIN);
                     }
                 }
-
-                // 发送邮件
-                CaptchaActionEnum actionEnum = CaptchaActionEnum.JOIN_TEAM_FOR_MEMBER;
-                String code = CommonUtils.generateVerifyCode();
-                String url = readerproUrl + confirmAddUrl + "?teamId=" + vppTeam.getId() + "&code=" + code + "&memberEmail=" + memberEmail + "&memberName=" + memberName + "&action=" + actionEnum.value();
-                String text = String.format(actionEnum.text(), memberEmail, vppTeam.getName(), url) + CommonConstant.signHtml;
-                String subject = String.format(actionEnum.subject(), user.getFullName());
-                if(emailUtils.sendMail(subject, text, Collections.singletonList(memberEmail))){
-                    redisUtils.hset(AuthConstant.VERIFY_CODE_KEY + actionEnum.value(), memberEmail, code, AuthConstant.INVITE_VERIFY_CODE_KEY_EXPIRE_TIME);
-                }
                 count++;
+                // 发送邮件
+                ThreadPoolSingleUtil.getInstance().excute(() -> {
+                    CaptchaActionEnum actionEnum = CaptchaActionEnum.JOIN_TEAM_FOR_MEMBER;
+                    String code = CommonUtils.generateVerifyCode();
+                    String url = readerproUrl + confirmAddUrl + "?teamId=" + vppTeam.getId() + "&code=" + code + "&memberEmail=" + memberEmail + "&memberName=" + memberName + "&action=" + actionEnum.value();
+                    String text = String.format(actionEnum.text(), memberEmail, vppTeam.getName(), url) + CommonConstant.signHtml;
+                    String subject = String.format(actionEnum.subject(), user.getFullName());
+                    if(emailUtils.sendMail(subject, text, Collections.singletonList(memberEmail))){
+                        redisUtils.hset(AuthConstant.VERIFY_CODE_KEY + actionEnum.value(), memberEmail, code, AuthConstant.INVITE_VERIFY_CODE_KEY_EXPIRE_TIME);
+                    }
+                });
             }
         } catch (IOException e) {
             log.error("批量导入团队成员读取数据失败,{}", e.getMessage());

+ 11 - 6
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/service/impl/VppTeamServiceImpl.java

@@ -11,6 +11,7 @@ import cn.kdan.pdf.tech.core.pojo.dto.CreateTeamDTO;
 import cn.kdan.pdf.tech.core.pojo.dto.EditTeamDTO;
 import cn.kdan.pdf.tech.core.pojo.vo.*;
 import cn.kdan.pdf.tech.core.service.*;
+import cn.kdan.pdf.tech.core.utils.ThreadPoolSingleUtil;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import cn.kdan.pdf.tech.core.utils.RSAUtils;
@@ -278,9 +279,11 @@ public class VppTeamServiceImpl implements VppTeamService {
                 text = String.format(actionEnum.text(), vppMember.getEmail(), superAdmin.getEmail(), url) + CommonConstant.signHtml;
             }
             //发送邮件
-            if(emailUtils.sendMail(actionEnum.subject(), text, Collections.singletonList(vppMember.getEmail()))){
-                redisUtils.hset(AuthConstant.VERIFY_CODE_KEY + actionEnum.value(), vppMember.getEmail(), code, AuthConstant.INVITE_VERIFY_CODE_KEY_EXPIRE_TIME);
-            }
+            ThreadPoolSingleUtil.getInstance().excute(() -> {
+                if(emailUtils.sendMail(actionEnum.subject(), text, Collections.singletonList(vppMember.getEmail()))){
+                    redisUtils.hset(AuthConstant.VERIFY_CODE_KEY + actionEnum.value(), vppMember.getEmail(), code, AuthConstant.INVITE_VERIFY_CODE_KEY_EXPIRE_TIME);
+                }
+            });
         }
     }
 
@@ -454,9 +457,11 @@ public class VppTeamServiceImpl implements VppTeamService {
                 text = String.format(actionEnum.text(), vppMember.getEmail(), superAdmin, url) + CommonConstant.signHtml;
             }
             //发送邮件
-            if(emailUtils.sendMail(actionEnum.subject(), text, Collections.singletonList(vppMember.getEmail()))){
-                redisUtils.hset(AuthConstant.VERIFY_CODE_KEY + actionEnum.value(), vppMember.getEmail(), code, AuthConstant.INVITE_VERIFY_CODE_KEY_EXPIRE_TIME);
-            }
+            ThreadPoolSingleUtil.getInstance().excute(() -> {
+                if(emailUtils.sendMail(actionEnum.subject(), text, Collections.singletonList(vppMember.getEmail()))){
+                    redisUtils.hset(AuthConstant.VERIFY_CODE_KEY + actionEnum.value(), vppMember.getEmail(), code, AuthConstant.INVITE_VERIFY_CODE_KEY_EXPIRE_TIME);
+                }
+            });
         }
     }
 

+ 34 - 0
pdf-tech-core/src/main/java/cn/kdan/pdf/tech/core/utils/ThreadPoolSingleUtil.java

@@ -0,0 +1,34 @@
+package cn.kdan.pdf.tech.core.utils;
+
+import java.util.concurrent.*;
+
+/**
+ * @author Bob 2023-03-24
+ * 单例线程池工具类
+ **/
+public class ThreadPoolSingleUtil {
+
+    private static volatile ThreadPoolSingleUtil instance = null;
+    private ThreadPoolExecutor executor = null;
+
+    private ThreadPoolSingleUtil() {
+        this.executor = new ThreadPoolExecutor(5,
+                20, 5, TimeUnit.MINUTES,
+                new LinkedBlockingQueue(150));
+    }
+
+    public static ThreadPoolSingleUtil getInstance() {
+        if (instance == null) {
+            synchronized (ThreadPoolSingleUtil.class) {
+                if (instance == null) {
+                    instance = new ThreadPoolSingleUtil();
+                }
+            }
+        }
+        return instance;
+    }
+
+    public void excute(Runnable runnable) {
+        this.executor.execute(runnable);
+    }
+}