Browse Source

Merge branch 'cpq-dev' of wangfan/adweb3-server into master

chenpeiqing 4 months ago
parent
commit
cdf29fe787

+ 3 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/enquiry/controller/AdwebEnquiryController.java

@@ -589,10 +589,12 @@ public class AdwebEnquiryController extends JeecgController<AdwebEnquiry, IAdweb
         QueryWrapper<AdwebSite> adwebSiteQueryWrapper = new QueryWrapper<>();
         queryWrapper.eq("code", code);
         AdwebSite adwebSite = adwebSiteService.getOne(adwebSiteQueryWrapper);
-        adwebEnquiryService.specialSendEmail(list, adwebSite);
+
         //返回跟进人名称
         for (String id : idList) {
             AdwebEnquiry adwebEnquiry = adwebEnquiryService.getById(id);
+
+            adwebEnquiryService.specialSendEmail(adwebEnquiry, adwebSite);
             if (adwebEnquiry != null && StringUtils.isNotBlank(adwebEnquiry.getRecordId())) {
                 adwebEnquiryService.returnSalesperson(code, adwebEnquiry.getRecordId(), user.getUsername());
             }

+ 4 - 5
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/enquiry/service/IAdwebEnquiryService.java

@@ -1,18 +1,17 @@
 package org.jeecg.modules.adweb.enquiry.service;
 
+import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.adweb.enquiry.dto.EnquiryDTO;
 import org.jeecg.modules.adweb.enquiry.dto.param.EffectiveEnquiryParamDto;
 import org.jeecg.modules.adweb.enquiry.entity.AdwebEnquiry;
-import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.adweb.site.entity.AdwebSite;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * @Description: 询盘信息存储表单
  * @Author: jeecg-boot
- * @Date:   2024-10-12
+ * @Date: 2024-10-12
  * @Version: V1.0
  */
 public interface IAdwebEnquiryService extends IService<AdwebEnquiry> {
@@ -22,7 +21,7 @@ public interface IAdwebEnquiryService extends IService<AdwebEnquiry> {
     /**
      * 返回用户名称
      */
-    void returnSalesperson (String siteCode,String inquiryId,String sales);
+    void returnSalesperson(String siteCode, String inquiryId, String sales);
 
     /**
      * 根据地区更新询盘跟进人
@@ -36,5 +35,5 @@ public interface IAdwebEnquiryService extends IService<AdwebEnquiry> {
      */
     boolean updateUserEffective(EffectiveEnquiryParamDto effectiveEnquiryParamDto);
 
-    void specialSendEmail(List<AdwebEnquiry> enquiryList, AdwebSite adwebSite);
+    void specialSendEmail(AdwebEnquiry adwebEnquiry, AdwebSite adwebSite);
 }

+ 189 - 196
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/enquiry/service/impl/AdwebEnquiryServiceImpl.java

@@ -252,7 +252,6 @@ public class AdwebEnquiryServiceImpl extends ServiceImpl<AdwebEnquiryMapper, Adw
 
             adwebEnquiryList.add(adwebEnquiry);
 
-
             form.setEnquiryId(adwebEnquiry.getId());
             form.setForm(forms);
             form.setCountry(adwebEnquiry.getCountry());
@@ -269,50 +268,45 @@ public class AdwebEnquiryServiceImpl extends ServiceImpl<AdwebEnquiryMapper, Adw
         // 客户黑名单过滤
         judgeBlacklist(adwebEnquiryList);
 
-        if (!adwebEnquiryList.isEmpty()) {
-            AdwebEnquiry target = adwebEnquiryList.get(0);
-            try {
-                this.save(target);
-                adwebEnquiryFormService.save(form);
+        AdwebEnquiry target = adwebEnquiryList.get(0);
+        try {
+            this.save(target);
+            adwebEnquiryFormService.save(form);
 
-            } catch (Exception e) {
-                log.error("站点为:{},  recordId为:{} 保存询盘到数据库失败,原因是:{}", adwebSite.getName(), enquiryDto.getRecordId(), e.getMessage());
-            }
+        } catch (Exception e) {
+            log.error("站点为:{},  recordId为:{} 保存询盘到数据库失败,原因是:{}", adwebSite.getName(), enquiryDto.getRecordId(), e.getMessage());
+        }
 
-            // 给该站点所属的用户发送消息
-            AdwebSite targetSite = adwebSiteService.getSiteByCode(target.getSiteCode());
-            SysUser sysUser = sysUserService.getUserByName("admin");
-            SysUser demouser = sysUserService.getUserByName("adwebdemo");
-            String[] userIds = {targetSite.getUid(), sysUser.getId(), demouser.getId()};
+        // 给该站点所属的用户发送消息
+        AdwebSite targetSite = adwebSiteService.getSiteByCode(target.getSiteCode());
+        SysUser sysUser = sysUserService.getUserByName("admin");
+        SysUser demouser = sysUserService.getUserByName("adwebdemo");
+        String[] userIds = {targetSite.getUid(), sysUser.getId(), demouser.getId()};
 
-            // TODO 之后仅对有效询盘进行发送消息通知
-            webSocketService.sendMessage(userIds, "您已经收到询盘,请尽快处理", WebsocketConst.CMD_ENQUIRY);
+        // TODO 之后仅对有效询盘进行发送消息通知
+        webSocketService.sendMessage(userIds, "您已经收到询盘,请尽快处理", WebsocketConst.CMD_ENQUIRY);
 
 
-            // 发送询盘邮件
-            sendValidateEmail(adwebEnquiryList, adwebSite, principalEmailMap);
-        }
+        // 发送询盘邮件
+        sendValidateEmail(target, adwebSite, principalEmailMap);
     }
 
 
     /**
      * 发送询盘邮件
      *
-     * @param enquiryList       待发送询盘列表
+     * @param adwebEnquiry      待发送询盘列表
      * @param adwebSite         接收邮箱集合
      * @param principalEmailMap
      */
-    private void sendValidateEmail(List<AdwebEnquiry> enquiryList, AdwebSite adwebSite, Map<String, String> principalEmailMap) {
-        if (CollectionUtils.isEmpty(enquiryList)) {
-            log.info("未获取到需要发送邮件的询盘");
-            return;
-        }
-        log.info("需要发送邮件的询盘:{}", FastJsonUtil.toJSONString(enquiryList));
+    private void sendValidateEmail(AdwebEnquiry adwebEnquiry, AdwebSite adwebSite, Map<String, String> principalEmailMap) {
+        log.info("需要发送邮件的询盘:{}", FastJsonUtil.toJSONString(adwebEnquiry.getId()));
 
         //特殊站点发送邮件
         List<DictPropertyModel> siteRes = sysAdwebApiImpl.queryDictInfoByDictCode("turn_inquiry_site_code");
         if (CollectionUtils.isNotEmpty(siteRes) && siteRes.get(0).getValue().equals(adwebSite.getCode())) {
-            specialSendEmail(enquiryList, adwebSite);
+            log.info("该询盘:{}, 是特殊站点发送邮件", adwebEnquiry.getId());
+            specialSendEmail(adwebEnquiry, adwebSite);
         } else {
             String emailStr = adwebSite.getEnquiryEmailList();
             if (StringUtil.isEmpty(emailStr)) {
@@ -329,160 +323,157 @@ public class AdwebEnquiryServiceImpl extends ServiceImpl<AdwebEnquiryMapper, Adw
 
 
             List<EnquiryEmailMessage> enquiryEmailMessageList = new ArrayList<>();
-            for (AdwebEnquiry adwebEnquiry : enquiryList) {
-                if (adwebEnquiry.getWasteEnquiry() != 1 && adwebEnquiry.getStatus() != 0) {
-                    HashSet<String> emailSet = new HashSet<>();
-                    String priUid = adwebEnquiry.getPrincipalUid();
 
-                    if (principalEmailMap.isEmpty()) {
-                        for (String e : emailList) {
+            if (adwebEnquiry.getWasteEnquiry() != 1 && adwebEnquiry.getStatus() != 0) {
+                HashSet<String> emailSet = new HashSet<>();
+                String priUid = adwebEnquiry.getPrincipalUid();
+
+                if (principalEmailMap.isEmpty()) {
+                    for (String e : emailList) {
+                        if (emailSet.contains(e)) {
+                            continue;
+                        }
+                        enquiryEmailMessageList.add(newEmail(adwebEnquiry, e));
+                        emailSet.add(e);
+                    }
+                }
+                //1 如果选择发送全部 2.不是产品页面 全发
+                else if (StringUtil.isEmpty(adwebEnquiry.getPrincipalUid()) || adwebEnquiry.getExistProductEnquiry() == null || adwebEnquiry.getExistProductEnquiry() == 0 || adwebEnquiry.getPrincipalUid().equals("ALL")) {
+                    if (adwebSite.getEnquirySendEmailType().equals("ALL")) {
+                        log.info("发送询盘邮件--不是产品--进行所有账号发送规则");
+                        for (String e : principalEmailMap.values()) {
                             if (emailSet.contains(e)) {
                                 continue;
                             }
                             enquiryEmailMessageList.add(newEmail(adwebEnquiry, e));
                             emailSet.add(e);
                         }
-                    }
-                    //1 如果选择发送全部 2.不是产品页面 全发
-                    else if (StringUtil.isEmpty(adwebEnquiry.getPrincipalUid()) || adwebEnquiry.getExistProductEnquiry() == null || adwebEnquiry.getExistProductEnquiry() == 0 || adwebEnquiry.getPrincipalUid().equals("ALL")) {
-                        if (adwebSite.getEnquirySendEmailType().equals("ALL")) {
-                            log.info("发送询盘邮件--不是产品--进行所有账号发送规则");
-                            for (String e : principalEmailMap.values()) {
-                                if (emailSet.contains(e)) {
-                                    continue;
+                    } else {
+                        //询盘邮件规则 主账号和添加了的负责人,如果负责人选择了all取所有人
+                        log.info("发送询盘邮件--不是产品--进行只有主账号发送规则--负责人不为all");
+                        if (!"ALL".equals(adwebEnquiry.getPrincipalUid())) {
+                            //主账号
+                            SysUser masterUserAccount = sysUserService.getById(adwebEnquiry.getUid());
+                            if (masterUserAccount != null && StringUtils.isNotBlank(masterUserAccount.getEmail())) {
+                                emailSet.add(masterUserAccount.getEmail());
+                                enquiryEmailMessageList.add(newEmail(adwebEnquiry, masterUserAccount.getEmail()));
+                            }
+                            //负责人
+                            for (String key : principalEmailMap.keySet()) {
+                                if (adwebEnquiry.getPrincipalUid().equals(key) && !emailSet.contains(principalEmailMap.get(key))) {
+                                    enquiryEmailMessageList.add(newEmail(adwebEnquiry, principalEmailMap.get(key)));
+                                    emailSet.add(principalEmailMap.get(key));
                                 }
-                                enquiryEmailMessageList.add(newEmail(adwebEnquiry, e));
-                                emailSet.add(e);
                             }
                         } else {
-                            //询盘邮件规则 主账号和添加了的负责人,如果负责人选择了all取所有人
-                            log.info("发送询盘邮件--不是产品--进行只有主账号发送规则--负责人不为all");
-                            if (!"ALL".equals(adwebEnquiry.getPrincipalUid())) {
+                            //判断是否走同步询盘,同步询盘不进行全部处理
+                            log.info("发送询盘邮件--不是产品--进行只有主账号发送规则--负责人为all");
+                            if (StringUtil.isEmpty(adwebEnquiry.getIsEnquirySync())) {
+                                for (String e : principalEmailMap.values()) {
+                                    if (emailSet.contains(e)) {
+                                        continue;
+                                    }
+                                    enquiryEmailMessageList.add(newEmail(adwebEnquiry, e));
+                                    emailSet.add(e);
+                                }
+                            } else {
                                 //主账号
                                 SysUser masterUserAccount = sysUserService.getById(adwebEnquiry.getUid());
                                 if (masterUserAccount != null && StringUtils.isNotBlank(masterUserAccount.getEmail())) {
                                     emailSet.add(masterUserAccount.getEmail());
                                     enquiryEmailMessageList.add(newEmail(adwebEnquiry, masterUserAccount.getEmail()));
                                 }
-                                //负责人
-                                for (String key : principalEmailMap.keySet()) {
-                                    if (adwebEnquiry.getPrincipalUid().equals(key) && !emailSet.contains(principalEmailMap.get(key))) {
-                                        enquiryEmailMessageList.add(newEmail(adwebEnquiry, principalEmailMap.get(key)));
-                                        emailSet.add(principalEmailMap.get(key));
-                                    }
-                                }
-                            } else {
-                                //判断是否走同步询盘,同步询盘不进行全部处理
-                                log.info("发送询盘邮件--不是产品--进行只有主账号发送规则--负责人为all");
-                                if (StringUtil.isEmpty(adwebEnquiry.getIsEnquirySync())) {
-                                    for (String e : principalEmailMap.values()) {
-                                        if (emailSet.contains(e)) {
-                                            continue;
-                                        }
-                                        enquiryEmailMessageList.add(newEmail(adwebEnquiry, e));
-                                        emailSet.add(e);
-                                    }
-                                } else {
-                                    //主账号
-                                    SysUser masterUserAccount = sysUserService.getById(adwebEnquiry.getUid());
-                                    if (masterUserAccount != null && StringUtils.isNotBlank(masterUserAccount.getEmail())) {
-                                        emailSet.add(masterUserAccount.getEmail());
-                                        enquiryEmailMessageList.add(newEmail(adwebEnquiry, masterUserAccount.getEmail()));
-                                    }
-                                }
-                            }
-                        }
-                        for (String e : emailList) {
-                            if (emailSet.contains(e)) {
-                                continue;
-                            }
-                            enquiryEmailMessageList.add(newEmail(adwebEnquiry, e));
-                            emailSet.add(e);
-                        }
-                    }
-                    //当主站为空
-                    else if (StringUtil.isEmpty(principalEmailMap.get(adwebEnquiry.getUid())) && adwebEnquiry.getExistProductEnquiry() == 1) {
-                        log.info("发送询盘邮件--产品询盘--当主站为空");
-                        String email = principalEmailMap.get(priUid);
-                        List<String> subSiteEmailList = null;
-                        if (StringUtils.isNotBlank(email)) {
-                            enquiryEmailMessageList.add(newEmail(adwebEnquiry, email));
-                            emailSet.add(email);
-                            //筛选出子站点,不给子站点发,给配置询盘的地方发
-                            subSiteEmailList = principalEmailMap.entrySet()
-                                    .stream()
-                                    .filter(entry -> !email.equals(entry.getKey()))
-                                    .map(Map.Entry::getValue)
-                                    .collect(Collectors.toList());
-                        } else {
-                            subSiteEmailList = new ArrayList<>(principalEmailMap.values());
-                        }
-
-
-                        //遍历emailList 不包含subSiteEmailList
-                        for (String e : emailList) {
-                            if (subSiteEmailList.contains(e) || emailSet.contains(e)) {
-                                continue;
                             }
-                            enquiryEmailMessageList.add(newEmail(adwebEnquiry, e));
-                            emailSet.add(e);
                         }
                     }
-                    //如果当前询盘配置的为子账户 则给子账户和主账户发
-                    else if (adwebEnquiry.getExistProductEnquiry() == 1 && !adwebEnquiry.getUid().equals(priUid)) {
-                        log.info("发送询盘邮件--产品询盘--如果当前询盘配置的为子账户 则给子账户和主账户发");
-                        String email = principalEmailMap.get(priUid);
-                        if (StringUtils.isNotBlank(email)) {
-                            enquiryEmailMessageList.add(newEmail(adwebEnquiry, email));
-                            emailSet.add(email);
-                        }
-
-                        //给主账户发
-                        String masterEmail = principalEmailMap.get(adwebEnquiry.getUid());
-                        if (emailSet.contains(masterEmail)) {
+                    for (String e : emailList) {
+                        if (emailSet.contains(e)) {
                             continue;
                         }
-                        enquiryEmailMessageList.add(newEmail(adwebEnquiry, masterEmail));
-                        emailSet.add(masterEmail);
-
+                        enquiryEmailMessageList.add(newEmail(adwebEnquiry, e));
+                        emailSet.add(e);
+                    }
+                }
+                //当主站为空
+                else if (StringUtil.isEmpty(principalEmailMap.get(adwebEnquiry.getUid())) && adwebEnquiry.getExistProductEnquiry() == 1) {
+                    log.info("发送询盘邮件--产品询盘--当主站为空");
+                    String email = principalEmailMap.get(priUid);
+                    List<String> subSiteEmailList = null;
+                    if (StringUtils.isNotBlank(email)) {
+                        enquiryEmailMessageList.add(newEmail(adwebEnquiry, email));
+                        emailSet.add(email);
                         //筛选出子站点,不给子站点发,给配置询盘的地方发
-                        List<String> subSiteEmailList = principalEmailMap.entrySet()
+                        subSiteEmailList = principalEmailMap.entrySet()
                                 .stream()
-                                .filter(entry -> !Arrays.asList(email, masterEmail).contains(entry.getKey()))
+                                .filter(entry -> !email.equals(entry.getKey()))
                                 .map(Map.Entry::getValue)
                                 .collect(Collectors.toList());
+                    } else {
+                        subSiteEmailList = new ArrayList<>(principalEmailMap.values());
+                    }
 
-                        //遍历emailList 不包含subSiteEmailList
-                        for (String e : emailList) {
-                            if (subSiteEmailList.contains(e) || emailSet.contains(e)) {
-                                continue;
-                            }
-                            enquiryEmailMessageList.add(newEmail(adwebEnquiry, e));
-                            emailSet.add(e);
+
+                    //遍历emailList 不包含subSiteEmailList
+                    for (String e : emailList) {
+                        if (subSiteEmailList.contains(e) || emailSet.contains(e)) {
+                            continue;
                         }
+                        enquiryEmailMessageList.add(newEmail(adwebEnquiry, e));
+                        emailSet.add(e);
                     }
-                    //如果当前询盘配置的为主账户 则只给主账户发 //还有一种情况 子账户为空 只给主站发
-                    else if (adwebEnquiry.getUid().equals(priUid) && adwebEnquiry.getExistProductEnquiry() == 1) {
-                        log.info("发送询盘邮件--产品询盘--如果当前询盘配置的为主账户 则只给主账户发 //还有一种情况 子账户为空 只给主站发");
-                        String email = principalEmailMap.get(priUid);
+                }
+                //如果当前询盘配置的为子账户 则给子账户和主账户发
+                else if (adwebEnquiry.getExistProductEnquiry() == 1 && !adwebEnquiry.getUid().equals(priUid)) {
+                    log.info("发送询盘邮件--产品询盘--如果当前询盘配置的为子账户 则给子账户和主账户发");
+                    String email = principalEmailMap.get(priUid);
+                    if (StringUtils.isNotBlank(email)) {
                         enquiryEmailMessageList.add(newEmail(adwebEnquiry, email));
                         emailSet.add(email);
+                    }
 
-                        //筛选出子站点,不给子站点发,给配置询盘的地方发
-                        List<String> subSiteEmailList = principalEmailMap.entrySet()
-                                .stream()
-                                .filter(entry -> !entry.getKey().equals(priUid))
-                                .map(Map.Entry::getValue)
-                                .collect(Collectors.toList());
+                    //给主账户发
+                    String masterEmail = principalEmailMap.get(adwebEnquiry.getUid());
 
-                        //遍历emailList 不包含subSiteEmailList
-                        for (String e : emailList) {
-                            if (subSiteEmailList.contains(e) || emailSet.contains(e)) {
-                                continue;
-                            }
-                            enquiryEmailMessageList.add(newEmail(adwebEnquiry, e));
-                            emailSet.add(e);
+                    enquiryEmailMessageList.add(newEmail(adwebEnquiry, masterEmail));
+                    emailSet.add(masterEmail);
+
+                    //筛选出子站点,不给子站点发,给配置询盘的地方发
+                    List<String> subSiteEmailList = principalEmailMap.entrySet()
+                            .stream()
+                            .filter(entry -> !Arrays.asList(email, masterEmail).contains(entry.getKey()))
+                            .map(Map.Entry::getValue)
+                            .toList();
+
+                    //遍历emailList 不包含subSiteEmailList
+                    for (String e : emailList) {
+                        if (subSiteEmailList.contains(e) || emailSet.contains(e)) {
+                            continue;
+                        }
+                        enquiryEmailMessageList.add(newEmail(adwebEnquiry, e));
+                        emailSet.add(e);
+                    }
+                }
+                //如果当前询盘配置的为主账户 则只给主账户发 //还有一种情况 子账户为空 只给主站发
+                else if (adwebEnquiry.getUid().equals(priUid) && adwebEnquiry.getExistProductEnquiry() == 1) {
+                    log.info("发送询盘邮件--产品询盘--如果当前询盘配置的为主账户 则只给主账户发 //还有一种情况 子账户为空 只给主站发");
+                    String email = principalEmailMap.get(priUid);
+                    enquiryEmailMessageList.add(newEmail(adwebEnquiry, email));
+                    emailSet.add(email);
+
+                    //筛选出子站点,不给子站点发,给配置询盘的地方发
+                    List<String> subSiteEmailList = principalEmailMap.entrySet()
+                            .stream()
+                            .filter(entry -> !entry.getKey().equals(priUid))
+                            .map(Map.Entry::getValue)
+                            .toList();
+
+                    //遍历emailList 不包含subSiteEmailList
+                    for (String e : emailList) {
+                        if (subSiteEmailList.contains(e) || emailSet.contains(e)) {
+                            continue;
                         }
+                        enquiryEmailMessageList.add(newEmail(adwebEnquiry, e));
+                        emailSet.add(e);
                     }
                 }
             }
@@ -523,10 +514,10 @@ public class AdwebEnquiryServiceImpl extends ServiceImpl<AdwebEnquiryMapper, Adw
     /**
      * 特殊账号发送邮件
      *
-     * @param enquiryList
+     * @param adwebEnquiry
      * @param adwebSite
      */
-    public void specialSendEmail(List<AdwebEnquiry> enquiryList, AdwebSite adwebSite) {
+    public void specialSendEmail(AdwebEnquiry adwebEnquiry, AdwebSite adwebSite) {
         //通过主账号id获取子账号id集合
         List<String> idList = masterSubAccountRelationService.getSubAccountIdByMaster(adwebSite.getUid());
 
@@ -540,58 +531,56 @@ public class AdwebEnquiryServiceImpl extends ServiceImpl<AdwebEnquiryMapper, Adw
         List<SysUser> sysUsers = sysUserService.list(sysUserQueryWrapper);
 
 
-        for (AdwebEnquiry adwebEnquiry : enquiryList) {
-            List<EnquiryEmailMessage> enquiryEmailMessageList = new ArrayList<>();
-            if (adwebEnquiry.getWasteEnquiry() != 1 && adwebEnquiry.getStatus() != 0) {
-                //当前发送邮件的账号
-                SysUser sysUser = new SysUser();
-
-                //如果没有子账号,则只给主账号发送邮件
-                if (CollectionUtils.isEmpty(sysUsers)) {
-                    //获取主账号
-                    SysUser mainUser = sysUserService.getById(adwebSite.getUid());
-                    //主账号邮件信息添加
-                    if (mainUser != null && StringUtils.isNotBlank(mainUser.getEmail())) {
-                        enquiryEmailMessageList.add(newEmail(adwebEnquiry, mainUser.getEmail()));
-                    }
+        List<EnquiryEmailMessage> enquiryEmailMessageList = new ArrayList<>();
+        if (adwebEnquiry.getWasteEnquiry() != 1 && adwebEnquiry.getStatus() != 0) {
+            //当前发送邮件的账号
+            SysUser sysUser = new SysUser();
+
+            //如果没有子账号,则只给主账号发送邮件
+            if (CollectionUtils.isEmpty(sysUsers)) {
+                //获取主账号
+                SysUser mainUser = sysUserService.getById(adwebSite.getUid());
+                //主账号邮件信息添加
+                if (mainUser != null && StringUtils.isNotBlank(mainUser.getEmail())) {
+                    enquiryEmailMessageList.add(newEmail(adwebEnquiry, mainUser.getEmail()));
                 }
+            }
 
-                enquiryEmailMessageList.forEach(e -> System.out.println(e.getEmail()));
-
-                log.info("需要添加的询盘邮件:{}", FastJsonUtil.toJSONString(enquiryEmailMessageList));
-                if (CollectionUtils.isNotEmpty(enquiryEmailMessageList)) {
-                    QueryWrapper<EnquiryEmailMessage> enquiryEmailMessageQueryWrapper = new QueryWrapper<>();
-                    enquiryEmailMessageQueryWrapper.eq("site_code", adwebSite.getCode());
-                    List<EnquiryEmailMessage> enquiryEmailMessages = enquiryEmailMessageService.list(enquiryEmailMessageQueryWrapper);
-                    List<EnquiryEmailMessage> sameEnquiryEmailMessageList = new ArrayList<>();
-                    if (CollectionUtils.isNotEmpty(enquiryEmailMessages)) {
-                        for (EnquiryEmailMessage enquiryEmailMessage : enquiryEmailMessages) {
-                            for (EnquiryEmailMessage enquiryEmailMessage1 : enquiryEmailMessageList) {
-                                if (enquiryEmailMessage.getEnquiryId().equals(enquiryEmailMessage1.getEnquiryId()) && enquiryEmailMessage.getEmail().equals(enquiryEmailMessage1.getEmail())) {
-                                    sameEnquiryEmailMessageList.add(enquiryEmailMessage1);
-                                }
+            enquiryEmailMessageList.forEach(e -> System.out.println(e.getEmail()));
+
+            log.info("需要添加的询盘邮件:{}", FastJsonUtil.toJSONString(enquiryEmailMessageList));
+            if (CollectionUtils.isNotEmpty(enquiryEmailMessageList)) {
+                QueryWrapper<EnquiryEmailMessage> enquiryEmailMessageQueryWrapper = new QueryWrapper<>();
+                enquiryEmailMessageQueryWrapper.eq("site_code", adwebSite.getCode());
+                List<EnquiryEmailMessage> enquiryEmailMessages = enquiryEmailMessageService.list(enquiryEmailMessageQueryWrapper);
+                List<EnquiryEmailMessage> sameEnquiryEmailMessageList = new ArrayList<>();
+                if (CollectionUtils.isNotEmpty(enquiryEmailMessages)) {
+                    for (EnquiryEmailMessage enquiryEmailMessage : enquiryEmailMessages) {
+                        for (EnquiryEmailMessage enquiryEmailMessage1 : enquiryEmailMessageList) {
+                            if (enquiryEmailMessage.getEnquiryId().equals(enquiryEmailMessage1.getEnquiryId()) && enquiryEmailMessage.getEmail().equals(enquiryEmailMessage1.getEmail())) {
+                                sameEnquiryEmailMessageList.add(enquiryEmailMessage1);
                             }
                         }
-                        enquiryEmailMessageList.removeAll(sameEnquiryEmailMessageList);
                     }
-                    log.info("最终添加的询盘邮件:{}", FastJsonUtil.toJSONString(enquiryEmailMessageList));
-                    enquiryEmailMessageService.saveBatch(enquiryEmailMessageList);
-                    try {
-                        for (EnquiryEmailMessage message : enquiryEmailMessageList) {
-                            ObjectMapper objectMapper = new ObjectMapper();
-                            JedisUtil.lpush(redisKey, objectMapper.writeValueAsBytes(message.getEnquiryId()));
-                            JedisUtil.publishMsg(EnquiryConstants.ENQUIRY_EMAIL_CHANNEL, EnquiryConstants.ENQUIRY_EMAIL);
-                        }
-                        SysUser user = sysUserService.getById(adwebEnquiry.getPrincipalUid());
-                        if (StringUtils.isNotBlank(adwebEnquiry.getRecordId())) {
-                            returnSalesperson(adwebSite.getCode(), adwebEnquiry.getRecordId(), user.getUsername());
-                        }
-                    } catch (Exception e) {
-                        log.info("推送发送询盘邮件的消息失败", e);
+                    enquiryEmailMessageList.removeAll(sameEnquiryEmailMessageList);
+                }
+                log.info("最终添加的询盘邮件:{}", FastJsonUtil.toJSONString(enquiryEmailMessageList));
+                enquiryEmailMessageService.saveBatch(enquiryEmailMessageList);
+                try {
+                    for (EnquiryEmailMessage message : enquiryEmailMessageList) {
+                        ObjectMapper objectMapper = new ObjectMapper();
+                        JedisUtil.lpush(redisKey, objectMapper.writeValueAsBytes(message.getEnquiryId()));
+                        JedisUtil.publishMsg(EnquiryConstants.ENQUIRY_EMAIL_CHANNEL, EnquiryConstants.ENQUIRY_EMAIL);
+                    }
+                    SysUser user = sysUserService.getById(adwebEnquiry.getPrincipalUid());
+                    if (StringUtils.isNotBlank(adwebEnquiry.getRecordId())) {
+                        returnSalesperson(adwebSite.getCode(), adwebEnquiry.getRecordId(), user.getUsername());
                     }
+                } catch (Exception e) {
+                    log.info("推送发送询盘邮件的消息失败", e);
                 }
-
             }
+
         }
     }
 
@@ -851,7 +840,7 @@ public class AdwebEnquiryServiceImpl extends ServiceImpl<AdwebEnquiryMapper, Adw
     }
 
     /**
-     * 判断邮件是否是垃圾询盘
+     * 判断邮件是否是垃圾询盘 =》 基于站点黑名单
      * 1、邮件过滤
      * 2、根据邮件是否包含外部url过滤
      * 3、根据关键词过滤
@@ -1892,7 +1881,11 @@ public class AdwebEnquiryServiceImpl extends ServiceImpl<AdwebEnquiryMapper, Adw
 
                         }
                     }
-                    sendValidateEmail(enquiryList, adwebSite, principalEmailMap);
+
+                    for (AdwebEnquiry adwebEnquiry : enquiryList) {
+                        sendValidateEmail(adwebEnquiry, adwebSite, principalEmailMap);
+                    }
+
                 }
             }
         } catch (Exception e) {

+ 20 - 27
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/enquiry/service/impl/EnquiryEmailMessageServiceImpl.java

@@ -6,12 +6,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.io.Resources;
 import jakarta.annotation.Resource;
 import lombok.Data;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.jeecg.common.api.vo.Result;
-import org.jeecg.common.system.vo.DictModel;
 import org.jeecg.common.util.FastJsonUtil;
 import org.jeecg.modules.adweb.common.service.FeishuService;
 import org.jeecg.modules.adweb.common.util.AdwebRedisUtil;
@@ -37,8 +37,9 @@ import org.jeecg.modules.system.service.ISysUserService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Lazy;
 import org.springframework.stereotype.Service;
-import org.springframework.web.servlet.ModelAndView;
 
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -186,29 +187,21 @@ public class EnquiryEmailMessageServiceImpl extends ServiceImpl<EnquiryEmailMess
         sysExceptionService.save(exception);
     }
 
-    private String getEmailContent(long enquiryId) {
-        List<DictModel> dictModels = sysDictService.queryDictItemsByCode("enquiry_email_template");
-        ModelAndView headString = new ModelAndView();
-        headString.setViewName("announcement/showContent");
-
-
-        System.out.println(headString);
-
-        String head = "", item = "", tail = "";
-        for (DictModel dictModel : dictModels) {
-            if ("head".equals(dictModel.getText())) {
-                head = dictModel.getValue();
-            }
-            if ("item".equals(dictModel.getText())) {
-                item = dictModel.getValue();
-            }
-            if ("tail".equals(dictModel.getText())) {
-                tail = dictModel.getValue();
-            }
-        }
-
+    private String getEmailContent(long enquiryId) throws IOException {
+        String bodyTemplate =
+                Resources.toString(
+                        Objects.requireNonNull(this.getClass()
+                                .getClassLoader()
+                                .getResource("enquiry/email/body.tmpl")),
+                        StandardCharsets.UTF_8);
+
+        String itemTemplate =
+                Resources.toString(
+                        Objects.requireNonNull(this.getClass()
+                                .getClassLoader()
+                                .getResource("enquiry/email/item.tmpl")),
+                        StandardCharsets.UTF_8);
         StringBuilder content = new StringBuilder();
-        content.append(head);
 
         AdwebEnquiryForm adwebEnquiryForm = adwebEnquiryFormService.getByEnquiryId(enquiryId);
 
@@ -220,7 +213,7 @@ public class EnquiryEmailMessageServiceImpl extends ServiceImpl<EnquiryEmailMess
             EnquiryFormItem enquiryFormItem = formItems.get(i);
             String formItemName = enquiryFormItem.getName();
             String formItemValue = enquiryFormItem.getValue();
-            String item1 = new String(item);
+            String item1 = itemTemplate;
             item1 = item1.replace("{{title}}", formItemName);
             item1 = item1.replace("{{content}}", formItemValue == null || formItemValue == "" ? " " : formItemValue);
             if (i == 0) {
@@ -228,8 +221,8 @@ public class EnquiryEmailMessageServiceImpl extends ServiceImpl<EnquiryEmailMess
             }
             content.append(item1);
         }
-        content.append(tail);
-        return content.toString();
+
+        return bodyTemplate.replace("{{items_content}}", content.toString());
     }
 
     /**

+ 2 - 4
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/listener/EnquiryEmailSenderListener.java

@@ -1,5 +1,6 @@
 package org.jeecg.modules.adweb.listener;
 
+import lombok.Setter;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.modules.adweb.common.Jedis.ObjectUtil;
 import org.jeecg.modules.adweb.common.util.JedisUtil;
@@ -7,6 +8,7 @@ import org.jeecg.modules.adweb.enquiry.constant.EnquiryConstants;
 import org.jeecg.modules.adweb.enquiry.service.IEnquiryEmailMessageService;
 import redis.clients.jedis.JedisPubSub;
 
+@Setter
 @Slf4j
 public class EnquiryEmailSenderListener extends JedisPubSub {
 
@@ -14,10 +16,6 @@ public class EnquiryEmailSenderListener extends JedisPubSub {
 
     private IEnquiryEmailMessageService enquiryEmailMessageService;
 
-    public void setEnquiryEmailMessageService(IEnquiryEmailMessageService enquiryEmailMessageService) {
-        this.enquiryEmailMessageService = enquiryEmailMessageService;
-    }
-
     // 取得订阅的消息后的处理
     @Override
     public void onMessage(String channel, String message) {

+ 19 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/config/AsyncConfig.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.config;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
+
+@Configuration
+public class AsyncConfig {
+    @Bean(name = "taskExecutor")
+    public ThreadPoolTaskExecutor taskExecutor() {
+        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
+        executor.setCorePoolSize(4);
+        executor.setMaxPoolSize(8);
+        executor.setQueueCapacity(500);
+        executor.setThreadNamePrefix("Async-");
+        executor.initialize();
+        return executor;
+    }
+}

+ 285 - 0
jeecg-module-system/jeecg-system-biz/src/main/resources/enquiry/email/body.tmpl

@@ -0,0 +1,285 @@
+<div>
+    <div id="isForwardContent">
+        <div dir="ltr">
+            <style type="text/css">                 p {
+                margin: 10px 0;
+                padding: 0;
+            }
+
+            table {
+                border-collapse: collapse;
+            }
+
+            h1, h2, h3, h4, h5, h6 {
+                display: block;
+                margin: 0;
+                padding: 0;
+            }
+
+            img, a img {
+                border: 0;
+                height: auto;
+                outline: none;
+                text-decoration: none;
+            }
+
+            body, #bodyTable, #bodyCell {
+                height: 100%;
+                margin: 0;
+                padding: 0;
+                width: 100%;
+            }
+
+            #outlook a {
+                padding: 0;
+            }
+
+            img {
+                -ms-interpolation-mode: bicubic;
+            }
+
+            table {
+                mso-table-lspace: 0pt;
+                mso-table-rspace: 0pt;
+            }
+
+            .ReadMsgBody {
+                width: 100%;
+            }
+
+            .ExternalClass {
+                width: 100%;
+            }
+
+            p, a, li, td, blockquote {
+                mso-line-height-rule: exactly;
+            }
+
+            a[href^=tel], a[href^=sms] {
+                color: inherit;
+                cursor: default;
+                text-decoration: none;
+            }
+
+            p, a, li, td, body, table, blockquote {
+                -ms-text-size-adjust: 100%;
+                -webkit-text-size-adjust: 100%;
+            }
+
+            .ExternalClass, .ExternalClass p, .ExternalClass td, .ExternalClass div, .ExternalClass span, .ExternalClass font {
+                line-height: 100%;
+            }
+
+            a[x-apple-data-detectors] {
+                color: inherit !important;
+                text-decoration: none !important;
+                font-size: inherit !important;
+                font-family: inherit !important;
+                font-weight: inherit !important;
+                line-height: inherit !important;
+            }
+
+            #bodyCell {
+                padding: 50px 50px;
+            }
+
+            .templateContainer {
+                max-width: 600px !important;
+                border: 0;
+            }
+
+            a.mcnButton {
+                display: block;
+            }
+
+            .mcnTextContent {
+                word-break: break-word;
+            }
+
+            .mcnTextContent img {
+                height: auto !important;
+            }
+
+            .mcnDividerBlock {
+                table-layout: fixed !important;
+            }
+
+            body, #bodyTable {
+                background-color: #e9eaec;
+            }
+
+            h1 {
+                color: #202020;
+                font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;
+                font-size: 26px;
+                font-style: normal;
+                font-weight: bold;
+                line-height: 125%;
+                letter-spacing: normal;
+            }
+
+            h2 {
+                color: #202020;
+                font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;
+                font-size: 22px;
+                font-style: normal;
+                font-weight: bold;
+                line-height: 125%;
+                letter-spacing: normal;
+            }
+
+            h3 {
+                color: #202020;
+                font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;
+                font-size: 20px;
+                font-style: normal;
+                font-weight: bold;
+                line-height: 125%;
+                letter-spacing: normal;
+            }
+
+            h4 {
+                color: #202020;
+                font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;
+                font-size: 18px;
+                font-style: normal;
+                font-weight: bold;
+                line-height: 125%;
+                letter-spacing: normal;
+            }
+
+            #templateHeader {
+                border-top: 0;
+                border-bottom: 0;
+                padding-top: 0;
+                padding-bottom: 20px;
+                text-align: center;
+            }
+
+            #templateBody {
+                background-color: #FFFFFF;
+                border-top: 0;
+                border: 1px solid #c1c1c1;
+                padding-top: 0;
+                padding-bottom: 0px;
+            }
+
+            #templateBody .mcnTextContent, #templateBody .mcnTextContent p {
+                color: #555555;
+                font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;
+                font-size: 14px;
+                line-height: 150%;
+            }
+
+            #templateBody .mcnTextContent a, #templateBody .mcnTextContent p a {
+                color: #ff7f50;
+                font-weight: normal;
+                text-decoration: underline;
+            }
+
+            #templateFooter {
+                background-color: #e9eaec;
+                border-top: 0;
+                border-bottom: 0;
+                padding-top: 12px;
+                padding-bottom: 12px;
+            }
+
+            #templateFooter .mcnTextContent, #templateFooter .mcnTextContent p {
+                color: #cccccc;
+                font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif;
+                font-size: 12px;
+                line-height: 150%;
+                text-align: center;
+            }
+
+            #templateFooter .mcnTextContent a, #templateFooter .mcnTextContent p a {
+                color: #cccccc;
+                font-weight: normal;
+                text-decoration: underline;
+            }
+
+            @media only screen and (min-width: 768px) {
+                .templateContainer {
+                    width: 600px !important;
+                }
+            }
+
+            @media only screen and (max-width: 480px) {
+                body, table, td, p, a, li, blockquote {
+                    -webkit-text-size-adjust: none !important;
+                }
+            }
+
+            @media only screen and (max-width: 480px) {
+                body {
+                    width: 100% !important;
+                    min-width: 100% !important;
+                }
+            }
+
+            @media only screen and (max-width: 680px) {
+                #bodyCell {
+                    padding: 20px 20px !important;
+                }
+            }
+
+            @media only screen and (max-width: 480px) {
+                .mcnTextContentContainer {
+                    max-width: 100% !important;
+                    width: 100% !important;
+                }
+            }             </style>
+            <div style="height: 100%;margin: 0;padding: 0;width: 100%;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;background-color: #e9eaec;">
+                <center>
+                    <table align="center" border="0" cellpadding="0" cellspacing="0" height="100%" width="100%"
+                           id="bodyTable"
+                           style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;height: 100%;margin: 0;padding: 0;width: 100%;background-color: #e9eaec;">
+                        <tbody>
+                        <tr>
+                            <td align="center" valign="top" id="bodyCell"
+                                style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;height: 100%;margin: 0;padding: 50px 50px;width: 100%;">
+                                <table border="0" cellpadding="0" cellspacing="0" width="100%" class="templateContainer"
+                                       style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;border: 0;max-width: 600px !important;">
+                                    <tbody>
+                                    <tr>
+                                        <td valign="top" id="templateBody"
+                                            style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;background-color: #FFFFFF;border-top: 0;border: 1px solid #c1c1c1;padding-top: 0;padding-bottom: 0px;">
+                                            <table border="0" cellpadding="0" cellspacing="0" width="100%"
+                                                   class="mcnTextBlock"
+                                                   style="min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
+                                                <tbody class="mcnTextBlockOuter">
+                                                <tr>
+                                                    <td valign="top" class="mcnTextBlockInner"
+                                                        style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
+                                                        <table align="left" border="0" cellpadding="0" cellspacing="0"
+                                                               width="100%"
+                                                               style="min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;"
+                                                               class="mcnTextContentContainer">
+                                                            <tbody>
+                                                            <tr>
+                                                                <td valign="top"
+                                                                    style="padding-top: 30px;padding-right: 30px;padding-bottom: 30px;padding-left: 30px;"
+                                                                    class="mcnTextContent">
+                                                                    {{items_content}}
+                                                                </td>
+                                                            </tr>
+                                                            </tbody>
+                                                        </table>
+                                                    </td>
+                                                </tr>
+                                                </tbody>
+                                            </table>
+                                        </td>
+                                    </tr>
+                                    </tbody>
+                                </table>
+                            </td>
+                        </tr>
+                        </tbody>
+                    </table>
+                </center>
+            </div>
+        </div>
+    </div>
+</div>

+ 11 - 0
jeecg-module-system/jeecg-system-biz/src/main/resources/enquiry/email/item.tmpl

@@ -0,0 +1,11 @@
+<table align="left" border="0" cellpadding="0" cellspacing="0" width="100%"
+       style="border-top:1px solid #dddddd; display:block;min-width: 100%;border-collapse: collapse;width:100%;">
+    <tbody>
+    <tr>
+        <td style="color:#333333;padding-top: 20px;padding-bottom: 3px;"><strong>{{title}}</strong></td>
+    </tr>
+    <tr>
+        <td style="color:#555555;padding-top: 3px;padding-bottom: 20px;"> {{content}}</td>
+    </tr>
+    </tbody>
+</table>

File diff suppressed because it is too large
+ 38650 - 38311
jeecg-module-system/jeecg-system-biz/src/main/resources/static/generic/build/pdf.worker.js


+ 1 - 1
jeecg-module-system/jeecg-system-start/src/main/resources/application-prod.yml

@@ -193,7 +193,7 @@ spring:
     port: 5672
     publisher-confirm-type: correlated
     publisher-returns: true
-    virtual-host: /adweb3-dev  # TODO 当前v3测试站点只给 /adweb3-dev 推送消息,之后上线之后这里在做修改
+    virtual-host: /adweb3
 #mybatis plus 设置
 mybatis-plus:
   mapper-locations: classpath*:org/jeecg/**/xml/*Mapper.xml

Some files were not shown because too many files changed in this diff