diff --git a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/JumpController.java b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/JumpController.java index 22c5b9c8b..d930b23d6 100644 --- a/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/JumpController.java +++ b/jsowell-admin/src/main/java/com/jsowell/api/uniapp/customer/JumpController.java @@ -69,7 +69,7 @@ public class JumpController extends BaseController { } // 如果pileSN长度为8位需要解析一下 - if (pileSn.length() == 8) { + if (YouDianUtils.isEBikePileSn(pileSn)) { pileSn = YouDianUtils.resolvePhysicalId(pileSn); } @@ -107,7 +107,7 @@ public class JumpController extends BaseController { } // 如果pileSN长度为8位需要解析一下 - if (pileSn.length() == 8) { + if (YouDianUtils.isEBikePileSn(pileSn)) { pileSn = YouDianUtils.resolvePhysicalId(pileSn); } diff --git a/jsowell-common/src/main/java/com/jsowell/common/YouDianUtils.java b/jsowell-common/src/main/java/com/jsowell/common/YouDianUtils.java index cc0c6c93a..a0dce7941 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/YouDianUtils.java +++ b/jsowell-common/src/main/java/com/jsowell/common/YouDianUtils.java @@ -13,6 +13,22 @@ import java.util.Arrays; @Slf4j public class YouDianUtils { + public static boolean isEBikePileSn(String pileSn) { + // 判断是否为电单车桩号, 电单车pileSn长度为8, 前6位是十六进制, 尾部是07 + if (pileSn.length() == 8 && pileSn.endsWith("07")) { + return true; + } + return false; + } + + public static void main(String[] args) { + String pileSN = "15540507"; + if (isEBikePileSn(pileSN)) { + pileSN = resolvePhysicalId(pileSN); + } + System.out.println(pileSN); + } + /** * 解析物理id * 电单车二维码地址:https://api.jsowellcloud.com/app-xcx-h5/pile/pileDetail/1921ed07/ff @@ -23,7 +39,12 @@ public class YouDianUtils { public static String resolvePhysicalId(String pileSN) { byte[] bytes = BytesUtil.str2Bcd(pileSN); int i = convertToPhysicalId(bytes); - return i + ""; + String resolvedPhysicalID = String.valueOf(i); + if (resolvedPhysicalID.length() < 8) { + // 转换完成后长度小于8, 返回原字符串 + return pileSN; + } + return resolvedPhysicalID; } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java index 33288373b..9e0fafb29 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/AbstractProgramLogic.java @@ -767,20 +767,31 @@ public abstract class AbstractProgramLogic implements InitializingBean { /** * 计算余额支付下发金额 + * xixiao在用 */ protected Map calculateTheAmount(MemberVO memberVO) { + return calculateTheAmount(memberVO, null); + } + + /** + * 计算余额支付下发金额 + */ + protected Map calculateTheAmount(MemberVO memberVO, BigDecimal payAmount) { BigDecimal principalBalancePay; BigDecimal giftBalancePay; BigDecimal totalAccountAmount = memberVO.getTotalBalance(); - // 余额支付最大下发200 + // 余额支付默认金额200 BigDecimal defaultAmount = Constants.BALANCE_PAY_MAX_AMOUNT; + if (payAmount != null) { + defaultAmount = payAmount; + } if (totalAccountAmount.compareTo(defaultAmount) < 0) { - // 总余额小于200,下发全部余额 + // 总余额小于默认金额,下发全部余额 principalBalancePay = memberVO.getPrincipalBalance(); // 本金余额全部支付 giftBalancePay = memberVO.getGiftBalance(); // 赠送金额全部支付 } else { - // 总余额大于200,下发200 - principalBalancePay = defaultAmount.min(memberVO.getPrincipalBalance()); // 本金余额与200取最小值 + // 总余额大于默认金额 + principalBalancePay = defaultAmount.min(memberVO.getPrincipalBalance()); // 本金余额与默认金额取最小值 giftBalancePay = defaultAmount.subtract(principalBalancePay); // defaultAmount - principalBalancePay 为赠送金支付金额 } Map resultMap = Maps.newHashMap(); diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java index 192dd9e97..4ce2c80db 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/programlogic/DelayMerchantProgramLogic.java @@ -330,7 +330,7 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic { // 赠送金支付金额 BigDecimal giftBalancePay = BigDecimal.ZERO; // 计算下发金额 - Map stringBigDecimalMap = calculateTheAmount(memberVO); + Map stringBigDecimalMap = calculateTheAmount(memberVO, chargeAmount); if (stringBigDecimalMap != null) { principalBalancePay = stringBigDecimalMap.get("principalBalancePay"); giftBalancePay = stringBigDecimalMap.get("giftBalancePay");