update 电单车

This commit is contained in:
Guoqs
2024-10-11 09:19:19 +08:00
parent 587cc9d006
commit 751ba929d7
4 changed files with 40 additions and 8 deletions

View File

@@ -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);
}

View File

@@ -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;
}

View File

@@ -767,20 +767,31 @@ public abstract class AbstractProgramLogic implements InitializingBean {
/**
* 计算余额支付下发金额
* xixiao在用
*/
protected Map<String, BigDecimal> calculateTheAmount(MemberVO memberVO) {
return calculateTheAmount(memberVO, null);
}
/**
* 计算余额支付下发金额
*/
protected Map<String, BigDecimal> 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<String, BigDecimal> resultMap = Maps.newHashMap();

View File

@@ -330,7 +330,7 @@ public class DelayMerchantProgramLogic extends AbstractProgramLogic {
// 赠送金支付金额
BigDecimal giftBalancePay = BigDecimal.ZERO;
// 计算下发金额
Map<String, BigDecimal> stringBigDecimalMap = calculateTheAmount(memberVO);
Map<String, BigDecimal> stringBigDecimalMap = calculateTheAmount(memberVO, chargeAmount);
if (stringBigDecimalMap != null) {
principalBalancePay = stringBigDecimalMap.get("principalBalancePay");
giftBalancePay = stringBigDecimalMap.get("giftBalancePay");