From dcd8fe9b66f33bc7e39ddc1ad66366470532646f Mon Sep 17 00:00:00 2001 From: Jack <46790855@qq.com> Date: Wed, 11 Jun 2025 08:54:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=AA=E6=8E=A8=E6=8E=A8=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../account/mapper/UserDeviceBindMapper.java | 2 +- .../service/AccountUserBindGeTuiService.java | 2 +- .../impl/AccountSinglePushServiceImpl.java | 2 +- .../impl/AccountUserBaseServiceImpl.java | 1 - .../impl/AccountUserBindGeTuiServiceImpl.java | 2 +- .../AccountUserBindGeTui.java | 10 ++++++- .../order/listener/OrderPayedListener.java | 10 +++++++ .../service/SFExpressApiService.java | 2 +- .../service/impl/SFExpressApiServiceImpl.java | 26 ++++++++++++++----- 9 files changed, 43 insertions(+), 14 deletions(-) rename mall-common/src/main/java/com/suisung/mall/common/modules/{singlepush => account}/AccountUserBindGeTui.java (83%) diff --git a/mall-account/src/main/java/com/suisung/mall/account/mapper/UserDeviceBindMapper.java b/mall-account/src/main/java/com/suisung/mall/account/mapper/UserDeviceBindMapper.java index b3abd2d1..ddfaaa2a 100644 --- a/mall-account/src/main/java/com/suisung/mall/account/mapper/UserDeviceBindMapper.java +++ b/mall-account/src/main/java/com/suisung/mall/account/mapper/UserDeviceBindMapper.java @@ -1,7 +1,7 @@ package com.suisung.mall.account.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.suisung.mall.common.modules.singlepush.AccountUserBindGeTui; +import com.suisung.mall.common.modules.account.AccountUserBindGeTui; import org.springframework.stereotype.Repository; @Repository diff --git a/mall-account/src/main/java/com/suisung/mall/account/service/AccountUserBindGeTuiService.java b/mall-account/src/main/java/com/suisung/mall/account/service/AccountUserBindGeTuiService.java index 2405d7e1..509ad0c6 100644 --- a/mall-account/src/main/java/com/suisung/mall/account/service/AccountUserBindGeTuiService.java +++ b/mall-account/src/main/java/com/suisung/mall/account/service/AccountUserBindGeTuiService.java @@ -1,6 +1,6 @@ package com.suisung.mall.account.service; -import com.suisung.mall.common.modules.singlepush.AccountUserBindGeTui; +import com.suisung.mall.common.modules.account.AccountUserBindGeTui; import com.suisung.mall.core.web.service.IBaseService; import java.util.List; diff --git a/mall-account/src/main/java/com/suisung/mall/account/service/impl/AccountSinglePushServiceImpl.java b/mall-account/src/main/java/com/suisung/mall/account/service/impl/AccountSinglePushServiceImpl.java index a1588310..5ea402b2 100644 --- a/mall-account/src/main/java/com/suisung/mall/account/service/impl/AccountSinglePushServiceImpl.java +++ b/mall-account/src/main/java/com/suisung/mall/account/service/impl/AccountSinglePushServiceImpl.java @@ -16,8 +16,8 @@ import com.getui.push.v2.sdk.dto.req.message.ios.IosDTO; import com.suisung.mall.account.service.AccountSinglePushService; import com.suisung.mall.account.service.AccountUserBindGeTuiService; import com.suisung.mall.common.api.CommonResult; +import com.suisung.mall.common.modules.account.AccountUserBindGeTui; import com.suisung.mall.common.modules.push.PushTemplate; -import com.suisung.mall.common.modules.singlepush.AccountUserBindGeTui; import com.suisung.mall.common.service.impl.SinglePushBaseServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; 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 8a643ce5..a3a207f8 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 @@ -50,7 +50,6 @@ import com.suisung.mall.common.modules.distribution.ShopDistributionUser; import com.suisung.mall.common.modules.distribution.ShopDistributionUserCommission; import com.suisung.mall.common.modules.pay.PayUserResource; import com.suisung.mall.common.modules.plantform.ShopPlantformSubsiteUser; -import com.suisung.mall.common.modules.singlepush.AccountUserBindGeTui; import com.suisung.mall.common.pojo.dto.SmsDto; import com.suisung.mall.common.pojo.req.WxUserInfoReq; import com.suisung.mall.common.service.MessageService; diff --git a/mall-account/src/main/java/com/suisung/mall/account/service/impl/AccountUserBindGeTuiServiceImpl.java b/mall-account/src/main/java/com/suisung/mall/account/service/impl/AccountUserBindGeTuiServiceImpl.java index 8ebfa57e..3d250626 100644 --- a/mall-account/src/main/java/com/suisung/mall/account/service/impl/AccountUserBindGeTuiServiceImpl.java +++ b/mall-account/src/main/java/com/suisung/mall/account/service/impl/AccountUserBindGeTuiServiceImpl.java @@ -5,7 +5,7 @@ import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.suisung.mall.account.mapper.UserDeviceBindMapper; import com.suisung.mall.account.service.AccountUserBindGeTuiService; -import com.suisung.mall.common.modules.singlepush.AccountUserBindGeTui; +import com.suisung.mall.common.modules.account.AccountUserBindGeTui; import com.suisung.mall.core.web.service.impl.BaseServiceImpl; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/mall-common/src/main/java/com/suisung/mall/common/modules/singlepush/AccountUserBindGeTui.java b/mall-common/src/main/java/com/suisung/mall/common/modules/account/AccountUserBindGeTui.java similarity index 83% rename from mall-common/src/main/java/com/suisung/mall/common/modules/singlepush/AccountUserBindGeTui.java rename to mall-common/src/main/java/com/suisung/mall/common/modules/account/AccountUserBindGeTui.java index 395801c5..8d37094f 100644 --- a/mall-common/src/main/java/com/suisung/mall/common/modules/singlepush/AccountUserBindGeTui.java +++ b/mall-common/src/main/java/com/suisung/mall/common/modules/account/AccountUserBindGeTui.java @@ -1,4 +1,12 @@ -package com.suisung.mall.common.modules.singlepush; +/* + * Copyright (c) 2025. Lorem ipsum dolor sit amet, consectetur adipiscing elit. + * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan. + * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna. + * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus. + * Vestibulum commodo. Ut rhoncus gravida arcu. + */ + +package com.suisung.mall.common.modules.account; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/OrderPayedListener.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/OrderPayedListener.java index d263652c..63ac4686 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/OrderPayedListener.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/listener/OrderPayedListener.java @@ -15,6 +15,7 @@ import org.springframework.amqp.core.Message; import org.springframework.amqp.rabbit.annotation.RabbitHandler; import org.springframework.amqp.rabbit.annotation.RabbitListener; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.data.util.Pair; import org.springframework.stereotype.Service; @@ -35,15 +36,19 @@ public class OrderPayedListener { private static final Logger logger = LoggerFactory.getLogger(OrderPayedListener.class); + @Lazy @Autowired private ShopOrderBaseService shopOrderBaseService; + @Lazy @Autowired private ShopOrderInfoService shopOrderInfoService; + @Lazy @Autowired private SFExpressApiService sfExpressApiService; + /** * RabbitMQ 消息监听入口方法 * @@ -189,6 +194,11 @@ public class OrderPayedListener { } logger.debug("顺丰同城下单成功"); + + // 个推推送消息 + sfExpressApiService.pushMessageToStoreEmployee(null, orderId, "顺丰同城订单[" + orderId + "]已完成配送。", ""); + + } } diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/SFExpressApiService.java b/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/SFExpressApiService.java index 0b287bb3..a604cabc 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/SFExpressApiService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/sfexpress/service/SFExpressApiService.java @@ -148,5 +148,5 @@ public interface SFExpressApiService { * @param payloadJson * @return */ - void pushMessage2Employee(Integer storeId, String orderId, String message, String payloadJson); + void pushMessageToStoreEmployee(Integer storeId, String orderId, String message, String payloadJson); } 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 a575fa7f..99b21e25 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 @@ -27,7 +27,6 @@ import com.suisung.mall.common.service.GeTuiPushService; import com.suisung.mall.common.utils.CommonUtil; import com.suisung.mall.common.utils.I18nUtil; import com.suisung.mall.common.utils.JsonUtil; -import com.suisung.mall.common.utils.SseEmitterUtil; import com.suisung.mall.shop.order.service.ShopOrderBaseService; import com.suisung.mall.shop.order.service.ShopOrderInfoService; import com.suisung.mall.shop.sfexpress.service.SFExpressApiService; @@ -581,7 +580,7 @@ public class SFExpressApiServiceImpl implements SFExpressApiService { return new ThirdApiRes().fail(2002, "请求签名sign校验失败!"); } - logger.info("接收顺丰配送状态更改回调返回的 JSON 数据:{}", jsonData); + logger.debug("接收顺丰配送状态更改回调返回的 JSON 数据:{}", jsonData); // 更改顺丰同城订单状态 ShopStoreSfOrder shopStoreSfOrder = toShopStoreSfOrder(jsonData); @@ -590,7 +589,7 @@ public class SFExpressApiServiceImpl implements SFExpressApiService { Map params = new HashMap<>(); params.put("order_id", shopStoreSfOrder.getSf_order_id()); ThirdApiRes feedRes = listOrderFeed(params); - logger.info("获取配送员物流轨迹:{}", feedRes); +// logger.debug("获取配送员物流轨迹:{}", feedRes); if (feedRes != null && feedRes.getError_code().equals(0)) { JSONObject result = JSONUtil.parseObj(feedRes.getResult()); if (result != null && result.get("feed") != null) { @@ -607,28 +606,33 @@ public class SFExpressApiServiceImpl implements SFExpressApiService { Integer orderStatus = 0; Integer orderIsOutStatus = 0; Integer orderIsShippedStatus = 0; + String pushRemark = "配送有变动,请留意。"; if (shopStoreSfOrder.getOrder_status().equals(StateCode.SF_ORDER_STATUS_RECEIVING)) { // 顺丰同城状态:10-配送员接单/配送员改派; // 商城订单状态:从 2016-已经付款 到 2020-待配货; orderStatus = StateCode.ORDER_STATE_PICKING; orderIsOutStatus = 0; orderIsShippedStatus = 0; + pushRemark = "配送员已接单。"; } else if (shopStoreSfOrder.getOrder_status().equals(StateCode.SF_ORDER_STATUS_ARRIVED)) { // 顺丰同城状态:12-配送员到店; // 商城订单状态:从 2020-待配货 到 2030; //待发货 orderStatus = StateCode.ORDER_STATE_WAIT_SHIPPING; orderIsOutStatus = StateCode.ORDER_PICKING_STATE_YES; // 已出库 orderIsShippedStatus = 0; + pushRemark = "配送员已到店。"; } else if (shopStoreSfOrder.getOrder_status().equals(StateCode.SF_ORDER_STATUS_RECEIVED)) { // 顺丰同城状态:15-配送员配送中(已取货) // 商城订单状态:从 2030-待发货 到 2040-已发货/待收货确认 orderStatus = StateCode.ORDER_STATE_SHIPPED; orderIsOutStatus = 0; orderIsShippedStatus = StateCode.ORDER_SHIPPED_STATE_YES; // 已发货 + pushRemark = "配送员已取货。"; } else if (shopStoreSfOrder.getOrder_status().equals(StateCode.SF_ORDER_STATUS_FINISH)) { // 顺丰同城状态:17-配送员妥投完单; // 通知微信用户确认收货 wxOrderShippingService.notifyConfirmReceive(shopStoreSfOrder.getShop_order_id()); + pushRemark = "已完成配送"; } success = shopOrderInfoService.changeOrderStatus(shopStoreSfOrder.getShop_order_id(), orderStatus, orderIsOutStatus, orderIsShippedStatus); @@ -638,9 +642,12 @@ public class SFExpressApiServiceImpl implements SFExpressApiService { // 注:状态更改之后,给 SSE 监听服务发送更改的数据 // logger.debug("准备发送SSE消息..."); - SseEmitterUtil.sendMessage(shopStoreSfOrder.getSf_order_id(), jsonData); +// SseEmitterUtil.sendMessage(shopStoreSfOrder.getSf_order_id(), jsonData); // logger.debug("向 SSE 通道 {} 发送了:{}", shopStoreSfOrder.getSf_order_id(), jsonData); + // 个推消息推送 + pushMessageToStoreEmployee(null, shopStoreSfOrder.getShop_order_id(), "顺丰同城订单[" + shopStoreSfOrder.getShop_order_id() + "]" + pushRemark, ""); + return new ThirdApiRes().success("success"); } @@ -709,14 +716,15 @@ public class SFExpressApiServiceImpl implements SFExpressApiService { // 注:状态更改之后,给 SSE 监听服务发送更改的数据 // logger.debug("准备发送SSE消息..."); // SseEmitterUtil.sendMessage(shopStoreSfOrder.getSf_order_id(), jsonData); + // 个推消息推送 - pushMessage2Employee(null, shopStoreSfOrder.getShop_order_id(), "顺丰同城订单[" + shopStoreSfOrder.getShop_order_id() + "]已完成配送。", jsonData); + pushMessageToStoreEmployee(null, shopStoreSfOrder.getShop_order_id(), "顺丰同城订单[" + shopStoreSfOrder.getShop_order_id() + "]已完成配送。", ""); return new ThirdApiRes().success("success"); } /** - * 个推推送消息到员工 + * 个推推送消息到店铺员工 * * @param storeId * @param orderId @@ -725,7 +733,7 @@ public class SFExpressApiServiceImpl implements SFExpressApiService { * @return */ @Override - public void pushMessage2Employee(Integer storeId, String orderId, String message, String payloadJson) { + public void pushMessageToStoreEmployee(Integer storeId, String orderId, String message, String payloadJson) { try { List cidList = shopStoreEmployeeService.selectEmployeeGeTuiCidByStoreId(storeId, orderId, false); if (CollUtil.isEmpty(cidList)) { @@ -733,6 +741,10 @@ public class SFExpressApiServiceImpl implements SFExpressApiService { return; } + if (StrUtil.isBlank(payloadJson)) { + payloadJson = new JSONObject().set("page", "orderDetail").set("orderId", orderId).set("storeId", storeId).toString(); + } + // 推送消息到员工 Pair result = geTuiPushService.pushListMessageToCids(cidList, "", message, "payload", payloadJson); if (!result.getFirst()) {