From 0dc813adfa8e1aba3d7400bdae2138d248d66d6f Mon Sep 17 00:00:00 2001 From: Derran Date: Tue, 25 Jun 2024 13:59:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E7=A1=80=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/user/OrderUserQueryController.java | 24 +------ .../dingtalk/DingTalkWarningEventHandler.java | 69 +++++++++++++++++++ .../OperationLogEventHandler.java | 1 - .../utils/DingTalkWarningUtil.java | 1 - .../ExternalOrderRelQueryService.java | 7 ++ .../ExternalOrderRelQueryServiceImpl.java | 23 +++++++ 6 files changed, 102 insertions(+), 23 deletions(-) create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/dingtalk/DingTalkWarningEventHandler.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/query/externalorder/ExternalOrderRelQueryService.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/query/externalorder/impl/ExternalOrderRelQueryServiceImpl.java diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/order/user/OrderUserQueryController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/order/user/OrderUserQueryController.java index 595832f..e6723d4 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/order/user/OrderUserQueryController.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/order/user/OrderUserQueryController.java @@ -1,12 +1,10 @@ package com.qniao.dam.api.query.order.user; -import com.alibaba.fastjson.JSONObject; import com.qniao.dam.api.query.order.user.request.UserPageOrderByOperatorQueryParam; import com.qniao.dam.api.query.order.user.response.GetOrderStatisticsByOperatorVo; import com.qniao.dam.api.query.order.user.response.UserOrderRecordVo; import com.qniao.dam.api.query.order.user.response.UserPageOrderByOperatorVo; import com.qniao.dam.domian.aggregate.order.constant.OrderStatusEnum; -import com.qniao.dam.infrastructure.utils.DingTalkWarningUtil; import com.qniao.dam.query.order.OrderQueryService; import com.qniao.dau.infrastructure.constant.RequestHeaderFields; import com.qniao.domain.QnPage; @@ -16,8 +14,6 @@ import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; -import java.util.HashMap; -import java.util.stream.Collectors; @RestController @RequestMapping("user") @@ -26,8 +22,6 @@ public class OrderUserQueryController { @Resource private OrderQueryService orderQueryService; - @Resource - private DingTalkWarningUtil dingTalkWarningUtil; @GetMapping("page/order/by/operator") @ApiOperation("运营获取订单分页列表") @@ -51,21 +45,9 @@ public class OrderUserQueryController { @GetMapping("page/user/order/record") @ApiOperation("客户获取订单记录分页列表") public QnPage userUserOrderRecord(PageUtil pageUtil, - @RequestParam("miId") Long miId, - @RequestParam("userId") Long userId) { - - return orderQueryService.userUserOrderRecord(pageUtil, miId, userId); - } - - @GetMapping("test/test") - public void testtest() { - String msg = "用户:就是不吃饭/支付1998/购买活动"; + @RequestParam("miId") Long miId, + @RequestParam("userId") Long userId) { - HashMap body = new HashMap<>(); - body.put("Msgtype", "markdown"); - body.put("toastType", "提醒"); - body.put("content", msg); - body.put("contextSize", "2000"); - dingTalkWarningUtil.send("aac04fe8b940a53244d21607ff2801df95b9e8461b30319ef5ea4fd1915903ea", body); + return orderQueryService.userUserOrderRecord(pageUtil,miId,userId); } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/dingtalk/DingTalkWarningEventHandler.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/dingtalk/DingTalkWarningEventHandler.java new file mode 100644 index 0000000..3d5a046 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/dingtalk/DingTalkWarningEventHandler.java @@ -0,0 +1,69 @@ +package com.qniao.dam.application.handler.dingtalk; + +import com.google.common.eventbus.Subscribe; +import com.qniao.dam.domain.aggregate.activity.entity.Activity; +import com.qniao.dam.domain.aggregate.externalorder.entity.ExternalOrderRel; +import com.qniao.dam.domain.aggregate.order.entity.Order; +import com.qniao.dam.domain.aggregate.order.entity.OrderItem; +import com.qniao.dam.domain.aggregate.order.repository.OrderRepository; +import com.qniao.dam.domian.aggregate.order.event.OrderCompletedEvent; +import com.qniao.dam.infrastructure.persistent.dao.activity.ActivityDao; +import com.qniao.dam.infrastructure.utils.DingTalkWarningUtil; +import com.qniao.dam.query.externalorder.ExternalOrderRelQueryService; +import com.qniao.domain.BaseApplicationService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Objects; +import java.util.stream.Collectors; + +@Component +@Slf4j +public class DingTalkWarningEventHandler extends BaseApplicationService { + + @Value("${payment-order-paid-dingTalk-token}") + private String paymentOrderPaidToken; + @Resource + private DingTalkWarningUtil dingTalkWarningUtil; + @Resource + private OrderRepository orderRepository; + @Resource + private ExternalOrderRelQueryService externalOrderRelQueryService; + @Resource + private ActivityDao activityDao; + + /** + * 订单已完成事件 + */ + @Subscribe + public void handle(OrderCompletedEvent event) { + try { + Order order = orderRepository.load(event.getId()); + StringBuilder builder = new StringBuilder(); + builder.append("
订单已支付
"); + builder.append("订单号:" + order.getOrderCode() + "
"); + builder.append("客户类型:" + order.getOrderBelonging().getDesc() + "
"); + builder.append("客户名称:" + order.getOrderBelongName() + "
"); + builder.append("订单金额:" + order.getSettlementAmount() + "
"); + builder.append("产品名称:" + order.getOrderItemList().stream().map(OrderItem::getProductTitle).collect(Collectors.joining("、")) + "
"); + ExternalOrderRel externalOrderRel = externalOrderRelQueryService.queryByOrderId(order.getId()); + if (Objects.nonNull(externalOrderRel)) { + Activity activity = activityDao.selectById(externalOrderRel.getExternalId()); + if (Objects.nonNull(activity)) { + builder.append("关联活动:" + activity.getActivityName()); + } + } + HashMap body = new HashMap<>(); + body.put("Msgtype", "markdown"); + body.put("toastType", "提醒"); + body.put("content", builder.toString()); + body.put("contextSize", "2000"); + dingTalkWarningUtil.send(paymentOrderPaidToken, body); + } catch (Exception e) { + log.error("订单已完成事件处理异常:", e); + } + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/operationlog/OperationLogEventHandler.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/operationlog/OperationLogEventHandler.java index 52571be..cb53b0c 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/operationlog/OperationLogEventHandler.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/operationlog/OperationLogEventHandler.java @@ -8,7 +8,6 @@ import com.qniao.dam.domian.aggregate.order.event.OrderCompletedEvent; import com.qniao.dam.infrastructure.persistent.dao.domain.OrderDao; import com.qniao.dam.infrastructure.persistent.dao.domain.UserDao; import com.qniao.dam.query.account.AccountQueryService; -import com.qniao.das.domian.aggregate.certificate.constant.CertificationAuditStatusEnum; import com.qniao.dau.domain.aggregate.account.entity.Account; import com.qniao.dau.domain.aggregate.user.entity.User; import com.qniao.dau.domian.aggregate.account.constant.AccountTypeEnum; diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/utils/DingTalkWarningUtil.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/utils/DingTalkWarningUtil.java index 7cda8c3..4c153cb 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/utils/DingTalkWarningUtil.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/utils/DingTalkWarningUtil.java @@ -9,7 +9,6 @@ import com.taobao.api.ApiException; import com.taobao.api.TaobaoResponse; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.util.Map; diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/externalorder/ExternalOrderRelQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/externalorder/ExternalOrderRelQueryService.java new file mode 100644 index 0000000..bdefc66 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/externalorder/ExternalOrderRelQueryService.java @@ -0,0 +1,7 @@ +package com.qniao.dam.query.externalorder; + +import com.qniao.dam.domain.aggregate.externalorder.entity.ExternalOrderRel; + +public interface ExternalOrderRelQueryService { + ExternalOrderRel queryByOrderId(Long orderId); +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/externalorder/impl/ExternalOrderRelQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/externalorder/impl/ExternalOrderRelQueryServiceImpl.java new file mode 100644 index 0000000..c2de57f --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/externalorder/impl/ExternalOrderRelQueryServiceImpl.java @@ -0,0 +1,23 @@ +package com.qniao.dam.query.externalorder.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qniao.dam.domain.aggregate.externalorder.entity.ExternalOrderRel; +import com.qniao.dam.infrastructure.persistent.dao.domain.ExternalOrderRelDao; +import com.qniao.dam.query.externalorder.ExternalOrderRelQueryService; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class ExternalOrderRelQueryServiceImpl implements ExternalOrderRelQueryService { + + @Resource + private ExternalOrderRelDao externalOrderRelDao; + + @Override + public ExternalOrderRel queryByOrderId(Long orderId) { + return externalOrderRelDao.selectOne(new LambdaQueryWrapper() + .eq(ExternalOrderRel::getOrderId, orderId) + .last("limit 1")); + } +}