From dc89768eec0b49d612741ea47c291e8e21943935 Mon Sep 17 00:00:00 2001 From: Derran Date: Sat, 3 Aug 2024 16:36:49 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E9=80=80=E6=AC=BE=E7=94=B3?= =?UTF-8?q?=E8=AF=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../OrderRefundApplicationAuditedEvent.java | 20 ++++++++++ ...efundApplicationUserCommandController.java | 8 ++++ .../UserAuditOrderRefundApplicationDto.java | 26 +++++++++++++ .../OrderRefundApplicationEventHandler.java | 39 +++++++++++++++++++ ...erRefundApplicationApplicationService.java | 17 +++++++- .../ora/OrderRefundApplicationAggregate.java | 7 ++++ 6 files changed, 115 insertions(+), 2 deletions(-) create mode 100644 dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/ora/event/OrderRefundApplicationAuditedEvent.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/ora/user/request/UserAuditOrderRefundApplicationDto.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/ora/OrderRefundApplicationEventHandler.java diff --git a/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/ora/event/OrderRefundApplicationAuditedEvent.java b/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/ora/event/OrderRefundApplicationAuditedEvent.java new file mode 100644 index 0000000..7832fc6 --- /dev/null +++ b/dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/ora/event/OrderRefundApplicationAuditedEvent.java @@ -0,0 +1,20 @@ +package com.qniao.dam.domian.aggregate.ora.event; + + +import com.qniao.dam.domian.aggregate.ora.constant.OrderRefundApplicationStatus; +import com.qniao.domain.BaseDomainEvent; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true) +public class OrderRefundApplicationAuditedEvent extends BaseDomainEvent { + + private Long id; + + private OrderRefundApplicationStatus status; +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/ora/user/OrderRefundApplicationUserCommandController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/ora/user/OrderRefundApplicationUserCommandController.java index e7c8823..740c184 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/ora/user/OrderRefundApplicationUserCommandController.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/ora/user/OrderRefundApplicationUserCommandController.java @@ -1,7 +1,9 @@ package com.qniao.dam.api.command.ora.user; +import com.qniao.dam.api.command.ora.user.request.UserAuditOrderRefundApplicationDto; import com.qniao.dam.application.service.ora.OrderRefundApplicationApplicationService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -14,4 +16,10 @@ public class OrderRefundApplicationUserCommandController { @Resource private OrderRefundApplicationApplicationService orderRefundApplicationApplicationService; + @PostMapping("audit/order-refund-application") + @ApiOperation("订单退款申请审核") + public void userAuditSiteActivityParticipantQuitAudit(@RequestBody UserAuditOrderRefundApplicationDto dto, + @RequestParam("userId") Long userId) { + orderRefundApplicationApplicationService.audit(dto.trans2Domain()); + } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/ora/user/request/UserAuditOrderRefundApplicationDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/ora/user/request/UserAuditOrderRefundApplicationDto.java new file mode 100644 index 0000000..974304a --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/ora/user/request/UserAuditOrderRefundApplicationDto.java @@ -0,0 +1,26 @@ +package com.qniao.dam.api.command.ora.user.request; + +import com.qniao.dam.domain.aggregate.ora.entity.OrderRefundApplication; +import com.qniao.dam.domian.aggregate.ora.constant.OrderRefundApplicationStatus; +import com.qniao.domain.Trans2DomainAssembler; +import com.qniao.framework.utils.TypeConvertUtils; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class UserAuditOrderRefundApplicationDto implements Trans2DomainAssembler { + + @ApiModelProperty("唯一标识") + @NotNull(message = "唯一标识不能为空") + private Long id; + + @ApiModelProperty("审核状态") + private OrderRefundApplicationStatus status; + + @Override + public OrderRefundApplication trans2Domain() { + return TypeConvertUtils.convert(this, OrderRefundApplication.class); + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/ora/OrderRefundApplicationEventHandler.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/ora/OrderRefundApplicationEventHandler.java new file mode 100644 index 0000000..d390bb0 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/ora/OrderRefundApplicationEventHandler.java @@ -0,0 +1,39 @@ +package com.qniao.dam.application.handler.ora; + +import com.google.common.eventbus.Subscribe; +import com.qniao.dam.application.service.marriagebounty.MarriageBountyOrderApplicationService; +import com.qniao.dam.domain.aggregate.ora.entity.OrderRefundApplication; +import com.qniao.dam.domian.aggregate.ora.constant.OrderRefundApplicationStatus; +import com.qniao.dam.domian.aggregate.ora.constant.RefundOrderTypeEnum; +import com.qniao.dam.domian.aggregate.ora.event.OrderRefundApplicationAuditedEvent; +import com.qniao.dam.infrastructure.persistent.dao.ora.OrderRefundApplicationDao; +import com.qniao.domain.BaseApplicationService; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +@Component +@Slf4j +public class OrderRefundApplicationEventHandler extends BaseApplicationService { + + @Resource + private MarriageBountyOrderApplicationService marriageBountyOrderApplicationService; + @Resource + private OrderRefundApplicationDao orderRefundApplicationDao; + + @Subscribe + public void handle(OrderRefundApplicationAuditedEvent event) { + try { + OrderRefundApplication orderRefundApplication = orderRefundApplicationDao.selectById(event.getId()); + if (orderRefundApplication.getStatus().equals(OrderRefundApplicationStatus.APPROVED)) { + if (orderRefundApplication.getRefundOrderType().equals(RefundOrderTypeEnum.MARRIAGE_BOUNTY)) { + marriageBountyOrderApplicationService.refund(orderRefundApplication.getOrderId()); + } + } + } catch (Exception e) { + log.error("订单退款申请审核处理异常:", e); + } + } + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/ora/OrderRefundApplicationApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/ora/OrderRefundApplicationApplicationService.java index 200a8ff..4b54342 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/ora/OrderRefundApplicationApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/ora/OrderRefundApplicationApplicationService.java @@ -5,23 +5,28 @@ import com.qniao.dam.domain.aggregate.ora.OrderRefundApplicationAggregate; import com.qniao.dam.domain.aggregate.ora.entity.OrderRefundApplication; import com.qniao.dam.domian.aggregate.ora.constant.OrderRefundApplicationStatus; import com.qniao.dam.domian.aggregate.ora.constant.RefundOrderTypeEnum; +import com.qniao.dam.infrastructure.persistent.dao.ora.OrderRefundApplicationDao; import com.qniao.dam.query.marriagebounty.MarriageBountyOrderQueryService; import com.qniao.dam.query.ora.OrderRefundApplicationQueryService; +import com.qniao.domain.BaseApplicationService; +import com.qniao.domain.BaseDomainEvent; import com.qniao.framework.exception.BizException; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Objects; @Service -public class OrderRefundApplicationApplicationService { +public class OrderRefundApplicationApplicationService extends BaseApplicationService { @Resource private MarriageBountyOrderQueryService marriageBountyOrderQueryService; @Resource private OrderRefundApplicationQueryService orderRefundApplicationQueryService; - @Resource private OrderRefundApplicationAggregate orderRefundApplicationAggregate; + @Resource + private OrderRefundApplicationDao orderRefundApplicationDao; public void refundMarriageBountyOrder(Long order) { @@ -38,4 +43,12 @@ public class OrderRefundApplicationApplicationService { application.setStatus(OrderRefundApplicationStatus.UNAUDITED); orderRefundApplicationAggregate.create(application); } + + public void audit(OrderRefundApplication orderRefundApplication) { + OrderRefundApplication existOrderRefundApplication = orderRefundApplicationDao.selectById(orderRefundApplication.getOrderId()); + if (Objects.nonNull(existOrderRefundApplication) && existOrderRefundApplication.getStatus().equals(OrderRefundApplicationStatus.UNAUDITED)) { + BaseDomainEvent event = orderRefundApplicationAggregate.audit(orderRefundApplication); + this.sendEvent(event); + } + } } \ No newline at end of file diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/ora/OrderRefundApplicationAggregate.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/ora/OrderRefundApplicationAggregate.java index 190c2ec..5b3f3de 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/ora/OrderRefundApplicationAggregate.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/ora/OrderRefundApplicationAggregate.java @@ -2,6 +2,9 @@ package com.qniao.dam.domain.aggregate.ora; import com.qniao.dam.domain.aggregate.ora.entity.OrderRefundApplication; import com.qniao.dam.domain.aggregate.ora.repository.OrderRefundApplicationRepository; +import com.qniao.dam.domian.aggregate.ora.event.OrderRefundApplicationAuditedEvent; +import com.qniao.domain.BaseDomainEvent; +import com.qniao.framework.utils.TypeConvertUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -21,4 +24,8 @@ public class OrderRefundApplicationAggregate { repository.save(entity); } + public BaseDomainEvent audit(OrderRefundApplication entity) { + repository.save(entity); + return TypeConvertUtils.convert(entity, OrderRefundApplicationAuditedEvent.class); + } }