Browse Source

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

chenpeiqing 4 months ago
parent
commit
cb28fa626d

+ 19 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/common/Jedis/Message.java

@@ -0,0 +1,19 @@
+package org.jeecg.modules.adweb.common.Jedis;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+@Setter
+@Getter
+public class Message implements Serializable {
+    private int id;
+    private String content;
+
+    public Message(int id, String content) {
+        this.id = id;
+        this.content = content;
+    }
+
+}

+ 22 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/common/Jedis/ObjectUtil.java

@@ -0,0 +1,22 @@
+package org.jeecg.modules.adweb.common.Jedis;
+
+import java.io.*;
+
+public class ObjectUtil {
+
+    public static byte[] object2Bytes(Object obj) throws IOException {
+        ByteArrayOutputStream bo = new ByteArrayOutputStream();
+        ObjectOutputStream oo = new ObjectOutputStream(bo);
+        oo.writeObject(obj);
+        byte[] bytes = bo.toByteArray();
+        bo.close();
+        oo.close();
+        return bytes;
+    }
+
+    public static Object bytes2Object(byte[] bytes) throws Exception {
+        ByteArrayInputStream in = new ByteArrayInputStream(bytes);
+        ObjectInputStream sIn = new ObjectInputStream(in);
+        return sIn.readObject();
+    }
+}

+ 13 - 10
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/common/util/JedisUtil.java

