liusheng
2024-07-22 1cff3842cca26d770bdba4f8fd2143742342b093
ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java
@@ -24,10 +24,8 @@
import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Component;
import javax.annotation.Syntax;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -95,56 +93,48 @@
    @Override
    public void onMessage(Message message, byte[] pattern) {
        log.info("监听Redis key过期,key:{},channel:{}", message.toString(), new String(pattern));
        synchronized (RedisMqReceiver.class) {
            String ip = localIP;
            log.error("本机的网络IP为:{}", ip);
            String content = message.toString();
            //判断是不是任务信息,如果不是,直接返回,不需要执行
            if (!content.contains("taskid")) {
                log.info("不是任务信息");
                return;
        String ip = localIP;
        log.error("本机的网络IP为:{}", ip);
        String content = message.toString();
        //判断是不是任务信息,如果不是,直接返回,不需要执行
        if (!content.contains("taskid")) {
            log.info("不是任务信息");
            return;
        }
        CommonTaskcallMQ commonTaskcallMQ = null;
        try {
            ObjectMapper mapper = new ObjectMapper();
            if (!content.startsWith("{")) {
                commonTaskcallMQ = mapper.readValue("{" + content + "}", CommonTaskcallMQ.class);
            } else {
                commonTaskcallMQ = mapper.readValue(content, CommonTaskcallMQ.class);
            }
            CommonTaskcallMQ commonTaskcallMQ = null;
            try {
                ObjectMapper mapper = new ObjectMapper();
                if (!content.startsWith("{")) {
                    commonTaskcallMQ = mapper.readValue("{" + content + "}", CommonTaskcallMQ.class);
                } else {
                    commonTaskcallMQ = mapper.readValue(content, CommonTaskcallMQ.class);
                }
                //这里之所以这样做一下,是搞不懂,为啥会进来两遍
                Boolean aBoolean = redisCache.hasKey(commonTaskcallMQ.getTaskid().toString());
                if (aBoolean) {
                    return;
                } else {
                    redisCache.setCacheObject(commonTaskcallMQ.getTaskid().toString(), commonTaskcallMQ.getTaskid().toString(), 60, TimeUnit.SECONDS);
                }
                if (commonTaskcallMQ.getTaskType() == 1) {
                    //随访
                    sfHandle(commonTaskcallMQ, ip);
                } else if (commonTaskcallMQ.getTaskType() == 2) {
                    //问卷
                    wjHandle(commonTaskcallMQ, ip);
                } else if (commonTaskcallMQ.getTaskType() == 3) {
                    //宣教
                    xjHandle(commonTaskcallMQ, ip);
                }
                //处理完成,移除redis
                redisCache.deleteObject(message.toString());
            } catch (Exception e) {
                Integer integer = redisCache.getCacheObject(commonTaskcallMQ.getTaskid().toString());
                if (integer != null && integer == 2) {
                    //将消息从队列中删除
                } else if (integer == null) {
                    redisCache.setCacheObject(commonTaskcallMQ.getTaskid().toString(), 1, 120, TimeUnit.MINUTES);
                } else {
                    redisCache.setCacheObject(commonTaskcallMQ.getTaskid().toString(), integer + 1, 120, TimeUnit.MINUTES);
                }
                log.error("============消费失败,尝试消息补发再次消费!==============  {}", e.getMessage());
                redisCache.setCacheObject(message.toString(), message.toString(), 60, TimeUnit.SECONDS);
            if (commonTaskcallMQ.getTaskType() == 1) {
                //随访
                sfHandle(commonTaskcallMQ, ip);
            } else if (commonTaskcallMQ.getTaskType() == 2) {
                //问卷
                wjHandle(commonTaskcallMQ, ip);
            } else if (commonTaskcallMQ.getTaskType() == 3) {
                //宣教
                xjHandle(commonTaskcallMQ, ip);
            }
            //处理完成,移除redis
            redisCache.deleteObject(message.toString());
        } catch (Exception e) {
            Integer integer = redisCache.getCacheObject(commonTaskcallMQ.getTaskid().toString());
            if (integer != null && integer == 2) {
                //将消息从队列中删除
            } else if (integer == null) {
                redisCache.setCacheObject(commonTaskcallMQ.getTaskid().toString(), 1, 120, TimeUnit.MINUTES);
            } else {
                redisCache.setCacheObject(commonTaskcallMQ.getTaskid().toString(), integer + 1, 120, TimeUnit.MINUTES);
            }
            log.error("============消费失败,尝试消息补发再次消费!==============  {}", e.getMessage());
            redisCache.setCacheObject(message.toString(), message.toString(), 60, TimeUnit.SECONDS);
        }
    }
@@ -215,7 +205,7 @@
                        String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
                        SendMagParam sendMagParam = new SendMagParam();
                        sendMagParam.setType("4");
                        sendMagParam.setUrl(ip + ":" + req_path + "/followvisit/particty?param1=" + taskId + "&param2=" + patid);
                        sendMagParam.setUrl(ip + ":" + req_path + "/followvisit/particty?param1=" + taskId + "&param2=" + patid + "&param5=false");
                        Boolean aBoolean = sendService.sendMsg(sendMagParam);
@@ -230,7 +220,6 @@
                        serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord);
                    }
                } else if (descByCode.equals("公众号")) {
                    //公众号
                    RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample();
                    String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key);
