From 21803239159c3ce2a7f2b257837d0e5070334779 Mon Sep 17 00:00:00 2001 From: Administrator Date: Sat, 22 Mar 2025 17:28:49 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E6=B7=BB=E5=8A=A0=E6=8D=A2=E7=94=B5?= =?UTF-8?q?=E7=AB=99=20=E8=AE=A1=E8=B4=B9=E6=A8=A1=E5=BC=8F=20=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=EF=BC=8C=E7=94=9F=E6=88=90=E8=AE=A2=E5=8D=95=E6=97=B6?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=E7=AB=99=E7=9A=84=E8=AE=A1=E8=B4=B9=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=202.=20=E6=B7=BB=E5=8A=A0mqtt=E4=B8=AD=E8=BD=A6?= =?UTF-8?q?=E8=BE=86=E4=BF=A1=E6=81=AF=E7=9A=84=E5=9B=9E=E5=A4=8D=E5=86=85?= =?UTF-8?q?=E5=AE=B9=203.=20=E9=A2=84=E7=BA=A6=E8=AE=A2=E5=8D=95=E5=88=86?= =?UTF-8?q?=E9=A1=B5=E6=9F=A5=E8=AF=A2=204.=20=E8=81=94=E8=B0=83=E7=AB=99?= =?UTF-8?q?=E7=AB=AFAES=E5=8A=A0=E5=AF=86=E6=B5=81=E7=A8=8B=205.=20?= =?UTF-8?q?=E4=BF=AE=E6=AD=A3swich-case=E4=B8=AD=E4=BA=94=E6=9E=9A?= =?UTF-8?q?=E4=B8=BE=E7=BB=93=E6=9E=9C=E7=9A=84=E6=8A=A5=E9=94=99=E6=83=85?= =?UTF-8?q?=E5=86=B5=206.=20=E8=BD=A6=E8=BE=86=E4=BF=A1=E6=81=AF=20?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=9F=A5=E8=AF=A2=E3=80=81=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=85=B3=E8=81=94=E7=94=A8=E6=88=B7=E5=8A=9F=E8=83=BD=207.=20?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E5=86=85=E9=83=A8=E9=83=A8=E5=88=86rpc?= =?UTF-8?q?=E8=AF=B7=E6=B1=82=EF=BC=8C=E5=8F=82=E6=95=B0=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=208.=20=E8=B0=83=E6=95=B4=E5=85=B6=E4=BB=96bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/entity/cloud/BatteryStation.java | 3 ++ .../request/PageListSwapOrderPreRequest.java | 37 +++++++++++++++ .../PageListSwapOrderRequest.java | 2 +- .../customer/VehicleController.java | 22 +++++++-- .../order/OrderSwapBatteryController.java | 10 ++-- .../test/MqttMessageTestController.java | 3 +- .../controller/test/service/MqttTestUtil.java | 7 +-- .../request/PageListVehicleRequest.java | 3 ++ .../hd/cloud/mqtt/config/MqttConnectInit.java | 2 +- .../mqtt/enums/StateFunctionTypesEnum.java | 5 +- .../req/battery/BatteryInfoResponse.java | 2 + .../newer/req/carinfo/CarInfoResponse.java | 2 + .../handle/EncryptKeyReqMessageService.java | 8 +++- .../message/handle/MessageUtilService.java | 47 ++++++++++++------- .../handle/MqttMessageHandleService.java | 8 +++- .../message/handle/RequestMessageService.java | 39 ++++++++++++--- .../message/handle/StateMessageService.java | 3 ++ .../service/OrderSwapBatteryService.java | 5 +- .../hd/cloud/service/VehicleService.java | 4 ++ .../service/impl/MessageMqttServiceImpl.java | 2 +- .../impl/OrderSwapBatteryServiceImpl.java | 41 ++++++++++------ .../service/impl/VehicleServiceImpl.java | 25 ++++++++++ .../WechatPayNotifyHandleService.java | 2 + .../hd/cloud/service/rpc/WechatService.java | 6 +-- .../hd/cloud/task/OrderCostCalculateTask.java | 8 +++- .../src/main/resources/application.yml | 2 +- .../controller/SwapOrderController.java | 7 +-- .../gzh/GZHMessageSendController.java | 2 +- .../hd/wechat/service/OrderService.java | 5 +- .../gzh/GZHMessageTemplateService.java | 17 ++++--- .../wechat/service/impl/OrderServiceImpl.java | 13 +++-- .../service/impl/WechatUserServiceImpl.java | 2 +- .../hd/wechat/service/rpc/CloudService.java | 5 +- .../src/main/resources/application.yml | 2 +- 34 files changed, 261 insertions(+), 90 deletions(-) create mode 100644 base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/request/PageListSwapOrderPreRequest.java rename base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/{ => request}/PageListSwapOrderRequest.java (96%) diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStation.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStation.java index 935143c..edcfbc7 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStation.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/BatteryStation.java @@ -50,6 +50,9 @@ public class BatteryStation implements Serializable { @Schema(description = "站点类型ID") private Integer type; + + @Schema(description = "换电计费方式:1-按充电量,2-按SOC,3-按行驶公里数") + private Integer feeType; @Schema(description = "地址") private String address; diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/request/PageListSwapOrderPreRequest.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/request/PageListSwapOrderPreRequest.java new file mode 100644 index 0000000..42b5a17 --- /dev/null +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/request/PageListSwapOrderPreRequest.java @@ -0,0 +1,37 @@ +package com.evotech.hd.common.core.entity.cloud.request; + +import com.evotech.hd.common.core.entity.BasePageRequest; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; + + +@Data +@Schema(name = "查询换电预约订单请求参数", hidden = true) +@EqualsAndHashCode(callSuper=false) +public class PageListSwapOrderPreRequest extends BasePageRequest { + + + @Schema(description = "用户编码") + private String ucode; + + @Schema(description = "车牌号") + private String plateNum; + + @Schema(description = "预约换电日期开始", example = "yyyyMMdd") + private String swapDayBegin; + + @Schema(description = "预约换电日期结束") + private String swapDayEnd; + + @Schema(description = "换电站编码") + private String stationCode; + + + @Schema(description = "订单状态:1-预约成功,2-到店使用,3-取消,4-过期") + private Integer status; + + + + +} diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/PageListSwapOrderRequest.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/request/PageListSwapOrderRequest.java similarity index 96% rename from base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/PageListSwapOrderRequest.java rename to base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/request/PageListSwapOrderRequest.java index 02a0317..9044236 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/PageListSwapOrderRequest.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/entity/cloud/request/PageListSwapOrderRequest.java @@ -1,4 +1,4 @@ -package com.evotech.hd.common.core.entity.cloud; +package com.evotech.hd.common.core.entity.cloud.request; import java.util.Date; diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/customer/VehicleController.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/customer/VehicleController.java index 779ce7b..33c930b 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/customer/VehicleController.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/customer/VehicleController.java @@ -64,16 +64,23 @@ public class VehicleController { return vehicleService.list(plvr); } - @Operation(summary = "公司关联") + @Operation(summary = "关联公司") @PostMapping("/company/relation") @ApiOperationSupport(order = 5) public Result companyRelation(String plateNum, String ccode, String cname) { return vehicleService.companyRelation(plateNum, ccode, cname); } + @Operation(summary = "删除关联公司") + @PostMapping("/company/relation/del") + @ApiOperationSupport(order = 6) + public Result delCompanyRelation(String plateNum) { + return vehicleService.delCompanyRelation(plateNum); + } + @Operation(summary = "微信用户关联") @PostMapping("/wechatuser/relation/add") - @ApiOperationSupport(order = 6) + @ApiOperationSupport(order = 7) public Result addWechatUserRelation(@Valid @ParameterObject VehicleWechatUserRelation relation) { return vehicleService.addWechatUserRelation(relation); } @@ -81,7 +88,7 @@ public class VehicleController { @Operation(summary = "删除微信用户关联") @PostMapping("/wechatuser/relation/del") - @ApiOperationSupport(order = 7) + @ApiOperationSupport(order = 8) public Result deleteWechatUserRelation(Integer id) { return vehicleService.deleteWechatUserRelation(id); } @@ -89,11 +96,18 @@ public class VehicleController { @Operation(summary = "查询微信用户车辆") @GetMapping("/wechatuser/relation/list") - @ApiOperationSupport(order = 8) + @ApiOperationSupport(order = 9) public Result> listWechatUserRelation(@NotBlank @RequestParam String wuid) { return vehicleService.listWechatUserRelation(wuid, null); } + @Operation(summary = "查询车辆的关联用户") + @GetMapping("/relationuser/list") + @ApiOperationSupport(order = 10) + public Result> listRelationUser(@NotBlank @RequestParam String PlantNo) { + return vehicleService.listRelationUser(PlantNo); + } + diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/order/OrderSwapBatteryController.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/order/OrderSwapBatteryController.java index 80f559e..8d75972 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/order/OrderSwapBatteryController.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/order/OrderSwapBatteryController.java @@ -16,7 +16,8 @@ import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery; import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryPre; import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryStep; -import com.evotech.hd.common.core.entity.cloud.PageListSwapOrderRequest; +import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderPreRequest; +import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderRequest; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiSupport; @@ -55,8 +56,8 @@ public class OrderSwapBatteryController { @Operation(summary = "查询预约") @GetMapping("/pre/list") @ApiOperationSupport(order = 3) - public Result> listPre(String plateNum, Integer status, String ucode, String stationCode) { - return orderSwapBatteryService.listPre(plateNum, status, ucode, stationCode); + public Result> listPre(@ParameterObject PageListSwapOrderPreRequest plsopr) { + return orderSwapBatteryService.listPre(plsopr); } @@ -125,7 +126,8 @@ public class OrderSwapBatteryController { @PostMapping({"/companywallet/pay"}) @ApiOperationSupport(order = 11) public Result companyWalletPay(@RequestParam String orderNo, String wuid, String uname) { - return orderSwapBatteryService.calculateCost(orderNo); + // TODO + return null; } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/test/MqttMessageTestController.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/test/MqttMessageTestController.java index b08cd31..46b5e2b 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/test/MqttMessageTestController.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/test/MqttMessageTestController.java @@ -34,7 +34,7 @@ import jakarta.annotation.Resource; @RequestMapping("/test/mqtt") public class MqttMessageTestController { - public static String topicPrefix = "ZZHD/{}/S2M/{}"; + public static String topicPrefix = "YTHD/{}/S2M/{}"; @Resource private MqttTestUtil mqttTestUtil; @@ -89,7 +89,6 @@ public class MqttMessageTestController { return new Result().success("OK"); } - diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/test/service/MqttTestUtil.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/test/service/MqttTestUtil.java index fdcaeca..417af00 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/test/service/MqttTestUtil.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/controller/test/service/MqttTestUtil.java @@ -13,9 +13,6 @@ import com.evotech.hd.common.core.utils.SnowflakeUtil; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; -import cn.hutool.crypto.Mode; -import cn.hutool.crypto.Padding; -import cn.hutool.crypto.symmetric.AES; import cn.hutool.crypto.symmetric.SymmetricCrypto; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; @@ -34,9 +31,7 @@ public class MqttTestUtil { public void publishMessage(String stationCode, JSONObject jo, String topic, MqttMessageHeader header) { // 1. 获取AES - JSONObject aesJo = messageUtilService.getAESKey(stationCode); - SymmetricCrypto aes = new AES(Mode.CBC, Padding.PKCS5Padding, aesJo.getStr("aesSecretKey").getBytes(), aesJo.getStr("aesIv").getBytes()); - // 2. 数据 + SymmetricCrypto aes = messageUtilService.getAes(stationCode); MyMqttMessage message = new MyMqttMessage(); message.setHeader(header); message.setDataBody(jo); diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/entity/request/PageListVehicleRequest.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/entity/request/PageListVehicleRequest.java index 0517de9..255a9e3 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/entity/request/PageListVehicleRequest.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/entity/request/PageListVehicleRequest.java @@ -38,5 +38,8 @@ public class PageListVehicleRequest extends BasePageRequest { @Schema(description = "引擎号") private String engineNo; + + @Schema(description = "公司编码") + private String ccode; } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/config/MqttConnectInit.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/config/MqttConnectInit.java index cdc1567..b9a4134 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/config/MqttConnectInit.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/config/MqttConnectInit.java @@ -21,7 +21,7 @@ import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; -//@Component +@Component @Order(value = 20) @Slf4j public class MqttConnectInit implements ApplicationRunner { diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/enums/StateFunctionTypesEnum.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/enums/StateFunctionTypesEnum.java index b3cc4e0..a191364 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/enums/StateFunctionTypesEnum.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/enums/StateFunctionTypesEnum.java @@ -10,7 +10,8 @@ public enum StateFunctionTypesEnum { // 新交互请求 FUN_ORDERSTATUS("orderStatus", "", "站端反馈订单状态"), FUN_SWAPSTEP("swapStep", "", "站端反馈换电步骤"), - FUN_BATTERYSTATUS("batteryStatus", "", "站端反馈电池状态"); + FUN_BATTERYSTATUS("batteryStatus", "", "站端反馈电池状态"), + FUN_TEST("test", "", "没用的占位"); String function; String reFunction; @@ -42,7 +43,7 @@ public enum StateFunctionTypesEnum { } return Arrays.stream(StateFunctionTypesEnum.values()) .filter(i -> i.function.equals(function)) - .findFirst().orElse(null); + .findFirst().orElse(FUN_TEST); } } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/dto/newer/req/battery/BatteryInfoResponse.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/dto/newer/req/battery/BatteryInfoResponse.java index 91d9ae3..8474358 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/dto/newer/req/battery/BatteryInfoResponse.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/dto/newer/req/battery/BatteryInfoResponse.java @@ -17,6 +17,8 @@ public class BatteryInfoResponse { private Integer isOver; + private String msg; + private List batteryData; } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/dto/newer/req/carinfo/CarInfoResponse.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/dto/newer/req/carinfo/CarInfoResponse.java index 47caf6e..2697908 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/dto/newer/req/carinfo/CarInfoResponse.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/dto/newer/req/carinfo/CarInfoResponse.java @@ -20,6 +20,8 @@ public class CarInfoResponse { private Integer isOver; + private String msg; + private List vehicleData; } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/EncryptKeyReqMessageService.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/EncryptKeyReqMessageService.java index 0654c89..6947455 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/EncryptKeyReqMessageService.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/EncryptKeyReqMessageService.java @@ -26,7 +26,13 @@ public class EncryptKeyReqMessageService { public void encryptKeyReq(MessageTopic topic, MqttMessage message) { // 1. 解密 - JSONObject jo = messageUtilService.decryptEncryptKeyReqMessage(topic, message); + JSONObject jo = new JSONObject(); + try { + jo = messageUtilService.decryptEncryptKeyReqMessage(topic, message); + } catch (Exception e) { + e.printStackTrace(); + return; + } String clientPublicKey = jo.getStr("publicKey"); // 2. 保存MQTT消息 MessageMqtt mm = new MessageMqtt(); diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/MessageUtilService.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/MessageUtilService.java index 8bc9e4c..ec50ad5 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/MessageUtilService.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/MessageUtilService.java @@ -80,8 +80,8 @@ public class MessageUtilService { * @param msg * @param publicKey */ - public void publishRSAMessage(MessageTopic topic, String msg, String publicKey) { - RSA rsa = SecureUtil.rsa(null, publicKey); + public void publishRSAMessage(MessageTopic topic, String msg, String stationPublicKey) { + RSA rsa = SecureUtil.rsa(null, stationPublicKey); String encrypt = rsa.encryptBase64(msg, KeyType.PublicKey); publishMessage.publish(encrypt, topic.toString()); } @@ -94,8 +94,7 @@ public class MessageUtilService { */ public void publishAESMessage(MessageTopic topic, MqttMessageHeader header, JSONObject dataBody) { // 1. 获取AES - JSONObject aesJo = getAESKey(topic.getStationCode()); - SymmetricCrypto aes = new AES(Mode.CBC, Padding.PKCS5Padding, aesJo.getStr("aesSecretKey").getBytes(), aesJo.getStr("aesIv").getBytes()); + SymmetricCrypto aes = getAes(topic.getStationCode()); // 2. 数据 MyMqttMessage message = new MyMqttMessage(); message.setHeader(header); @@ -104,6 +103,9 @@ public class MessageUtilService { // 3. 发送MQTT消息 publishMessage.publish(encrypt, topic.toString()); } + + + @@ -117,8 +119,7 @@ public class MessageUtilService { byte[] payload = message.getPayload(); String privateKey = getRSAPrivateKey(topic.getStationCode()); RSA rsa = SecureUtil.rsa(privateKey, null); - byte[] decrypt = rsa.decrypt(payload, KeyType.PrivateKey); - + byte[] decrypt = rsa.decrypt(new String(payload), KeyType.PrivateKey); return JSONUtil.parseObj(new String(decrypt)); } @@ -129,13 +130,20 @@ public class MessageUtilService { * @return */ public JSONObject decryptAesMessage(MessageTopic topic, MqttMessage message) { - JSONObject aesJo = getAESKey(topic.getStationCode()); - SymmetricCrypto aes = new AES(Mode.CBC, Padding.PKCS5Padding, aesJo.getStr("aesSecretKey").getBytes(), aesJo.getStr("aesIv").getBytes()); + SymmetricCrypto aes = getAes(topic.getStationCode()); String decrypt = aes.decryptStr(new String(message.getPayload())); return JSONUtil.parseObj(decrypt); } + public SymmetricCrypto getAes(String stationCode) { + JSONObject aesJo = getAESKey(stationCode); + String aesSecretKey = aesJo.getStr("encryptKey"); + String aesIv = aesJo.getStr("encryptVector"); + SymmetricCrypto aes = new AES(Mode.CBC, Padding.PKCS5Padding, Base64.getDecoder().decode(aesSecretKey), aesIv.getBytes()); + return aes; + } + /** * 获取AES秘钥和IV @@ -148,29 +156,32 @@ public class MessageUtilService { try { o1 = redisUtil.get(HDConstant.HD_STATION_SECRET_KEY_AES_PREFIX + stationCode + ":key"); } catch (Exception e) { - // TODO Auto-generated catch block e.printStackTrace(); } Object o2 = null; try { o2 = redisUtil.get(HDConstant.HD_STATION_SECRET_KEY_AES_PREFIX + stationCode + ":iv"); } catch (Exception e) { - // TODO Auto-generated catch block e.printStackTrace(); } if (!ObjectUtil.isEmpty(o1) && !ObjectUtil.isEmpty(o2)) { - jo.set("aesSecretKey", o1.toString()); - jo.set("aesIv", o2.toString()); +// jo.set("aesSecretKey", o1.toString()); +// jo.set("aesIv", o2.toString()); + jo.set("encryptKey", o1.toString()); + jo.set("encryptVector", o2.toString()); return jo; } BatteryStationSecretKey bssk = batteryStationSecretKeyDao.selectOne(new QueryWrapper().eq("type", 2).eq("station_code", stationCode)); if (bssk == null) { - return setAesKey(stationCode); + throw new RuntimeException("AES秘钥未获取到,请站端重新登陆!"); +// return setAesKey(stationCode); } redisUtil.set(HDConstant.HD_STATION_SECRET_KEY_AES_PREFIX + stationCode + ":key", bssk.getPublicKey()); redisUtil.set(HDConstant.HD_STATION_SECRET_KEY_AES_PREFIX + stationCode + ":iv", bssk.getPrivateKey()); - jo.set("aesSecretKey", o1.toString()); - jo.set("aesIv", o2.toString()); +// jo.set("aesSecretKey", o1.toString()); +// jo.set("aesIv", o2.toString()); + jo.set("encryptKey", o1.toString()); + jo.set("encryptVector", o2.toString()); return jo; } @@ -195,8 +206,10 @@ public class MessageUtilService { redisUtil.set(HDConstant.HD_STATION_SECRET_KEY_AES_PREFIX + stationCode + ":key", bssk.getPublicKey()); redisUtil.set(HDConstant.HD_STATION_SECRET_KEY_AES_PREFIX + stationCode + ":iv", bssk.getPrivateKey()); JSONObject jo = new JSONObject(); - jo.set("aesSecretKey", base64KeyStr); - jo.set("aesIv", iv); +// jo.set("aesSecretKey", base64KeyStr); +// jo.set("aesIv", iv); + jo.set("encryptKey", base64KeyStr); + jo.set("encryptVector", iv); return jo; } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/MqttMessageHandleService.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/MqttMessageHandleService.java index 45876e1..ec822e6 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/MqttMessageHandleService.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/MqttMessageHandleService.java @@ -44,7 +44,13 @@ public class MqttMessageHandleService { // 3. 其他 AES加密 // 3.1 保存数据 // 3.1.1 解密 - JSONObject jo = messageUtilService.decryptAesMessage(topic, message); + JSONObject jo = new JSONObject(); + try { + jo = messageUtilService.decryptAesMessage(topic, message); + } catch (Exception e) { + e.printStackTrace(); + return; + } // 3.1.2 保存MQTT消息 MqttMessageHeader header = messageUtilService.addMqttMessage(topic, message.getId()+"", message.getQos(), jo); JSONObject dataBody = jo.getJSONObject("dataBody"); diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/RequestMessageService.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/RequestMessageService.java index d41b4a3..83eb55b 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/RequestMessageService.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/RequestMessageService.java @@ -18,7 +18,9 @@ import com.evotech.hd.cloud.mqtt.enums.MqttMessageTypeEnum; import com.evotech.hd.cloud.mqtt.enums.RequestFunctionTypesEnum; import com.evotech.hd.cloud.mqtt.message.MessageTopic; import com.evotech.hd.cloud.mqtt.message.MqttMessageHeader; +import com.evotech.hd.cloud.mqtt.message.dto.newer.req.battery.BatteryData; import com.evotech.hd.cloud.mqtt.message.dto.newer.req.battery.BatteryInfoReq; +import com.evotech.hd.cloud.mqtt.message.dto.newer.req.battery.BatteryInfoResponse; import com.evotech.hd.cloud.mqtt.message.dto.newer.req.carinfo.CarInfoReq; import com.evotech.hd.cloud.mqtt.message.dto.newer.req.carinfo.CarInfoResponse; import com.evotech.hd.cloud.mqtt.message.dto.newer.req.carinfo.VehicleData; @@ -34,6 +36,7 @@ import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryPre; import com.evotech.hd.common.core.entity.cloud.VehicleWechatUserRelation; import cn.hutool.core.date.DatePattern; import cn.hutool.core.date.DateUtil; +import cn.hutool.json.JSONConfig; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import jakarta.annotation.Resource; @@ -102,6 +105,7 @@ public class RequestMessageService { .eq("plate_num", orderByPlateNumReq.getPlateNum()) .eq("station_code", orderByPlateNumReq.getStationCode()) .eq("status", 1) + .eq("swap_day", DateUtil.format(d, DatePattern.PURE_DATE_FORMATTER)) .last("limit 1")); if (osbp == null) { response.setOrderRequestId(orderByPlateNumReq.getOrderRequestId()); @@ -127,6 +131,9 @@ public class RequestMessageService { osb.setStatus(1); osb.setStationCode(osbp.getStationCode()); osb.setStationName(osbp.getStationName()); + // TODO 查询换电站信息,拿到计费方式,放到订单信息中 + + // // 加上费用标准 - 移到订单服务中了 // osb = orderBasicFeeComponent.orderBasicFee(osb); @@ -145,7 +152,8 @@ public class RequestMessageService { topic.setMessageType(MqttMessageTypeEnum.RESPONSE.getType()); header.setFunction(RequestFunctionTypesEnum.FUN_ORDERBYPLATENUM.getReFunction()); header.setTimeStamp(DateUtil.format(d, DatePattern.NORM_DATETIME_FORMATTER)); - messageUtilService.publishAESMessage(topic, header, JSONUtil.parseObj(response)); + + messageUtilService.publishAESMessage(topic, header, JSONUtil.parseObj(response, new JSONConfig().setDateFormat(DatePattern.NORM_DATETIME_PATTERN))); } /** @@ -163,11 +171,27 @@ public class RequestMessageService { pageNo += 1; page = new Page(pageNo, pageSize); page = batteryStationDcDao.selectPage(page, new QueryWrapper().eq(StringUtils.hasText(batCode), "bat_code", batCode)); - - - - - + BatteryInfoResponse response = new BatteryInfoResponse(); + response.setBatteryInfoRequestId(batteryInfoReq.getBatteryInfoRequestId()); + response.setPageNo(Integer.valueOf(page.getCurrent() + "")); + response.setPageSize(Integer.valueOf(page.getSize() + "")); + response.setTotal(Integer.valueOf(page.getTotal() + "")); + response.setIsOver(page.getCurrent() < page.getPages()? 0 : 1); + List list = new ArrayList(); + if (page.getCurrent() > 0) { + list = page.getRecords().stream().map(i -> { + BatteryData bd = new BatteryData(); + BeanUtils.copyProperties(i, bd); + return bd; + }).toList(); + response.setBatteryData(list); + } + topic.setDataDirection("M2S"); + topic.setMessageType(MqttMessageTypeEnum.RESPONSE.getType()); + header.setFunction(RequestFunctionTypesEnum.FUN_BATTERYINFO.getReFunction()); + header.setTimeStamp(DateUtil.format(new Date(), DatePattern.NORM_DATETIME_FORMATTER)); + + messageUtilService.publishAESMessage(topic, header, JSONUtil.parseObj(response, new JSONConfig().setDateFormat(DatePattern.NORM_DATETIME_PATTERN))); } while (page.getCurrent() < page.getPages()); } @@ -207,7 +231,8 @@ public class RequestMessageService { topic.setMessageType(MqttMessageTypeEnum.RESPONSE.getType()); header.setFunction(RequestFunctionTypesEnum.FUN_CARINFO.getReFunction()); header.setTimeStamp(DateUtil.format(new Date(), DatePattern.NORM_DATETIME_FORMATTER)); - messageUtilService.publishAESMessage(topic, header, JSONUtil.parseObj(response)); + + messageUtilService.publishAESMessage(topic, header, JSONUtil.parseObj(response, new JSONConfig().setDateFormat(DatePattern.NORM_DATETIME_PATTERN))); } while (page.getCurrent() < page.getPages()); } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/StateMessageService.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/StateMessageService.java index bf69d56..1880e02 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/StateMessageService.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/handle/StateMessageService.java @@ -65,6 +65,7 @@ public class StateMessageService { OrderStatus orderStatus = JSONUtil.toBean(dataBody, OrderStatus.class); OrderStatusData statusData = JSONUtil.toBean(dataBody.getJSONObject("statusData"), OrderStatusData.class); handleOrderStatus(orderStatus, statusData); + // TODO 回复一下收到了 break; case FUN_SWAPSTEP: @@ -77,6 +78,8 @@ public class StateMessageService { step.setStepName(hdStepDictComponent.hdStepDictName(step.getStep())); orderSwapBatteryStepDao.insert(step); + break; + case FUN_TEST: break; default: break; diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/OrderSwapBatteryService.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/OrderSwapBatteryService.java index 8ae9e35..0ef1425 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/OrderSwapBatteryService.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/OrderSwapBatteryService.java @@ -7,7 +7,8 @@ import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery; import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryPre; import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryStep; -import com.evotech.hd.common.core.entity.cloud.PageListSwapOrderRequest; +import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderPreRequest; +import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderRequest; public interface OrderSwapBatteryService { @@ -15,7 +16,7 @@ public interface OrderSwapBatteryService { public Result cancelPre(Integer id, Integer status); - public Result> listPre(String plateNum, Integer status, String ucode, String stationCode); + public Result> listPre(PageListSwapOrderPreRequest plsopr); public Result add(OrderSwapBattery osb); diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/VehicleService.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/VehicleService.java index a5e3ee7..da0820c 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/VehicleService.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/VehicleService.java @@ -19,9 +19,13 @@ public interface VehicleService { public Result companyRelation(String plateNum, String ccode, String cname); + public Result delCompanyRelation(String plateNum); + public Result addWechatUserRelation(VehicleWechatUserRelation relation); public Result deleteWechatUserRelation(Integer id); public Result> listWechatUserRelation(String openid, String plateNum); + + public Result> listRelationUser(String PlantNo); } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/MessageMqttServiceImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/MessageMqttServiceImpl.java index 2bd5ed3..8e8f4a2 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/MessageMqttServiceImpl.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/MessageMqttServiceImpl.java @@ -33,7 +33,7 @@ public class MessageMqttServiceImpl implements MessageMqttService { .eq(StringUtils.hasText(plmmr.getDirection()), "direction", plmmr.getDirection()) .eq(StringUtils.hasText(plmmr.getType()), "type", plmmr.getType()) .eq(StringUtils.hasText(plmmr.getMessageFunction()), "message_function", plmmr.getMessageFunction()) - .orderByDesc("message_id")); + .orderByDesc("pk_id")); if (page.getRecords().isEmpty()) { return new Result>().error(CodeMsg.DATABASE_RESULT_NULL); } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/OrderSwapBatteryServiceImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/OrderSwapBatteryServiceImpl.java index 958a6b2..9984225 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/OrderSwapBatteryServiceImpl.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/OrderSwapBatteryServiceImpl.java @@ -30,11 +30,12 @@ import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery; import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryPre; import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryStep; -import com.evotech.hd.common.core.entity.cloud.PageListSwapOrderRequest; import com.evotech.hd.common.core.entity.cloud.TradeDetail; import com.evotech.hd.common.core.entity.cloud.VehicleInfo; import com.evotech.hd.common.core.entity.cloud.WalletAccount; import com.evotech.hd.common.core.entity.cloud.WalletAccountDetail; +import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderPreRequest; +import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderRequest; import com.evotech.hd.common.core.entity.wechat.WechatUser; import com.evotech.hd.common.core.enums.CodeMsg; import com.evotech.hd.common.core.enums.OrderStatusEnums; @@ -101,7 +102,6 @@ public class OrderSwapBatteryServiceImpl implements OrderSwapBatteryService { int n = orderSwapBatteryPreDao.insert(osbp); if (n == 1) { // 发送服务号消息,没有消息队列,先用接口吧 - osbp.setCtime(null); templateMessageService.preOrderMessageSend(osbp); return new Result().success(n); } @@ -122,17 +122,20 @@ public class OrderSwapBatteryServiceImpl implements OrderSwapBatteryService { } @Override - public Result> listPre(String plateNum, Integer status, String ucode, String stationCode) { - List list = orderSwapBatteryPreDao.selectList(new QueryWrapper() - .eq(StringUtils.hasText(ucode), "ucode", ucode) - .eq(status != null, "status", status) - .eq(StringUtils.hasText(plateNum), "plate_num", plateNum) - .eq(StringUtils.hasText(stationCode), "station_code", stationCode) + public Result> listPre(PageListSwapOrderPreRequest plsopr) { + Page page = new Page(plsopr.getPageNo(), plsopr.getPageSize()); + page = orderSwapBatteryPreDao.selectPage(page, new QueryWrapper() + .eq(StringUtils.hasText(plsopr.getUcode()), "ucode", plsopr.getUcode()) + .eq(plsopr.getStatus() != null, "status", plsopr.getStatus()) + .eq(StringUtils.hasText(plsopr.getPlateNum()), "plate_num", plsopr.getPlateNum()) + .eq(StringUtils.hasText(plsopr.getStationCode()), "station_code", plsopr.getStationCode()) + .ge(StringUtils.hasText(plsopr.getSwapDayBegin()), "swap_day", plsopr.getSwapDayBegin()) + .le(StringUtils.hasText(plsopr.getSwapDayEnd()), "swap_day", plsopr.getSwapDayEnd()) .orderByDesc("pk_id")); - if (list.isEmpty()) { + if (page.getRecords().isEmpty()) { return new Result>().error(CodeMsg.DATABASE_RESULT_NULL); } - return new Result>().success(list); + return new Result>().success(page); } @Override @@ -286,11 +289,21 @@ public class OrderSwapBatteryServiceImpl implements OrderSwapBatteryService { } } // 3. 选择费用计算方式 计算费用 - // 先按电量计算 - if (order.getElectAmount() == null) { - return new Result().error("充电订单 充电量 异常!"); + BigDecimal fee = BigDecimal.ZERO; + if (order.getFeeType() == 3) { + // 先按电量计算 + if (order.getElectAmount() == null) { + return new Result().error("充电订单 充电量 异常!"); + } + fee = order.getServiceFee().add(order.getBasicFee().multiply(order.getElectAmount())).setScale(0, RoundingMode.HALF_UP); + } else if (order.getFeeType() == 2) { + // TODO 按SOC + } else if (order.getFeeType() == 1) { + // TODO 按里程 + + } else { + } - BigDecimal fee = order.getServiceFee().add(order.getBasicFee().multiply(order.getElectAmount())).setScale(0, RoundingMode.HALF_UP); // 4. 修改订单 order.setAmount(fee.intValue()); order.setStatus(6); diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/VehicleServiceImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/VehicleServiceImpl.java index ddd6e0e..a9c354c 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/VehicleServiceImpl.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/VehicleServiceImpl.java @@ -71,6 +71,7 @@ public class VehicleServiceImpl implements VehicleService { .eq(StringUtils.hasText(plvr.getEngineNo()), "engine_no", plvr.getEngineNo()) .eq(StringUtils.hasText(plvr.getFrameworkNo()), "framework_no", plvr.getFrameworkNo()) .eq(StringUtils.hasText(plvr.getPhone()), "phone", plvr.getPhone()) + .eq(StringUtils.hasText(plvr.getCcode()), "ccode", plvr.getCcode()) .ne("del_flag", 1) .orderByAsc("plate_num")); if (page.getRecords().isEmpty()) { @@ -84,12 +85,26 @@ public class VehicleServiceImpl implements VehicleService { VehicleInfo vi = new VehicleInfo(); vi.setCcode(ccode); vi.setCname(cname); + vi.setOwnerType(2); int n = vehicleInfoDao.update(vi, new QueryWrapper().eq("plate_num", plateNum)); if (n == 1) { return new Result().success(n); } return new Result().error("关联公司失败!"); } + + @Override + public Result delCompanyRelation(String plateNum) { + VehicleInfo vi = new VehicleInfo(); + vi.setCcode(""); + vi.setCname(""); + vi.setOwnerType(1); + int n = vehicleInfoDao.update(vi, new QueryWrapper().eq("plate_num", plateNum)); + if (n == 1) { + return new Result().success(n); + } + return new Result().error("删除关联公司失败!"); + } @Override public Result addWechatUserRelation(VehicleWechatUserRelation relation) { @@ -124,6 +139,16 @@ public class VehicleServiceImpl implements VehicleService { return new Result>().success(list); } + @Override + public Result> listRelationUser(String PlantNo) { + List list = vehicleWechatUserRelationDao.selectList(new QueryWrapper().eq("plate_num", PlantNo)); + if (list.isEmpty()) { + return new Result>().error(CodeMsg.DATABASE_RESULT_NULL); + } + list.stream().forEach(i -> i.setOpenid(null)); + return new Result>().success(list); + } + } diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/newthread/WechatPayNotifyHandleService.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/newthread/WechatPayNotifyHandleService.java index 32217ec..ff73353 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/newthread/WechatPayNotifyHandleService.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/newthread/WechatPayNotifyHandleService.java @@ -1,5 +1,6 @@ package com.evotech.hd.cloud.service.newthread; +import java.util.Date; import java.util.List; import org.springframework.stereotype.Service; @@ -66,6 +67,7 @@ public class WechatPayNotifyHandleService { wad.setTradeType(tradeDetail.getTradeType()); wad.setTradeNo(tradeDetail.getOutTradeNo()); + wad.setCtime(new Date()); walletAccountDetailDao.insert(wad); // 改余额 wallet.setTotalAmount(wad.getAfterTotalAmount()); diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/rpc/WechatService.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/rpc/WechatService.java index efab67b..589d76e 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/rpc/WechatService.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/rpc/WechatService.java @@ -28,7 +28,7 @@ public interface WechatService { @PostMapping(value = "/wechat/gzh/msg/send/preorder2", consumes = {MediaType.APPLICATION_JSON_VALUE}) - public Result preOrderMessage(OrderSwapBatteryPre osbp); + public Result preOrderMessage(@RequestBody OrderSwapBatteryPre osbp); @PostMapping(value = "/wechat/gzh/msg/send/order", consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE}) @@ -39,8 +39,8 @@ public interface WechatService { public Result orderMessage2(@RequestParam Integer id, @RequestParam Integer templateType); @PostMapping(value = "/wechat/gzh/msg/send/recharge", - consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE}) - public Result rechargeMessage(@ParameterObject TradeDetail trade, @RequestParam Integer money); + consumes = {MediaType.APPLICATION_JSON_VALUE}) + public Result rechargeMessage(@RequestBody TradeDetail trade, @RequestParam Integer money); @PostMapping(value = "/wechat/wechatpay/native/prepay", consumes = {MediaType.APPLICATION_JSON_VALUE}) diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/task/OrderCostCalculateTask.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/task/OrderCostCalculateTask.java index 2414861..48fb972 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/task/OrderCostCalculateTask.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/task/OrderCostCalculateTask.java @@ -1,5 +1,6 @@ package com.evotech.hd.cloud.task; +import java.util.Date; import java.util.List; import org.springframework.scheduling.annotation.Scheduled; @@ -12,11 +13,12 @@ import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery; import com.evotech.hd.common.core.enums.CodeMsg; +import cn.hutool.core.date.DateUtil; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; -//@Component +@Component @Slf4j public class OrderCostCalculateTask { @@ -37,7 +39,9 @@ public class OrderCostCalculateTask { int n = 0; while (flag) { List list = orderSwapBatteryDao.selectList(new QueryWrapper() - .eq("status", 5).ne("del_flag", 1).last("limit 20")); + .eq("status", 5).ne("del_flag", 1) + .ge("order_time", DateUtil.beginOfYear(new Date())) + .last("limit 20")); if (!list.isEmpty()) { n = orderCalculate(n, list); } else { diff --git a/cloud-manage-server/src/main/resources/application.yml b/cloud-manage-server/src/main/resources/application.yml index b6ffe04..40c9406 100644 --- a/cloud-manage-server/src/main/resources/application.yml +++ b/cloud-manage-server/src/main/resources/application.yml @@ -27,7 +27,7 @@ spring: username: nacos password: nacos discovery: - register-enabled: false + register-enabled: true #server-addr: 10.10.1.6:8848 #ip: 10.10.1.2 # 因添加了context-path,admin-server要想发现正确路径,需要加这个 diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/controller/SwapOrderController.java b/wechat-server/src/main/java/com/evotech/hd/wechat/controller/SwapOrderController.java index ba16bc3..8c85cf0 100644 --- a/wechat-server/src/main/java/com/evotech/hd/wechat/controller/SwapOrderController.java +++ b/wechat-server/src/main/java/com/evotech/hd/wechat/controller/SwapOrderController.java @@ -13,7 +13,8 @@ import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery; import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryPre; import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryStep; -import com.evotech.hd.common.core.entity.cloud.PageListSwapOrderRequest; +import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderPreRequest; +import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderRequest; import com.evotech.hd.wechat.service.OrderService; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiSupport; @@ -52,8 +53,8 @@ public class SwapOrderController { @Operation(summary = "查询预约") @GetMapping("/pre/list") @ApiOperationSupport(order = 3) - public Result> listPre(@RequestParam(required = false) String plateNum, @RequestParam(required = false) Integer status, @RequestParam(required = false) String ucode, @RequestParam(required = false) String stationCode) { - return orderService.listPre(plateNum, status, ucode, stationCode); + public Result> listPre(@ParameterObject PageListSwapOrderPreRequest plsopr) { + return orderService.listPre(plsopr); } @Operation(summary = "查询订单") diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/controller/gzh/GZHMessageSendController.java b/wechat-server/src/main/java/com/evotech/hd/wechat/controller/gzh/GZHMessageSendController.java index f511354..100f634 100644 --- a/wechat-server/src/main/java/com/evotech/hd/wechat/controller/gzh/GZHMessageSendController.java +++ b/wechat-server/src/main/java/com/evotech/hd/wechat/controller/gzh/GZHMessageSendController.java @@ -64,7 +64,7 @@ public class GZHMessageSendController { @Operation(summary = "充值成功推送公众号消息") @PostMapping("/recharge") @ApiOperationSupport(order = 4) - public Result sendTemplateMessageRecharge(@ParameterObject TradeDetail trade, @RequestParam Integer money) { + public Result sendTemplateMessageRecharge(@RequestBody TradeDetail trade, @RequestParam Integer money) { return gzhMessageTemplateService.sendTemplateMessageRecharge(trade, money); } diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/service/OrderService.java b/wechat-server/src/main/java/com/evotech/hd/wechat/service/OrderService.java index 0e21118..d425bdf 100644 --- a/wechat-server/src/main/java/com/evotech/hd/wechat/service/OrderService.java +++ b/wechat-server/src/main/java/com/evotech/hd/wechat/service/OrderService.java @@ -6,7 +6,8 @@ import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery; import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryPre; import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryStep; -import com.evotech.hd.common.core.entity.cloud.PageListSwapOrderRequest; +import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderPreRequest; +import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderRequest; public interface OrderService { @@ -14,7 +15,7 @@ public interface OrderService { public Result cancelPre(Integer id); - public Result> listPre(String plateNum, Integer status, String ucode, String stationCode); + public Result> listPre(PageListSwapOrderPreRequest plsopr); public Result> list(PageListSwapOrderRequest plsor); diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/service/gzh/GZHMessageTemplateService.java b/wechat-server/src/main/java/com/evotech/hd/wechat/service/gzh/GZHMessageTemplateService.java index cfc43da..d6dc1ef 100644 --- a/wechat-server/src/main/java/com/evotech/hd/wechat/service/gzh/GZHMessageTemplateService.java +++ b/wechat-server/src/main/java/com/evotech/hd/wechat/service/gzh/GZHMessageTemplateService.java @@ -1,5 +1,7 @@ package com.evotech.hd.wechat.service.gzh; +import java.math.BigDecimal; + import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; @@ -63,6 +65,7 @@ public class GZHMessageTemplateService { if (wuser == null) { return null; } + if (!StringUtils.hasText(wuser.getGzhOpenid())) { return new Result().error("未关注公众号!"); } @@ -83,12 +86,14 @@ public class GZHMessageTemplateService { data.setThing5(osbp.getUname()); data.setPhone_number4(osbp.getPhone()); sendData.setData(JSONUtil.parseObj(data)); - + String res = TemplateMessageUtil.templateMessageSend(gzhAccessTokenService.gzhAccessToken(), sendData); JSONObject jo = JSONUtil.parseObj(res); if (jo.getInt("errcode") == 0) { return new Result().success(jo); - } + } else { + System.out.println(jo); + } return new Result().error(CodeMsg.WECHAT_API_ERROR, jo); } @@ -188,7 +193,6 @@ public class GZHMessageTemplateService { if (!StringUtils.hasText(wuser.getGzhOpenid())) { return new Result().error("未关注公众号!"); } - MessageTemplateSendData sendData = new MessageTemplateSendData(); sendData.setTouser(wuser.getGzhOpenid()); String templateId = gzhProperties.getWalletRechargeTemplateId(); @@ -201,11 +205,10 @@ public class GZHMessageTemplateService { WalletRechargeTemplateData data = new WalletRechargeTemplateData(); data.setThing3(trade.getTrader()); - data.setAmount1(trade.getTradeAmount()/100 + ""); - data.setTime4(DateUtil.format(trade.getPayTime(), DatePattern.CHINESE_DATE_TIME_PATTERN)); - data.setAmount5(money/100 + ""); + data.setAmount1(new BigDecimal(trade.getTradeAmount()).divide(new BigDecimal(100)).setScale(2) + ""); + data.setTime4(DateUtil.format(trade.getPayTime(), DatePattern.NORM_DATETIME_FORMATTER)); + data.setAmount5(new BigDecimal(money).divide(new BigDecimal(100)).setScale(2) + ""); sendData.setData(JSONUtil.parseObj(data)); - String res = TemplateMessageUtil.templateMessageSend(gzhAccessTokenService.gzhAccessToken(), sendData); JSONObject jo = JSONUtil.parseObj(res); if (jo.getInt("errcode") == 0) { diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/service/impl/OrderServiceImpl.java b/wechat-server/src/main/java/com/evotech/hd/wechat/service/impl/OrderServiceImpl.java index 6eabdbf..eed5fe8 100644 --- a/wechat-server/src/main/java/com/evotech/hd/wechat/service/impl/OrderServiceImpl.java +++ b/wechat-server/src/main/java/com/evotech/hd/wechat/service/impl/OrderServiceImpl.java @@ -1,6 +1,7 @@ package com.evotech.hd.wechat.service.impl; import java.util.List; +import java.util.Optional; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; @@ -10,7 +11,8 @@ import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery; import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryPre; import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryStep; -import com.evotech.hd.common.core.entity.cloud.PageListSwapOrderRequest; +import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderPreRequest; +import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderRequest; import com.evotech.hd.wechat.service.OrderService; import com.evotech.hd.wechat.service.rpc.CloudService; @@ -38,9 +40,12 @@ public class OrderServiceImpl implements OrderService { } @Override - public Result> listPre(String plateNum, Integer status, String ucode, - String stationCode) { - return cloudService.listPre(plateNum, status, ucode, stationCode); + public Result> listPre(PageListSwapOrderPreRequest plsopr) { + if (Optional.ofNullable(plsopr.getUcode()).isPresent()) { + return cloudService.listPre(plsopr); + } else { + return new Result>().error("用户编码不能为空!"); + } } @Override diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/service/impl/WechatUserServiceImpl.java b/wechat-server/src/main/java/com/evotech/hd/wechat/service/impl/WechatUserServiceImpl.java index 3ef7b1b..598d944 100644 --- a/wechat-server/src/main/java/com/evotech/hd/wechat/service/impl/WechatUserServiceImpl.java +++ b/wechat-server/src/main/java/com/evotech/hd/wechat/service/impl/WechatUserServiceImpl.java @@ -53,7 +53,7 @@ public class WechatUserServiceImpl implements WechatUserService { return new Result().error(CodeMsg.DATABASE_RESULT_NULL); } user.setOpenid(DesensitizedUtil.idCardNum(user.getOpenid(), 5, 6)); - user.setPhoneNumber(DesensitizedUtil.mobilePhone(user.getPhoneNumber())); +// user.setPhoneNumber(DesensitizedUtil.mobilePhone(user.getPhoneNumber())); return new Result().success(user); } diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/service/rpc/CloudService.java b/wechat-server/src/main/java/com/evotech/hd/wechat/service/rpc/CloudService.java index 128aa15..7e84254 100644 --- a/wechat-server/src/main/java/com/evotech/hd/wechat/service/rpc/CloudService.java +++ b/wechat-server/src/main/java/com/evotech/hd/wechat/service/rpc/CloudService.java @@ -14,11 +14,12 @@ import com.evotech.hd.common.core.entity.Result; import com.evotech.hd.common.core.entity.cloud.OrderSwapBattery; import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryPre; import com.evotech.hd.common.core.entity.cloud.OrderSwapBatteryStep; -import com.evotech.hd.common.core.entity.cloud.PageListSwapOrderRequest; import com.evotech.hd.common.core.entity.cloud.TradeDetail; import com.evotech.hd.common.core.entity.cloud.VehicleInfo; import com.evotech.hd.common.core.entity.cloud.WalletAccount; import com.evotech.hd.common.core.entity.cloud.WalletAccountDetail; +import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderPreRequest; +import com.evotech.hd.common.core.entity.cloud.request.PageListSwapOrderRequest; import com.evotech.hd.common.core.entity.cloud.request.PageListWalletRequest; import com.evotech.hd.common.core.entity.cloud.vo.BatteryStationVO; @@ -35,7 +36,7 @@ public interface CloudService { @GetMapping(value = "/cloud/order/swap/pre/list", consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE}) - public Result> listPre(@RequestParam String plateNum, @RequestParam Integer status, @RequestParam String userId, @RequestParam String stationCode); + public Result> listPre(@SpringQueryMap PageListSwapOrderPreRequest plsopr); @GetMapping(value = "/cloud/order/swap/list", consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE}) diff --git a/wechat-server/src/main/resources/application.yml b/wechat-server/src/main/resources/application.yml index 722dadf..2af0775 100644 --- a/wechat-server/src/main/resources/application.yml +++ b/wechat-server/src/main/resources/application.yml @@ -72,7 +72,7 @@ hbyt: app-secret: 84a6065165ec82862c5e03a010a6dc6c token: r7YASMj3S9vCeeyJPpKeFPR9drhFaSDt encodingAESKey: W3zDuKYFMUlYUXpT4AhRSPkqMS7CgcmnEVQ3enVcTtf - pre_order_template_id: 4eknqqZhEqW7_3xSYLskvPUX193irbalhdHjOSY88-g + pre_order_template_id: xmymFQ7DgEHh-rz-6i77-RIcgSzv2RDlEy0E8s0vwFA order_start_template_id: L_AsG7s7DOyyz4dXLb8gIi7h4Sy__ifEAL1Mo8gAw4E order_swap_end_template_id: wGll5W3NSHXkHjcEprjUbd1shigGOqywGX7A0BVnzUs order_to_pay_template_id: IE0_RGuN5ufU4GFrCgM9JeUfvlWfbneEuUMDsn0RBQs