@@ -15,20 +15,19 @@ public class JedisUtil {
         config.setTestOnBorrow(true);
         config.setTestOnReturn(true);
         config.setTestWhileIdle(true);
-        config.setMinEvictableIdleTimeMillis(60000L);
-        config.setTimeBetweenEvictionRunsMillis(3000L);
         config.setNumTestsPerEvictionRun(-1);
-        if(jedisPassword == null || "".equals(jedisPassword)){
-            jedisPool=new JedisPool(config, jedisIp, jedisPort, 60000);
+        if (jedisPassword == null || jedisPassword.isEmpty()) {
+            jedisPool = new JedisPool(config, jedisIp, jedisPort, 60000);
         } else {
-            jedisPool=new JedisPool(config, jedisIp, jedisPort, 60000, jedisPassword);
+            jedisPool = new JedisPool(config, jedisIp, jedisPort, 60000, jedisPassword);
         }
     }
 
     /**
      * 存储REDIS队列 顺序存储
-     * @param  key reids键名
-     * @param  value 键值
+     *
+     * @param key   reids键名
+     * @param value 键值
      */
     public static void lpush(byte[] key, byte[] value) {
 
@@ -48,8 +47,9 @@ public class JedisUtil {
 
     /**
      * 存储REDIS队列 反向存储
-     * @param  key reids键名
-     * @param  value 键值
+     *
+     * @param key   reids键名
+     * @param value 键值
      */
     public static void rpush(byte[] key, byte[] value) {
 
@@ -69,7 +69,8 @@ public class JedisUtil {
 
     /**
      * 获取队列数据
-     * @param  key 键名
+     *
+     * @param key 键名
      * @return
      */
     public static byte[] rpop(byte[] key) {
@@ -92,6 +93,7 @@ public class JedisUtil {
 
     /**
      * 发送消息
+     *
      * @param channel
      * @param message
      */
@@ -112,6 +114,7 @@ public class JedisUtil {
 
     /**
      * 接收消息
+     *
      * @param jedisPubSub
      * @param channels
      */

+ 10 - 2
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/dmp/controller/GTMController.java

@@ -35,7 +35,7 @@ public class GTMController {
 
     @RequestMapping(value = "/add", method = RequestMethod.POST)
     @ResponseBody
-    public Result<Pair<String, String>> addContainer(String siteCode) {
+    public Result<AdwebSite> addContainer(String siteCode) {
         AdwebSite adwebSite = adwebSiteService.getSiteByCode(siteCode);
         if (Objects.isNull(adwebSite)) {
             return Result.error("站点未找到" + siteCode);
@@ -45,7 +45,15 @@ public class GTMController {
         GoogleGTM googleGTM =
                 gtmAdminService.createContainer(
                         adwebSite.getCode(), adwebSite.getDomain(), adwebSite.getName());
-        return Result.ok(gtmAdminService.getSnippets(googleGTM.getGtmTagId()));
+
+        Pair<String, String> snippets = gtmAdminService.getSnippets(googleGTM.getGtmTagId());
+
+
+        adwebSite.setGtmHead(snippets.getKey());
+        adwebSite.setGtmBody(snippets.getValue());
+        adwebSiteService.updateById(adwebSite);
+        
+        return Result.ok(adwebSite);
     }
 
     @RequestMapping(value = "/list", method = RequestMethod.GET)

+ 30 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/enquiry/service/EnquiryRedisService.java

@@ -0,0 +1,30 @@
+package org.jeecg.modules.adweb.enquiry.service;
+
+import org.jeecg.modules.adweb.common.util.JedisUtil;
+import org.jeecg.modules.adweb.listener.EnquiryEmailSenderListener;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.scheduling.annotation.Async;
+import org.springframework.stereotype.Service;
+
+@Service
+public class EnquiryRedisService {
+
+    @Value(value = "${spring.data.redis.host}")
+    private String JEDIS_IP;
+    @Value(value = "${spring.data.redis.port}")
+    private int JEDIS_PORT;
+    @Value(value = "${spring.data.redis.password:#{null}}")
+    private String JEDIS_PASSWORD;
+
+    public void init() {
+        JedisUtil.initJedisPool(JEDIS_IP, JEDIS_PORT, JEDIS_PASSWORD);
+    }
+
+    @Async
+    public void startEnquiryEmailMessageListener(String channel, IEnquiryEmailMessageService enquiryEmailMessageService) {
+        EnquiryEmailSenderListener listener = new EnquiryEmailSenderListener();
+        listener.setEnquiryEmailMessageService(enquiryEmailMessageService);
+        JedisUtil.subscribeMsg(listener, channel);
+    }
+
+}

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

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.xkcoding.http.util.StringUtil;
+import jakarta.annotation.PostConstruct;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
@@ -135,6 +136,9 @@ public class AdwebEnquiryServiceImpl extends ServiceImpl<AdwebEnquiryMapper, Adw
     @Resource
     private WebSocketService webSocketService;
 
+    @Resource
+    private EnquiryRedisService enquiryRedisService;
+
     private static final byte[] redisKey = EnquiryConstants.ENQUIRY_EMAIL.getBytes();
 
     private static final byte[] siteRedisKey = EnquiryConstants.ENQUIRY_SITE.getBytes();
@@ -184,6 +188,12 @@ public class AdwebEnquiryServiceImpl extends ServiceImpl<AdwebEnquiryMapper, Adw
     @Value("${judge_waste_enquiry.ip.notBlackListDate}")
     private Integer ipNotBlackListDate;
 
+    @PostConstruct
+    public void startEnquiryRedisListener() {
+        enquiryRedisService.init();
+        enquiryRedisService.startEnquiryEmailMessageListener(EnquiryConstants.ENQUIRY_EMAIL_CHANNEL, enquiryEmailMessageService);
+    }
+
     // 获取有效公共询盘规则
     private List<String> getPublicEnquiryRules(int blackOrWhite, int useStatus) {
 

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

@@ -1,17 +1,13 @@
 package org.jeecg.modules.adweb.enquiry.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
-
 import com.alibaba.fastjson.JSONObject;
 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 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;
@@ -41,6 +37,7 @@ 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.util.*;
 import java.util.stream.Collectors;
@@ -191,6 +188,12 @@ public class EnquiryEmailMessageServiceImpl extends ServiceImpl<EnquiryEmailMess
 
     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())) {
@@ -210,12 +213,8 @@ public class EnquiryEmailMessageServiceImpl extends ServiceImpl<EnquiryEmailMess
         AdwebEnquiryForm adwebEnquiryForm = adwebEnquiryFormService.getByEnquiryId(enquiryId);
 
         List<EnquiryFormItem> formItems = new ArrayList<>();
-        //wpforms
-        if("wpforms".equals(adwebEnquiryForm.getPluginName())){
-            formItems = dealWpformEnquiryForm(adwebEnquiryForm);
-        }else{
-            formItems = dealElementerEnquiryForm(adwebEnquiryForm);
-        }
+
+        formItems = dealWpformEnquiryForm(adwebEnquiryForm);
 
         for (int i = 0; i < formItems.size(); i++) {
             EnquiryFormItem enquiryFormItem = formItems.get(i);
@@ -249,51 +248,52 @@ public class EnquiryEmailMessageServiceImpl extends ServiceImpl<EnquiryEmailMess
 
     /**
      * 添加并发送询盘邮件
+     *
      * @param adwebEnquiry
      */
     @Override
-    public Result<?> addAndEnquiryEmailMsg(AdwebEnquiry adwebEnquiry, String uid){
+    public Result<?> addAndEnquiryEmailMsg(AdwebEnquiry adwebEnquiry, String uid) {
         //处理已有发送的询盘邮件
         List<String> emailList = new ArrayList<>();
-        if("ALL".equals(uid)){
+        if ("ALL".equals(uid)) {
             //获取子账户邮箱
             List<String> subAccountIdList = masterSubAccountRelationService.getSubAccountIdByMaster(String.valueOf(adwebEnquiry.getUid()));
             if (!subAccountIdList.isEmpty()) {
-                List<SysUser> principalEmailList = sysUserService.list(new QueryWrapper<SysUser>().in("id", subAccountIdList).eq("del_flag", 0).isNotNull("email").ne("email","").select("id", "email"));
+                List<SysUser> principalEmailList = sysUserService.list(new QueryWrapper<SysUser>().in("id", subAccountIdList).eq("del_flag", 0).isNotNull("email").ne("email", "").select("id", "email"));
                 if (CollectionUtils.isNotEmpty(principalEmailList)) {
                     emailList = principalEmailList.stream().map(SysUser::getEmail).collect(Collectors.toList());
                 }
             }
-        }else{
+        } else {
             SysUser sysUser = sysUserService.getById(adwebEnquiry.getPrincipalUid());
-            if(StringUtils.isNotBlank(sysUser.getEmail())){
+            if (StringUtils.isNotBlank(sysUser.getEmail())) {
                 emailList.add(sysUser.getEmail());
             }
         }
 
-        if(CollectionUtils.isNotEmpty(emailList)){
+        if (CollectionUtils.isNotEmpty(emailList)) {
             QueryWrapper<EnquiryEmailMessage> enquiryEmailMessageQueryWrapper = new QueryWrapper<>();
             enquiryEmailMessageQueryWrapper.eq("enquiry_id", adwebEnquiry.getId());
             enquiryEmailMessageQueryWrapper.eq("site_code", adwebEnquiry.getSiteCode());
-            enquiryEmailMessageQueryWrapper.in("email",emailList);
+            enquiryEmailMessageQueryWrapper.in("email", emailList);
             List<EnquiryEmailMessage> enquiryEmailMessageList = list(enquiryEmailMessageQueryWrapper);
 
-            if(CollectionUtils.isNotEmpty(enquiryEmailMessageList)){
+            if (CollectionUtils.isNotEmpty(enquiryEmailMessageList)) {
                 List<String> oldEmailList = enquiryEmailMessageList.stream().map(EnquiryEmailMessage::getEmail).collect(Collectors.toList());
                 List<String> noNeedEmailList = new ArrayList<>();
-                for(String email : emailList){
-                    if(oldEmailList.contains(email)){
+                for (String email : emailList) {
+                    if (oldEmailList.contains(email)) {
                         noNeedEmailList.add(email);
                     }
                 }
-                if(CollectionUtils.isNotEmpty(noNeedEmailList)){
+                if (CollectionUtils.isNotEmpty(noNeedEmailList)) {
                     emailList.removeAll(noNeedEmailList);
                 }
             }
 
-            if(CollectionUtils.isNotEmpty(emailList)){
+            if (CollectionUtils.isNotEmpty(emailList)) {
                 List<EnquiryEmailMessage> enquiryEmailMessageList1 = new ArrayList<>();
-                for (String email : emailList){
+                for (String email : emailList) {
                     EnquiryEmailMessage enquiryEmailMessage = new EnquiryEmailMessage();
                     enquiryEmailMessage.setEnquiryId(adwebEnquiry.getId());
                     enquiryEmailMessage.setSiteCode(adwebEnquiry.getSiteCode());
@@ -306,7 +306,7 @@ public class EnquiryEmailMessageServiceImpl extends ServiceImpl<EnquiryEmailMess
                 }
 
                 boolean result = saveBatch(enquiryEmailMessageList1);
-                if(result){
+                if (result) {
                     try {
                         ObjectMapper objectMapper = new ObjectMapper();
 
@@ -328,7 +328,7 @@ public class EnquiryEmailMessageServiceImpl extends ServiceImpl<EnquiryEmailMess
      * 处理询盘发送信息
      * wpform
      */
-    private List<EnquiryFormItem> dealWpformEnquiryForm(AdwebEnquiryForm adwebEnquiryForm){
+    private List<EnquiryFormItem> dealWpformEnquiryForm(AdwebEnquiryForm adwebEnquiryForm) {
         String form = adwebEnquiryForm.getForm();
         Map<String, JSONObject> formObj = FastJsonUtil.parseObject(form, Map.class);
         List<EnquiryFormItem> formItems = new ArrayList<>();
@@ -337,14 +337,14 @@ public class EnquiryEmailMessageServiceImpl extends ServiceImpl<EnquiryEmailMess
             JSONObject formItem = formObj.get(key);
             EnquiryFormItem enquiryFormItem = new EnquiryFormItem();
             enquiryFormItem.setSort(Integer.parseInt(key));
-            if("Country".equals(formItem.getString("name")) || "country".equals(formItem.getString("name"))){
+            if ("Country".equals(formItem.getString("name")) || "country".equals(formItem.getString("name"))) {
                 countryFlag = false;
             }
             enquiryFormItem.setName(formItem.getString("name"));
             enquiryFormItem.setValue(formItem.getString("value"));
             formItems.add(enquiryFormItem);
         }
-        if(countryFlag) {
+        if (countryFlag) {
             EnquiryFormItem countryForm = new EnquiryFormItem();
             countryForm.setSort(99);
             countryForm.setName("Country");
@@ -355,50 +355,6 @@ public class EnquiryEmailMessageServiceImpl extends ServiceImpl<EnquiryEmailMess
         formItems.sort(Comparator.comparingInt(EnquiryFormItem::getSort));
         return formItems;
     }
-
-    /**
-     * 处理询盘发送信息
-     * elementer
-     */
-    private List<EnquiryFormItem> dealElementerEnquiryForm(AdwebEnquiryForm adwebEnquiryForm){
-        String form = adwebEnquiryForm.getForm();
-        Map<String, String> formMap = FastJsonUtil.parseObject(form, Map.class);
-        List<EnquiryFormItem> formItems = new ArrayList<>();
-        for (String key : formMap.keySet()) {
-            String value = formMap.get(key);
-            EnquiryFormItem enquiryFormItem = new EnquiryFormItem();
-            if(key.contains("phone") || key.contains("Phone")){
-                enquiryFormItem.setSort(1);
-            }else if (key.contains("email") || key.contains("Email")){
-                enquiryFormItem.setSort(2);
-            }else if (key.contains("ip") || key.contains("Ip")){
-                enquiryFormItem.setSort(3);
-            }else if (key.contains("message") || key.contains("Message")){
-                enquiryFormItem.setSort(4);
-            }else if (key.contains("page") || key.contains("Page")){
-                enquiryFormItem.setSort(5);
-            }else if (key.contains("name") || key.contains("Name")){
-                enquiryFormItem.setSort(6);
-            }else if (key.contains("company") || key.contains("Company")){
-                enquiryFormItem.setSort(7);
-            }else {
-                enquiryFormItem.setSort(9);
-            }
-            enquiryFormItem.setName(key);
-            enquiryFormItem.setValue(value);
-            formItems.add(enquiryFormItem);
-        }
-
-        //国家信息
-        EnquiryFormItem countryForm = new EnquiryFormItem();
-        countryForm.setSort(8);
-        countryForm.setName("Country");
-        countryForm.setValue(adwebEnquiryForm.getCountry());
-        formItems.add(countryForm);
-
-        formItems.sort(Comparator.comparingInt(EnquiryFormItem::getSort));
-        return formItems;
-    }
 }
 
 

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

@@ -0,0 +1,65 @@
+package org.jeecg.modules.adweb.listener;
+
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.modules.adweb.common.Jedis.ObjectUtil;
+import org.jeecg.modules.adweb.common.util.JedisUtil;
+import org.jeecg.modules.adweb.enquiry.constant.EnquiryConstants;
+import org.jeecg.modules.adweb.enquiry.service.IEnquiryEmailMessageService;
+import redis.clients.jedis.JedisPubSub;
+
+@Slf4j
+public class EnquiryEmailSenderListener extends JedisPubSub {
+
+    public static byte[] redisKey = EnquiryConstants.ENQUIRY_EMAIL.getBytes();
+
+    private IEnquiryEmailMessageService enquiryEmailMessageService;
+
+    public void setEnquiryEmailMessageService(IEnquiryEmailMessageService enquiryEmailMessageService) {
+        this.enquiryEmailMessageService = enquiryEmailMessageService;
+    }
+
+    // 取得订阅的消息后的处理
+    @Override
+    public void onMessage(String channel, String message) {
+        log.info("redis订阅channel是:{}, message是:{}", channel, message);
+        try {
+            while (true) {
+                byte[] bytes = JedisUtil.rpop(redisKey);
+                if (bytes != null) {
+                    Long enquiryId = (Long) ObjectUtil.bytes2Object(bytes);
+                    enquiryEmailMessageService.sendEnquiryEmail(enquiryId);
+                } else {
+                    break;
+                }
+            }
+        } catch (Exception e) {
+            log.error("通过redis订阅服务发送邮件失败", e);
+        }
+    }
+
+    // 初始化订阅时候的处理
+    public void onSubscribe(String channel, int subscribedChannels) {
+        //log.info(channel + "=" + subscribedChannels);
+    }
+
+    // 取消订阅时候的处理
+    public void onUnsubscribe(String channel, int subscribedChannels) {
+        //log.info(channel + "=" + subscribedChannels);
+    }
+
+    // 初始化按表达式的方式订阅时候的处理
+    public void onPSubscribe(String pattern, int subscribedChannels) {
+        //log.info(pattern + "=" + subscribedChannels);
+    }
+
+    // 取消按表达式的方式订阅时候的处理
+    public void onPUnsubscribe(String pattern, int subscribedChannels) {
+        //log.info(pattern + "=" + subscribedChannels);
+    }
+
+    // 取得按表达式的方式订阅的消息后的处理
+    public void onPMessage(String pattern, String channel, String message) {
+
+    }
+
+}

+ 34 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/subscribePlan/controller/SubscribePlanController.java

@@ -1,5 +1,6 @@
 package org.jeecg.modules.adweb.subscribePlan.controller;
 
+import cn.hutool.core.util.RandomUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -20,6 +21,8 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.servlet.ModelAndView;
 
 import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
 
 /**
  * @Description: 网站营销方案套餐表
@@ -71,6 +74,22 @@ public class SubscribePlanController extends JeecgController<SubscribePlan, ISub
     @PreAuthorize("@jps.requiresPermissions('adweb:seo_market_plan:add')")
     @PostMapping(value = "/add")
     public Result<String> add(@RequestBody SubscribePlan subscribePlan) {
+
+        subscribePlan.setCreateTime(new Date());
+        QueryWrapper<SubscribePlan> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("market_type", subscribePlan.getMarketType());
+        queryWrapper.eq("plan_name", subscribePlan.getPlanName());
+        queryWrapper.ne("status", 0);
+        List<SubscribePlan> seoMarketPlans = seoMarketPlanService.list(queryWrapper);
+        if (!seoMarketPlans.isEmpty()) {
+            return Result.error("方案名称已存在!");
+        }
+        // 生成编码
+        subscribePlan.setPlanCode(subscribePlan.getMarketType() + getPlanCode());
+        if (subscribePlan.getKeywordCount() == null) {
+            subscribePlan.setKeywordCount(0);
+        }
+
         seoMarketPlanService.save(subscribePlan);
         return Result.OK("添加成功!");
     }
@@ -162,6 +181,21 @@ public class SubscribePlanController extends JeecgController<SubscribePlan, ISub
         return super.importExcel(request, response, SubscribePlan.class);
     }
 
+    /**
+     * 获取随机字符串作为planCode
+     *
+     * @Author: luxiaoxiao
+     * @Date: 2021/11/16
+     */
+    private String getPlanCode() {
+        String planCode = RandomUtil.randomStringUpper(4);
+        planCode = planCode.toUpperCase();
+        QueryWrapper<SubscribePlan> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("plan_code", planCode);
+        int count = (int) seoMarketPlanService.count(queryWrapper);
+        return count > 0 ? getPlanCode() : planCode;
+    }
+
 //	/**
 //	 * 物料完整性检测模板设置
 //	 *

+ 44 - 2
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/adweb/system/controller/SystemAdwebController.java

@@ -1,10 +1,18 @@
 package org.jeecg.modules.adweb.system.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
 import io.swagger.v3.oas.annotations.tags.Tag;
+import jakarta.annotation.PostConstruct;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.vo.Result;
+import org.jeecg.modules.adweb.common.Jedis.ObjectUtil;
+import org.jeecg.modules.adweb.common.util.JedisUtil;
+import org.jeecg.modules.adweb.enquiry.constant.EnquiryConstants;
+import org.jeecg.modules.adweb.enquiry.service.EnquiryRedisService;
+import org.jeecg.modules.adweb.enquiry.service.IEnquiryEmailMessageService;
 import org.jeecg.modules.adweb.system.service.SysAdwebApi;
 import org.jeecg.modules.system.entity.SysRole;
 import org.jeecg.modules.system.entity.SysUser;
@@ -16,16 +24,17 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.io.IOException;
 import java.util.List;
 import java.util.stream.Collectors;
 
 /**
- * @Description: 网站营销方案套餐表
+ * @Description: adweb 系统api
  * @Author: jeecg-boot
  * @Date: 2024-09-27
  * @Version: V1.0
  */
-@Tag(name = "网站营销方案套餐表")
+@Tag(name = "adweb 系统api")
 @RestController
 @RequestMapping("/adweb/system")
 @Slf4j
@@ -43,6 +52,14 @@ public class SystemAdwebController {
     @Resource
     private ISysUserRoleService iSysUserRoleService;
 
+    @Resource
+    private EnquiryRedisService enquiryRedisService;
+
+    @Resource
+    private IEnquiryEmailMessageService enquiryEmailMessageService;
+
+    private static final byte[] redisKey = EnquiryConstants.ENQUIRY_EMAIL.getBytes();
+
     /**
      * 获取渠道商列表
      *
@@ -70,4 +87,29 @@ public class SystemAdwebController {
         return Result.OK(userList);
     }
 
+    @PostConstruct
+    public void startEnquiryRedisListener() {
+        enquiryRedisService.init();
+        enquiryRedisService.startEnquiryEmailMessageListener(EnquiryConstants.ENQUIRY_EMAIL_CHANNEL, enquiryEmailMessageService);
+    }
+
+    /**
+     * 获取渠道商列表
+     *
+     * @return
+     */
+    @GetMapping("/testSendEmail")
+    public Result<?> testSendEmail() {
+        try {
+            JedisUtil.lpush(redisKey, ObjectUtil.object2Bytes(1311742895508602880L));
+            JedisUtil.publishMsg(EnquiryConstants.ENQUIRY_EMAIL_CHANNEL, EnquiryConstants.ENQUIRY_EMAIL);
+        } catch (IOException e) {
+           log.info("测试发送监听发送邮件的消息失败");
+        }
+
+//        enquiryEmailMessageService.sendEnquiryEmail(1311742895508602880L);
+
+        return Result.OK("");
+    }
+
 }

+ 4 - 3
jeecg-module-system/jeecg-system-start/src/main/resources/application-dev.yml

@@ -53,9 +53,9 @@ spring:
       max-file-size: 10MB
       max-request-size: 10MB
   mail:
-    host: smtp.163.com
-    username: jeecgos@163.com
-    password: ??
+    host: smtp.feishu.cn
+    username: notification@advich.com
+    password: tc6Web2Djn3ZsVdo
     properties:
       mail:
         smtp:
@@ -63,6 +63,7 @@ spring:
           starttls:
             enable: true
             required: true
+    port: 587
   ## quartz定时任务,采用数据库方式
   quartz:
     job-store-type: jdbc

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

@@ -53,9 +53,9 @@ spring:
       max-file-size: 10MB
       max-request-size: 10MB
   mail:
-    host: smtp.163.com
-    username: jeecgos@163.com
-    password: ??
+    host: smtp.feishu.cn
+    username: notification@advich.com
+    password: tc6Web2Djn3ZsVdo
     properties:
       mail:
         smtp:
@@ -63,6 +63,7 @@ spring:
           starttls:
             enable: true
             required: true
+    port: 587
   ## quartz定时任务,采用数据库方式
   quartz:
     job-store-type: jdbc