From 17a443d510a0aa4c545df0d11467ff17a24cfa6a Mon Sep 17 00:00:00 2001 From: liusheng <337615773@qq.com> Date: 星期二, 16 七月 2024 14:37:39 +0800 Subject: [PATCH] 代码提交 --- ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java | 190 +++++++++++++++++++++++------------------------ 1 files changed, 92 insertions(+), 98 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java b/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java index ec3d344..4f60fee 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/component/RedisMqReceiver.java @@ -4,7 +4,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.enums.ServiceFromEnum; -import com.ruoyi.common.utils.IPUtils; import com.ruoyi.common.utils.RSAPublicKeyExample; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.web.task.PhoneTask; @@ -25,9 +24,14 @@ 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 java.util.*; +import javax.annotation.Syntax; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; @@ -42,20 +46,29 @@ @Value("${pub_key}") private String pub_key; + @Value("${localIP}") + private String localIP; + @Value("${req_path}") private String req_path; - private static IIvrTaskTemplateService ivrTaskTemplateService; + @Autowired + private IIvrTaskTemplateService ivrTaskTemplateService; - private static ServiceSubtaskMapper ivrTaskcallMapper; + @Autowired + private ServiceSubtaskMapper ivrTaskcallMapper; - private static ServiceTaskMapper ivrTaskMapper; + @Autowired + private ServiceTaskMapper ivrTaskMapper; - private static SendService sendService; + @Autowired + private SendService sendService; - private static RedisCache redisCache; + @Autowired + private RedisCache redisCache; - private static RobotPhoneUtils robotPhoneUtils; + @Autowired + private RobotPhoneUtils robotPhoneUtils; @Autowired private SvyTaskMapper svyTaskMapper; @@ -79,83 +92,60 @@ super(listenerContainer); } - - @Autowired - public void setIIvrTaskTemplateService(IIvrTaskTemplateService ivrTaskTemplateService) { - RedisMqReceiver.ivrTaskTemplateService = ivrTaskTemplateService; - } - - @Autowired - public void setRobotPhoneUtilsService(RobotPhoneUtils robotPhoneUtils) { - RedisMqReceiver.robotPhoneUtils = robotPhoneUtils; - } - - @Autowired - public void setSendService(SendService sendService) { - RedisMqReceiver.sendService = sendService; - } - - @Autowired - public void setIvrTaskcallMapper(ServiceSubtaskMapper ivrTaskcallMapper) { - RedisMqReceiver.ivrTaskcallMapper = ivrTaskcallMapper; - } - - @Autowired - public void setIvrTaskMapper(ServiceTaskMapper ivrTaskMapper) { - RedisMqReceiver.ivrTaskMapper = ivrTaskMapper; - } - - @Autowired - public void setRedisCache(RedisCache redisCache) { - RedisMqReceiver.redisCache = redisCache; - } - @Override public void onMessage(Message message, byte[] pattern) { log.info("鐩戝惉Redis key杩囨湡锛宬ey锛歿}锛宑hannel锛歿}", message.toString(), new String(pattern)); - String ip = "116.62.18.175"; - log.error("鏈満鐨勭綉缁淚P涓�:{}", ip); - String content = message.toString(); - //鍒ゆ柇鏄笉鏄换鍔′俊鎭紝濡傛灉涓嶆槸锛岀洿鎺ヨ繑鍥烇紝涓嶉渶瑕佹墽琛� - if (!content.contains("taskid")) { - log.info("涓嶆槸浠诲姟淇℃伅"); - return; + synchronized (RedisMqReceiver.class) { + String ip = localIP; + log.error("鏈満鐨勭綉缁淚P涓�:{}", 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); + } + //杩欓噷涔嬫墍浠ヨ繖鏍峰仛涓�涓嬶紝鏄悶涓嶆噦锛屼负鍟ヤ細杩涙潵涓ら亶 + 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) { + //瀹f暀 + xjHandle(commonTaskcallMQ, ip); + } + //澶勭悊瀹屾垚锛岀Щ闄edis + 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); + } } - CommonTaskcallMQ commonTaskcallMQ = null; - try { - ObjectMapper mapper = new ObjectMapper(); - if (!content.startsWith("{")) { - commonTaskcallMQ = mapper.readValue("{" + content + "}", CommonTaskcallMQ.class); - } else { - commonTaskcallMQ = mapper.readValue(content, CommonTaskcallMQ.class); - } - - if (commonTaskcallMQ.getTaskType() == 1) { - //闅忚 - sfHandle(commonTaskcallMQ, ip); - } else if (commonTaskcallMQ.getTaskType() == 2) { - //闂嵎 - wjHandle(commonTaskcallMQ, ip); - } else if (commonTaskcallMQ.getTaskType() == 3) { - //瀹f暀 - xjHandle(commonTaskcallMQ, ip); - } - - - } 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); - } - } /** @@ -181,16 +171,16 @@ //閫氳繃妯℃澘ID鑾峰彇妯℃澘闂 IvrTaskTemplateVO ivrTaskTemplateVO = new IvrTaskTemplateVO(); - ivrTaskTemplateVO.setID(Long.valueOf(commonTaskcallMQ.getTemplateid())); + ivrTaskTemplateVO.setId(Long.valueOf(commonTaskcallMQ.getTemplateid())); IvrTaskTemplateVO ivrTaskTemplateVO1 = ivrTaskTemplateService.selectInfoByCondition(ivrTaskTemplateVO); //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭� ServiceSubtask ivrTaskcall = new ServiceSubtask(); ivrTaskcall.setTaskid(commonTaskcallMQ.getTaskid()); - List<ServiceSubtask> ivrTaskcalls = ivrTaskcallMapper.selectServiceSubtaskList(ivrTaskcall); + List<ServiceSubtask> selectServiceSubtaskList = ivrTaskcallMapper.selectServiceSubtaskList(ivrTaskcall); if (descByCode.equals("鐢佃瘽")) { - for (ServiceSubtask ivrTaskcall1 : ivrTaskcalls) { - ServiceTask ivrTask = ivrTaskMapper.selectServiceTaskByTaskid(ivrTaskcall1.getTaskid()); + for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) { + ServiceTask ivrTask = ivrTaskMapper.selectServiceTaskByTaskid(serviceSubtask.getTaskid()); if (ivrTask.getSendState() != null && ivrTask.getSendState() == 3 || ivrTask.getSendState() != null && ivrTask.getSendState() == 4) { //濡備綍浠诲姟琚�滄殏鍋溾�濇垨鈥滅粓姝⑩�� break; @@ -198,20 +188,22 @@ //浠诲姟鍙戦�佽褰曪紙杩欎釜浠g爜搴旇鍐欏湪phoneTask涓紝鍏堝啓鍦ㄨ繖锛屽悗闈㈠啀鏀癸級 ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord(); - serviceSubtaskRecord.setTaskid(ivrTaskcall1.getTaskid().toString()); + serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString()); serviceSubtaskRecord.setUuid(UUID.randomUUID().toString()); - serviceSubtaskRecord.setTasktype(ivrTaskcall1.getType()); + serviceSubtaskRecord.setTasktype(serviceSubtask.getType()); serviceSubtaskRecord.setPreachform("3"); serviceSubtaskRecord.setStartTime(System.currentTimeMillis()); serviceSubtaskRecordService.insertServiceSubtaskRecord(serviceSubtaskRecord); //閫氳繃澶氱嚎绋嬬殑鏂瑰紡鍘绘墦鐢佃瘽 - executorService.submit(new PhoneTask(ivrTaskcall1, ivrTaskTemplateVO1, redisCache, sendService, phonePath, robotPhoneUtils)); + executorService.submit(new PhoneTask(serviceSubtask, ivrTaskTemplateVO1, redisCache, sendService, phonePath, robotPhoneUtils)); } } else if (descByCode.equals("澶氬獟浣�")) { //澶氬獟浣� + return; } else if (descByCode.equals("绾歌川")) { //绾歌川 + return; } else if (descByCode.equals("鐭俊")) { //鐭俊 // http://localhost:8099/followvisit/particty?param1=3¶m2=348 @@ -219,8 +211,8 @@ RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample(); String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key); - for (ServiceSubtask ivrTaskSingle : ivrTaskcalls) { - String patid = rsaPublicKeyExample.encryptedData(ivrTaskSingle.getPatid().toString(), pub_key); + for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) { + 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 + "¶m2=" + patid); @@ -229,9 +221,9 @@ //浠诲姟鍙戦�佽褰� ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord(); - serviceSubtaskRecord.setTaskid(ivrTaskSingle.getTaskid().toString()); + serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString()); serviceSubtaskRecord.setUuid(UUID.randomUUID().toString()); - serviceSubtaskRecord.setTasktype(ivrTaskSingle.getType()); + serviceSubtaskRecord.setTasktype(serviceSubtask.getType()); serviceSubtaskRecord.setPreachform("4"); serviceSubtaskRecord.setStartTime(System.currentTimeMillis()); serviceSubtaskRecord.setResult(aBoolean == true ? "鎴愬姛" : "澶辫触"); @@ -242,24 +234,26 @@ //鍏紬鍙� RSAPublicKeyExample rsaPublicKeyExample = new RSAPublicKeyExample(); String taskId = rsaPublicKeyExample.encryptedData(ivrTask1.getTaskid().toString(), pub_key); - for (ServiceSubtask ivrTaskSingle : ivrTaskcalls) { - String patid = rsaPublicKeyExample.encryptedData(ivrTaskSingle.getPatid().toString(), pub_key); + for (ServiceSubtask serviceSubtask : selectServiceSubtaskList) { + 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() + "¶m2=" + ivrTaskSingle.getPatid().toString() + "¶m3=" + ivrTask1.getTaskName()); + sendMagParam.setUrl(ip + ":" + req_path + "/outsideChain?param1=" + ivrTask1.getTaskid().toString() + "¶m2=" + serviceSubtask.getPatid().toString() + "¶m3=" + ivrTask1.getTaskName()); log.info("閾炬帴瀹屾暣璺緞锛歿}", req_path + "/outsideChain?param1=" + taskId + "¶m2=" + patid + "¶m3=" + ivrTask1.getTaskName()); //杩欎釜妯℃澘ID鍏堝啓姝伙紝鍚庨潰鍋氭垚鍙�� sendMagParam.setTmpCode("oG3pJHPVWpE81DmZsua_2tKwgJ97r0qz37z56ns7NB4"); Map map = new HashMap(); map.put("first", ivrTask1.getTaskName()); sendMagParam.setContent(JSON.toJSONString(map)); + sendMagParam.setOpenid(serviceSubtask.getOpenid()); + Boolean aBoolean = sendService.sendMsg(sendMagParam); //浠诲姟鍙戦�佽褰� ServiceSubtaskRecord serviceSubtaskRecord = new ServiceSubtaskRecord(); - serviceSubtaskRecord.setTaskid(ivrTaskSingle.getTaskid().toString()); + serviceSubtaskRecord.setTaskid(serviceSubtask.getTaskid().toString()); serviceSubtaskRecord.setUuid(UUID.randomUUID().toString()); - serviceSubtaskRecord.setTasktype(ivrTaskSingle.getType()); + serviceSubtaskRecord.setTasktype(serviceSubtask.getType()); serviceSubtaskRecord.setPreachform("4"); serviceSubtaskRecord.setStartTime(System.currentTimeMillis()); serviceSubtaskRecord.setResult(aBoolean == true ? "鎴愬姛" : "澶辫触"); @@ -294,7 +288,7 @@ //閫氳繃妯℃澘ID鑾峰彇妯℃澘闂 IvrTaskTemplateVO ivrTaskTemplateVO = new IvrTaskTemplateVO(); - ivrTaskTemplateVO.setID(Long.valueOf(commonTaskcallMQ.getTemplateid())); + ivrTaskTemplateVO.setId(Long.valueOf(commonTaskcallMQ.getTemplateid())); IvrTaskTemplateVO ivrTaskTemplateVO1 = ivrTaskTemplateService.selectInfoByCondition(ivrTaskTemplateVO); //閫氳繃浠诲姟ID鎷垮埌鎮h�呬俊鎭� -- Gitblit v1.9.3