From a2eb7be948733fdd84a185997d8d134b92a4feca Mon Sep 17 00:00:00 2001 From: Jack <46790855@qq.com> Date: Fri, 6 Jun 2025 17:37:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=8F=91=E8=B4=A7=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=AF=B9=E6=8E=A5=EF=BC=8C=E9=80=BB=E8=BE=91=E7=BC=96?= =?UTF-8?q?=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mall/common/utils/DateTimeUtils.java | 8 +++++++ .../common/utils/phone/PhoneNumberUtils.java | 14 +++++++++++++ .../impl/WxOrderShippingServiceImpl.java | 21 ++++++++++++++++--- 3 files changed, 40 insertions(+), 3 deletions(-) diff --git a/mall-common/src/main/java/com/suisung/mall/common/utils/DateTimeUtils.java b/mall-common/src/main/java/com/suisung/mall/common/utils/DateTimeUtils.java index a773025d..a8c6ffab 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/utils/DateTimeUtils.java +++ b/mall-common/src/main/java/com/suisung/mall/common/utils/DateTimeUtils.java @@ -5,6 +5,7 @@ import lombok.extern.slf4j.Slf4j; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDateTime; +import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.Calendar; import java.util.Date; @@ -16,6 +17,13 @@ public class DateTimeUtils { return localDateTime.format(DateTimeFormatter.ofPattern(pattern)); } + // 将java.util.Date对象格式化为RFC 3339格式 + public static String formatDateTimeRFC3339(Date date) { + ZonedDateTime zonedDateTime = date.toInstant().atZone(java.time.ZoneId.systemDefault()); + return zonedDateTime.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME); + } + + public static Date parseDate(String dateString, String pattern) { SimpleDateFormat format = new SimpleDateFormat(pattern); try { diff --git a/mall-common/src/main/java/com/suisung/mall/common/utils/phone/PhoneNumberUtils.java b/mall-common/src/main/java/com/suisung/mall/common/utils/phone/PhoneNumberUtils.java index 96e093cf..deb3372c 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/utils/phone/PhoneNumberUtils.java +++ b/mall-common/src/main/java/com/suisung/mall/common/utils/phone/PhoneNumberUtils.java @@ -267,6 +267,20 @@ public class PhoneNumberUtils { return pattern.matcher(code).matches(); } + /** + * 对手机号进行脱敏处理 + * + * @param phoneNumber 原始手机号 + * @return 脱敏后的手机号 + */ + public static String maskPhoneNumber(String phoneNumber) { + if (phoneNumber == null || phoneNumber.length() != 11) { + return phoneNumber; // 如果手机号为空或长度不是11位,直接返回原始值 + } + return phoneNumber.substring(0, 3) + "****" + phoneNumber.substring(7); + } + + public static void main(String[] args) { System.out.println(isValidNumber("13111111111")); } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/wechat/service/impl/WxOrderShippingServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/wechat/service/impl/WxOrderShippingServiceImpl.java index 0889f98b..4cf40202 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/wechat/service/impl/WxOrderShippingServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/wechat/service/impl/WxOrderShippingServiceImpl.java @@ -11,9 +11,11 @@ package com.suisung.mall.shop.wechat.service.impl; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; +import com.suisung.mall.common.constant.CommonConstant; import com.suisung.mall.common.pojo.dto.WxOrderBaseInfoDTO; import com.suisung.mall.common.utils.DateTimeUtils; import com.suisung.mall.common.utils.RestTemplateHttpUtil; +import com.suisung.mall.common.utils.phone.PhoneNumberUtils; import com.suisung.mall.shop.order.service.ShopOrderBaseService; import com.suisung.mall.shop.wechat.service.WxOrderShippingService; import com.suisung.mall.shop.wechat.utils.WxUtil; @@ -25,7 +27,7 @@ import org.springframework.data.util.Pair; import org.springframework.stereotype.Service; import org.springframework.web.client.HttpClientErrorException; -import java.time.LocalDateTime; +import java.util.Date; @Slf4j @Service @@ -74,13 +76,26 @@ public class WxOrderShippingServiceImpl implements WxOrderShippingService { return Pair.of(false, ORDER_RECORD_ERROR); } + + //shop_order_logistics shop_store_sf_order + JSONObject shippingItem = new JSONObject(); + shippingItem.set("item_desc", orderBaseInfo.getSubject()); // 必填项 + + + // 发物流快递的必填字段 + shippingItem.set("tracking_no", expressNo); + shippingItem.set("express_company", trackingNo); + shippingItem.set("contact.receiver_contact", CommonConstant.IDD_ZH_CN + "-" + PhoneNumberUtils.maskPhoneNumber("13128998786")); + + JSONArray shippingList = new JSONArray().put(shippingItem); + JSONObject paramsJSON = new JSONObject() .set("order_key.order_number_type", 2) .set("order_key.transaction_id", orderBaseInfo.getTransaction_id()) .set("delivery_mode", 1) .set("logistics_type", logisticsType) - .set("shipping_list", new JSONArray()) - .set("upload_time", DateTimeUtils.formatDateTime(LocalDateTime.now(), "yyyy-MM-dd'T'HH:mm:ss.SSSXXX")) + .set("shipping_list", shippingList) + .set("upload_time", DateTimeUtils.formatDateTimeRFC3339(new Date())) .set("payer.openid", orderBaseInfo.getOpenid()); JSONObject respObj = RestTemplateHttpUtil.sendPost(