diff --git a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/Dto/home/HomeOrderSwapBatteryAmountDto.java b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/Dto/home/HomeOrderSwapBatteryAmountDto.java index 5a0a6d5..05e4e2a 100644 --- a/base-commons/common-core/src/main/java/com/evotech/hd/common/core/Dto/home/HomeOrderSwapBatteryAmountDto.java +++ b/base-commons/common-core/src/main/java/com/evotech/hd/common/core/Dto/home/HomeOrderSwapBatteryAmountDto.java @@ -20,4 +20,11 @@ public class HomeOrderSwapBatteryAmountDto { Integer status; + public HomeOrderSwapBatteryAmountDto() { + } + + public HomeOrderSwapBatteryAmountDto(Double amount, Long dataCount) { + this.amount = amount; + this.dataCount = dataCount; + } } 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 14998bf..e7a57fa 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 @@ -12,13 +12,14 @@ import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.core.annotation.Order; +import org.springframework.stereotype.Component; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Date; import java.util.concurrent.ConcurrentHashMap; -//@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/config/MqttSubscribeService.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/config/MqttSubscribeService.java index 1bda461..3d43328 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/config/MqttSubscribeService.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/config/MqttSubscribeService.java @@ -43,7 +43,7 @@ public class MqttSubscribeService { @Async("taskExecutor") - public void subscribeAdd(String stationCode) { + public void subscribe(String stationCode) { log.info("\r\n=====>>>MQTT新增站点订阅主题>>>"); // 订阅主题 subscribe(MqttConnectInit.mqttClientMap.get("cloudClient"), stationCode); diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/event/MqttEventSwapCompleteExchangeProcessorImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/event/MqttEventSwapCompleteExchangeProcessorImpl.java index 344e41c..50c3435 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/event/MqttEventSwapCompleteExchangeProcessorImpl.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/mqtt/message/processor/strategy/impl/event/MqttEventSwapCompleteExchangeProcessorImpl.java @@ -13,6 +13,7 @@ import com.evotech.hd.cloud.mqtt.message.dto.newer.req.MqttResponse; import com.evotech.hd.cloud.mqtt.message.dto.newer.state.OrderStatusData; import com.evotech.hd.cloud.service.*; import com.evotech.hd.cloud.service.rpc.WechatService; +import com.evotech.hd.cloud.utils.ParamServiceUtils; import com.evotech.hd.cloud.utils.components.SwapOrderBasicFeeComponent; import com.evotech.hd.common.core.constant.HDConstant; import com.evotech.hd.common.core.entity.cloud.BatteryStationDc; @@ -31,7 +32,7 @@ import java.math.BigDecimal; import java.util.Date; /** - * 站端请求电池数据 + * 换电完成事件数据 * * @ClassName:MqttRequestBatteryInfoExchangeProcessorImpl * @date: 2025年05月19日 17:41 @@ -121,7 +122,7 @@ public class MqttEventSwapCompleteExchangeProcessorImpl implements MqttStrategyE if (order.getStatus() == 3 || order.getStatus() == 5) { //如果订单是完成. 查询订单详情 OrderDetail orderDetail = orderDetailService.getOne(new LambdaQueryWrapper().eq(OrderDetail::getOrderId, order.getPkId())); - orderDetail.setFeeType(HDConstant.OrderConstant.FEE_TYPE_SOC); + orderDetail.setFeeType(ParamServiceUtils.getSettlementType()); orderDetail.setOrderTimeEnd(new Date()); orderDetail.setServiceTimeEnd(new Date()); //copy属性 diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/BatteryStationServiceImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/BatteryStationServiceImpl.java index 9bb27bd..07ab48d 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/BatteryStationServiceImpl.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/BatteryStationServiceImpl.java @@ -86,7 +86,7 @@ public class BatteryStationServiceImpl implements BatteryStationService { //添加监控场所 addStore(bs); //新增站点, 添加订阅信息 - mqttSubscribeService.subscribeAdd(bs.getCode()); + mqttSubscribeService.subscribe(bs.getCode()); return new Result().success(n); } return new Result().error("添加换电站出错!"); diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/HomeServiceImpl.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/HomeServiceImpl.java index 34fcd92..1394ff3 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/HomeServiceImpl.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/service/impl/HomeServiceImpl.java @@ -81,12 +81,12 @@ public class HomeServiceImpl implements HomeService { //订单数量 or 订单金额 List orderAmountlist = orderDao.homeFindAmountData(homeRequestDto); if(Collections.isNotEmpty(orderAmountlist)){ - HomeOrderSwapBatteryAmountDto totalFinishOrder = orderAmountlist.stream().filter(i -> Integer.valueOf(7).equals(i.getStatus())).findFirst().orElse(null); + HomeOrderSwapBatteryAmountDto totalFinishOrder = orderAmountlist.stream().filter(i -> Integer.valueOf(7).equals(i.getStatus())).findFirst().orElse(new HomeOrderSwapBatteryAmountDto(0d,0l)); if(totalFinishOrder != null){ data.setTotalFinishOrderNum(totalFinishOrder.getDataCount()); data.setTotalFinishAmount(totalFinishOrder.getAmount()); } - HomeOrderSwapBatteryAmountDto totalPendingOrder = orderAmountlist.stream().filter(i -> Integer.valueOf(6).equals(i.getStatus())).findFirst().orElse(null); + HomeOrderSwapBatteryAmountDto totalPendingOrder = orderAmountlist.stream().filter(i -> Integer.valueOf(6).equals(i.getStatus())).findFirst().orElse(new HomeOrderSwapBatteryAmountDto(0d,0l)); if(totalPendingOrder != null){ data.setTotalPendingOrderNum(totalPendingOrder.getDataCount()); data.setTotalPendingOrderAmount(totalPendingOrder.getAmount()); diff --git a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/ParamServiceUtils.java b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/ParamServiceUtils.java index 5c216db..c3f2842 100644 --- a/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/ParamServiceUtils.java +++ b/cloud-manage-server/src/main/java/com/evotech/hd/cloud/utils/ParamServiceUtils.java @@ -53,4 +53,14 @@ public class ParamServiceUtils { SysParam param= sysParamService.getSysParam("充值金额和赠送金额的结算占比", "settlement_proportion","0.7:0.3","充值金额和赠送金额的结算占比: 充值金额:结算金额 两个比例相加=1"); return param.getParamValue().split(":"); } + + /*** + * 获取结算方式 + * 0.7:0.3 + * @return + */ + public static Integer getSettlementType(){ + SysParam param= sysParamService.getSysParam("获取结算方式", "settlement_type","2","获取结算方式: 计费方式-ODO--1; 计费方式SOC---2; 计费方式电量---3"); + return Integer.valueOf(param.getParamValue()); + } } diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/service/WechatPayService.java b/wechat-server/src/main/java/com/evotech/hd/wechat/service/WechatPayService.java index 3923c3d..b7bf1df 100644 --- a/wechat-server/src/main/java/com/evotech/hd/wechat/service/WechatPayService.java +++ b/wechat-server/src/main/java/com/evotech/hd/wechat/service/WechatPayService.java @@ -13,7 +13,7 @@ public interface WechatPayService { * @param prePay * @return */ - public com.evotech.hd.common.core.Dto.Result xcxPrepay(PrePayVO prePay); + public Result xcxPrepay(PrePayVO prePay); /*** * 小程序支付回调 @@ -26,7 +26,7 @@ public interface WechatPayService { * 申请退款接口 * @return */ - public com.evotech.hd.common.core.Dto.Result refunds(RefundVO refundVO); + public Result refunds(RefundVO refundVO); /*** * 退款回调接口 diff --git a/wechat-server/src/main/java/com/evotech/hd/wechat/service/processor/impl/RechargePayExchangeProcessor.java b/wechat-server/src/main/java/com/evotech/hd/wechat/service/processor/impl/RechargePayExchangeProcessor.java index ef411af..b916920 100644 --- a/wechat-server/src/main/java/com/evotech/hd/wechat/service/processor/impl/RechargePayExchangeProcessor.java +++ b/wechat-server/src/main/java/com/evotech/hd/wechat/service/processor/impl/RechargePayExchangeProcessor.java @@ -45,7 +45,7 @@ public class RechargePayExchangeProcessor implements PayExchangeProcessor { this.entries = JSONUtil.parseObj(Collections.asMap("type",entries.getInt("type"), "wechatUserId", entries.getInt("traderCode"), "orderNo", XCXUtil.payOutTradeNo(1))); prePay.setAttach(entries.toString()); logger.info("发起 充值 订单支付: 支付请求参数:{}, 订单编号:{}, 订单金额:{}", JSONUtil.toJsonStr(prePay), entries.getStr("orderNo"), String.valueOf(prePay.getTotal())); - return pay(prePay, entries.getStr("orderNo"), 1); + return pay(prePay, entries.getStr("orderNo"), prePay.getTotal()); } @Override diff --git a/wechat-server/src/main/resources/application.yml b/wechat-server/src/main/resources/application.yml index 80da29b..1943f52 100644 --- a/wechat-server/src/main/resources/application.yml +++ b/wechat-server/src/main/resources/application.yml @@ -105,11 +105,11 @@ hbyt: FwIDAQAB -----END PUBLIC KEY----- # 支付回调地址 - notify_url: https://api.evo-techina.com/wechat/wechatpay/prepayback/msg + notify_url: http://api.evo-techina.com/wechat/pay/wechatpay/notify # Native支付回调地址 native_notify_url: https://api.evo-techina.com/wechat/wechatpay/native/nativeback/msg # 退款回调地址 - refund_notify_url: https://api.evo-techina.com/wechat/wechatpay/refundsback/msg + refund_notify_url: http://api.evo-techina.com/wechat/pay/wechatpay/refunds/notify # token缓存时效:小时 token_exp_hour: 2 # 公众号 @@ -118,13 +118,26 @@ hbyt: app-secret: 84a6065165ec82862c5e03a010a6dc6c token: r7YASMj3S9vCeeyJPpKeFPR9drhFaSDt encodingAESKey: W3zDuKYFMUlYUXpT4AhRSPkqMS7CgcmnEVQ3enVcTtf + #车辆换电预约成功通知 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 - order_end_template_id: C5-AGh67aFXChQONqSwxaRrJgFrn_Z25VTlTk0jHSUY - wallet_recharge_template_id: 8JXsn_VkI0S0YZSbT2EKmV_zOxyudo4IsBLeU7V-SFk + #充电结束通知 order_to_pay_template_id2: K6cdaBOkxGJpah0vsz5rq5UBID04mk-eEWp2XM0KyA0 + #换电成功提醒 + order_swap_end_template_id: wGll5W3NSHXkHjcEprjUbd1shigGOqywGX7A0BVnzUs + #充电待结算通知 + order_to_pay_template_id: IE0_RGuN5ufU4GFrCgM9JeUfvlWfbneEuUMDsn0RBQs + #支付成功通知 + order_end_template_id: C5-AGh67aFXChQONqSwxaRrJgFrn_Z25VTlTk0jHSUY + + #账户充值到账提醒 + wallet_recharge_template_id: 8JXsn_VkI0S0YZSbT2EKmV_zOxyudo4IsBLeU7V-SFk + #退款到帐通知 wallet_back_template_id: aO9GDhgIcYnCDCpsVSMB-CeXG3J4JzHlOUV2bhOAvVI + #站端告警模版 alarm_template_id: 8vW_gOzoOMzlJqvtSOF0fLeNm8Z6pttJG63oeFe1gq4 + #车辆换电预约已取消通知 (异常取消, 主动取消不发送) stop_server_template_id: RVrVqa9Y8-AjOCHxp9LWAnYejjphZhLoHJr0pU2nReo + #充电结束待结算 + charging_is_completed_template_id: K6cdaBOkxGJpah0vsz5rqxP8JQq-QyWCCTQkadL5G7g