From e3211646afbc54d5d5c5b2f092ecac250be0e14f Mon Sep 17 00:00:00 2001 From: yuyang <2265829957@qq.com> Date: Fri, 11 Aug 2023 10:28:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=9C=BA=E7=AB=99=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E3=80=81=E5=9C=BA=E7=AB=99=E6=A1=A9=E5=8A=9F=E7=8E=87?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E3=80=81=E4=B8=8B=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/xhpc/evcs/domain/AuthSecretToken.java | 18 ++ .../evcs/dto/CDChargeOrderInfo4BonusReq.java | 42 ++- .../com/xhpc/evcs/dto/ChargeOrderInfo.java | 93 +++++- .../evcs/dto/ChargeOrderInfoResponse.java | 9 + .../java/com/xhpc/evcs/dto/CommonRequest.java | 1 + .../evcs/api/CheckChargeOrderController.java | 6 + ...NotificationChargeOrderInfoController.java | 11 +- ...tificationStartChargeResultController.java | 6 + .../NotificationStationStatusController.java | 6 + ...otificationStopChargeResultController.java | 6 + .../evcs/api/QueryEquipAuthController.java | 6 + .../QueryEquipBusinessPolicyController.java | 6 + .../api/QueryEquipChargeStatusController.java | 6 + .../evcs/api/QueryStartChargeController.java | 6 + .../api/QueryStationStatusController.java | 6 + .../evcs/api/QueryStationsInfoController.java | 7 + .../evcs/api/QueryStopChargeController.java | 6 + .../xhpc/evcs/api/QueryTokenController.java | 7 + .../evcs/notification/CoreDispatcher.java | 8 +- ...NotificationChargeOrderInfo4BonusTask.java | 6 +- .../NotificationChargeOrderInfoTask.java | 3 +- .../NotificationEquipChargeStatusTask.java | 6 +- .../NotificationStartChargeResultTask.java | 2 +- .../NotificationStationStatusTask.java | 4 +- .../NotificationStopChargeResultTask.java | 2 +- pom.xml | 1 + ruoyi-auth/pom.xml | 25 ++ .../xhpc/auth/controller/TokenController.java | 54 +++- .../xhpc/common/core/utils/SecurityUtils.java | 3 +- sql/ry_config_20210531.sql | 14 +- .../XhpcActivityInternetController.java | 3 +- .../mapper/XhpcActivityInternetMapper.java | 7 +- .../service/XhpcActivityInternetService.java | 3 +- .../impl/XhpcActivityInternetServiceImpl.java | 46 ++- .../mapper/XhpcActivityInternetMapper.xml | 17 +- .../api/XhpcMessageBoardApiController.java | 4 +- .../api/XhpcChargingStationApiController.java | 3 - .../mapper/XhpcChargingStationMapper.java | 2 + .../XhpcChargingStationServiceImpl.java | 9 +- .../station/utils/img/QrImgUtils.java | 11 +- .../mapper/XhpcChargingStationMapper.xml | 7 + .../resources/mapper/XhpcRateTimeMapper.xml | 3 +- .../com/xhpc/common/api/PileOrderService.java | 11 + .../api/factory/PileOrderFallbackFactory.java | 12 + .../java/com/xhpc/common/util/DateUtil.java | 9 +- .../constant/AliyunTemplateKeyWord.java | 2 + .../general/controller/XhpcSmsController.java | 5 +- .../general/service/XhpcSmsServiceImpl.java | 2 - xhpc-modules/xhpc-order/pom.xml | 9 + .../order/api/XhpcChargeOrderController.java | 14 + .../order/api/XhpcPileOrderController.java | 37 ++- .../XhpcChargingStationPowerController.java | 75 +++++ .../XhpcHistoryOrderController.java | 14 +- .../XhpcRealTimeOrderController.java | 10 +- .../domain/XhpcChargingStationPower.java | 56 ++++ .../order/domain/XhpcRealTimeOrderBms.java | 4 +- .../XhpcChargingStationPowerMapper.java | 30 ++ .../service/IXhpcChargeOrderService.java | 4 + .../IXhpcChargingStationPowerService.java | 22 ++ .../impl/XhpcChargeOrderServiceImpl.java | 156 +++++++++- .../XhpcChargingStationPowerServiceImpl.java | 248 +++++++++++++++ .../XhpcPileRegularInspectServiceImpl.java | 12 +- .../impl/XhpcRealTimeOrderServiceImpl.java | 121 +++++++- .../mapper/XhpcChargeOrderMapper.xml | 7 +- .../mapper/XhpcChargingStationPowerMapper.xml | 285 ++++++++++++++++++ .../controller/AlipayPaymentController.java | 2 +- .../controller/WxPaymentController.java | 7 +- .../XhpcCommonPaymentController.java | 4 +- .../XhpcRechargeOrderController.java | 5 + .../controller/XhpcRefundAuditController.java | 26 +- .../controller/XhpcRefundOrderController.java | 14 +- .../mapper/XhpcRechargeOrderMapper.java | 1 + .../payment/mapper/XhpcRefundOrderMapper.java | 2 + .../service/IXhpcRechargeOrderService.java | 4 +- .../service/IXhpcRefundOrderService.java | 4 +- .../payment/service/impl/AlipayService.java | 5 +- .../impl/XhpcRechargeOrderServiceImpl.java | 6 + .../impl/XhpcRefundOrderServiceImpl.java | 7 +- .../mapper/XhpcRechargeOrderMapper.xml | 10 +- .../mapper/XhpcRefundOrderMapper.xml | 10 +- .../pp/controller/ChargingController.java | 23 ++ .../xhpc/pp/controller/PileController.java | 22 +- .../com/xhpc/pp/logic/RealtimeDataLogic.java | 18 +- .../pp/logic/RemoteStartReplyDataLogic.java | 1 + .../com/xhpc/pp/logic/ServiceMainLogic.java | 2 +- .../pp/mapper/XhpcDeviceMessageMapper.java | 5 + .../pp/server/ChargingPileBinaryHandler.java | 13 +- .../com/xhpc/pp/tx/ServiceController.java | 5 + .../mapper/XhpcDeviceMessageMapper.xml | 6 + .../controller/XhpcAppUserController.java | 280 ++++++++++++++--- .../user/service/IXhpcAppUserUserService.java | 2 + .../service/impl/XhpcAppUserServiceImpl.java | 15 +- .../xhpc/user/util/WechatDecryptDataUtil.java | 45 ++- .../resources/mapper/XhpcCommonMapper.xml | 2 + .../main/resources/mapper/XhpcUserMapper.xml | 2 +- 95 files changed, 1980 insertions(+), 204 deletions(-) create mode 100644 xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/controller/XhpcChargingStationPowerController.java create mode 100644 xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/domain/XhpcChargingStationPower.java create mode 100644 xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/mapper/XhpcChargingStationPowerMapper.java create mode 100644 xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/IXhpcChargingStationPowerService.java create mode 100644 xhpc-modules/xhpc-order/src/main/java/com/xhpc/order/service/impl/XhpcChargingStationPowerServiceImpl.java create mode 100644 xhpc-modules/xhpc-order/src/main/resources/mapper/XhpcChargingStationPowerMapper.xml diff --git a/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/domain/AuthSecretToken.java b/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/domain/AuthSecretToken.java index ef77e660..6ff1c0cf 100644 --- a/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/domain/AuthSecretToken.java +++ b/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/domain/AuthSecretToken.java @@ -63,4 +63,22 @@ public class AuthSecretToken { this.lastPushOrder = lastPushOrder; } + @Override + public String toString() { + return "AuthSecretToken{" + + "id=" + id + + ", operatorId='" + operatorId + '\'' + + ", operatorId3irdpty='" + operatorId3irdpty + '\'' + + ", urlPrefix='" + urlPrefix + '\'' + + ", secretTokenType='" + secretTokenType + '\'' + + ", operatorSecret='" + operatorSecret + '\'' + + ", sigSecret='" + sigSecret + '\'' + + ", dataSecret='" + dataSecret + '\'' + + ", dataSecretIV='" + dataSecretIV + '\'' + + ", token='" + token + '\'' + + ", tokenExpiry=" + tokenExpiry + + ", encrypt=" + encrypt + + ", lastPushOrder=" + lastPushOrder + + '}'; + } } diff --git a/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/dto/CDChargeOrderInfo4BonusReq.java b/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/dto/CDChargeOrderInfo4BonusReq.java index e6a64bc4..c251f766 100644 --- a/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/dto/CDChargeOrderInfo4BonusReq.java +++ b/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/dto/CDChargeOrderInfo4BonusReq.java @@ -10,6 +10,7 @@ import org.apache.commons.lang3.builder.ToStringBuilder; import javax.persistence.Column; import javax.persistence.Id; +import java.text.DecimalFormat; import java.util.Date; import java.util.LinkedList; import java.util.List; @@ -86,7 +87,6 @@ public class CDChargeOrderInfo4BonusReq { private ChargeDetails[] chargeDetails; public CDChargeOrderInfo4BonusReq(XhpcHistoryOrder xhpcHistoryOrder, EtOrderMapping etOrderMapping) { - this.startChargeSeq = etOrderMapping.getEvcsOrderNo(); this.connectorID = xhpcHistoryOrder.getSerialNumber().substring(0, 16); this.endTime = DateUtil.date2String(xhpcHistoryOrder.getEndTime(), DateUtil.DATE_FORMAT_DATE_TIME); @@ -96,7 +96,28 @@ public class CDChargeOrderInfo4BonusReq { this.totalElecMoney = xhpcHistoryOrder.getTotalPrice().doubleValue(); this.totalSeviceMoney = xhpcHistoryOrder.getServicePriceTotal().doubleValue(); this.totalMoney = xhpcHistoryOrder.getTotalPrice().doubleValue(); - //this.stopReason = xhpcHistoryOrder.getStopReasonEvcs(); + if(xhpcHistoryOrder.getStopReasonEvcs() !=null){ + String stopReasonEvcs = xhpcHistoryOrder.getStopReasonEvcs(); + if("40".equals(stopReasonEvcs)||"0".equals(stopReasonEvcs)||"00".equals(stopReasonEvcs)||"45".equals(stopReasonEvcs)||"APP 远程停止".equals(stopReasonEvcs) + ||"72".equals(stopReasonEvcs)){ + this.stopReason =0; + }else if("41".equals(stopReasonEvcs) ||"42".equals(stopReasonEvcs)||"43".equals(stopReasonEvcs)||"44".equals(stopReasonEvcs)||"4E".equals(stopReasonEvcs)||"平台停止".equals(stopReasonEvcs)){ + this.stopReason =1; + }else if("4A".equals(stopReasonEvcs) ||"4B".equals(stopReasonEvcs)||"4C".equals(stopReasonEvcs)||"4D".equals(stopReasonEvcs)||"4F".equals(stopReasonEvcs) || + "55".equals(stopReasonEvcs)||"57".equals(stopReasonEvcs)||"62".equals(stopReasonEvcs)||"63".equals(stopReasonEvcs)||"74".equals(stopReasonEvcs)||"75".equals(stopReasonEvcs) + ||"78".equals(stopReasonEvcs)||"79".equals(stopReasonEvcs)||"7A".equals(stopReasonEvcs)||"7B".equals(stopReasonEvcs)||"7C".equals(stopReasonEvcs)||"7D".equals(stopReasonEvcs) + ||"7E".equals(stopReasonEvcs)||"7F".equals(stopReasonEvcs)||"83".equals(stopReasonEvcs)){ + this.stopReason =3; + }else if("5A".equals(stopReasonEvcs)||"82".equals(stopReasonEvcs)){ + this.stopReason =2; + }else if("6B".equals(stopReasonEvcs) ||"6D".equals(stopReasonEvcs)||"5E".equals(stopReasonEvcs)){ + this.stopReason =4; + }else{ + this.stopReason =0; + } + }else{ + this.stopReason =0; + } this.sumPeriod = xhpcHistoryOrder.getXhpcStatisticsTimeIntervalList().size(); this.chargeDetails = translate(xhpcHistoryOrder.getXhpcStatisticsTimeIntervalList()); this.userName = xhpcHistoryOrder.getUserNameEvcs(); @@ -110,8 +131,21 @@ public class CDChargeOrderInfo4BonusReq { cl = Math.toIntExact((endtime.getTime() - starttime.getTime()) / 1000); } this.chargeLast = Math.abs(cl); - this.meterValueStart = xhpcHistoryOrder.getMeterValueStartEvcs(); - this.meterValueEnd = xhpcHistoryOrder.getMeterValueEndEvcs(); + if(xhpcHistoryOrder.getMeterValueStartEvcs() !=null && xhpcHistoryOrder.getMeterValueStartEvcs()>0){ + double v = xhpcHistoryOrder.getMeterValueStartEvcs() / 10000; + DecimalFormat df = new DecimalFormat("#.000"); + this.meterValueStart =Double.parseDouble(df.format(v)); + }else{ + this.meterValueStart = xhpcHistoryOrder.getMeterValueStartEvcs(); + } + if(xhpcHistoryOrder.getMeterValueEndEvcs() !=null && xhpcHistoryOrder.getMeterValueEndEvcs()>0){ + double v = xhpcHistoryOrder.getMeterValueEndEvcs() / 10000; + DecimalFormat df = new DecimalFormat("#.000"); + this.meterValueEnd =Double.parseDouble(df.format(v)); + } else{ + this.meterValueEnd = xhpcHistoryOrder.getMeterValueEndEvcs(); + } + } private ChargeDetails[] translate(List xhpcStatisticsTimeIntervalList) { diff --git a/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/dto/ChargeOrderInfo.java b/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/dto/ChargeOrderInfo.java index 2004b987..54751c34 100644 --- a/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/dto/ChargeOrderInfo.java +++ b/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/dto/ChargeOrderInfo.java @@ -13,6 +13,7 @@ import javax.persistence.Column; import javax.persistence.Id; import javax.persistence.Transient; import java.math.BigDecimal; +import java.text.DecimalFormat; import java.util.*; import static com.xhpc.common.core.utils.DateUtils.YYYY_MM_DD_HH_MM_SS; @@ -76,6 +77,12 @@ public class ChargeOrderInfo { private Integer stopReason; @JsonProperty("SumPeriod") private Integer sumPeriod; + @JsonProperty("MeterValueStart") + @Column(columnDefinition = "Decimal(10,2)") + private Double meterValueStart = 0.0; + @JsonProperty("MeterValueEnd") + @Column(columnDefinition = "Decimal(10,2)") + private Double meterValueEnd = 0.0; @JsonProperty("ChargeDetails") private ChargeDetails[] chargeDetails; @JsonIgnore @@ -95,7 +102,28 @@ public class ChargeOrderInfo { this.totalElecMoney = xhpcHistoryOrder.getPowerPriceTotal().doubleValue(); this.totalSeviceMoney = xhpcHistoryOrder.getServicePriceTotal().doubleValue(); this.totalMoney = xhpcHistoryOrder.getTotalPrice().doubleValue(); - //this.stopReason = xhpcHistoryOrder.getStopReasonEvcs(); + if(xhpcHistoryOrder.getStopReasonEvcs() !=null){ + String stopReasonEvcs = xhpcHistoryOrder.getStopReasonEvcs(); + if("40".equals(stopReasonEvcs)||"0".equals(stopReasonEvcs)||"00".equals(stopReasonEvcs)||"45".equals(stopReasonEvcs)||"APP 远程停止".equals(stopReasonEvcs) + ||"72".equals(stopReasonEvcs)){ + this.stopReason =0; + }else if("41".equals(stopReasonEvcs) ||"42".equals(stopReasonEvcs)||"43".equals(stopReasonEvcs)||"44".equals(stopReasonEvcs)||"4E".equals(stopReasonEvcs)||"平台停止".equals(stopReasonEvcs)){ + this.stopReason =1; + }else if("4A".equals(stopReasonEvcs) ||"4B".equals(stopReasonEvcs)||"4C".equals(stopReasonEvcs)||"4D".equals(stopReasonEvcs)||"4F".equals(stopReasonEvcs) || + "55".equals(stopReasonEvcs)||"57".equals(stopReasonEvcs)||"62".equals(stopReasonEvcs)||"63".equals(stopReasonEvcs)||"74".equals(stopReasonEvcs)||"75".equals(stopReasonEvcs) + ||"78".equals(stopReasonEvcs)||"79".equals(stopReasonEvcs)||"7A".equals(stopReasonEvcs)||"7B".equals(stopReasonEvcs)||"7C".equals(stopReasonEvcs)||"7D".equals(stopReasonEvcs) + ||"7E".equals(stopReasonEvcs)||"7F".equals(stopReasonEvcs)||"83".equals(stopReasonEvcs)){ + this.stopReason =3; + }else if("5A".equals(stopReasonEvcs)||"82".equals(stopReasonEvcs)){ + this.stopReason =2; + }else if("6B".equals(stopReasonEvcs) ||"6D".equals(stopReasonEvcs)||"5E".equals(stopReasonEvcs)){ + this.stopReason =4; + }else{ + this.stopReason =0; + } + }else{ + this.stopReason =0; + } this.sumPeriod = xhpcHistoryOrder.getXhpcStatisticsTimeIntervalList().size(); this.chargeDetails = calcemChargeDetails;//translate(xhpcHistoryOrder.getXhpcStatisticsTimeIntervalList()); Date starttime = xhpcHistoryOrder.getStartTime(); @@ -107,7 +135,6 @@ public class ChargeOrderInfo { } public ChargeOrderInfo(XhpcHistoryOrder xhpcHistoryOrder) { - this.connectorID = xhpcHistoryOrder.getSerialNumber().substring(0, 16); this.startChargeSeq = xhpcHistoryOrder.getInternetSerialNumber(); this.endTime = DateUtils.parseDateToStr(YYYY_MM_DD_HH_MM_SS, xhpcHistoryOrder.getEndTime()); @@ -123,6 +150,39 @@ public class ChargeOrderInfo { final BigDecimal totalPrice = xhpcHistoryOrder.getTotalPrice(); this.totalMoney = totalPrice == null ? 0.0 : totalPrice.doubleValue(); //this.stopReason = xhpcHistoryOrder.getStopReasonEvcs(); + if(xhpcHistoryOrder.getStopReasonEvcs() !=null){ + String stopReasonEvcs = xhpcHistoryOrder.getStopReasonEvcs(); + if("41".equals(stopReasonEvcs) ||"42".equals(stopReasonEvcs)||"43".equals(stopReasonEvcs)||"44".equals(stopReasonEvcs)||"4E".equals(stopReasonEvcs)||"平台停止".equals(stopReasonEvcs)){ + this.stopReason =1; + }else if("4A".equals(stopReasonEvcs) ||"4B".equals(stopReasonEvcs)||"4C".equals(stopReasonEvcs)||"4D".equals(stopReasonEvcs)||"4F".equals(stopReasonEvcs) || + "55".equals(stopReasonEvcs)||"57".equals(stopReasonEvcs)||"62".equals(stopReasonEvcs)||"63".equals(stopReasonEvcs)||"74".equals(stopReasonEvcs)||"75".equals(stopReasonEvcs) + ||"78".equals(stopReasonEvcs)||"79".equals(stopReasonEvcs)||"7A".equals(stopReasonEvcs)||"7B".equals(stopReasonEvcs)||"7C".equals(stopReasonEvcs)||"7D".equals(stopReasonEvcs) + ||"7E".equals(stopReasonEvcs)||"7F".equals(stopReasonEvcs)||"83".equals(stopReasonEvcs)){ + this.stopReason =3; + }else if("5A".equals(stopReasonEvcs)||"82".equals(stopReasonEvcs)){ + this.stopReason =2; + }else if("6B".equals(stopReasonEvcs) ||"6D".equals(stopReasonEvcs)||"5E".equals(stopReasonEvcs)){ + this.stopReason =4; + }else{ + this.stopReason =0; + } + }else{ + this.stopReason =0; + } + if(xhpcHistoryOrder.getMeterValueStartEvcs() !=null && xhpcHistoryOrder.getMeterValueStartEvcs()>0){ + double v = xhpcHistoryOrder.getMeterValueStartEvcs() / 10000; + DecimalFormat df = new DecimalFormat("#.000"); + this.meterValueStart =Double.parseDouble(df.format(v)); + }else{ + this.meterValueStart =0.00; + } + if(xhpcHistoryOrder.getMeterValueEndEvcs() !=null && xhpcHistoryOrder.getMeterValueEndEvcs()>0){ + double v = xhpcHistoryOrder.getMeterValueEndEvcs() / 10000; + DecimalFormat df = new DecimalFormat("#.000"); + this.meterValueEnd =Double.parseDouble(df.format(v)); + } else{ + this.meterValueEnd = 0.00; + } final List xhpcStatisticsTimeIntervalList = xhpcHistoryOrder.getXhpcStatisticsTimeIntervalList(); this.sumPeriod = xhpcStatisticsTimeIntervalList == null ? 0 : xhpcStatisticsTimeIntervalList.size(); @@ -301,11 +361,28 @@ public class ChargeOrderInfo { @Override public String toString() { - - return new ToStringBuilder(this).append("startChargeSeq", startChargeSeq).append("connectorID", connectorID).append( - "startTime", startTime).append("endTime", endTime).append("totalPower", totalPower).append("totalElecMoney", - totalElecMoney).append("totalSeviceMoney", totalSeviceMoney).append("totalMoney", totalMoney).append( - "stopReason", stopReason).append("sumPeriod", sumPeriod).append("additionalProperties", - additionalProperties).toString(); + return "ChargeOrderInfo{" + + "startChargeSeq='" + startChargeSeq + '\'' + + ", startChargeSeqStat=" + startChargeSeqStat + + ", failReason=" + failReason + + ", identCode='" + identCode + '\'' + + ", infraOperatorId='" + infraOperatorId + '\'' + + ", billerOperatorId='" + billerOperatorId + '\'' + + ", connectorID='" + connectorID + '\'' + + ", startTime='" + startTime + '\'' + + ", chargeModel=" + chargeModel + + ", vin='" + vin + '\'' + + ", endTime='" + endTime + '\'' + + ", totalPower=" + totalPower + + ", totalElecMoney=" + totalElecMoney + + ", totalSeviceMoney=" + totalSeviceMoney + + ", totalMoney=" + totalMoney + + ", stopReason=" + stopReason + + ", sumPeriod=" + sumPeriod + + ", meterValueStart=" + meterValueStart + + ", meterValueEnd=" + meterValueEnd + + ", chargeDetails=" + Arrays.toString(chargeDetails) + + ", additionalProperties=" + additionalProperties + + '}'; } } diff --git a/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/dto/ChargeOrderInfoResponse.java b/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/dto/ChargeOrderInfoResponse.java index c1cebd9a..d5551f9c 100644 --- a/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/dto/ChargeOrderInfoResponse.java +++ b/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/dto/ChargeOrderInfoResponse.java @@ -75,4 +75,13 @@ public class ChargeOrderInfoResponse { this.additionalProperties.put(name, value); } + @Override + public String toString() { + return "ChargeOrderInfoResponse{" + + "startChargeSeq='" + startChargeSeq + '\'' + + ", connectorID='" + connectorID + '\'' + + ", confirmResult=" + confirmResult + + ", additionalProperties=" + additionalProperties + + '}'; + } } diff --git a/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/dto/CommonRequest.java b/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/dto/CommonRequest.java index 88735a11..53ce3de7 100644 --- a/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/dto/CommonRequest.java +++ b/evcs-modules/evcs-common/src/main/java/com/xhpc/evcs/dto/CommonRequest.java @@ -57,4 +57,5 @@ public class CommonRequest { return JSONUtil.readParams(jsonNode.toString(), clz); } + } diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/CheckChargeOrderController.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/CheckChargeOrderController.java index 3d689084..a7a2abaf 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/CheckChargeOrderController.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/CheckChargeOrderController.java @@ -12,6 +12,12 @@ import java.io.IOException; @RestController() public class CheckChargeOrderController { + /** + * 推送订单核对结果信息 + * @param commonRequest + * @return + * @throws IOException + */ @PostMapping("/v1/check_charge_orders") public CommonResponse check_charge_orders(@RequestBody CommonRequest commonRequest) throws IOException { //todo 正在开发 diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/NotificationChargeOrderInfoController.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/NotificationChargeOrderInfoController.java index 2f575903..556084ab 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/NotificationChargeOrderInfoController.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/NotificationChargeOrderInfoController.java @@ -2,8 +2,11 @@ package com.xhpc.evcs.api; import com.xhpc.evcs.dto.*; import com.xhpc.evcs.encryption.EvcsConst; +import com.xhpc.evcs.notification.NotificationChargeOrderInfoTask; import com.xhpc.evcs.utils.JSONUtil; import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @@ -14,9 +17,15 @@ import java.io.IOException; @RestController() public class NotificationChargeOrderInfoController { + private final Logger logger = LoggerFactory.getLogger(NotificationChargeOrderInfoController.class); + /** + * 推送充电订单信息 + * @param commonRequest + * @return + * @throws IOException + */ @PostMapping("/v1/notification_charge_order_info") public CommonResponse notificationChargeOrderInfo(@RequestBody CommonRequest commonRequest) throws IOException { - String operatorID = commonRequest.getOperatorId(); StationInfo stationInfo = new StationInfo(); stationInfo.setOperatorId(operatorID); diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/NotificationStartChargeResultController.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/NotificationStartChargeResultController.java index 967d237b..d38c758d 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/NotificationStartChargeResultController.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/NotificationStartChargeResultController.java @@ -22,6 +22,12 @@ public class NotificationStartChargeResultController { @Autowired private XhpcHistoryOrderRepository xhpcHistoryOrderRepository; + /** + * 推送启动充电结果 + * @param commonRequest + * @return + * @throws IOException + */ @PostMapping("/v1/notification_start_charge_result") public CommonResponse notifyStartChargeResult(@RequestBody CommonRequest commonRequest) throws IOException { diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/NotificationStationStatusController.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/NotificationStationStatusController.java index 274f8750..98abb400 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/NotificationStationStatusController.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/NotificationStationStatusController.java @@ -12,6 +12,12 @@ import java.io.IOException; @RestController() public class NotificationStationStatusController { + /** + * 设备状态变化推送 + * @param commonRequest + * @return + * @throws IOException + */ @PostMapping("/v1/notification_stationStatus") public CommonResponse notificationStationStatus(@RequestBody CommonRequest commonRequest) throws IOException { diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/NotificationStopChargeResultController.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/NotificationStopChargeResultController.java index a15616d1..14d0559b 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/NotificationStopChargeResultController.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/NotificationStopChargeResultController.java @@ -22,6 +22,12 @@ public class NotificationStopChargeResultController { @Autowired private XhpcHistoryOrderRepository xhpcHistoryOrderRepository; + /** + * 推送停止充电结果 + * @param commonRequest + * @return + * @throws IOException + */ @PostMapping("/v1/notification_stop_charge_result") public CommonResponse notifyStartChargeResult(@RequestBody CommonRequest commonRequest) throws IOException { diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryEquipAuthController.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryEquipAuthController.java index 5b7e30dc..fee7c2fc 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryEquipAuthController.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryEquipAuthController.java @@ -35,6 +35,12 @@ public class QueryEquipAuthController { @Autowired private XhpcInternetUserRepository xhpcInternetUserRepository; + /** + * 请求设备认证 + * @param commonRequest + * @return + * @throws Exception + */ @PostMapping(value = "/v1/query_equip_auth") public CommonResponse queryEquipAuth(@RequestBody CommonRequest commonRequest) throws Exception { diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryEquipBusinessPolicyController.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryEquipBusinessPolicyController.java index ea89aa5a..2034c0d3 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryEquipBusinessPolicyController.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryEquipBusinessPolicyController.java @@ -25,6 +25,12 @@ public class QueryEquipBusinessPolicyController { @Autowired private XhpcTerminalRepository xhpcTerminalRepository; + /** + * 查询业务策略信息结果 + * @param commonRequest + * @return + * @throws IOException + */ @PostMapping("/v1/query_equip_business_policy") public CommonResponse queryEquipBusinessPolicy(@RequestBody CommonRequest commonRequest) throws IOException { //获取充电设备接口编码(枪编码) diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryEquipChargeStatusController.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryEquipChargeStatusController.java index a1772d69..c9403d67 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryEquipChargeStatusController.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryEquipChargeStatusController.java @@ -33,6 +33,12 @@ public class QueryEquipChargeStatusController { @Autowired OrderMappingRepository orderMappingRepository; + /** + * 查询充电状态 + * @param commonRequest + * @return + * @throws IOException + */ @PostMapping("/v1/query_equip_charge_status") public CommonResponse queryEquipChargeStatus(@RequestBody CommonRequest commonRequest) throws IOException { //创建数据实体类 diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStartChargeController.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStartChargeController.java index 98b705ec..8c0117d1 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStartChargeController.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStartChargeController.java @@ -45,6 +45,12 @@ public class QueryStartChargeController { @Autowired private XhpcChargingStationRepository xhpcChargingStationRepository; + /** + * 请求启动充电 + * @param commonRequest + * @return + * @throws Exception + */ @PostMapping(value = "/v1/query_start_charge") public CommonResponse queryStartCharge(@RequestBody CommonRequest commonRequest) throws Exception { diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStationStatusController.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStationStatusController.java index cba28ffb..f43b0534 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStationStatusController.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStationStatusController.java @@ -34,6 +34,12 @@ public class QueryStationStatusController { @Resource XhpcTerminalRepository terminalRepository; + /** + * 设备接口状态查询 + * @param commonRequest + * @return + * @throws Exception + */ @PostMapping("/v1/query_station_status") public CommonResponse queryStationsInfo(@RequestBody CommonRequest commonRequest) throws Exception { diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStationsInfoController.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStationsInfoController.java index acf9b83f..171f01c9 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStationsInfoController.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStationsInfoController.java @@ -43,6 +43,12 @@ public class QueryStationsInfoController { private XhpcStationInternetBlacklistRepository xhpcStationInternetBlacklistRepo; private final String[] GUNNAMES = {"", "A", "B", "C", "D"}; + /** + * 查询充电站信息 + * @param commonRequest + * @return + * @throws Exception + */ @PostMapping("/v1/query_stations_info") public CommonResponse queryStationsInfo(@RequestBody(required = false) CommonRequest commonRequest) throws Exception { @@ -70,6 +76,7 @@ public class QueryStationsInfoController { List validStationKeys = new ArrayList<>(); for (String stationKey : stationKeys) { boolean isValid = true; + //查询不合作的电桩 for (XhpcStationInternetBlacklist xhpcStationInternetBlack : xhpcStationInternetBlacklist) { if (stationKey.substring(8).equals(xhpcStationInternetBlack.getChargingStationId().toString())) { isValid = false; diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStopChargeController.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStopChargeController.java index ab69bf19..aade2c57 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStopChargeController.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryStopChargeController.java @@ -38,6 +38,12 @@ public class QueryStopChargeController { @Autowired private XhpcChargingPileRepository XhpcChargingPileRepository; + /** + * 请求停止充电 + * @param commonRequest + * @return + * @throws IOException + */ @PostMapping("/v1/query_stop_charge") public CommonResponse queryStopCharge(@RequestBody CommonRequest commonRequest) throws IOException { diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryTokenController.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryTokenController.java index 919eeea2..e40c63dc 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryTokenController.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/api/QueryTokenController.java @@ -36,6 +36,13 @@ public class QueryTokenController { @Autowired private XhpcInternetUserRepository xhpcInternetUserRepository; + /** + * 用于平台之间认证Token的申请 + * @param encout + * @param tokenRequest + * @return + * @throws IOException + */ @PostMapping("/v1/query_token") public CommonResponse queryToken(@RequestHeader(value = "enc.out", defaultValue = "true") String encout, @RequestBody TokenRequest tokenRequest) throws IOException { diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/CoreDispatcher.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/CoreDispatcher.java index 8f62f774..2aaa97f9 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/CoreDispatcher.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/CoreDispatcher.java @@ -17,6 +17,8 @@ import okhttp3.Request; import okhttp3.Response; import okhttp3.ResponseBody; import okhttp3.logging.HttpLoggingInterceptor; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.transaction.annotation.Transactional; @@ -43,6 +45,8 @@ public class CoreDispatcher { private AuthSecretTokenRepository authSecretTokenRepository; public static final okhttp3.MediaType JSON = okhttp3.MediaType.parse("application/json; charset=utf-8"); + private final Logger logger = LoggerFactory.getLogger(CoreDispatcher.class); + @Transactional public String ok(Object object, String url, AuthSecretToken authSecretTokenOut) { @@ -51,7 +55,6 @@ public class CoreDispatcher { @Transactional public String ok(Object object, String url, AuthSecretToken authSecretTokenOut, String stationOperatorId) { - if (authSecretTokenOut == null) { log.error("authSecretTokenOut is null"); throw new RuntimeException(); @@ -115,12 +118,15 @@ public class CoreDispatcher { // log.debug("notify out encrypt data:\n{}", tData); } body = okhttp3.RequestBody.create(JSON, tData); +// logger.info("==============平台推送值================="+tData); } + } catch (JsonProcessingException | BadPaddingException | InvalidAlgorithmParameterException | NoSuchAlgorithmException | IllegalBlockSizeException | NoSuchPaddingException | InvalidKeyException e) { String msg = e.getMessage(); log.error(msg); throw new ServerInternalException(msg); } + final Request.Builder req = new Request.Builder() .url(authSecretTokenOut.getUrlPrefix() + url) .header("Authorization", "Bearer " + bearerToken); diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationChargeOrderInfo4BonusTask.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationChargeOrderInfo4BonusTask.java index 66ec3bb1..461a17e0 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationChargeOrderInfo4BonusTask.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationChargeOrderInfo4BonusTask.java @@ -40,9 +40,12 @@ public class NotificationChargeOrderInfo4BonusTask extends CoreDispatcher { private XhpcChargingStationRepository chargingStationRepo; private final Logger logger = LoggerFactory.getLogger(NotificationChargeOrderInfo4BonusTask.class); + /** + * 推送充电订单信息(运营奖补) + * @throws IOException + */ @Scheduled(fixedDelay = 1000 * 60) public void run() throws IOException { - AuthSecretToken authSecretTokenOut = authSecretTokenRepository.findByOperatorId3irdptyAndOperatorIdAndSecretTokenType( "765367656", "MA6DFCTD5", SECRET_TOKEN_TYPE_OUT).orElse(null); //todo @@ -71,7 +74,6 @@ public class NotificationChargeOrderInfo4BonusTask extends CoreDispatcher { } public boolean notify(XhpcHistoryOrder xhpcHistoryOrder, AuthSecretToken authSecretTokenOut, boolean isRepush) throws IOException { - String operatorIdEvcs = xhpcHistoryOrder.getOperatorIdEvcs(); if (operatorIdEvcs == null) { Long chargingStationId = xhpcHistoryOrder.getChargingStationId(); diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationChargeOrderInfoTask.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationChargeOrderInfoTask.java index 470f7d7f..c7fc8d0d 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationChargeOrderInfoTask.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationChargeOrderInfoTask.java @@ -39,7 +39,7 @@ public class NotificationChargeOrderInfoTask extends CoreDispatcher { private final Logger logger = LoggerFactory.getLogger(NotificationChargeOrderInfoTask.class); - @Scheduled(fixedRate = 1000 * 15) + //@Scheduled(fixedRate = 1000 * 15) public void run() throws JsonProcessingException { Collection orderKeys = REDIS.keys("order:*"); @@ -81,6 +81,7 @@ public class NotificationChargeOrderInfoTask extends CoreDispatcher { horder.setConfirmResult(pushResp.getConfirmResult()); logger.debug("3rd part order {} push result: {}", horder.getSerialNumber(), pushResp.getConfirmResult()); + //logger.info("==============推送返回值================="+pushResp.toString()); xhpcHistoryOrderRepository.save(horder); REDIS.setCacheMapValue("pushOrder:".concat(horder.getSerialNumber()), "horderpushed", true); } else { diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationEquipChargeStatusTask.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationEquipChargeStatusTask.java index db7b51c0..e969469e 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationEquipChargeStatusTask.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationEquipChargeStatusTask.java @@ -44,7 +44,11 @@ public class NotificationEquipChargeStatusTask extends CoreDispatcher { private final Logger logger = LoggerFactory.getLogger(NotificationEquipChargeStatusTask.class); - @Scheduled(fixedRate = 1000 * 50) + /** + * 推送充电状态 + * @throws IOException + */ + //@Scheduled(fixedRate = 1000 * 50) public void run() throws IOException { List authSecretTokenOutList = authSecretTokenRepository.findBySecretTokenType(SECRET_TOKEN_TYPE_OUT); diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStartChargeResultTask.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStartChargeResultTask.java index 96f86b5d..b47f1a31 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStartChargeResultTask.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStartChargeResultTask.java @@ -33,7 +33,7 @@ public class NotificationStartChargeResultTask extends CoreDispatcher { /** * Judging the 3rd whether it has got the start charging task. */ - @Scheduled(fixedRate = 1000 * 3) + //@Scheduled(fixedRate = 1000 * 3) public void run() throws IOException { //Getting the charge orders which from 3rd. diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStationStatusTask.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStationStatusTask.java index 4ed540e8..a24d2890 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStationStatusTask.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStationStatusTask.java @@ -49,7 +49,7 @@ public class NotificationStationStatusTask extends CoreDispatcher { @Resource private XhpcTerminalRepository terminalRepository; - @Scheduled(fixedRate = 1000 * 45) + //@Scheduled(fixedRate = 1000 * 45) protected void run() throws IOException { Collection stationTerminalKeys = REDIS.keys("stationTerminalStatus:*"); @@ -95,7 +95,7 @@ public class NotificationStationStatusTask extends CoreDispatcher { connectorStatusInfo.setConnectorID(gunId); connectorStatusInfo.setOperatorID(operatorId); Integer dbStatus = terminalDBMap.get(gunId); - if(dbStatus == 0){ + if(dbStatus !=null && dbStatus == 0){ connectorStatusInfo.setStatus(translateStatus(terminalStatusMap.get(gunId))); } else { connectorStatusInfo.setStatus(0); diff --git a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStopChargeResultTask.java b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStopChargeResultTask.java index 6ea8af28..a7d67af8 100644 --- a/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStopChargeResultTask.java +++ b/evcs-modules/evcs-core/src/main/java/com/xhpc/evcs/notification/NotificationStopChargeResultTask.java @@ -26,7 +26,7 @@ public class NotificationStopChargeResultTask extends CoreDispatcher { @Autowired private AuthSecretTokenRepository authSecretTokenRepository; - @Scheduled(fixedRate = 1000 * 3) + //@Scheduled(fixedRate = 1000 * 3) public void run() throws Exception { notifyService(); diff --git a/pom.xml b/pom.xml index ead202eb..9672712e 100644 --- a/pom.xml +++ b/pom.xml @@ -38,6 +38,7 @@ 2.6.2 3.2.2 4.22.37.ALL + 4.22.37.ALL 1.9.3 diff --git a/ruoyi-auth/pom.xml b/ruoyi-auth/pom.xml index 6e47928d..9c351c4e 100644 --- a/ruoyi-auth/pom.xml +++ b/ruoyi-auth/pom.xml @@ -21,6 +21,31 @@ com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery + + com.aliyun + dysmsapi20170525 + 2.0.5 + + + com.aliyun + tea-openapi + 0.2.8 + + + com.aliyun + tea-console + 0.0.1 + + + com.aliyun + tea-util + 0.2.16 + + + com.aliyun + tea + 1.1.14 + diff --git a/ruoyi-auth/src/main/java/com/xhpc/auth/controller/TokenController.java b/ruoyi-auth/src/main/java/com/xhpc/auth/controller/TokenController.java index 147885bf..464d2341 100644 --- a/ruoyi-auth/src/main/java/com/xhpc/auth/controller/TokenController.java +++ b/ruoyi-auth/src/main/java/com/xhpc/auth/controller/TokenController.java @@ -1,13 +1,14 @@ package com.xhpc.auth.controller; -import com.alibaba.fastjson.JSONObject; + +import com.aliyun.dysmsapi20170525.models.SendSmsResponse; import com.xhpc.auth.form.LoginBody; import com.xhpc.auth.service.SysLoginService; +import com.xhpc.common.api.SmsService; import com.xhpc.common.api.TenantService; import com.xhpc.common.core.constant.HttpStatus; import com.xhpc.common.core.domain.R; import com.xhpc.common.core.exception.BaseException; -import com.xhpc.common.core.utils.HttpUtils; import com.xhpc.common.core.utils.StringUtils; import com.xhpc.common.core.web.controller.BaseController; import com.xhpc.common.redis.service.RedisService; @@ -18,11 +19,12 @@ import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.HashMap; +import java.util.Map; import java.util.Random; import java.util.concurrent.TimeUnit; import java.util.regex.Matcher; import java.util.regex.Pattern; - +import com.aliyun.tea.*; /** * token 控制 * @@ -43,11 +45,13 @@ public class TokenController extends BaseController @Autowired private RedisService redisService; + public static final String URL = "http://sms.daiyicloud.com/sms/apiSend/add"; public static final String ACCOUNT ="scxhkj"; public static final String PASSWD ="6A9628548C4CBECCE80A2479CD77679F"; public static final String PRODUCTLD ="20191130000001"; - + public static final String accessKeyId = "LTAI5tBWjnuQGxGicnThwMF1"; + public static final String accessKeySecret = "b0WNtFYtWyTEkZzcr2WOAPoZg6w2Xu"; /** * 平台管理员登陆 * @param form @@ -133,19 +137,32 @@ public class TokenController extends BaseController if(cacheObject !=null){ return R.fail("1012","操作过于频繁,请于1分钟后重试"); } - String req = HttpUtils.postFormData(URL, null, assembleSmsReq(phone,content)); - JSONObject json = JSONObject.parseObject(req); + HashMap paramMap = new HashMap<>(); + paramMap.put("code", random); + paramMap.put("phone", phone); + paramMap.put("content", "【小华充电】您的验证码是:" + random + ",有效期为5分钟。如非本人操作,可不用理会。"); - String ok = json.getString("ok"); - if("true".equals(ok)){ + com.aliyun.dysmsapi20170525.Client client = createClient(); + com.aliyun.dysmsapi20170525.models.SendSmsRequest sendSmsRequest = new com.aliyun.dysmsapi20170525.models.SendSmsRequest() + .setSignName("小华充电") + .setTemplateCode("SMS_226786362") + .setTemplateParam("{\"code\":\""+random+"\"}") + .setPhoneNumbers(phone); + com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions(); + try { + // 复制代码运行请自行打印 API 的返回值 + SendSmsResponse sendSmsResponse = client.sendSmsWithOptions(sendSmsRequest, runtime); + System.out.println("sendSmsResponse:"+sendSmsResponse); redisService.setCacheObject(pvToken,random,300L, TimeUnit.SECONDS); //1分钟有效时间设置,防止用户频繁调用 redisService.setCacheObject(token,random,60L, TimeUnit.SECONDS); return R.ok(); - }else{ - - return R.fail(1012,"服务器繁忙,请稍后再试"); + } catch (Exception error) { + // 如有需要,请打印 error + //com.aliyun.teautil.Common.assertAsString(error.message); + error.printStackTrace(); } + return R.fail("请联系管理员进行处理"); } catch (Exception e) { //e.printStackTrace(); return R.fail(1010,"服务器繁忙,请稍后再试"); @@ -198,4 +215,19 @@ public class TokenController extends BaseController } return i+""; } + + public static com.aliyun.dysmsapi20170525.Client createClient() throws Exception { + com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config() + // 必填,您的 AccessKey ID + .setAccessKeyId(accessKeyId) + // 必填,您的 AccessKey Secret + .setAccessKeySecret(accessKeySecret); + // Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi + config.endpoint = "dysmsapi.aliyuncs.com"; + return new com.aliyun.dysmsapi20170525.Client(config); + } + + + + } diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/xhpc/common/core/utils/SecurityUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/xhpc/common/core/utils/SecurityUtils.java index 01ca42ed..1f4b89d0 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/xhpc/common/core/utils/SecurityUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/xhpc/common/core/utils/SecurityUtils.java @@ -44,8 +44,7 @@ public class SecurityUtils public static String getToken(HttpServletRequest request) { String token = ServletUtils.getRequest().getHeader(CacheConstants.HEADER); - System.out.println("=============token=============="+token); - System.out.println("=============token=============="+token); + //System.out.println("=============token=============="+token); if (StringUtils.isNotEmpty(token) && token.startsWith(CacheConstants.TOKEN_PREFIX)) { token = token.replace(CacheConstants.TOKEN_PREFIX, ""); diff --git a/sql/ry_config_20210531.sql b/sql/ry_config_20210531.sql index bc2ea6f9..ce26e3bb 100644 --- a/sql/ry_config_20210531.sql +++ b/sql/ry_config_20210531.sql @@ -40,17 +40,17 @@ INSERT INTO `config_info` (`id`, `data_id`, `group_id`, `content`, `md5`, `gmt_c (2, 'ruoyi-gateway-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net \n port: 6379\n password: tingsun@7645313\n cloud:\n gateway:\n discovery:\n locator:\n lowerCaseServiceId: true\n enabled: true\n routes:\n # 认证中心\n - id: ruoyi-auth\n uri: lb://ruoyi-auth\n predicates:\n - Path=/auth/**\n filters:\n # 验证码处理\n - CacheRequestFilter\n - ValidateCodeFilter\n - StripPrefix=1\n # 代码生成\n - id: ruoyi-gen\n uri: lb://ruoyi-gen\n predicates:\n - Path=/code/**\n filters:\n - StripPrefix=1\n # 定时任务\n - id: ruoyi-job\n uri: lb://ruoyi-job\n predicates:\n - Path=/schedule/**\n filters:\n - StripPrefix=1\n # 系统模块\n - id: ruoyi-system\n uri: lb://ruoyi-system\n predicates:\n - Path=/system/**\n filters:\n - StripPrefix=1\n # 文件服务\n - id: ruoyi-file\n uri: lb://ruoyi-file\n predicates:\n - Path=/file/**\n filters:\n - StripPrefix=1\n # 充电桩服务\n - id: xhpc-power-pole\n uri: lb://xhpc-power-pole\n predicates:\n - Path=/pp/**\n filters:\n - StripPrefix=1\n # 账号服务\n - id: xhpc-user\n uri: lb://xhpc-user\n predicates:\n - Path=/xhpc-user/**\n filters:\n - StripPrefix=1\n # 支付服务\n - id: xhpc-payment\n uri: lb://xhpc-payment\n predicates:\n - Path=/xhpc-payment/**\n filters:\n - StripPrefix=1\n # 订单服务\n - id: xhpc-order\n uri: lb://xhpc-order\n predicates:\n - Path=/xhpc-order/**\n filters:\n - StripPrefix=1\n\n# 不校验白名单\nignore:\n whites:\n - /auth/logout\n - /auth/login\n - /*/v2/api-docs\n - /csrf\n - /xhpc-user/app/user/jscode2session\n - /xhpc-user/app/user/register\n - /xhpc-user/app/user/login\n - /xhpc-user/app/user/loginOut\n - /xhpc-user/app/user/voluntaryLogin\n - /xhpc-user/app/user/logout\n - /xhpc-user/app/user/alipayEmpower\n - /xhpc-user/app/user/appInfo\n - /xhpc-payment/wx/paymentCallback', '5a3b5371bf88b6b46ffe8271c7cae24c', '2020-05-14 14:17:55', '2021-07-28 07:50:28', 'nacos', '171.88.42.96', '', '', '网关模块', 'null', 'null', 'yaml', 'null'), (3, 'ruoyi-auth-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net \n port: 6379\n password: tingsun@7645313\n', '364ff5f362097c96a2ad12596b5ff9fd', '2020-11-20 00:00:00', '2021-07-23 09:21:25', 'nacos', '0:0:0:0:0:0:0:1', '', '', '认证中心', 'null', 'null', 'yaml', 'null'), (4, 'ruoyi-monitor-dev.yml', 'DEFAULT_GROUP', '# spring\r\nspring: \r\n security:\r\n user:\r\n name: ruoyi\r\n password: 123456\r\n boot:\r\n admin:\r\n ui:\r\n title: 若依服务状态监控\r\n', 'd8997d0707a2fd5d9fc4e8409da38129', '2020-11-20 00:00:00', '2020-12-21 16:28:07', NULL, '0:0:0:0:0:0:0:1', '', '', '监控中心', 'null', 'null', 'yaml', 'null'), -(5, 'ruoyi-system-dev.yml', 'DEFAULT_GROUP', '# spring配置\nspring: \n redis:\n host: tingsun-znc.f3322.net \n port: 6379\n password: tingsun@7645313\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n # 主库数据源\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n # 从库数据源\n # slave:\n # username: \n # password: \n # url: \n # driver-class-name: \n # seata: true # 开启seata代理,开启后默认每个数据源都代理,如果某个不需要代理可单独关闭\n\n# seata配置\nseata:\n # 默认关闭,如需启用spring.datasource.dynami.seata需要同时开启\n enabled: false\n # Seata 应用编号,默认为 ${spring.application.name}\n application-id: ${spring.application.name}\n # Seata 事务组编号,用于 TC 集群名\n tx-service-group: ${spring.application.name}-group\n # 关闭自动代理\n enable-auto-data-source-proxy: false\n # 服务配置项\n service:\n # 虚拟组和分组的映射\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 172.31.183.135:8848\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 172.31.183.135:8848\n namespace:\n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.xhpc\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip', '58d5723fa8c81b12563941261fd7e758', '2020-11-20 00:00:00', '2021-07-28 10:44:08', 'nacos', '0:0:0:0:0:0:0:1', '', '', '系统模块', 'null', 'null', 'yaml', 'null'), +(5, 'ruoyi-system-dev.yml', 'DEFAULT_GROUP', '# spring配置\nspring: \n redis:\n host: tingsun-znc.f3322.net \n port: 6379\n password: tingsun@7645313\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n # 主库数据源\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n # 从库数据源\n # slave:\n # username: \n # password: \n # url: \n # driver-class-name: \n # seata: true # 开启seata代理,开启后默认每个数据源都代理,如果某个不需要代理可单独关闭\n\n# seata配置\nseata:\n # 默认关闭,如需启用spring.datasource.dynami.seata需要同时开启\n enabled: false\n # Seata 应用编号,默认为 ${spring.application.name}\n application-id: ${spring.application.name}\n # Seata 事务组编号,用于 TC 集群名\n tx-service-group: ${spring.application.name}-group\n # 关闭自动代理\n enable-auto-data-source-proxy: false\n # 服务配置项\n service:\n # 虚拟组和分组的映射\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 127.0.0.1:8848\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 127.0.0.1:8848\n namespace:\n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.xhpc\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 系统模块接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip', '58d5723fa8c81b12563941261fd7e758', '2020-11-20 00:00:00', '2021-07-28 10:44:08', 'nacos', '0:0:0:0:0:0:0:1', '', '', '系统模块', 'null', 'null', 'yaml', 'null'), (6, 'ruoyi-gen-dev.yml', 'DEFAULT_GROUP', '# spring配置\r\nspring: \r\n redis:\r\n host: tingsun-znc.f3322.net \r\n port: 6379\r\n password: tingsun@7645313\r\n datasource: \r\n driver-class-name: com.mysql.cj.jdbc.Driver\r\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n username: ry-cloud\r\n password: xiaohua123\r\n\r\n# mybatis配置\r\nmybatis:\r\n # 搜索指定包别名\r\n typeAliasesPackage: com.xhpc.gen.domain\r\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\r\n mapperLocations: classpath:mapper/**/*.xml\r\n\r\n# swagger配置\r\nswagger:\r\n title: 代码生成接口文档\r\n license: Powered By ruoyi\r\n licenseUrl: https://ruoyi.vip\r\n\r\n# 代码生成\r\ngen: \r\n # 作者\r\n author: ruoyi\r\n # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool\r\n packageName: com.xhpc.system\r\n # 自动去除表前缀,默认是false\r\n autoRemovePre: false\r\n # 表前缀(生成类名不会包含表前缀,多个用逗号分隔)\r\n tablePrefix: sys_\r\n', 'a21c5fa4c7c5731e62453614cf2e7d3f', '2020-11-20 00:00:00', '2021-07-24 14:16:06', NULL, '0:0:0:0:0:0:0:1', '', '', '代码生成', 'null', 'null', 'yaml', 'null'), (7, 'ruoyi-job-dev.yml', 'DEFAULT_GROUP', '# spring配置\nspring: \n redis:\n host: tingsun-znc.f3322.net \n port: 6379\n password: tingsun@7645313\n datasource:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/quartz?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: quartz\n password: quartz123\n\n# mybatis配置\nmybatis:\n # 搜索指定包别名\n typeAliasesPackage: com.xhpc.job\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n\n# swagger配置\nswagger:\n title: 定时任务接口文档\n license: Powered By ruoyi\n licenseUrl: https://ruoyi.vip\n', 'e9233f5ce3b3de95233ad88bb1a4231a', '2020-11-20 00:00:00', '2021-07-29 08:51:36', 'nacos', '0:0:0:0:0:0:0:1', '', '', '定时任务', 'null', 'null', 'yaml', 'null'), -(8, 'ruoyi-file-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313 \n jackson:\n date-format: yyyy-MM-dd HH:mm:ss\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 172.31.183.135:8848\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 172.31.183.135:8848\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc.file\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n configuration:\n call-setters-on-nulls: true\n\n# 本地文件上传 \nfile:\n domain: http://127.0.0.1:9300\n path: D:/ruoyi/uploadPath\n prefix: /statics\n\n# FastDFS配置\nfdfs:\n domain: http://8.129.231.12\n soTimeout: 3000\n connectTimeout: 2000\n trackerList: 8.129.231.12:22122\n\n# Minio配置\nminio:\n url: http://8.129.231.12:9000\n accessKey: minioadmin\n secretKey: minioadmin\n bucketName: test\n#oss默认配置\noss:\n enabled: true\n name: qiniu\n tenant-mode: true\n endpoint: oss-accelerate.aliyuncs.com\n access-key: LTAIhOKfUxeutGeh\n secret-key: 2TvKIoX03bnP5WRLxtTaEYQufrtbav\n bucket-name: dx-gzxh\n', '435441353d3fbaa4ee8165d6f4b0374b', '2020-11-20 00:00:00', '2021-07-29 02:42:04', 'nacos', '171.88.42.96', '', '', '文件服务', 'null', 'null', 'yaml', 'null'), +(8, 'ruoyi-file-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313 \n jackson:\n date-format: yyyy-MM-dd HH:mm:ss\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 127.0.0.1:8848\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 127.0.0.1:8848\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc.file\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n configuration:\n call-setters-on-nulls: true\n\n# 本地文件上传 \nfile:\n domain: http://127.0.0.1:9300\n path: D:/ruoyi/uploadPath\n prefix: /statics\n\n# FastDFS配置\nfdfs:\n domain: http://8.129.231.12\n soTimeout: 3000\n connectTimeout: 2000\n trackerList: 8.129.231.12:22122\n\n# Minio配置\nminio:\n url: http://8.129.231.12:9000\n accessKey: minioadmin\n secretKey: minioadmin\n bucketName: test\n#oss默认配置\noss:\n enabled: true\n name: qiniu\n tenant-mode: true\n endpoint: oss-accelerate.aliyuncs.com\n access-key: LTAIhOKfUxeutGeh\n secret-key: 2TvKIoX03bnP5WRLxtTaEYQufrtbav\n bucket-name: dx-gzxh\n', '435441353d3fbaa4ee8165d6f4b0374b', '2020-11-20 00:00:00', '2021-07-29 02:42:04', 'nacos', '171.88.42.96', '', '', '文件服务', 'null', 'null', 'yaml', 'null'), (9, 'sentinel-ruoyi-gateway', 'DEFAULT_GROUP', '[\r\n {\r\n "resource": "ruoyi-auth",\r\n "count": 500,\r\n "grade": 1,\r\n "limitApp": "default",\r\n "strategy": 0,\r\n "controlBehavior": 0\r\n },\r\n {\r\n "resource": "ruoyi-system",\r\n "count": 1000,\r\n "grade": 1,\r\n "limitApp": "default",\r\n "strategy": 0,\r\n "controlBehavior": 0\r\n },\r\n {\r\n "resource": "ruoyi-gen",\r\n "count": 200,\r\n "grade": 1,\r\n "limitApp": "default",\r\n "strategy": 0,\r\n "controlBehavior": 0\r\n },\r\n {\r\n "resource": "ruoyi-job",\r\n "count": 300,\r\n "grade": 1,\r\n "limitApp": "default",\r\n "strategy": 0,\r\n "controlBehavior": 0\r\n }\r\n]', '9f3a3069261598f74220bc47958ec252', '2020-11-20 00:00:00', '2020-11-20 00:00:00', NULL, '0:0:0:0:0:0:0:1', '', '', '限流策略', 'null', 'null', 'json', 'null'), -(20, 'xhpc-power-pile-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 172.31.183.135:8848\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 172.31.183.135:8848\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc.pp\n mapperLocations: classpath:mapper/**/*.xml\n', 'e1cad28a4df29955413fa360a40a03dc', '2021-07-19 06:40:44', '2021-07-23 09:05:47', 'nacos', '0:0:0:0:0:0:0:1', '', '', '充电桩协议服务', '', '', 'yaml', ''), -(22, 'xhpc-charging-station-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 172.31.183.135:8848\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 172.31.183.135:8848\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc\n mapperLocations: classpath:mapper/**/*.xml\n', '5c9e25c8e8775649c0d5dcb5aed95715', '2021-07-19 08:22:12', '2021-07-28 08:51:17', 'nacos', '0:0:0:0:0:0:0:1', '', '', '', '', '', 'yaml', ''), -(23, 'xhpc-general-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 172.31.183.135:8848\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 172.31.183.135:8848\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc.general\n mapperLocations: classpath:mapper/**/*.xml\n', 'c31f612a8d2c67dc69888b7c02bae5d0', '2021-07-20 20:39:06', '2021-07-21 10:03:06', 'nacos', '0:0:0:0:0:0:0:1', '', '', '', '', '', 'yaml', ''), -(24, 'xhpc-user', 'DEFAULT_GROUP', 'spring: \r\n redis:\r\n host: tingsun-znc.f3322.net\r\n port: 6379\r\n password: tingsun@7645313 \r\n jackson:\r\n date-format: yyyy-MM-dd HH:mm:ss\r\n time-zone: GMT+8\r\n datasource:\r\n druid:\r\n stat-view-servlet:\r\n enabled: true\r\n loginUsername: admin\r\n loginPassword: 123456\r\n dynamic:\r\n druid:\r\n initial-size: 5\r\n min-idle: 5\r\n maxActive: 20\r\n maxWait: 60000\r\n timeBetweenEvictionRunsMillis: 60000\r\n minEvictableIdleTimeMillis: 300000\r\n validationQuery: SELECT 1 FROM DUAL\r\n testWhileIdle: true\r\n testOnBorrow: false\r\n testOnReturn: false\r\n poolPreparedStatements: true\r\n maxPoolPreparedStatementPerConnectionSize: 20\r\n filters: stat,slf4j\r\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\r\n datasource:\r\n master:\r\n driver-class-name: com.mysql.cj.jdbc.Driver\r\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n username: ry-cloud\r\n password: xiaohua123\r\n\r\nseata:\r\n enabled: false\r\n application-id: ${spring.application.name}\r\n tx-service-group: ${spring.application.name}-group\r\n enable-auto-data-source-proxy: false\r\n service:\r\n vgroup-mapping:\r\n ruoyi-system-group: default\r\n config:\r\n type: nacos\r\n nacos:\r\n serverAddr: 172.31.183.135:8848\r\n group: SEATA_GROUP\r\n namespace:\r\n registry:\r\n type: nacos\r\n nacos:\r\n application: seata-server\r\n server-addr: 172.31.183.135:8848\r\n namespace: \r\n\r\nmybatis:\r\n typeAliasesPackage: com.xhpc.user\r\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\r\n mapperLocations: classpath:mapper/**/*.xml\r\n configuration:\r\n call-setters-on-nulls: true\r\n', 'a5bc394601350c323c9ebe171864089b', '2021-07-21 12:11:14', '2021-07-29 16:21:37', NULL, '0:0:0:0:0:0:0:1', '', '', 'null', 'null', 'null', 'yaml', 'null'), +(20, 'xhpc-power-pile-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 127.0.0.1:8848\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 127.0.0.1:8848\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc.pp\n mapperLocations: classpath:mapper/**/*.xml\n', 'e1cad28a4df29955413fa360a40a03dc', '2021-07-19 06:40:44', '2021-07-23 09:05:47', 'nacos', '0:0:0:0:0:0:0:1', '', '', '充电桩协议服务', '', '', 'yaml', ''), +(22, 'xhpc-charging-station-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 127.0.0.1:8848\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 127.0.0.1:8848\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc\n mapperLocations: classpath:mapper/**/*.xml\n', '5c9e25c8e8775649c0d5dcb5aed95715', '2021-07-19 08:22:12', '2021-07-28 08:51:17', 'nacos', '0:0:0:0:0:0:0:1', '', '', '', '', '', 'yaml', ''), +(23, 'xhpc-general-dev.yml', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 127.0.0.1:8848\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 127.0.0.1:8848\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc.general\n mapperLocations: classpath:mapper/**/*.xml\n', 'c31f612a8d2c67dc69888b7c02bae5d0', '2021-07-20 20:39:06', '2021-07-21 10:03:06', 'nacos', '0:0:0:0:0:0:0:1', '', '', '', '', '', 'yaml', ''), +(24, 'xhpc-user', 'DEFAULT_GROUP', 'spring: \r\n redis:\r\n host: tingsun-znc.f3322.net\r\n port: 6379\r\n password: tingsun@7645313 \r\n jackson:\r\n date-format: yyyy-MM-dd HH:mm:ss\r\n time-zone: GMT+8\r\n datasource:\r\n druid:\r\n stat-view-servlet:\r\n enabled: true\r\n loginUsername: admin\r\n loginPassword: 123456\r\n dynamic:\r\n druid:\r\n initial-size: 5\r\n min-idle: 5\r\n maxActive: 20\r\n maxWait: 60000\r\n timeBetweenEvictionRunsMillis: 60000\r\n minEvictableIdleTimeMillis: 300000\r\n validationQuery: SELECT 1 FROM DUAL\r\n testWhileIdle: true\r\n testOnBorrow: false\r\n testOnReturn: false\r\n poolPreparedStatements: true\r\n maxPoolPreparedStatementPerConnectionSize: 20\r\n filters: stat,slf4j\r\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\r\n datasource:\r\n master:\r\n driver-class-name: com.mysql.cj.jdbc.Driver\r\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n username: ry-cloud\r\n password: xiaohua123\r\n\r\nseata:\r\n enabled: false\r\n application-id: ${spring.application.name}\r\n tx-service-group: ${spring.application.name}-group\r\n enable-auto-data-source-proxy: false\r\n service:\r\n vgroup-mapping:\r\n ruoyi-system-group: default\r\n config:\r\n type: nacos\r\n nacos:\r\n serverAddr: 127.0.0.1:8848\r\n group: SEATA_GROUP\r\n namespace:\r\n registry:\r\n type: nacos\r\n nacos:\r\n application: seata-server\r\n server-addr: 127.0.0.1:8848\r\n namespace: \r\n\r\nmybatis:\r\n typeAliasesPackage: com.xhpc.user\r\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\r\n mapperLocations: classpath:mapper/**/*.xml\r\n configuration:\r\n call-setters-on-nulls: true\r\n', 'a5bc394601350c323c9ebe171864089b', '2021-07-21 12:11:14', '2021-07-29 16:21:37', NULL, '0:0:0:0:0:0:0:1', '', '', 'null', 'null', 'null', 'yaml', 'null'), (32, 'xhpc-payment', 'DEFAULT_GROUP', 'spring: \n redis:\n host: tingsun-znc.f3322.net\n port: 6379\n password: tingsun@7645313 \n jackson:\n date-format: yyyy-MM-dd HH:mm:ss\n datasource:\n druid:\n stat-view-servlet:\n enabled: true\n loginUsername: admin\n loginPassword: 123456\n dynamic:\n druid:\n initial-size: 5\n min-idle: 5\n maxActive: 20\n maxWait: 60000\n timeBetweenEvictionRunsMillis: 60000\n minEvictableIdleTimeMillis: 300000\n validationQuery: SELECT 1 FROM DUAL\n testWhileIdle: true\n testOnBorrow: false\n testOnReturn: false\n poolPreparedStatements: true\n maxPoolPreparedStatementPerConnectionSize: 20\n filters: stat,slf4j\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\n datasource:\n master:\n driver-class-name: com.mysql.cj.jdbc.Driver\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\n username: ry-cloud\n password: xiaohua123\n\nseata:\n enabled: false\n application-id: ${spring.application.name}\n tx-service-group: ${spring.application.name}-group\n enable-auto-data-source-proxy: false\n service:\n vgroup-mapping:\n ruoyi-system-group: default\n config:\n type: nacos\n nacos:\n serverAddr: 118.24.137.203:8848\n group: SEATA_GROUP\n namespace:\n registry:\n type: nacos\n nacos:\n application: seata-server\n server-addr: 118.24.137.203:8848\n namespace: \n\nmybatis:\n typeAliasesPackage: com.xhpc.payment\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\n mapperLocations: classpath:mapper/**/*.xml\n configuration:\n call-setters-on-nulls: true\n', '406756afa55d157cb60305f89f29ec0c', '2021-07-22 16:44:26', '2021-07-22 11:10:56', 'nacos', '110.184.240.136', '', '', '', '', '', 'yaml', ''), -(45, 'xhpc-order', 'DEFAULT_GROUP', 'spring: \r\n redis:\r\n host: tingsun-znc.f3322.net\r\n port: 6379\r\n password: tingsun@7645313 \r\n jackson:\r\n date-format: yyyy-MM-dd HH:mm:ss\r\n datasource:\r\n druid:\r\n stat-view-servlet:\r\n enabled: true\r\n loginUsername: admin\r\n loginPassword: 123456\r\n dynamic:\r\n druid:\r\n initial-size: 5\r\n min-idle: 5\r\n maxActive: 20\r\n maxWait: 60000\r\n timeBetweenEvictionRunsMillis: 60000\r\n minEvictableIdleTimeMillis: 300000\r\n validationQuery: SELECT 1 FROM DUAL\r\n testWhileIdle: true\r\n testOnBorrow: false\r\n testOnReturn: false\r\n poolPreparedStatements: true\r\n maxPoolPreparedStatementPerConnectionSize: 20\r\n filters: stat,slf4j\r\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\r\n datasource:\r\n master:\r\n driver-class-name: com.mysql.cj.jdbc.Driver\r\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n username: ry-cloud\r\n password: xiaohua123\r\n\r\nseata:\r\n enabled: false\r\n application-id: ${spring.application.name}\r\n tx-service-group: ${spring.application.name}-group\r\n enable-auto-data-source-proxy: false\r\n service:\r\n vgroup-mapping:\r\n ruoyi-system-group: default\r\n config:\r\n type: nacos\r\n nacos:\r\n serverAddr: 172.31.183.135:8848\r\n group: SEATA_GROUP\r\n namespace:\r\n registry:\r\n type: nacos\r\n nacos:\r\n application: seata-server\r\n server-addr: 172.31.183.135:8848\r\n namespace: \r\n\r\nmybatis:\r\n typeAliasesPackage: com.xhpc.order\r\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\r\n mapperLocations: classpath:mapper/**/*.xml\r\n configuration:\r\n call-setters-on-nulls: true\r\n', 'dda0f504b5a217c72b8e9cc62f449da5', '2021-07-26 15:35:37', '2021-07-26 15:35:37', NULL, '0:0:0:0:0:0:0:1', '', '', NULL, NULL, NULL, 'yaml', NULL); +(45, 'xhpc-order', 'DEFAULT_GROUP', 'spring: \r\n redis:\r\n host: tingsun-znc.f3322.net\r\n port: 6379\r\n password: tingsun@7645313 \r\n jackson:\r\n date-format: yyyy-MM-dd HH:mm:ss\r\n datasource:\r\n druid:\r\n stat-view-servlet:\r\n enabled: true\r\n loginUsername: admin\r\n loginPassword: 123456\r\n dynamic:\r\n druid:\r\n initial-size: 5\r\n min-idle: 5\r\n maxActive: 20\r\n maxWait: 60000\r\n timeBetweenEvictionRunsMillis: 60000\r\n minEvictableIdleTimeMillis: 300000\r\n validationQuery: SELECT 1 FROM DUAL\r\n testWhileIdle: true\r\n testOnBorrow: false\r\n testOnReturn: false\r\n poolPreparedStatements: true\r\n maxPoolPreparedStatementPerConnectionSize: 20\r\n filters: stat,slf4j\r\n connectionProperties: druid.stat.mergeSql\\=true;druid.stat.slowSqlMillis\\=5000\r\n datasource:\r\n master:\r\n driver-class-name: com.mysql.cj.jdbc.Driver\r\n url: jdbc:mysql://182.140.223.172:8036/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n username: ry-cloud\r\n password: xiaohua123\r\n\r\nseata:\r\n enabled: false\r\n application-id: ${spring.application.name}\r\n tx-service-group: ${spring.application.name}-group\r\n enable-auto-data-source-proxy: false\r\n service:\r\n vgroup-mapping:\r\n ruoyi-system-group: default\r\n config:\r\n type: nacos\r\n nacos:\r\n serverAddr: 127.0.0.1:8848\r\n group: SEATA_GROUP\r\n namespace:\r\n registry:\r\n type: nacos\r\n nacos:\r\n application: seata-server\r\n server-addr: 127.0.0.1:8848\r\n namespace: \r\n\r\nmybatis:\r\n typeAliasesPackage: com.xhpc.order\r\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\r\n mapperLocations: classpath:mapper/**/*.xml\r\n configuration:\r\n call-setters-on-nulls: true\r\n', 'dda0f504b5a217c72b8e9cc62f449da5', '2021-07-26 15:35:37', '2021-07-26 15:35:37', NULL, '0:0:0:0:0:0:0:1', '', '', NULL, NULL, NULL, 'yaml', NULL); /*!40000 ALTER TABLE `config_info` ENABLE KEYS */; /*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */; diff --git a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/XhpcActivityInternetController.java b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/XhpcActivityInternetController.java index 8fadfd63..a89b64d5 100644 --- a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/XhpcActivityInternetController.java +++ b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/controller/XhpcActivityInternetController.java @@ -65,8 +65,7 @@ public class XhpcActivityInternetController extends BaseController { domain.setUpdateBy(loginUser.getUserid().toString()); domain.setTenantId(loginUser.getTenantId()); domain.setStatus(Short.valueOf("1")); - - return R.ok(internetService.insertDomain(domain)); + return internetService.insertDomain(domain); } diff --git a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/mapper/XhpcActivityInternetMapper.java b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/mapper/XhpcActivityInternetMapper.java index 0b998da4..25aa42b6 100644 --- a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/mapper/XhpcActivityInternetMapper.java +++ b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/mapper/XhpcActivityInternetMapper.java @@ -30,4 +30,9 @@ public interface XhpcActivityInternetMapper { List selectByDateBetween(@Param("internetName")String internetName, @Param("stationList")List stationList, @Param("startTime")String startTime, @Param("endTime")String endTime); int updateStatusByExpireNow(); -} \ No newline at end of file + + //获取场站时间段 + List> getXhpcRateTimes(@Param("chargingStationId")Long chargingStationId); + + String getChargingStation(@Param("chargingStationId")Long chargingStationId); +} diff --git a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/XhpcActivityInternetService.java b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/XhpcActivityInternetService.java index 08a53db2..ed08113c 100644 --- a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/XhpcActivityInternetService.java +++ b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/XhpcActivityInternetService.java @@ -2,6 +2,7 @@ package com.xhpc.activity.service; import com.xhpc.activity.domain.XhpcActivityFormulaDomain; import com.xhpc.activity.domain.XhpcActivityInternetDomain; +import com.xhpc.common.core.domain.R; import java.util.List; import java.util.Map; @@ -14,7 +15,7 @@ public interface XhpcActivityInternetService { XhpcActivityInternetDomain getDomainByPk(Integer activityId); - boolean insertDomain(XhpcActivityInternetDomain domain); + R insertDomain(XhpcActivityInternetDomain domain); boolean updateDomain(XhpcActivityInternetDomain domain); diff --git a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/XhpcActivityInternetServiceImpl.java b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/XhpcActivityInternetServiceImpl.java index a8ce03cb..671ea7cd 100644 --- a/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/XhpcActivityInternetServiceImpl.java +++ b/xhpc-modules/xhpc-activity/src/main/java/com/xhpc/activity/service/impl/XhpcActivityInternetServiceImpl.java @@ -6,6 +6,7 @@ import com.xhpc.activity.mapper.XhpcActivityFormulaMapper; import com.xhpc.activity.mapper.XhpcActivityInternetMapper; import com.xhpc.activity.service.XhpcActivityInternetService; import com.xhpc.activity.utils.AreaCodeUtil; +import com.xhpc.common.core.domain.R; import com.xhpc.common.core.exception.CustomException; import com.xhpc.common.core.utils.StringUtils; import com.xhpc.common.util.DateUtil; @@ -13,11 +14,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Comparator; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @@ -54,13 +51,47 @@ public class XhpcActivityInternetServiceImpl implements XhpcActivityInternetServ @Override - public boolean insertDomain(XhpcActivityInternetDomain domain) { + public R insertDomain(XhpcActivityInternetDomain domain) { + //判断流量方时间段和场站时间段是否一致 + String s = AreaCodeUtil.removeAreaCode(domain.getStationList()); + List formulaList = domain.getFormulaList(); + List> mapList = new ArrayList<>(); + for (int i = 0; i map = new HashMap<>(); + map.put("startTime",xhpcActivityFormulaDomain.getStartTime()); + map.put("endTime",xhpcActivityFormulaDomain.getEndTime()); + mapList.add(map); + } + String[] split = s.split(","); + for (int i = 0; i > xhpcRateTimes = internetMapper.getXhpcRateTimes(chargingStationId); + if(mapList.size() ==xhpcRateTimes.size()){ + for (Map map:mapList) { + boolean flag = false; + for (Map rateMap:xhpcRateTimes) { + if(rateMap.get("startTime").toString().equals(map.get("startTime").toString()) && rateMap.get("endTime").toString().equals(map.get("endTime").toString())){ + flag =true; + } + } + if(!flag){ + String chargingStation = internetMapper.getChargingStation(chargingStationId); + return R.fail("与"+chargingStation+"场站时间段端不一致"); + } + } + }else{ + String chargingStation = internetMapper.getChargingStation(chargingStationId); + return R.fail("与"+chargingStation+"场站时间段端不一致"); + } + } + domain.setStationList(AreaCodeUtil.removeAreaCode(domain.getStationList())); internetMapper.insert(domain); List formulaDomainList = getFormulaFullList(domain); formulaMapper.insertBatch(formulaDomainList); - return true; + return R.ok(); } @@ -143,7 +174,6 @@ public class XhpcActivityInternetServiceImpl implements XhpcActivityInternetServ } boolean checkFlag = checkFormulaList(formulaDomains); if(!checkFlag){ - System.out.println(" ==================== 费率列表 ======================== "); System.out.println(formulaDomains); throw new CustomException("费率设置错误,请检查"); } diff --git a/xhpc-modules/xhpc-activity/src/main/resources/mapper/XhpcActivityInternetMapper.xml b/xhpc-modules/xhpc-activity/src/main/resources/mapper/XhpcActivityInternetMapper.xml index 7c0d73a8..d500286a 100644 --- a/xhpc-modules/xhpc-activity/src/main/resources/mapper/XhpcActivityInternetMapper.xml +++ b/xhpc-modules/xhpc-activity/src/main/resources/mapper/XhpcActivityInternetMapper.xml @@ -25,7 +25,7 @@ activity_id , activity_name, internet_name, compute_type, power_price, service_price, compute_formula, start_time, - end_time, station_list, tenant_id, `status`, del_flag, create_by, create_time, update_by, + end_time, station_list, tenant_id, `status`, del_flag, create_by, create_time, update_by, update_time, check_by, check_time @@ -151,4 +151,17 @@ update xhpc_activity_internet set status=4 where status=3 and del_flag=0 and end_time now() - \ No newline at end of file + + + + + diff --git a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/api/XhpcMessageBoardApiController.java b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/api/XhpcMessageBoardApiController.java index 7609782b..4512674f 100644 --- a/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/api/XhpcMessageBoardApiController.java +++ b/xhpc-modules/xhpc-card/src/main/java/com/xhpc/card/api/XhpcMessageBoardApiController.java @@ -49,7 +49,7 @@ public class XhpcMessageBoardApiController extends BaseController { * @date 2022/1/13 18:15 * @since version-1.0 */ - @GetMapping("/user/message") + @GetMapping("/user/messageYu") public AjaxResult queryUserMessage(UserQueryCondition userQueryCondition) { QueryUserMassageResponse queryUserMassageResponse = xhpcMessageBoardService.queryUserMessage(userQueryCondition); @@ -70,4 +70,4 @@ public class XhpcMessageBoardApiController extends BaseController { return AjaxResult.success(avatarAddress); } -} \ No newline at end of file +} diff --git a/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/api/XhpcChargingStationApiController.java b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/api/XhpcChargingStationApiController.java index 2def30fa..c8e7dc85 100644 --- a/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/api/XhpcChargingStationApiController.java +++ b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/api/XhpcChargingStationApiController.java @@ -36,9 +36,6 @@ public class XhpcChargingStationApiController extends BaseController { //@PreAuthorize(hasPermi = "system:station:list") @GetMapping("/getWXList") public TableDataInfo getWXList(String name, String serviceFacilities, Integer code, String longitude, String latitude,String tenantId) { - System.out.println("========tenantId======="+tenantId); - System.out.println("========tenantId======="+tenantId); - System.out.println("========tenantId======="+tenantId); startPage(); List> list = xhpcChargingStationService.getWXList(name, serviceFacilities, code, longitude, latitude,tenantId); return getDataTable(list); diff --git a/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/mapper/XhpcChargingStationMapper.java b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/mapper/XhpcChargingStationMapper.java index bd1d3219..d9279900 100644 --- a/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/mapper/XhpcChargingStationMapper.java +++ b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/mapper/XhpcChargingStationMapper.java @@ -275,5 +275,7 @@ public interface XhpcChargingStationMapper { List getActivityDiscountTime(@Param("internetUserId")Long internetUserId, @Param("startTime")String startTime, @Param("userType")Integer userType, @Param("chargingStationId")Long chargingStationId, @Param("tenantId")String tenantId); + //获取运营商信息 + Map getXhpcOperator(@Param("operatorId") Long operatorId); } diff --git a/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/service/XhpcChargingStationServiceImpl.java b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/service/XhpcChargingStationServiceImpl.java index c917d5f0..12911873 100644 --- a/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/service/XhpcChargingStationServiceImpl.java +++ b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/service/XhpcChargingStationServiceImpl.java @@ -470,6 +470,13 @@ public class XhpcChargingStationServiceImpl extends BaseService implements IXhpc BeanUtils.copyProperties(xhpcChargingStationDto, xhpcChargingStation); xhpcChargingStation.setRateModelId(rateModelId); xhpcChargingStation.setTenantId(tenantId); + Map xhpcOperator = xhpcChargingStationMapper.getXhpcOperator(xhpcChargingStation.getOperatorId()); + if(xhpcOperator !=null &&xhpcOperator.get("operatorIdEvcs") !=null){ + xhpcChargingStation.setOperatorIdEvcs(xhpcOperator.get("operatorIdEvcs").toString()); + }else{ + return AjaxResult.error("1005", "运营商少监管平台推送编号"); + } + int j = xhpcChargingStationMapper.insertxhpcChargingStation(xhpcChargingStation); if (j == 0) { return AjaxResult.error("1006", "电站基本信息添加失败"); @@ -792,7 +799,7 @@ public class XhpcChargingStationServiceImpl extends BaseService implements IXhpc stringList = Arrays.asList(split); } String date = DateUtil.formatTime(new Date()); - + List> list = xhpcChargingStationMapper.getWXList(name, stringList, code, longitude, latitude, 2,date,tenantId); if (list != null && list.size() > 0) { for (int i = 0; i < list.size(); i++) { diff --git a/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/utils/img/QrImgUtils.java b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/utils/img/QrImgUtils.java index 296509e5..14adcd99 100644 --- a/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/utils/img/QrImgUtils.java +++ b/xhpc-modules/xhpc-charging-station/src/main/java/com/xhpc/charging/station/utils/img/QrImgUtils.java @@ -31,9 +31,6 @@ public class QrImgUtils { //生成桩的二维码图片 //1.生成二维码链接内容: StringBuilder prefix = new StringBuilder(environment.getProperty("img.qrLinkContent")); - System.out.println("========prefix===========》"+environment.getProperty("img.qrLinkContent")); - System.out.println("========prefix===========》"+environment.getProperty("img.qrLinkContent")); - System.out.println("========prefix===========》"+environment.getProperty("img.qrLinkContent")); String QrContent = prefix.append(xhpcTerminal.getSerialNumber()).toString(); try { //2.生成二维码图片: @@ -53,7 +50,7 @@ public class QrImgUtils { String.valueOf(letterMap.get(forIndex)), new File(environment.getProperty("fullImgDestPath") + finallyImgFileName) ); - System.out.println("===================》完整二维码图片生成成功"); + //4.上传图片至服务器 // 创建OSSClient实例 OSSClient ossClient = new OSSClient(environment.getProperty("oss.endpoint"), environment.getProperty("oss.access-key"), environment.getProperty("oss.secret-key")); @@ -62,22 +59,20 @@ public class QrImgUtils { String aLiYunUploadLocation = "QrCodeImg/" + xhpcTerminal.getChargingStationId() + "/" + xhpcTerminal.getPileSerialNumber() + "/" + finallyImgFileName; ossClient.putObject(environment.getProperty("oss.bucket-name"), aLiYunUploadLocation, new File(environment.getProperty("destPath") + File.separatorChar + finallyImgFileName)); ossClient.shutdown(); - System.out.println("===================》将完整二维码上传至阿里云成功"); + //System.out.println("===================》将完整二维码上传至阿里云成功"); //5.将放在阿里云上的生成的图片的路径和图片所对应的终端的id放入数据库xhpc_img表中 Long terminalId = xhpcTerminal.getTerminalId(); xhpcImgMapper.insert(aLiYunUploadLocation, terminalId); - System.out.println("===================》将阿里云上的图片地址放入数据库"); //6.删除生成的二维码图片 File QrImg = new File(environment.getProperty("destPath") + File.separatorChar + qrFileName); QrImg.delete(); //7.删除本地生成的完整图片 File finallyImg = new File(environment.getProperty("fullImgDestPath") + finallyImgFileName); finallyImg.delete(); - System.out.println("==================》已删除本地生成的完成二维码图片"); } catch (Exception e) { e.printStackTrace(); System.out.println(e.getMessage()); - System.out.println("二维码生成图片失败,请检查生成二维码所需要的资源路径是否正确"); + //System.out.println("二维码生成图片失败,请检查生成二维码所需要的资源路径是否正确"); } } } diff --git a/xhpc-modules/xhpc-charging-station/src/main/resources/mapper/XhpcChargingStationMapper.xml b/xhpc-modules/xhpc-charging-station/src/main/resources/mapper/XhpcChargingStationMapper.xml index 9690917e..bda35765 100644 --- a/xhpc-modules/xhpc-charging-station/src/main/resources/mapper/XhpcChargingStationMapper.xml +++ b/xhpc-modules/xhpc-charging-station/src/main/resources/mapper/XhpcChargingStationMapper.xml @@ -988,4 +988,11 @@ and xad.start_time <=#{startTime} and xad.end_time > #{startTime} order by xad.start_time asc + + diff --git a/xhpc-modules/xhpc-charging-station/src/main/resources/mapper/XhpcRateTimeMapper.xml b/xhpc-modules/xhpc-charging-station/src/main/resources/mapper/XhpcRateTimeMapper.xml index 6d8d376c..ee7cacd6 100644 --- a/xhpc-modules/xhpc-charging-station/src/main/resources/mapper/XhpcRateTimeMapper.xml +++ b/xhpc-modules/xhpc-charging-station/src/main/resources/mapper/XhpcRateTimeMapper.xml @@ -40,7 +40,8 @@ select app_user_id as appUserId, + weixin_open_id as weixinOpenId, + alipay_open_id as alipayOpenId, balance as balance, phone as phone, soc as soc, @@ -428,8 +430,11 @@ operator_id_evcs as operatorIdEvcs, soc as soc, platform_commission_rate as platformCommissionRate, + (select name from xhpc_charging_station where charging_station_id=#{chargingStationId}) chargingStationName, maintenance_commission_rate as maintenanceCommissionRate - from xhpc_operator where operator_id=(select operator_id from xhpc_charging_station where charging_station_id=#{chargingStationId}) + from xhpc_operator + + where operator_id=(select operator_id from xhpc_charging_station where charging_station_id=#{chargingStationId}) + select + charging_station_id as chargingStationId, + tenant_id as tenantId + from xhpc_charging_station where del_flag =0 and status=0 + + + + + + + + + + insert into xhpc_charging_station_power + + + charge_order_id, + + + status, + + + voltage, + + + current, + + + charging_station_id, + + + charging_pile_id, + + + terminal_id, + + + del_flag, + + + create_time, + + + create_by, + + + update_time, + + + update_by, + + + remark, + + + tenant_id, + + + + + #{chargeOrderId}, + + + #{status}, + + + #{voltage}, + + + #{current}, + + + #{chargingStationId}, + + + #{chargingPileId}, + + + #{terminalId}, + + + #{delFlag}, + + + #{createTime}, + + + #{createBy}, + + + #{updateTime}, + + + #{updateBy}, + + + #{remark}, + + + #{tenantId}, + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/AlipayPaymentController.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/AlipayPaymentController.java index a71649d5..c8d6b7fb 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/AlipayPaymentController.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/AlipayPaymentController.java @@ -120,7 +120,7 @@ public class AlipayPaymentController { return AjaxResult.error(HttpStatus.ALREADY_EXISTING, "支付宝充值失败,继续充值请联系客服"); } //生成充值订单 - XhpcRechargeOrder xhpcRechargeOrder = iXhpcRechargeOrderService.addRechargeOrder(userId+"", BigDecimal.valueOf(Double.parseDouble(amount)), "2", orderNumber,userType); + XhpcRechargeOrder xhpcRechargeOrder = iXhpcRechargeOrderService.addRechargeOrder(userId+"", new BigDecimal(amount), "2", orderNumber,userType); String attach = attachYu(StringUtils.valueOf(xhpcRechargeOrder.getRechargeOrderId()), StringUtils.valueOf(amount), null, orderNumber); /** 初始化 **/ diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/WxPaymentController.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/WxPaymentController.java index 64565cb3..fbedf10b 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/WxPaymentController.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/WxPaymentController.java @@ -117,18 +117,17 @@ public class WxPaymentController { if (StringUtils.isNotNull(refundOrder)) { return AjaxResult.error(HttpStatus.ALREADY_EXISTING, "用户存正在退款"); } - Double amount1 = Double.parseDouble(amount) * 100; + BigDecimal amount1 = new BigDecimal(amount).multiply(new BigDecimal(100)); String orderNumber = StringUtils.numFormat(Long.parseLong(userId), 1, StatusConstants.FLOWING_WATER_RECHARGE_TYPE); - if (0.0 == amount1) { + if (amount1.compareTo(new BigDecimal(0.0))==0) { return AjaxResult.error(HttpStatus.NOT_NULL, "充值金额不能为0"); } XhpcSettingConfig xhpcSettingConfig = xhpcCommonPayment.getXhpcSettingConfigTenantId(UserTypeUtil.OPERATION_WX_TYPE, tenantId); if(xhpcSettingConfig ==null){ return AjaxResult.error(HttpStatus.ALREADY_EXISTING, "支付宝充值失败,继续充值请联系客服"); } - //生成充值订单 - XhpcRechargeOrder xhpcRechargeOrder = iXhpcRechargeOrderService.addRechargeOrder(userId, BigDecimal.valueOf(Double.parseDouble(amount)), "1", orderNumber,userType); + XhpcRechargeOrder xhpcRechargeOrder = iXhpcRechargeOrderService.addRechargeOrder(userId, new BigDecimal(amount), "1", orderNumber,userType); //附加数据(否) String attach = attachYu(StringUtils.valueOf(xhpcRechargeOrder.getRechargeOrderId()), StringUtils.valueOf(amount), null, orderNumber); //商品描述(是) diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcCommonPaymentController.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcCommonPaymentController.java index 175db7ed..c8210d9f 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcCommonPaymentController.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcCommonPaymentController.java @@ -30,9 +30,7 @@ public class XhpcCommonPaymentController extends BaseController { */ @GetMapping("/settingConfig") public R settingConfig(Integer status, String tenantId) { - System.out.println("==================获取支付配置========================"); - System.out.println("==================获取支付配置========status==============="+status); - System.out.println("==================获取支付配置========tenantId================"+tenantId); + return R.ok(xhpcCommonPayment.getXhpcSettingConfigTenantId(status, tenantId)); } diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcRechargeOrderController.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcRechargeOrderController.java index ca807093..7930c59e 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcRechargeOrderController.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcRechargeOrderController.java @@ -87,6 +87,11 @@ public class XhpcRechargeOrderController extends BaseController { return AjaxResult.success(iXhpcRechargeOrderService.sumMoney(phone, refundOrderNumber, status, createTimeStart, createTimeEnd,type,source,userId)); } + @GetMapping("/sumUserMoney") + @ApiOperation(value = "充值金额") + public AjaxResult sumUserMoney(String phone, String refundOrderNumber, String status, String createTimeStart, String createTimeEnd,Integer type,Integer source,Integer userId) { + return AjaxResult.success(iXhpcRechargeOrderService.sumUserMoney(phone, refundOrderNumber, status, createTimeStart, createTimeEnd,type,source,userId)); + } /** * 每隔30分钟,清理一次未支付的订单 */ diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcRefundAuditController.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcRefundAuditController.java index cbd36f40..008b5003 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcRefundAuditController.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcRefundAuditController.java @@ -1,6 +1,8 @@ package com.xhpc.payment.controller; import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.alipay.api.AlipayClient; import com.alipay.api.CertAlipayRequest; import com.alipay.api.DefaultAlipayClient; @@ -14,6 +16,7 @@ import com.xhpc.common.core.constant.HttpStatus; import com.xhpc.common.core.constant.StatusConstants; import com.xhpc.common.core.domain.R; import com.xhpc.common.core.utils.DateUtils; +import com.xhpc.common.core.utils.HttpUtils; import com.xhpc.common.core.utils.StringUtils; import com.xhpc.common.core.utils.WXPayUtil; import com.xhpc.common.core.web.controller.BaseController; @@ -257,8 +260,13 @@ public class XhpcRefundAuditController extends BaseController { }else{ phone=xhpcRefundOrder.get("communityPhone").toString(); } + logger.info("++++++++++++xhpcRefundOrder++++++++++++++++"); + logger.info("++++++++++++xhpcRefundOrder++++++++++++++++"+xhpcRefundOrder.toString()); + logger.info("++++++++++++xhpcRefundOrder++++++++++++++++"); + String userId = StringUtils.valueOf(xhpcRefundOrder.get("userId")); - Double amount = Double.parseDouble(StringUtils.valueOf(xhpcRefundOrder.get("amount"))); + BigDecimal amount = new BigDecimal(xhpcRefundOrder.get("amount").toString()); + logger.info("++++++++++++amount++++++++++++++++"+amount); String amountRefundOrder = "-" + amount.toString(); String tenantId = StringUtils.valueOf(xhpcRefundOrder.get("tenantId")); XhpcSettingConfig xhpcSettingConfig = xhpcCommonPayment.getXhpcSettingConfigTenantId(UserTypeUtil.OPERATION_WX_TYPE, xhpcRefundOrder.get("tenantId").toString()); @@ -298,7 +306,7 @@ public class XhpcRefundAuditController extends BaseController { String openId = StringUtils.valueOf(xhpcRefundOrder.get("openId")); //Double amount = Double.parseDouble(StringUtils.valueOf(xhpcRefundOrder.get("amount"))); //退款金额单位为分 - Double value = amount * 100; + BigDecimal value = amount.multiply(new BigDecimal(100)); Integer refund_fee = value.intValue(); if (refund_fee <= 0) { refundOrder.setStatus(2); @@ -315,7 +323,7 @@ public class XhpcRefundAuditController extends BaseController { updateXhpcRefundOrder(refundOrder,amountRefundOrder,userId,phone,2,source,tenantId); return AjaxResult.error(HttpStatus.DATA_ERROR, "用户不存在"); } - BigDecimal surplus = BigDecimal.valueOf(Double.valueOf(balance)).subtract(BigDecimal.valueOf(amount)); + BigDecimal surplus = BigDecimal.valueOf(Double.valueOf(balance)).subtract(amount); if (surplus.compareTo(BigDecimal.ZERO) == -1) { refundOrder.setStatus(2); refundOrder.setRemark("余额不足"); @@ -331,7 +339,7 @@ public class XhpcRefundAuditController extends BaseController { return AjaxResult.error(HttpStatus.DATA_ERROR, "用户不存在"); } String balance = StringUtils.valueOf(communityPersonnel.get("balance")); - BigDecimal surplus = BigDecimal.valueOf(Double.valueOf(balance)).subtract(BigDecimal.valueOf(amount)); + BigDecimal surplus = BigDecimal.valueOf(Double.valueOf(balance)).subtract(amount); if (surplus.compareTo(BigDecimal.ZERO) == -1) { refundOrder.setStatus(2); refundOrder.setRemark("余额不足"); @@ -363,7 +371,10 @@ public class XhpcRefundAuditController extends BaseController { } finally { httpPost.abort(); } - return parseXml(result, xhpcRefundAudit.getRefundOrderId(), BigDecimal.valueOf(amount), userId,phone,source,tenantId); + logger.info("++++++++++++amount++++++++++++++++"+amount); + logger.info("++++++++++++amount++++++++++++++++"+amount); + logger.info("++++++++++++amount++++++++++++++++"+amount); + return parseXml(result, xhpcRefundAudit.getRefundOrderId(), amount, userId,phone,source,tenantId); } @@ -461,6 +472,9 @@ public class XhpcRefundAuditController extends BaseController { try { Map map = WXPayUtil.xmlToMap(result); String result_code = map.get("result_code"); + logger.info("++++++++++++退款信息++++++++++++++++"); + logger.info("++++++++++++退款信息++++++++++++++++"+map.toString()); + logger.info("++++++++++++退款信息++++++++++++++++"); if ("FAIL".equals(result_code)) { refundOrder.setStatus(2); refundOrder.setRemark(map.get("err_code_des").toString()); @@ -484,6 +498,7 @@ public class XhpcRefundAuditController extends BaseController { BigDecimal surplus =new BigDecimal(communityPersonnel.get("balance").toString()).subtract(amount); int i = iXhpcRefundAuditService.updateCommunityPersonnelMoney(Long.parseLong(userId), surplus,null); } + refundOrder.setStatus(1); refundOrder.setRemark("微信退款成功"); refundOrder.setPaymentNo(map.get("payment_no").toString()); @@ -745,6 +760,7 @@ public class XhpcRefundAuditController extends BaseController { //后期可以增加短信通知 } } + @Scheduled(cron = "0 0/10 * * * ?") @GetMapping("/moneyPageTime") public void moneyPageTime(){ diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcRefundOrderController.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcRefundOrderController.java index 2086c658..e72403c4 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcRefundOrderController.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/controller/XhpcRefundOrderController.java @@ -61,11 +61,14 @@ public class XhpcRefundOrderController extends BaseController { return AjaxResult.error(HttpStatus.ERROR_STATUS, "大客户不支持退款"); } String amount = StringUtils.valueOf(map.get("amount")); + String type = StringUtils.valueOf(map.get("type")); if (StringUtils.isEmpty(amount)) { return AjaxResult.error(HttpStatus.NOT_NULL, "退款金额不能为空"); } else { - if (new BigDecimal(1).compareTo(new BigDecimal(amount)) == 1) { - return AjaxResult.error(HttpStatus.NOT_NULL, "退款金额不能少于1元"); + if("1".equals(type)){ + if (new BigDecimal(0.3).compareTo(new BigDecimal(amount)) == 1) { + return AjaxResult.error(HttpStatus.NOT_NULL, "微信平台规定退款金额不能少于0.3元"); + } } } //用户信息id @@ -78,7 +81,7 @@ public class XhpcRefundOrderController extends BaseController { if (StringUtils.isEmpty(userId)) { return AjaxResult.error(HttpStatus.NOT_NULL, "用户信息不能为空"); } - String type = StringUtils.valueOf(map.get("type")); + if (StringUtils.isEmpty(type)) { return AjaxResult.error(HttpStatus.NOT_NULL, "退款渠道不能为空"); } @@ -165,6 +168,11 @@ public class XhpcRefundOrderController extends BaseController { return AjaxResult.success(iXhpcRefundOrderService.sumMoney(phone, refundOrderNumber, status, createTimeStart, createTimeEnd,type)); } + @GetMapping("/sumUserMoney") + @ApiOperation(value = "退款统计订单") + public AjaxResult sumUserMoney(String phone, String refundOrderNumber, String status, String createTimeStart, String createTimeEnd,Integer type,Integer userId) { + return AjaxResult.success(iXhpcRefundOrderService.sumUserMoney(phone, refundOrderNumber, status, createTimeStart, createTimeEnd,type,userId)); + } /** * 自动申请退款 */ diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/mapper/XhpcRechargeOrderMapper.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/mapper/XhpcRechargeOrderMapper.java index 24612529..f60d4ed0 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/mapper/XhpcRechargeOrderMapper.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/mapper/XhpcRechargeOrderMapper.java @@ -61,6 +61,7 @@ public interface XhpcRechargeOrderMapper { */ public Map sumMoney(@Param("phone")String phone,@Param("rechargeOrderNumber") String rechargeOrderNumber,@Param("status") String status,@Param("createTimeStart") String createTimeStart,@Param("createTimeEnd") String createTimeEnd,@Param("type")Integer type,@Param("source")Integer source,@Param("userId")Integer userId,@Param("tenantId")String tenantId,@Param("time1")String time1,@Param("time2")String time2,@Param("time3")String time3,@Param("time4")String time4); + public Map sumUserMoney(@Param("phone")String phone,@Param("rechargeOrderNumber") String rechargeOrderNumber,@Param("status") String status,@Param("createTimeStart") String createTimeStart,@Param("createTimeEnd") String createTimeEnd,@Param("type")Integer type,@Param("source")Integer source,@Param("userId")Integer userId,@Param("tenantId")String tenantId); /** * 查询充值订单详情 diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/mapper/XhpcRefundOrderMapper.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/mapper/XhpcRefundOrderMapper.java index 91d19a19..4c3662bf 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/mapper/XhpcRefundOrderMapper.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/mapper/XhpcRefundOrderMapper.java @@ -79,6 +79,8 @@ public interface XhpcRefundOrderMapper { public Map sumMoney(@Param("phone") String phone, @Param("refundOrderNumber") String refundOrderNumber, @Param("status") String status, @Param("createTimeStart") String createTimeStart, @Param("createTimeEnd") String createTimeEnd,@Param("type")Integer type,@Param("tenantId")String tenantId,@Param("time1")String time1,@Param("time2")String time2,@Param("time3")String time3,@Param("time4")String time4); + public Map sumUserMoney(@Param("phone") String phone, @Param("refundOrderNumber") String refundOrderNumber, @Param("status") String status, @Param("createTimeStart") String createTimeStart, @Param("createTimeEnd") String createTimeEnd,@Param("type")Integer type,@Param("tenantId")String tenantId,@Param("userId")Integer userId); + /** * 通过用户id查询未完成充电订单 diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/IXhpcRechargeOrderService.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/IXhpcRechargeOrderService.java index bba2f2ec..4bd261b0 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/IXhpcRechargeOrderService.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/IXhpcRechargeOrderService.java @@ -68,6 +68,8 @@ public interface IXhpcRechargeOrderService { */ public Map sumMoney(String phone, String rechargeOrderNumber, String status, String createTimeStart, String createTimeEnd,Integer type,Integer source,Integer userId); + public Map sumUserMoney(String phone, String rechargeOrderNumber, String status, String createTimeStart, String createTimeEnd,Integer type,Integer source,Integer userId); + /** * 新增 充值订单 * @@ -100,4 +102,4 @@ public interface IXhpcRechargeOrderService { * 每隔30分钟,清理一次未支付的订单 */ public void updateRechargeOrderStatus(); -} \ No newline at end of file +} diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/IXhpcRefundOrderService.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/IXhpcRefundOrderService.java index f839cd2e..5dc47385 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/IXhpcRefundOrderService.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/IXhpcRefundOrderService.java @@ -70,6 +70,8 @@ public interface IXhpcRefundOrderService { */ public Map sumMoney(String phone, String refundOrderNumber, String status, String createTimeStart, String createTimeEnd,Integer type); + public Map sumUserMoney(String phone, String refundOrderNumber, String status, String createTimeStart, String createTimeEnd,Integer type,Integer userId); + /** * 新增 退款订单 * @@ -113,4 +115,4 @@ public interface IXhpcRefundOrderService { * type 1 小于101元 2大于100元 */ public List moneyPage(Integer type); -} \ No newline at end of file +} diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/AlipayService.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/AlipayService.java index 3daa9896..59cd1daa 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/AlipayService.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/AlipayService.java @@ -216,10 +216,7 @@ public class AlipayService implements AlipayInterface { AlipayTradeOrderSettleRequest request = new AlipayTradeOrderSettleRequest(); request.setBizContent("{\"out_request_no\":\"" + outRequestNo + "\",\"trade_no\":\"" + tradeNo + "\",\"royalty_parameters\":[{\"trans_in\":\"" + transIn + "\",\"amount\":" + amount + ",\"trans_in_type\":\"userId\"}]}"); AlipayTradeOrderSettleResponse response = alipayClient.certificateExecute(request); - System.out.println("=============================================="); - System.out.println(response); - System.out.println("=============================================="); - System.out.println(response.getBody()); + if (response.isSuccess()) { return true; } else { diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/XhpcRechargeOrderServiceImpl.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/XhpcRechargeOrderServiceImpl.java index 13fb8f54..fa185b87 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/XhpcRechargeOrderServiceImpl.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/XhpcRechargeOrderServiceImpl.java @@ -140,6 +140,12 @@ public class XhpcRechargeOrderServiceImpl implements IXhpcRechargeOrderService { return xhpcRechargeOrderMapper.sumMoney(phone, rechargeOrderNumber, status, createTimeStart, createTimeEnd, type,source,userId,loginUser.getTenantId(),time1,time2,time3,time4); } + @Override + public Map sumUserMoney(String phone, String rechargeOrderNumber, String status, String createTimeStart, String createTimeEnd, Integer type,Integer source,Integer userId) { + LoginUser loginUser = tokenService.getLoginUser(); + //昨日用户的活跃度 + return xhpcRechargeOrderMapper.sumUserMoney(phone, rechargeOrderNumber, status, createTimeStart, createTimeEnd, type,source,userId,loginUser.getTenantId()); + } /** * 新增 充值订单 * diff --git a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/XhpcRefundOrderServiceImpl.java b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/XhpcRefundOrderServiceImpl.java index 8da124c1..52509758 100644 --- a/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/XhpcRefundOrderServiceImpl.java +++ b/xhpc-modules/xhpc-payment/src/main/java/com/xhpc/payment/service/impl/XhpcRefundOrderServiceImpl.java @@ -149,6 +149,11 @@ public class XhpcRefundOrderServiceImpl implements IXhpcRefundOrderService { return xhpcRefundOrderMapper.sumMoney(phone, refundOrderNumber, status, createTimeStart, createTimeEnd, type,loginUser.getTenantId(),time1,time2,time3,time4); } + @Override + public Map sumUserMoney(String phone, String refundOrderNumber, String status, String createTimeStart, String createTimeEnd, Integer type,Integer userId) { + LoginUser loginUser = tokenService.getLoginUser(); + return xhpcRefundOrderMapper.sumUserMoney(phone, refundOrderNumber, status, createTimeStart, createTimeEnd, type,loginUser.getTenantId(),userId); + } /** * 新增 退款订单 * @@ -245,4 +250,4 @@ public class XhpcRefundOrderServiceImpl implements IXhpcRefundOrderService { return xhpcRefundOrderMapper.moneyPage(type); } -} \ No newline at end of file +} diff --git a/xhpc-modules/xhpc-payment/src/main/resources/mapper/XhpcRechargeOrderMapper.xml b/xhpc-modules/xhpc-payment/src/main/resources/mapper/XhpcRechargeOrderMapper.xml index 350efea3..27434359 100644 --- a/xhpc-modules/xhpc-payment/src/main/resources/mapper/XhpcRechargeOrderMapper.xml +++ b/xhpc-modules/xhpc-payment/src/main/resources/mapper/XhpcRechargeOrderMapper.xml @@ -224,7 +224,13 @@ ORDER BY xro.create_time DESC - + + + + select * from xhpc_charging_pile where serial_number =#{pileNo} and del_flag =0 limit 1 + + + diff --git a/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/controller/XhpcAppUserController.java b/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/controller/XhpcAppUserController.java index af3f390b..e58db135 100644 --- a/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/controller/XhpcAppUserController.java +++ b/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/controller/XhpcAppUserController.java @@ -2,9 +2,11 @@ package com.xhpc.user.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; import com.alipay.api.CertAlipayRequest; import com.alipay.api.DefaultAlipayClient; +import com.alipay.api.internal.util.AlipayEncrypt; import com.alipay.api.request.AlipaySystemOauthTokenRequest; import com.alipay.api.response.AlipaySystemOauthTokenResponse; import com.xhpc.common.api.SettingConfigService; @@ -18,11 +20,14 @@ import com.xhpc.common.core.web.domain.AjaxResult; import com.xhpc.common.core.web.page.TableDataInfo; import com.xhpc.common.log.annotation.Log; import com.xhpc.common.log.enums.BusinessType; +import com.xhpc.common.redis.service.RedisService; import com.xhpc.user.service.IXhpcAppUserUserService; +import com.xhpc.user.util.WechatDecryptDataUtil; import io.swagger.annotations.ApiOperation; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; +import org.springframework.scheduling.annotation.Scheduled; import org.springframework.web.bind.annotation.*; import javax.crypto.Cipher; @@ -35,6 +40,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.TimeUnit; /** * C端用户 @@ -53,6 +59,9 @@ public class XhpcAppUserController extends BaseController { @Autowired private Environment environment; + @Autowired + private RedisService redisService; + /** * C端用户详情 */ @@ -68,8 +77,8 @@ public class XhpcAppUserController extends BaseController { */ //@PreAuthorize(hasPermi = "app:user:page") @GetMapping("/page") - public TableDataInfo page(HttpServletRequest request,String phone) { - List> list = iXhpcAppUserUserService.selectAppUserList(request,phone); + public TableDataInfo page(HttpServletRequest request, String phone) { + List> list = iXhpcAppUserUserService.selectAppUserList(request, phone); return getDataTable(list); } @@ -91,6 +100,7 @@ public class XhpcAppUserController extends BaseController { /** * 统计 + * * @param phone * @return */ @@ -100,7 +110,6 @@ public class XhpcAppUserController extends BaseController { } - /** * 以下为小程序接口 */ @@ -124,6 +133,16 @@ public class XhpcAppUserController extends BaseController { return iXhpcAppUserUserService.login(map); } + + /** + * C端用户授权登录 + */ + @ApiOperation("授权登录") + @PostMapping("/loginPhone") + public R loginPhone(@RequestBody Map map) { + return iXhpcAppUserUserService.loginPhone(map); + } + /** * 小程序用户详情 */ @@ -158,24 +177,26 @@ public class XhpcAppUserController extends BaseController { */ @PostMapping("/jscode2session") @ApiOperation(value = "获取微信权限标识", notes = "jsCode") - public R jsCode(String jsCode, String encryptedData, String iv,String tenantId) { + public R jsCode(String jsCode, String encryptedData, String iv, String tenantId, String phoneCode) { if (StringUtils.isEmpty(jsCode)) { return R.fail(HttpStatus.NOT_NULL, "信息不完整"); } - encryptedData =encryptedData.replace(' ','+'); - if("".equals(tenantId) || null==tenantId){ - tenantId="000000"; + encryptedData = encryptedData.replace(' ', '+'); + if ("".equals(tenantId) || null == tenantId) { + tenantId = "000000"; } R r = settingConfigService.settingConfig(1, tenantId); - if(r !=null && r.getCode()==200){ - Map mapConfig = (Map)r.getData(); - String url = "https://api.weixin.qq.com/sns/jscode2session?appid="+mapConfig.get("wxAppId").toString()+"&secret="+mapConfig.get("wxAppSecret").toString()+"&js_code="+ jsCode + "&grant_type=authorization_code"; + if (r != null && r.getCode() == 200) { + System.out.println("===========111========sessionKey:==============111============="); + Map mapConfig = (Map) r.getData(); + String url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + mapConfig.get("wxAppId").toString() + "&secret=" + mapConfig.get("wxAppSecret").toString() + "&js_code=" + jsCode + "&grant_type=authorization_code"; String result = HttpUtils.get(url); JSONObject json = JSON.parseObject(result); + logger.info("========222===========sessionKey:============222==============="); if (null != json) { String openid = json.getString("openid"); String sessionKey = json.getString("session_key"); - System.out.println("sessionKey:"+sessionKey); + logger.info("========333===========sessionKey:============333==============="); if (StringUtils.isEmpty(openid)) { return R.fail(HttpStatus.ERROR_STATUS, "openid获取失败"); } @@ -184,24 +205,128 @@ public class XhpcAppUserController extends BaseController { } Map map = new HashMap<>(16); map.put("openid", openid); - JSONObject jsonObject = new JSONObject(); - if ((!"".equals(encryptedData) && encryptedData != null) && (!"".equals(iv) && iv != null)) { - jsonObject = getPhoneNumber(encryptedData, sessionKey, iv); - if (jsonObject !=null) { - map.put("name", jsonObject.get("nickName")); - map.put("sex", jsonObject.get("gender")); - map.put("avatar", jsonObject.get("avatarUrl")); - map.put("phone", jsonObject.get("purePhoneNumber")); + if (phoneCode != null && !phoneCode.equals("")) { + System.out.println("phoneCode:" + phoneCode); + //小程序登录获取token + String accesToken = getAccesToken(mapConfig.get("wxAppId").toString(), mapConfig.get("wxAppSecret").toString()); + //获取手机号 + String phoneCode1 = getPhoneCode(phoneCode, accesToken); + if(phoneCode1 !=null &&!phoneCode1.equals("")){ + map.put("phone", phoneCode1); } + logger.info("1111phone:"+ phoneCode1); } +// JSONObject jsonObject = new JSONObject(); +// if ((!"".equals(encryptedData) && encryptedData != null) && (!"".equals(iv) && iv != null)) { +// jsonObject = getPhoneNumber(encryptedData, sessionKey, iv); +// if (jsonObject !=null) { +// map.put("name", jsonObject.get("nickName")); +// map.put("sex", jsonObject.get("gender")); +// map.put("avatar", jsonObject.get("avatarUrl")); +// map.put("phone", jsonObject.get("purePhoneNumber")); +// } +// } return R.ok(map); } } - - return R.fail(HttpStatus.ERROR_STATUS, "openid获取失败"); } + @PostMapping("/jscodeSession") + @ApiOperation(value = "获取微信权限标识", notes = "jsCode") + public R jscodeSession(String jsCode, String encryptedData, String iv, String tenantId, String phoneCode) { + if (StringUtils.isEmpty(jsCode)) { + return R.fail(HttpStatus.NOT_NULL, "信息不完整"); + } + if ("".equals(tenantId) || null == tenantId) { + tenantId = "000000"; + } + R r = settingConfigService.settingConfig(1, tenantId); + if (r != null && r.getCode() == 200) { + System.out.println("========444===========sessionKey:============444==============="); + Map mapConfig = (Map) r.getData(); + String url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + mapConfig.get("wxAppId").toString() + "&secret=" + mapConfig.get("wxAppSecret").toString() + "&js_code=" + jsCode + "&grant_type=authorization_code"; + String result = HttpUtils.get(url); + JSONObject json = JSON.parseObject(result); + logger.info("========555===========sessionKey:============5555==============="); + if (null != json) { + String openid = json.getString("openid"); + redisService.setCacheObject("WXToken:" + openid, openid, 115L, TimeUnit.MINUTES); + String sessionKey = json.getString("session_key"); + logger.info("========666===========sessionKey:============666==============="+sessionKey); + logger.info("========666===========sessionKey:============666==============="); + if (StringUtils.isEmpty(openid)) { + return R.fail(HttpStatus.ERROR_STATUS, "openid获取失败"); + } + if (StringUtils.isEmpty(sessionKey)) { + return R.fail(HttpStatus.ERROR_STATUS, "openid获取失败"); + } + Map map = new HashMap<>(16); + map.put("openid", openid); + if (phoneCode != null && !phoneCode.equals("")) { + System.out.println("phoneCode:" + phoneCode); + //小程序登录获取token + String accesToken = getAccesToken(mapConfig.get("wxAppId").toString(), mapConfig.get("wxAppSecret").toString()); + //获取手机号 + String phoneCode1 = getPhoneCode(phoneCode, accesToken); + if(phoneCode1 !=null &&!phoneCode1.equals("")){ + map.put("phone", phoneCode1); + } + logger.info("========666===========phoneCode1:============666==============="+phoneCode1); + map.put("type",1); + map.put("tenantId","000000"); + return loginPhone(map); + } + return R.fail(HttpStatus.ERROR_STATUS, "请重新授权登录"); + } + } + return R.fail(HttpStatus.ERROR_STATUS, "请重新授权登录"); + } + + + + + //小程序登录获取token + @ApiOperation("微信小程序登录token") + @GetMapping("/getAccesToken") + public String getAccesToken(String appid, String secret) { + String captcha = redisService.getCacheObject("WXToken:" + appid); + if (captcha == null || "".equals(captcha)) { + logger.info("========777===========phoneCode1:============777==============="); + String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appid + "&secret=" + secret; + String result = HttpUtils.get(url); + logger.info("========888===========phoneCode1:============888==============="); + JSONObject json = JSON.parseObject(result); + String accessToken = json.getString("access_token"); + redisService.setCacheObject("WXToken:" + appid, accessToken, 115L, TimeUnit.MINUTES); + return accessToken; + } + return captcha; + } + + + //小程序获取手机号 + @ApiOperation("小程序获取手机号") + @GetMapping("/getPhoneCode") + public String getPhoneCode(String code, String token) { + System.out.println("========888===========sessionKey:============888==============="); + String url = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + token; + Map map = new HashMap<>(); + map.put("code", code); + JSONObject json = new JSONObject(map); + String result = HttpUtils.post(url, json); + System.out.println("========999===========sessionKey:============999==============="); + JSONObject jsonObject = JSON.parseObject(result); + String errmsg = jsonObject.getString("errmsg"); + if ("ok".equals(errmsg)) { + String phoneInfo = jsonObject.getString("phone_info"); + JSONObject jsonPhone = JSON.parseObject(phoneInfo); + String phoneNumber = jsonPhone.getString("phoneNumber"); + return phoneNumber; + } + return null; + } + /* * TODO 微信获取手机号 * @author fjd @@ -246,14 +371,13 @@ public class XhpcAppUserController extends BaseController { */ @ApiOperation("支付宝授权") @PostMapping("/alipayEmpower") - public AjaxResult alipayEmpower(@RequestParam String code,String tenantId) throws Exception { - if("".equals(tenantId) || null==tenantId){ - tenantId="000000"; + public R alipayEmpower(@RequestParam String code, String tenantId) throws Exception { + if ("".equals(tenantId) || null == tenantId) { + tenantId = "000000"; } R r = settingConfigService.settingConfig(2, tenantId); - System.out.println("======================r========================="+r.getCode()); - if(r !=null && r.getCode()==200){ - Map map = (Map)r.getData(); + if (r != null && r.getCode() == 200) { + Map map = (Map) r.getData(); /** 初始化 **/ CertAlipayRequest certAlipayRequest = new CertAlipayRequest(); /** 支付宝网关 **/ @@ -286,13 +410,54 @@ public class XhpcAppUserController extends BaseController { if (response.isSuccess()) { System.out.println("调用成功"); } else { - return AjaxResult.error("获取失败!"); + return R.fail(500,"获取失败!"); } - return AjaxResult.success(response); + return R.ok(response); } - return AjaxResult.error("获取失败"); + return R.fail(500,"获取失败!"); } + /** + * 支付宝授权 + */ + @ApiOperation("支付宝授权手机号登录") + @PostMapping("/alipayEmpowerPhone") + public R alipayEmpowerPhone(@RequestBody Map map) throws Exception { + String openid = map.get("openid").toString(); + String tenantId = map.get("tenantId").toString(); + String response = map.get("response").toString(); + if ("".equals(tenantId) || null == tenantId) { + tenantId = "000000"; + } + if(response==null || "".equals(response)){ + return R.fail("获取失败"); + } +// JSONObject jsonObject = JSONObject.parseObject(response); +// String accessToken = jsonObject.getString("response"); + try { + String encryptType = "AES"; + String decryptKey ="RK+OjbMPhWuSEsnAX4Yjuw=="; + String charset = "UTF-8"; + String plainData = AlipayEncrypt.decryptContent(response, encryptType, decryptKey, charset); + JSONObject phone = JSON.parseObject(plainData); + String mobile = phone.getString("mobile"); + Map maps = new HashMap(); + maps.put("phone", mobile); + maps.put("openid", openid); + maps.put("type",2); + maps.put("tenantId",tenantId); + return loginPhone(maps); + } catch (AlipayApiException e) { + //解密异常, 记录日志 + //throw new Exception("解密异常"); + e.printStackTrace(); + } + + + return R.fail("获取手机号失败"); + } + + /** * 支付宝授权 */ @@ -343,42 +508,83 @@ public class XhpcAppUserController extends BaseController { */ @ApiOperation("注销账号") @PostMapping("/logout") - public R logout(HttpServletRequest request,String phone, String code) { - return iXhpcAppUserUserService.logout(request,phone, code); + public R logout(HttpServletRequest request, String phone, String code) { + return iXhpcAppUserUserService.logout(request, phone, code); } /** * 设置小程序用户自动退款功能 + * * @param */ @ApiOperation("设置小程序用户自动退款功能") @PostMapping("/updateIsRefund") public R updateIsRefund(@RequestBody Map map) { - if(map !=null){ + if (map != null) { Long userId = Long.parseLong(map.get("userId").toString()); Integer userType = Integer.parseInt(map.get("userType").toString()); Integer isRefund = Integer.parseInt(map.get("isRefund").toString()); - return iXhpcAppUserUserService.updateIsRefund(userId,userType,isRefund); + return iXhpcAppUserUserService.updateIsRefund(userId, userType, isRefund); } return R.fail(HttpStatus.ERROR_STATUS, "修改失败"); } /** * 设置小程序用户电池保护 + * * @param */ @ApiOperation("设置小程序用户电池保护") @PostMapping("/batteryProtect") - public R batteryProtect(HttpServletRequest request,@RequestBody Map map) { - if(map !=null){ + public R batteryProtect(HttpServletRequest request, @RequestBody Map map) { + if (map != null) { Integer soc = Integer.parseInt(map.get("soc").toString()); Integer socProtect = Integer.parseInt(map.get("socProtect").toString()); Integer userType = Integer.parseInt(map.get("userType").toString()); - return iXhpcAppUserUserService.batteryProtect(request,soc,socProtect,userType); + return iXhpcAppUserUserService.batteryProtect(request, soc, socProtect, userType); } return R.fail(HttpStatus.ERROR_STATUS, "修改失败"); } + /** + * 设置每小时运行一次获取微信token + * @param + */ + @Scheduled(cron = "0 0 0/1 * * ?") + @GetMapping("/getAccesTokenYu") + public void getAccesTokenYu() { + System.out.println("===================设置每小时运行一次获取微信token========================="); + getAccesToken("wxd0a48e00319ef8a7", "e26d9088b58e24af69411d5933cece47"); + System.out.println("===================设置每小时运行一次获取微信token========================="); + } + + + //微信消息开通 + @GetMapping("/getPushMessage") + public String getPushMessage(@RequestParam Map params)throws Exception { + // 微信发送的请求中 会有四个参数 + // 微信加密签名,signature结合了开发者填写的 token 参数和请求中的 timestamp 参数、nonce参数。 + String signature = params.get("signature"); + // 随机字符串 + String echostr = params.get("echostr"); + // 时间戳 + String timestamp = params.get("timestamp"); + // 随机数 + String nonce = params.get("nonce"); + // 消息推送配置中的 Token(令牌) + String token = "sichuanxianghuakejiyouxiangongsi"; + // 验证 + String msgSignature = WechatDecryptDataUtil.getSHA1(token, timestamp, nonce); + // 验证失败 + if (!signature.equals(msgSignature)) { + return "false"; + } + // 验证成功 将 echostr 原格式返回 ,即可完成验证 + return echostr; + + } + + } diff --git a/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/service/IXhpcAppUserUserService.java b/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/service/IXhpcAppUserUserService.java index 32c75c39..a04ecf29 100644 --- a/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/service/IXhpcAppUserUserService.java +++ b/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/service/IXhpcAppUserUserService.java @@ -66,6 +66,8 @@ public interface IXhpcAppUserUserService { */ public R login(Map map); + public R loginPhone(Map map); + /** * 小程序用户退出 * diff --git a/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/service/impl/XhpcAppUserServiceImpl.java b/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/service/impl/XhpcAppUserServiceImpl.java index ebed9b2b..d0632cd3 100644 --- a/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/service/impl/XhpcAppUserServiceImpl.java +++ b/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/service/impl/XhpcAppUserServiceImpl.java @@ -235,6 +235,18 @@ public class XhpcAppUserServiceImpl extends BaseService implements IXhpcAppUserU return appLogin(phone, type, openid, tenantId); } + @Override + public R loginPhone(Map map) { + String phone = StringUtils.valueOf(map.get("phone")); + String type = StringUtils.valueOf(map.get("type")); + String tenantId = StringUtils.valueOf(map.get("tenantId")); + String openid = StringUtils.valueOf(map.get("openid")); + if (StringUtils.isEmpty(openid)) { + return R.fail(HttpStatus.NOT_NULL, "openid不能为空"); + } + return appLogin(phone, type, openid, tenantId); + } + /** * 登录 */ @@ -301,8 +313,8 @@ public class XhpcAppUserServiceImpl extends BaseService implements IXhpcAppUserU redisService.deleteObject("pvToken:" + username); // 获取登录token - Map token = tokenService.createToken(userInfo); + token.put("phone",username); return R.ok(token); }else{ return R.fail(HttpStatus.DATA_ERROR, "无此账号,请重新输入账号登录"); @@ -363,6 +375,7 @@ public class XhpcAppUserServiceImpl extends BaseService implements IXhpcAppUserU xhpcAppUserMapper.addUserLoginTime(user.getAppUserId(),username,userInfo.getUserType(),openid,Integer.valueOf(type),UserConstants.LOGIN,tenantId,new Date()); // 获取登录token Map token = tokenService.createToken(userInfo); + token.put("phone",username); return R.ok(token); } diff --git a/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/util/WechatDecryptDataUtil.java b/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/util/WechatDecryptDataUtil.java index bc97d702..00425367 100644 --- a/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/util/WechatDecryptDataUtil.java +++ b/xhpc-modules/xhpc-user/src/main/java/com/xhpc/user/util/WechatDecryptDataUtil.java @@ -2,13 +2,14 @@ package com.xhpc.user.util; import com.alibaba.fastjson.JSONObject; import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.util.Arrays; +import java.util.Arrays; import org.bouncycastle.util.encoders.Base64; import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.security.Key; +import java.security.MessageDigest; import java.security.Security; /** @@ -87,4 +88,46 @@ public class WechatDecryptDataUtil { return encryptedText; } + /** + * 用SHA1算法生成安全签名 + */ + public static String getSHA1(String... values) throws Exception { + + try { + String[] array = new String[values.length]; + for (int i = 0; i < values.length; i++) { + array[i] = values[i]; + } + + StringBuffer sb = new StringBuffer(); + // 字符串排序 + Arrays.sort(array); + for (int i = 0; i < values.length; i++) { + sb.append(array[i]); + } + String str = sb.toString(); + // SHA1签名生成 + MessageDigest md = MessageDigest.getInstance("SHA-1"); + md.update(str.getBytes()); + byte[] digest = md.digest(); + + StringBuffer hexstr = new StringBuffer(); + String shaHex = ""; + for (int i = 0; i < digest.length; i++) { + shaHex = Integer.toHexString(digest[i] & 0xFF); + if (shaHex.length() < 2) { + hexstr.append(0); + } + hexstr.append(shaHex); + } + return hexstr.toString(); + } catch (Exception e) { + e.printStackTrace(); + throw new Exception("SHA1加密失败"); + } + + } + + + } diff --git a/xhpc-modules/xhpc-user/src/main/resources/mapper/XhpcCommonMapper.xml b/xhpc-modules/xhpc-user/src/main/resources/mapper/XhpcCommonMapper.xml index 87b373cb..03f0f149 100644 --- a/xhpc-modules/xhpc-user/src/main/resources/mapper/XhpcCommonMapper.xml +++ b/xhpc-modules/xhpc-user/src/main/resources/mapper/XhpcCommonMapper.xml @@ -9,6 +9,8 @@