From 62412721ea00c14bbc75b1a1c37eaee3f20fa8d6 Mon Sep 17 00:00:00 2001 From: Jack <46790855@qq.com> Date: Sat, 7 Jun 2025 23:54:34 +0800 Subject: [PATCH] fix bug account --- .../impl/AccountUserBaseServiceImpl.java | 35 ++-- .../suisung/mall/common/utils/BankUtil.java | 174 ++++++++---------- .../service/impl/SFExpressApiServiceImpl.java | 12 ++ .../service/impl/ShopMchEntryServiceImpl.java | 13 +- 4 files changed, 113 insertions(+), 121 deletions(-) diff --git a/mall-account/src/main/java/com/suisung/mall/account/service/impl/AccountUserBaseServiceImpl.java b/mall-account/src/main/java/com/suisung/mall/account/service/impl/AccountUserBaseServiceImpl.java index 1e1a9a14..a09e65dd 100644 --- a/mall-account/src/main/java/com/suisung/mall/account/service/impl/AccountUserBaseServiceImpl.java +++ b/mall-account/src/main/java/com/suisung/mall/account/service/impl/AccountUserBaseServiceImpl.java @@ -66,7 +66,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.util.Pair; -import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -212,17 +211,18 @@ public class AccountUserBaseServiceImpl extends BaseServiceImpl params2 = new HashMap<>(); - params2.put("user_mobile", params.get("user_mobile")); - data.put("merch_approval_status", shopService.shopMerchEntryApprovalStatus(params2)); +// Map params2 = new HashMap<>(); +// params2.put("user_mobile", params.get("user_mobile")); +// data.put("merch_approval_status", shopService.shopMerchEntryApprovalStatus(params2)); } - String cid=params.get("cid"); - if(StrUtil.isNotBlank(cid)){ + + String cid = params.get("cid"); + if (StrUtil.isNotBlank(cid)) { UserDeviceBind userDeviceBind = new UserDeviceBind(); userDeviceBind.setCid(params.get("cid")); userDeviceBind.setOsType(params.get("os_type")); @@ -240,8 +240,8 @@ public class AccountUserBaseServiceImpl extends BaseServiceImpl getUserInfo(Integer user_id) { QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.eq("user_id", user_id).select(AccountUserBase.class, info -> !info.getColumn().equals("user_password")); - AccountUserBase admin = getOne(queryWrapper); - setIdentityByUser(admin); + AccountUserBase accountUserBase = getOne(queryWrapper); + setIdentityByUser(accountUserBase); AccountUserInfo userInfo = accountUserInfoService.get(user_id); @@ -250,7 +250,7 @@ public class AccountUserBaseServiceImpl extends BaseServiceImpl adminMap = BeanUtil.beanToMap(admin); + Map adminMap = BeanUtil.beanToMap(accountUserBase); Map userInfoMap = BeanUtil.beanToMap(userInfo); if (ObjectUtil.isNull(userInfo)) { @@ -2873,11 +2873,10 @@ public class AccountUserBaseServiceImpl extends BaseServiceImpl 19) { - return false; - } - try { - long number = Long.parseLong(accountNumber); - } catch (NumberFormatException e) { - return false; - } + /** + * 使用Luhn算法校验银行卡号 + * + * @param cardNumber 银行卡号 + * @return true表示通过Luhn校验,false表示未通过 + */ + private static boolean validateLuhn(String cardNumber) { int sum = 0; boolean alternate = false; - for (int i = accountNumber.length() - 1; i >= 0; i--) { - int n = Integer.parseInt(accountNumber.substring(i, i + 1)); + + // 从右到左处理每一位数字 + for (int i = cardNumber.length() - 1; i >= 0; i--) { + int digit = Character.getNumericValue(cardNumber.charAt(i)); + if (alternate) { - n *= 2; - if (n > 9) { - n = (n % 10) + 1; + digit *= 2; + if (digit > 9) { + digit -= 9; } } - sum += n; + + sum += digit; alternate = !alternate; } - return (sum % 10 == 0); + + // 如果总和能被10整除,则通过校验 + return sum % 10 == 0; } - // 校验香港银行账号 - public static boolean isValidZHHKBankAccount(String accountNumber) { - // 简单示例:假设格式为 3 位银行代码 + 3 位分行代码 + 11 位账号 - if (accountNumber == null || accountNumber.length() != 17) { - return false; - } - try { - // 检查是否为纯数字 - Integer.parseInt(accountNumber.substring(0, 3)); - Integer.parseInt(accountNumber.substring(3, 6)); - Integer.parseInt(accountNumber.substring(6)); - } catch (NumberFormatException e) { - return false; - } - return true; - } + public static void main(String[] args) { + // 测试对公账户 + String corporateCard = "2116709509100106309"; // 示例对公银行卡号 + System.out.println("对公账户校验结果: " + validateBankCard(corporateCard, "CN", true)); // true - // 校验澳门银行账号 - public static boolean isValidZHMOBankAccount(String accountNumber) { - // 简单示例:假设格式为 2 位银行代码 + 2 位分行代码 + 12 位账号 - if (accountNumber == null || accountNumber.length() != 16) { - return false; - } - try { - // 检查是否为纯数字 - Integer.parseInt(accountNumber.substring(0, 2)); - Integer.parseInt(accountNumber.substring(2, 4)); - Integer.parseInt(accountNumber.substring(4)); - } catch (NumberFormatException e) { - return false; - } - return true; + // 测试对私账户 + String personalCard = "6222021234567890128"; // 示例对私银行卡号 + System.out.println("对私账户校验结果: " + validateBankCard(personalCard, "CN", false)); // true } - // 校验台湾银行账号 - public static boolean isValidZHTWBankAccount(String accountNumber) { - // 简单示例:假设格式为 3 位银行代码 + 4 位分行代码 + 10 位账号 - if (accountNumber == null || accountNumber.length() != 17) { - return false; - } - try { - // 检查是否为纯数字 - Integer.parseInt(accountNumber.substring(0, 3)); - Integer.parseInt(accountNumber.substring(3, 7)); - Integer.parseInt(accountNumber.substring(7)); - } catch (NumberFormatException e) { - return false; - } - return true; - } - - } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/impl/SFExpressApiServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/impl/SFExpressApiServiceImpl.java index 11eb99eb..e56cbfb4 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/impl/SFExpressApiServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/impl/SFExpressApiServiceImpl.java @@ -31,6 +31,7 @@ import com.suisung.mall.shop.order.service.ShopOrderInfoService; import com.suisung.mall.shop.sfexpress.service.SFExpressApiService; import com.suisung.mall.shop.store.service.ShopStoreSameCityTransportBaseService; import com.suisung.mall.shop.store.service.ShopStoreSfOrderService; +import com.suisung.mall.shop.wechat.service.WxOrderShippingService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -70,6 +71,10 @@ public class SFExpressApiServiceImpl implements SFExpressApiService { @Autowired private ShopStoreSameCityTransportBaseService shopStoreSameCityTransportBaseService; + @Lazy + @Autowired + private WxOrderShippingService wxOrderShippingService; + @Override public ThirdApiRes createOrder(String shopOrderId) { // 组织请求参数 @@ -209,6 +214,9 @@ public class SFExpressApiServiceImpl implements SFExpressApiService { // 商城订单状态:2020-待配货/待出库审核 shopOrderInfoService.changeOrderStatus(shopOrderId, StateCode.ORDER_STATE_PICKING, 0, 0); + // 上传发货信息到微信 + wxOrderShippingService.uploadShippingInfoToWx(2, shopOrderId); + return Pair.of(true, "顺丰同城下单成功!"); } @@ -606,6 +614,10 @@ public class SFExpressApiServiceImpl implements SFExpressApiService { orderStatus = StateCode.ORDER_STATE_SHIPPED; orderIsOutStatus = 0; orderIsShippedStatus = StateCode.ORDER_SHIPPED_STATE_YES; // 已发货 + } else if (shopStoreSfOrder.getOrder_status().equals(StateCode.SF_ORDER_STATUS_FINISH)) { + // 顺丰同城状态:17-配送员妥投完单; + // 通知微信用户确认收货 + wxOrderShippingService.notifyConfirmReceive(shopStoreSfOrder.getShop_order_id()); } success = shopOrderInfoService.changeOrderStatus(shopStoreSfOrder.getShop_order_id(), orderStatus, orderIsOutStatus, orderIsShippedStatus); diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopMchEntryServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopMchEntryServiceImpl.java index 56a99d33..299f1fe6 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopMchEntryServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/store/service/impl/ShopMchEntryServiceImpl.java @@ -172,8 +172,11 @@ public class ShopMchEntryServiceImpl extends BaseServiceImpl