From 432608a238c0c1a8fd88033e1969d41a2c1edeb5 Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Tue, 21 Jan 2025 16:41:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=85=E7=94=B5=E5=81=9C=E8=BD=A6=E4=BC=98?= =?UTF-8?q?=E6=83=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UploadRealTimeMonitorHandler.java | 9 ++ .../pile/vo/web/ChargeParkingDiscountVO.java | 46 ++++++++ .../thirdparty/common/CommonService.java | 103 ++++++++++++++++++ 3 files changed, 158 insertions(+) create mode 100644 jsowell-pile/src/main/java/com/jsowell/pile/vo/web/ChargeParkingDiscountVO.java diff --git a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/UploadRealTimeMonitorHandler.java b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/UploadRealTimeMonitorHandler.java index 534491896..81567a66d 100644 --- a/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/UploadRealTimeMonitorHandler.java +++ b/jsowell-netty/src/main/java/com/jsowell/netty/handler/yunkuaichong/UploadRealTimeMonitorHandler.java @@ -335,6 +335,15 @@ public class UploadRealTimeMonitorHandler extends AbstractYkcHandler { } }, executor); } + + // 异步绑定优惠券 + // CompletableFuture.runAsync(() -> { + // try { + // commonService.bindParkingCoupon(realTimeMonitorData, orderInfo); + // } catch (Exception e) { + // log.error("异步绑定车辆停车优惠券error", e); + // } + // }, executor); } // 充电时保存实时数据到redis diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/ChargeParkingDiscountVO.java b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/ChargeParkingDiscountVO.java new file mode 100644 index 000000000..fa98dd6b8 --- /dev/null +++ b/jsowell-pile/src/main/java/com/jsowell/pile/vo/web/ChargeParkingDiscountVO.java @@ -0,0 +1,46 @@ +package com.jsowell.pile.vo.web; + +import lombok.Data; + +/** + * 充电停车优惠VO + */ +@Data +public class ChargeParkingDiscountVO { + /** + * 站点id + */ + private String stationId; + + /** + * 门槛类型 1-固定电量;2-固定时长 + */ + private String conditionType; + + /** + * 门槛值 + */ + private String conditionValue; + + /** + * 优惠类型 (满足门槛后优惠类型) + * 1-减时间单位分钟 + * 2-减金额单位元 + */ + private String discountType; + + /** + * 优惠值 + */ + private String discountValue; + + /** + * 优惠生效时间 + */ + private String startTime; + + /** + * 优惠失效时间 + */ + private String endTime; +} diff --git a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/CommonService.java b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/CommonService.java index 4bb3ab917..e594e1ff6 100644 --- a/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/CommonService.java +++ b/jsowell-thirdparty/src/main/java/com/jsowell/thirdparty/common/CommonService.java @@ -30,6 +30,7 @@ import com.jsowell.pile.service.*; import com.jsowell.pile.vo.ThirdPartySecretInfoVO; import com.jsowell.pile.vo.base.ThirdPartyStationRelationVO; import com.jsowell.pile.vo.huawei.QueryStartChargeVO; +import com.jsowell.pile.vo.web.ChargeParkingDiscountVO; import com.jsowell.pile.vo.web.PileStationVO; import com.jsowell.thirdparty.huawei.HuaweiServiceV2; import com.jsowell.thirdparty.lianlian.service.LianLianService; @@ -674,6 +675,108 @@ public class CommonService { return null; } + /** + * 绑定停车券 + * @param orderBasicInfo + * @return + */ + public String bindParkingCoupon(RealTimeMonitorData realTimeMonitorData, OrderBasicInfo orderBasicInfo) throws UnsupportedEncodingException { + // 判断该订单的站点是否有停车优惠 + ChargeParkingDiscountVO chargeParkingDiscount = getChargeParkingDiscount(orderBasicInfo.getStationId()); + if (chargeParkingDiscount == null) { + return null; + } + // 是否满足发券条件 + String sumChargingTime = realTimeMonitorData.getSumChargingTime(); // 充电时长 + String chargingDegree = realTimeMonitorData.getChargingDegree(); // 充电度数 + String conditionType = chargeParkingDiscount.getConditionType(); + // 如果conditionType为1判断充电度数, 如果为2判断充电时长 + boolean flag = false; + if (StringUtils.equals(conditionType, "1")) { + if (Integer.parseInt(chargingDegree) >= Integer.parseInt(chargeParkingDiscount.getConditionValue())) { + // 发券 + flag = true; + } + } else if (StringUtils.equals(conditionType, "2")) { + if (Integer.parseInt(sumChargingTime) >= Integer.parseInt(chargeParkingDiscount.getConditionValue())) { + // 发券 + flag = true; + } + } + if (!flag) { + // 不满足发券条件 + return orderBasicInfo.getOrderCode() + " 该订单不满足发券条件"; + } + // 是否已经发券 + String redisKey = CacheConstants.CAR_BIND_COUPON_BY_ORDER_CODE + orderBasicInfo.getOrderCode(); + Object cacheObject = redisCache.getCacheObject(redisKey); + if (cacheObject != null) { + return orderBasicInfo.getOrderCode() + " 该订单已经发券"; + } + // 绑定停车券 + PileStationVO stationInfo = pileStationInfoService.getStationInfo(orderBasicInfo.getStationId()); + if (StringUtils.equals(ParkingPlatformEnum.LU_TONG_YUN_TING_PLATFORM.getCode(), stationInfo.getParkingId())) { + // 路通云停 + // 查询密钥等配置 + ThirdpartyParkingConfig parkingInfo = thirdPartyParkingConfigService.selectByPrimaryKey(Integer.parseInt(stationInfo.getParkingId())); + if (parkingInfo == null) { + throw new BusinessException(ReturnCodeEnum.CODE_QUERY_PARKING_INFO_IS_NULL); + } + BindCouponDTO dto = BindCouponDTO.builder() + .appId(parkingInfo.getAppId()) + .merchantId(parkingInfo.getParkingMerchantId()) + .couponId(parkingInfo.getCouponId()) + .secretKey(parkingInfo.getSecretKey()) + .plateNumber(orderBasicInfo.getPlateNumber()) + .plateColor(5) // 5-绿牌车 + .orderBasicInfo(orderBasicInfo) + .build(); + // 绑定优惠券 + return ltytService.bindCoupon(dto); + } else if (StringUtils.equals(ParkingPlatformEnum.RUAN_JIE_PLATFORM.getCode(), stationInfo.getParkingId())) { + // 软杰 + UseCouponDTO dto = UseCouponDTO.builder() + .fCouponCode(orderBasicInfo.getOrderCode()) // 优惠券编号(使用订单编号) + .fCouponType("2") // 优惠类型 2-时长 + .fCouponValue("120") // 优惠券面额 单位:分钟 + .fPlateCode(orderBasicInfo.getPlateNumber()) // 车牌号 + .build(); + return rjService.useCoupon(dto); + } + return null; + } + + /** + * TODO 先做个临时方法返回ChargeParkingDiscountVO, 后面改为后面页面配置 + * + * @param stationId + * @return + */ + private ChargeParkingDiscountVO getChargeParkingDiscount(String stationId) { + // 查询该站点的停车优惠信息 + ChargeParkingDiscountVO discountVO = new ChargeParkingDiscountVO(); + if (StringUtils.equals(stationId, "")) { + discountVO.setStationId(stationId); + discountVO.setConditionType("2"); + discountVO.setConditionValue("10"); + discountVO.setDiscountType(""); + discountVO.setDiscountValue(""); + discountVO.setStartTime(""); + discountVO.setEndTime(""); + } else if (StringUtils.equals(stationId, "")) { + discountVO.setStationId(stationId); + discountVO.setConditionType(""); + discountVO.setConditionValue(""); + discountVO.setDiscountType(""); + discountVO.setDiscountValue(""); + discountVO.setStartTime(""); + discountVO.setEndTime(""); + } else { + discountVO = null; + } + return discountVO; + } + /** * 统一请求启动充电,目前给华为平台用 * @param dto