@@ -238,8 +227,8 @@
                        String patid = rsaPublicKeyExample.encryptedData(serviceSubtask.getPatid().toString(), pub_key);
                        SendMagParam sendMagParam = new SendMagParam();
                        sendMagParam.setType("5");
                        sendMagParam.setUrl(ip + ":" + req_path + "/outsideChain?param1=" + ivrTask1.getTaskid().toString() + "&param2=" + serviceSubtask.getPatid().toString() + "&param3=" + ivrTask1.getTaskName());
                        log.info("链接完整路径:{}", req_path + "/outsideChain?param1=" + taskId + "&param2=" + patid + "&param3=" + ivrTask1.getTaskName());
                        sendMagParam.setUrl(ip + ":" + req_path + "/outsideChain?param1=" + ivrTask1.getTaskid().toString() + "&param2=" + serviceSubtask.getPatid().toString() + "&param3=" + ivrTask1.getTaskName() + "&param5=false");
                        log.info("链接完整路径:{}", ip + ":" + req_path + "/outsideChain?param1=" + taskId + "&param2=" + patid + "&param3=" + ivrTask1.getTaskName() + "&param5=false");
                        //这个模板ID先写死,后面做成可选
                        sendMagParam.setTmpCode("oG3pJHPVWpE81DmZsua_2tKwgJ97r0qz37z56ns7NB4");
                        Map map = new HashMap();
@@ -331,7 +320,7 @@
                        String patid = rsaPublicKeyExample.encryptedData(ivrTaskSingle.getPatid().toString(), pub_key);
                        SendMagParam sendMagParam = new SendMagParam();
                        sendMagParam.setType("4");
                        sendMagParam.setUrl(ip + ":" + req_path + "/followvisit/particty?param1=" + taskId + "&param2=" + patid);
                        sendMagParam.setUrl(ip + ":" + req_path + "/followvisit/particty?param1=" + taskId + "&param2=" + patid + "&param5=false");
                        Boolean aBoolean = sendService.sendMsg(sendMagParam);
                        //任务发送记录
@@ -352,8 +341,8 @@
                        String patid = rsaPublicKeyExample.encryptedData(ivrTaskSingle.getPatid().toString(), pub_key);
                        SendMagParam sendMagParam = new SendMagParam();
                        sendMagParam.setType("5");
                        sendMagParam.setUrl(ip + ":" + req_path + "/outsideChain?param1=" + taskId + "&param2=" + patid + "&param3=" + ivrTask1.getTaskName());
                        log.info("链接完整路径:{}", req_path + "/outsideChain?param1=" + taskId + "&param2=" + patid + "&param3=" + ivrTask1.getTaskName());
                        sendMagParam.setUrl(ip + ":" + req_path + "/outsideChainxj?param1=" + taskId + "&param2=" + patid + "&param3=" + ivrTask1.getTaskName() + "&param5=false");
                        log.info("链接完整路径:{}", req_path + "/outsideChainxj?param1=" + taskId + "&param2=" + patid + "&param3=" + ivrTask1.getTaskName() + "&param5=false");
                        //这个模板ID先写死,后面做成可选
                        sendMagParam.setTmpCode("oG3pJHPVWpE81DmZsua_2tKwgJ97r0qz37z56ns7NB4");
                        Map map = new HashMap();
@@ -440,8 +429,8 @@
                        String patid = rsaPublicKeyExample.encryptedData(svyTaskSingle1.getPatid().toString(), pub_key);
                        SendMagParam sendMagParam = new SendMagParam();
                        sendMagParam.setType("5");
                        sendMagParam.setUrl(ip + ":" + req_path + "/outsideChain?param1=" + taskId + "&param2=" + patid + "&param3=" + svyTask.getTaskName());
                        log.info("链接完整路径:{}", req_path + "/outsideChain?param1=" + taskId + "&param2=" + patid + "&param3=" + svyTask.getTaskName());
                        sendMagParam.setUrl(ip + ":" + req_path + "//outsideChainwt?param1=" + taskId + "&param2=" + patid + "&param3=" + svyTask.getTaskName() + "&param5=false");
                        log.info("链接完整路径:{}", req_path + "//outsideChainwt?param1=" + taskId + "&param2=" + patid + "&param3=" + svyTask.getTaskName() + "&param5=false");
                        //这个模板ID先写死,后面做成可选
                        sendMagParam.setTmpCode("oG3pJHPVWpE81DmZsua_2tKwgJ97r0qz37z56ns7NB4");
                        Map map = new HashMap();