From 5c01d90d59ef59b0fa2703be71dcd87533cd177a Mon Sep 17 00:00:00 2001 From: qyx <565485304@qq.com> Date: Thu, 22 Apr 2021 18:52:16 +0800 Subject: [PATCH 1/6] =?UTF-8?q?[=E6=96=B0=E5=A2=9E=E5=8A=9F=E8=83=BD](mast?= =?UTF-8?q?er):=20Merge?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/application.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 2c3a986..cc59aeb 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,6 +1,6 @@ spring: profiles: - active: dev + active: prod # 序列化忽略null的k-v配置 jackson: default-property-inclusion: non_null From abe4e66ad73db014b76eab41878f4f1507f413c9 Mon Sep 17 00:00:00 2001 From: qyx <565485304@qq.com> Date: Mon, 26 Apr 2021 10:15:13 +0800 Subject: [PATCH 2/6] =?UTF-8?q?[Bug=E4=BF=AE=E5=A4=8D](master):=20Bug-=20?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E7=9A=84=E4=BB=A3=E7=A0=81=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 相关的代码修复 --- .../openapi/openapi/task/ABDownTask.java | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java b/src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java index 285c349..7884ebe 100644 --- a/src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java +++ b/src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java @@ -3,24 +3,20 @@ package com.yuyou.openapi.openapi.task; import cn.hutool.core.codec.Base64; import cn.hutool.core.collection.CollectionUtil; -import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.crypto.SecureUtil; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; -import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.yuyou.openapi.openapi.api.enums.LuoShiAppIDEnum; import com.yuyou.openapi.openapi.common.enums.IntentionEnum; import com.yuyou.openapi.openapi.common.enums.SourceEnum; -import com.yuyou.openapi.openapi.consts.SmsConstant; import com.yuyou.openapi.openapi.consts.SpecialCityConst; import com.yuyou.openapi.openapi.dao.PhonesRepository; import com.yuyou.openapi.openapi.model.dto.*; -import com.yuyou.openapi.openapi.model.pojo.BlackJsonContent; import com.yuyou.openapi.openapi.model.pojo.QiZhuangDTO; import com.yuyou.openapi.openapi.model.pojo.token.QiZhuangTokenResponse; import com.yuyou.openapi.openapi.model.vo.ABClientXMJMessageVO; @@ -263,10 +259,10 @@ public class ABDownTask { @Async(value = "abTaskExecutor") public void doRunTaskTuboShu(List messageDTOList){ Long satrtMilliSecond = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli(); - log.info("====== [ task start running, task name is {} ] ======", "ABDownTask"); + log.info("====== [ task start running, task name is {} ] ======", "doRunTaskTuboShu"); runTaskTuboShu(messageDTOList); Long endMilliSecond = LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli(); - log.info("====== [ task start end, task name is {},cost milliSecond is {} ] ======", "ABDownTask", (endMilliSecond-satrtMilliSecond)); + log.info("====== [ task start end, task name is {},cost milliSecond is {} ] ======", "doRunTaskTuboShu", (endMilliSecond-satrtMilliSecond)); } /** * 执行土拨鼠任务 @@ -298,13 +294,13 @@ public class ABDownTask { // 重新发送前休眠3秒 Thread.sleep(3_0000); } catch (InterruptedException e) { - log.error("ABDownTask|runTaskTuboShu sleep ERROR. message is", e.getMessage(), e); + log.error("ABDownTask|runTaskTuboShu sleep ERROR. message is {} , {}", e.getMessage(), e); } - log.error("========== [SaveToFileTask|batchSendToEncrypt request fail, response is {} ] ==========", jsonObject.toJSONString()); + log.error("========== [ABDownTask|runTaskTuboShu request fail, response is {} ] ==========", jsonObject.toJSONString()); } } if (countToken >= 3 || "".equals(tokenT)) { - log.error("========== [ABDownTask|runTaskTuboShu update send status fail, url is {} ] =========="); + log.error("========== [ABDownTask|runTaskTuboShu update send status fail, url is {} ] ==========", tuBoShuUrl); return Boolean.FALSE; } @@ -333,6 +329,8 @@ public class ABDownTask { formMapT.put("channel", channelT); formMapT.put("real_order", Integer.parseInt(realOrder)); formMapT.put("coop_orderid", coopOrderid); + log.info("========== [ABDownTask|runTaskTuboShu request content is {} ] ==========", formMapT.toString()); + int count = 0; while (count < 3) { // 调用HTTP请求发送数据 @@ -347,13 +345,13 @@ public class ABDownTask { // 重新发送前休眠3秒 Thread.sleep(3_0000); } catch (InterruptedException e) { - log.error("ABDownTask|runTaskTuboShu sleep ERROR. message is", e.getMessage(), e); + log.error("ABDownTask|runTaskTuboShu sleep ERROR. message is {} , {}", e.getMessage(), e); } log.error("========== [ABDownTask|runTaskTuboShu request fail, response is {} ] ==========", jsonObject.toJSONString()); } } if (count >= 3) { - log.error("========== [ABDownTask|runTaskTuboShu update send status fail, url is {} ] =========="); + log.error("========== [ABDownTask|runTaskTuboShu update send status fail, url is {} ] ==========", tuBoShuUrl); }else { abMessageService.updateSendStatus(Long.valueOf(list.getRecId()), Boolean.TRUE); } From eb1800335a6b4131d742ad4db9916bfd3ec5d553 Mon Sep 17 00:00:00 2001 From: weizhongxi <2412380450@qq.com> Date: Mon, 26 Apr 2021 10:52:09 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E7=AC=AC=E4=B8=89=E6=AC=A1=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java b/src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java index 7884ebe..cc5f630 100644 --- a/src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java +++ b/src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java @@ -300,7 +300,7 @@ public class ABDownTask { } } if (countToken >= 3 || "".equals(tokenT)) { - log.error("========== [ABDownTask|runTaskTuboShu update send status fail, url is {} ] ==========", tuBoShuUrl); + log.error("========== [ABDownTask|runTaskTuboShu update send status fail, url is {} ] ==========", tuBoShuTokenUrl); return Boolean.FALSE; } @@ -310,7 +310,7 @@ public class ABDownTask { list -> { // 匹配城市 - if (list.getMobile().length() == 11) { + if (Base64.decodeStr(list.getMobile()).length() == 11) { String substring = StringUtils.substring(list.getMobile(), 0, list.getMobile().length() - 4); String matchCity = phonesRepository.findByNumber(substring); if (StringUtils.isNotBlank(matchCity)) { From e8e2a8a9075cc03ee0ccceb8c085bbf86538b630 Mon Sep 17 00:00:00 2001 From: weizhongxi <2412380450@qq.com> Date: Mon, 26 Apr 2021 11:04:28 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9bug=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java b/src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java index cc5f630..d229d08 100644 --- a/src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java +++ b/src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java @@ -311,7 +311,7 @@ public class ABDownTask { // 匹配城市 if (Base64.decodeStr(list.getMobile()).length() == 11) { - String substring = StringUtils.substring(list.getMobile(), 0, list.getMobile().length() - 4); + String substring = StringUtils.substring(Base64.decodeStr(list.getMobile()), 0, Base64.decodeStr(list.getMobile()).length() - 4); String matchCity = phonesRepository.findByNumber(substring); if (StringUtils.isNotBlank(matchCity)) { formMapT.put("city", matchCity.trim()); From 82a4454dfe31146a294947811ce55d935693ec5a Mon Sep 17 00:00:00 2001 From: weizhongxi <2412380450@qq.com> Date: Mon, 26 Apr 2021 13:49:04 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E9=9F=A6=E5=BF=A0=E5=96=9C=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java b/src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java index d229d08..90f3b3d 100644 --- a/src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java +++ b/src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java @@ -328,7 +328,7 @@ public class ABDownTask { formMapT.put("chcode", chcode); formMapT.put("channel", channelT); formMapT.put("real_order", Integer.parseInt(realOrder)); - formMapT.put("coop_orderid", coopOrderid); + formMapT.put("coop_orderid", ""+list.getRecId()+(int)(Math.random()*90000+1000)); log.info("========== [ABDownTask|runTaskTuboShu request content is {} ] ==========", formMapT.toString()); int count = 0; From f9c82343322bd44c91a3c5199a6a4744d8eb6ea2 Mon Sep 17 00:00:00 2001 From: weizhongxi <2412380450@qq.com> Date: Mon, 26 Apr 2021 16:52:54 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E7=AC=AC=E4=B8=89=E6=AC=A1=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../pojo/token/TuBoShuTokenResponse.java | 35 ++++++ .../openapi/openapi/task/ABDownTask.java | 38 ++++--- .../openapi/openapi/task/ABScheduleTask.java | 102 ++++++++++++++++++ 3 files changed, 163 insertions(+), 12 deletions(-) create mode 100644 src/main/java/com/yuyou/openapi/openapi/model/pojo/token/TuBoShuTokenResponse.java diff --git a/src/main/java/com/yuyou/openapi/openapi/model/pojo/token/TuBoShuTokenResponse.java b/src/main/java/com/yuyou/openapi/openapi/model/pojo/token/TuBoShuTokenResponse.java new file mode 100644 index 0000000..f0be434 --- /dev/null +++ b/src/main/java/com/yuyou/openapi/openapi/model/pojo/token/TuBoShuTokenResponse.java @@ -0,0 +1,35 @@ +package com.yuyou.openapi.openapi.model.pojo.token; + +import com.alibaba.fastjson.annotation.JSONField; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class TuBoShuTokenResponse { + + @JSONField(name = "akey") + private Integer error_code; + + @JSONField(name = "status") + private String status; + + @JSONField(name = "token") + private String token; + + @JSONField(name = "data") + private TOKEN data; + + @Data + public static class TOKEN{ + + + @JSONField(name = "expires_in") + private Integer expiresIn; + + @JSONField(name = "expires_time") + private Long expiresTime; + } +} diff --git a/src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java b/src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java index 90f3b3d..9ebb725 100644 --- a/src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java +++ b/src/main/java/com/yuyou/openapi/openapi/task/ABDownTask.java @@ -19,6 +19,7 @@ import com.yuyou.openapi.openapi.dao.PhonesRepository; import com.yuyou.openapi.openapi.model.dto.*; import com.yuyou.openapi.openapi.model.pojo.QiZhuangDTO; import com.yuyou.openapi.openapi.model.pojo.token.QiZhuangTokenResponse; +import com.yuyou.openapi.openapi.model.pojo.token.TuBoShuTokenResponse; import com.yuyou.openapi.openapi.model.vo.ABClientXMJMessageVO; import com.yuyou.openapi.openapi.model.vo.data.DetailInfo; import com.yuyou.openapi.openapi.service.ABMessageService; @@ -271,24 +272,36 @@ public class ABDownTask { */ private boolean runTaskTuboShu(List messageDTOList){ - Map formMap = new HashMap<>(); Map formMapT = new HashMap<>(); - formMap.put("password", passWord); - formMap.put("coopname", coopname); int countToken = 0; String tokenT = ""; //获取token while (countToken < 3) { // 调用HTTP请求发送数据 - String result = sendPostReqTuBoShu(formMap, tuBoShuTokenUrl); - JSONObject jsonObject = JSON.parseObject(result); - tokenT = jsonObject.get("msg").toString(); - if ("0".equals(jsonObject.getString("status"))) { - log.info("========== [ABDownTask|runTaskTuboShu request success, response is {} ] ==========", jsonObject.toJSONString()); - tokenT = jsonObject.get("msg").toString(); - break; - } else { + + TuBoShuTokenResponse tuBoShuTokenResponse = abScheduleTask.getTuBoShuTokenResponse(); + // 检查如果第一次不存在就手动调用一次 + if (null == tuBoShuTokenResponse){ + abScheduleTask.executeGetTokenTuboshu(); + tuBoShuTokenResponse = abScheduleTask.getTuBoShuTokenResponse(); + } + if (tuBoShuTokenResponse != null){ + if ("0".equals(tuBoShuTokenResponse.getStatus())) { + log.info("========== [ABDownTask|runTaskTuboShu request success, response is {} ] ==========", tuBoShuTokenResponse.toString()); + tokenT = tuBoShuTokenResponse.getToken(); + break; + } else { + countToken++; + try { + // 重新发送前休眠3秒 + Thread.sleep(3_0000); + } catch (InterruptedException e) { + log.error("ABDownTask|runTaskTuboShu sleep ERROR. message is {} , {}", e.getMessage(), e); + } + log.error("========== [ABDownTask|runTaskTuboShu request fail, response is {} ] ==========", tuBoShuTokenResponse.toString()); + } + }else { countToken++; try { // 重新发送前休眠3秒 @@ -296,8 +309,9 @@ public class ABDownTask { } catch (InterruptedException e) { log.error("ABDownTask|runTaskTuboShu sleep ERROR. message is {} , {}", e.getMessage(), e); } - log.error("========== [ABDownTask|runTaskTuboShu request fail, response is {} ] ==========", jsonObject.toJSONString()); + log.error("========== [ABDownTask|runTaskTuboShu request fail, response is {} ] ==========", tuBoShuTokenResponse.toString()); } + } if (countToken >= 3 || "".equals(tokenT)) { log.error("========== [ABDownTask|runTaskTuboShu update send status fail, url is {} ] ==========", tuBoShuTokenUrl); diff --git a/src/main/java/com/yuyou/openapi/openapi/task/ABScheduleTask.java b/src/main/java/com/yuyou/openapi/openapi/task/ABScheduleTask.java index ab9c8b4..1897e62 100644 --- a/src/main/java/com/yuyou/openapi/openapi/task/ABScheduleTask.java +++ b/src/main/java/com/yuyou/openapi/openapi/task/ABScheduleTask.java @@ -6,14 +6,25 @@ import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.yuyou.openapi.openapi.model.pojo.token.QiZhuangTokeRequest; import com.yuyou.openapi.openapi.model.pojo.token.QiZhuangTokenResponse; +import com.yuyou.openapi.openapi.model.pojo.token.TuBoShuTokenResponse; import lombok.Getter; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter; +import java.io.PrintWriter; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.HashMap; +import java.util.Map; + @Component @Slf4j @Getter @@ -28,8 +39,19 @@ public class ABScheduleTask { @Value("${ab.qj.ckey}") private String qiJiaCKey; + @Value("${ab.tbs.password}") + private String passWord; + + @Value("${ab.tbs.coopname}") + private String coopname; + + @Value("${ab.tbs.tokenurl}") + private String tuBoShuTokenUrl; + private QiZhuangTokenResponse qiZhuangTokenResponse; + private TuBoShuTokenResponse tuBoShuTokenResponse; + /** @@ -47,6 +69,25 @@ public class ABScheduleTask { qiZhuangTokenResponse = JSONUtil.toBean(body, QiZhuangTokenResponse.class); } + /** + * 设置定时任务每二小时执行一次 + */ + @Scheduled(cron = "0 0 0/2 * * ? ") + public void executeGetTokenTuboshu() { + log.info("ABScheduleTask|executeGetTokenTuboshu is run , run Time is {}", DateUtil.date()); + // 先去拿Token + Map formMap = new HashMap<>(); + formMap.put("password", passWord); + formMap.put("coopname", coopname); + String body = sendPostReqTuBoShuToken(formMap,tuBoShuTokenUrl); + log.info("ABScheduleTask|executeGetTokenTuboshu , sendPostReqTuBoShuToken is {}", body); + TuBoShuTokenResponse tuBoShuTokenResponse1 = new TuBoShuTokenResponse(); + JSONObject jsonObject = JSON.parseObject(body); + tuBoShuTokenResponse1.setToken(jsonObject.getString("msg")); + tuBoShuTokenResponse1.setStatus(jsonObject.getString("status")); + tuBoShuTokenResponse = tuBoShuTokenResponse1; + } + /** * 测试定时任务 @@ -75,5 +116,66 @@ public class ABScheduleTask { return httpResponse; } + /** + * 调用HTTP请求发送数据 获取土拨鼠的token + * + * @param formMap 请求的body内容 + * @param urlT 请求的url + * @return + */ + private String sendPostReqTuBoShuToken(Map formMap , String urlT){ + String result = ""; + HttpURLConnection connection = null; + String boundary = "--------------------------132183525382215881770481"; + try { + URL url = new URL(urlT); + connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("POST"); + connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); + connection.setDoOutput(true); + connection.setDoInput(true); + connection.setRequestProperty("Connection", "Keep-Alive"); + // 不使用缓存 + connection.setUseCaches(false); + + StringBuffer formSB = new StringBuffer(); + if (formMap != null) { + if (formMap.size() > 0) { + for (Map.Entry entry : formMap.entrySet()) { + String inputName = entry.getKey(); + formSB.append("\r\n").append("--").append(boundary).append("\r\n"); + formSB.append("Content-Disposition: form-data; name=\"" + inputName + "\"\r\n\r\n"); + formSB.append(entry.getValue()); + } + formSB.append("\r\n").append("--").append(boundary).append("--"); + } + } + connection.connect(); + //OutputStream out = new DataOutputStream(connection.getOutputStream()); + PrintWriter out = new PrintWriter(new OutputStreamWriter(connection.getOutputStream(), "UTF-8")); + out.print(formSB.toString()); + out.flush(); + //获得响应状态 + int resultCode = connection.getResponseCode(); + if (HttpURLConnection.HTTP_OK == resultCode) { + formSB = new StringBuffer(); + String readLine; + BufferedReader responseReader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8")); + while ((readLine = responseReader.readLine()) != null) { + formSB.append(readLine).append("\n"); + } + responseReader.close(); + result = formSB.toString(); + } + out.close(); + } catch (Exception e) { + + + } finally { + connection.disconnect(); + } + return result; + } + }