From 1b311deffa48ac94a71ead121e296777b3c6eb02 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期一, 14 七月 2025 09:32:32 +0800 Subject: [PATCH] Merge branch 'dev' of http://120.76.84.145:10101/gitblit/r/java/mx_charging_pile --- ruoyi-service/ruoyi-jianguan/src/test/java/com/ruoyi/jianguan/RuoYiJianGuanApplicationTests.java | 181 +++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 181 insertions(+), 0 deletions(-) diff --git a/ruoyi-service/ruoyi-jianguan/src/test/java/com/ruoyi/jianguan/RuoYiJianGuanApplicationTests.java b/ruoyi-service/ruoyi-jianguan/src/test/java/com/ruoyi/jianguan/RuoYiJianGuanApplicationTests.java new file mode 100644 index 0000000..53f82ef --- /dev/null +++ b/ruoyi-service/ruoyi-jianguan/src/test/java/com/ruoyi/jianguan/RuoYiJianGuanApplicationTests.java @@ -0,0 +1,181 @@ +package com.ruoyi.jianguan; + +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.alibaba.nacos.common.utils.JacksonUtils; +import com.baomidou.mybatisplus.annotation.TableField; +import com.ruoyi.jianguan.model.BaseRequestJianGuan; +import com.ruoyi.jianguan.model.BaseResult; +import com.ruoyi.jianguan.model.NotificationStationStatusResult; +import com.ruoyi.jianguan.model.QueryTokenResult; +import com.ruoyi.jianguan.util.AESUtil; +import com.ruoyi.jianguan.util.AesEncryption; +import com.ruoyi.jianguan.util.HMacMD5Util; +import com.ruoyi.jianguan.util.SequenceGenerator; +import com.ruoyi.other.api.domain.Operator; +import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@Slf4j +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = RuoYiJianGuanApplication.class) +public class RuoYiJianGuanApplicationTests { + private static final String OperatorID = "906171535"; + private static final String OperatorSecret = "9jG8qysc5RxdbjvnvdmuRYQg6J82Fwj1"; + private static final String SigSecret = "RruzbZxnr74tqxe1"; + private static final String DataSecret = "3QJXn4MSj78zcpW1"; + private static final String DataSecretIV = "jhqj64V9gX8NHbu1"; + private final static String query_token = "/query_token"; + + private final static String url = "https://dataexchange.cdczpt.com/shevcs/v1"; + private final static String supervise_notification_equip_charge_status = "/notification_start_charge_result"; + + @Test + public void contextLoads() { + com.alibaba.fastjson2.JSONObject jsonObject = new com.alibaba.fastjson2.JSONObject(); + jsonObject.put("StartChargeSeq","CD34920250109232935330"); + jsonObject.put("ConnectorID","202412310000100101"); + jsonObject.put("StartChargeSeqStat",1); + + // 转化为yyyy-MM-dd HH:mm:ss格式字符串 + jsonObject.put("StartTime","2025-01-09 23:29:40"); + + HttpRequest post = HttpUtil.createPost(url+supervise_notification_equip_charge_status); + buildBody(post, jsonObject, new Operator()); + HttpResponse execute = post.execute(); + if(200 != execute.getStatus()){ + log.error("推送三方平台充电开始状态失败:" + execute.body()); + } + log.info("推送三方平台设备状态响应:" + execute.body()); + BaseResult baseResult = JSON.parseObject(execute.body(), BaseResult.class); + Integer Ret = baseResult.getRet(); + if(0 != Ret){ + log.error("推送三方平台充电开始状态失败:" + baseResult.getMsg()); + + } + //解密参数 + String decrypt = AESUtil.decrypt(baseResult.getData(), DataSecret, DataSecretIV); + log.info("推送三方平台设备状态Data:" + decrypt); + NotificationStationStatusResult notificationStationStatusResult = JSON.parseObject(decrypt, NotificationStationStatusResult.class); + System.err.println(notificationStationStatusResult); + } + @Test + public void contextLoads1() { + com.alibaba.fastjson2.JSONObject jsonObject = new com.alibaba.fastjson2.JSONObject(); + jsonObject.put("StartChargeSeq","CD34920250109232935330"); + jsonObject.put("StartChargeSeqStat",4); + jsonObject.put("ConnectorID","202412310000100101"); + jsonObject.put("ConnectorStatus",2); + + jsonObject.put("CurrentA",83); + jsonObject.put("VoltageA",344); + jsonObject.put("StartTime","2025-01-09 23:29:40"); + + LocalDateTime now = LocalDateTime.now(); + // 转化为yyyy-MM-dd HH:mm:ss格式字符串 + jsonObject.put("EndTime",now.format(java.time.format.DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); + jsonObject.put("TotalPower",34.29); + jsonObject.put("TotalMoney",25.93); + + HttpRequest post = HttpUtil.createPost(url+supervise_notification_equip_charge_status); + buildBody(post, jsonObject, new Operator()); + HttpResponse execute = post.execute(); + if(200 != execute.getStatus()){ + log.error("推送三方平台充电开始状态失败:" + execute.body()); + } + log.info("推送三方平台设备状态响应:" + execute.body()); + BaseResult baseResult = JSON.parseObject(execute.body(), BaseResult.class); + Integer Ret = baseResult.getRet(); + if(0 != Ret){ + log.error("推送三方平台充电开始状态失败:" + baseResult.getMsg()); + + } + //解密参数 + String decrypt = AESUtil.decrypt(baseResult.getData(), DataSecret, DataSecretIV); + log.info("推送三方平台设备状态Data:" + decrypt); + NotificationStationStatusResult notificationStationStatusResult = JSON.parseObject(decrypt, NotificationStationStatusResult.class); + System.err.println(notificationStationStatusResult); + } + /** + * 构建请求参数和消息头 + * @param post + * @param + */ + public void buildBody(HttpRequest post, com.alibaba.fastjson2.JSONObject o, Operator operator){ + Long timeStamp = Long.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + post.contentType("application/json;charset=utf-8"); + post.header("Authorization", "Bearer " + queryToken()); + BaseRequestJianGuan baseRequest = new BaseRequestJianGuan(); + baseRequest.setOperatorID("906171535"); + baseRequest.setTimeStamp(timeStamp+""); + baseRequest.setSeq("0001"); + + + String encrypt = AesEncryption.encrypt(DataSecret, DataSecretIV,o.toJSONString()); +// String encrypt = AesEncryption.encrypt(DataSecret, DataSecretIV,jsonString); + + baseRequest.setData(encrypt); + baseRequest.setOperator(operator); + SequenceGenerator generator = new SequenceGenerator(); + String nextSequence = generator.getNextSequence(); + + String hmacMD5 = HMacMD5Util.getHMacMD5("906171535",timeStamp+"", encrypt,nextSequence,SigSecret); +// String hmacMD5 = HMacMD5Util.getHMacMD5(OperatorID,timeStamp, data,nextSequence,OurSigSecret); + + baseRequest.setSig(hmacMD5); + String request_json = JacksonUtils.toJson(baseRequest); + post.body(request_json); + log.info("推送三方平台请求地址:" + post.getUrl()); + log.info("推送三方平台请求参数:" + request_json); + log.info("推送三方平台请求Data:" + o.toJSONString()); + } + public String queryToken(){ + HttpRequest post = HttpUtil.createPost(url + query_token); + JSONObject info = new JSONObject(); + info.put("OperatorID", "906171535"); + info.put("OperatorSecret", OperatorSecret); + Long timeStamp = Long.valueOf(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))); + post.contentType("application/json;charset=utf-8"); + BaseRequestJianGuan baseRequest = new BaseRequestJianGuan(); + baseRequest.setOperatorID("906171535"); + baseRequest.setTimeStamp(timeStamp+""); + baseRequest.setSeq("0001"); + String jsonString = JacksonUtils.toJson(info); + SequenceGenerator generator = new SequenceGenerator(); + String nextSequence = generator.getNextSequence(); + String data = AesEncryption.encrypt(DataSecret, DataSecretIV,jsonString); + String hmacMD5 = HMacMD5Util.getHMacMD5("906171535",timeStamp+"", data,nextSequence,SigSecret); + baseRequest.setData(data); + baseRequest.setSig(hmacMD5); + String request_json = JacksonUtils.toJson(baseRequest); + log.info("获取三方平台授权token请求地址:" + post.getUrl()); + log.info("获取三方平台授权token请求参数:" + request_json); + log.info("获取三方平台授权token请求Data:" + jsonString); + post.body(request_json); + HttpResponse execute = post.execute(); + if(200 != execute.getStatus()){ + log.error("获取三方平台授权token失败:" + execute.body()); + return null; + } + log.info("获取三方平台授权token响应参数:" + execute.body()); + BaseResult baseResult = JSON.parseObject(execute.body(), BaseResult.class); + Integer Ret = baseResult.getRet(); + if(0 != Ret){ + log.error("获取三方平台授权token失败:" + baseResult.getMsg()); + return null; + } + //解密参数 + String decrypt = AESUtil.decrypt(baseResult.getData(), DataSecret, DataSecretIV); + log.info("获取三方平台授权token响应Data:" + decrypt); + QueryTokenResult queryTokenResult = JSON.parseObject(decrypt, QueryTokenResult.class); + String token = queryTokenResult.getAccessToken(); +// Long tokenAvailableTime = LocalDateTime.now().toEpochSecond(ZoneOffset.UTC) + queryTokenResult.getTokenAvailab + return token; + } +} -- Gitblit v1.7.1