diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/eso/entity/EntrustServiceOrder.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/eso/entity/EntrustServiceOrder.java index b1e9409..8ce4da7 100644 --- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/eso/entity/EntrustServiceOrder.java +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/eso/entity/EntrustServiceOrder.java @@ -58,6 +58,9 @@ public class EntrustServiceOrder extends Entity { @ApiModelProperty("付款状态") private EntrustServicePaymentStatusEnum paymentStatus; + @ApiModelProperty("接受截至时间") + private LocalDateTime acceptanceDeadline; + @ApiModelProperty("接收时间") private LocalDateTime acceptedTime; diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/eso/EntrustServiceOrderApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/eso/EntrustServiceOrderApplicationService.java index 4d54d84..247e817 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/eso/EntrustServiceOrderApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/eso/EntrustServiceOrderApplicationService.java @@ -71,6 +71,8 @@ public class EntrustServiceOrderApplicationService extends BaseApplicationServic entrustServiceOrder.setPaidAmount(entrustServiceOrder.getRewardAmount()); entrustServiceOrder.setStatus(EntrustServiceStatusEnum.PENDING_ACCEPT); entrustServiceOrder.setPaymentStatus(EntrustServicePaymentStatusEnum.PAID); + //接受截至时间 创建时间+7天 + entrustServiceOrder.setAcceptanceDeadline(LocalDateTime.now().plusDays(7)); //服务红娘配置 MatchmakerMarriageInformation matchmakerMarriageInformation = matchmakerMarriageInformationQueryService.queryByRecommend(entrustServiceOrder.getTargetUserId()); if (Objects.nonNull(matchmakerMarriageInformation)) { @@ -105,6 +107,7 @@ public class EntrustServiceOrderApplicationService extends BaseApplicationServic //状态判断 退款时间要求 EntrustServiceOrder existEntrustServiceOrder = entrustServiceOrderDao.selectById(entrustServiceOrder.getId()); checkRefundPossible(existEntrustServiceOrder); + entrustServiceOrder.setOriginalStatus(existEntrustServiceOrder.getStatus()); entrustServiceOrder.setStatus(EntrustServiceStatusEnum.CANCELED); entrustServiceOrder.setPaymentStatus(EntrustServicePaymentStatusEnum.BEING_REFUNDED); diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/task/EntrustServiceOrderTask.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/task/EntrustServiceOrderTask.java new file mode 100644 index 0000000..f4c5bcb --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/task/EntrustServiceOrderTask.java @@ -0,0 +1,65 @@ +package com.qniao.dam.application.task; + +import cn.hutool.core.collection.CollUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qniao.dam.domain.aggregate.eso.EntrustServiceOrderAggregate; +import com.qniao.dam.domain.aggregate.eso.entity.EntrustServiceOrder; +import com.qniao.dam.domain.aggregate.mica.entity.MarriageInformationContactApply; +import com.qniao.dam.domain.aggregate.ora.entity.OrderRefundApplication; +import com.qniao.dam.domain.service.eso.RefundEntrustServiceOrderDomainService; +import com.qniao.dam.domian.aggregate.eso.constant.EntrustServicePaymentStatusEnum; +import com.qniao.dam.domian.aggregate.eso.constant.EntrustServiceStatusEnum; +import com.qniao.dam.domian.aggregate.mica.constant.MarriageInformationContactApplyStatusEnum; +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.eso.EntrustServiceOrderDao; +import lombok.extern.slf4j.Slf4j; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.util.List; + +/** + * @author Zpj + * @date 2026/3/17 + */ +@Component +@Slf4j +public class EntrustServiceOrderTask { + + @Resource + private EntrustServiceOrderDao entrustServiceOrderDao; + @Resource + private RefundEntrustServiceOrderDomainService refundEntrustServiceOrderDomainService; + + + @Scheduled(cron = "0 0 * * * *") + public void handle() { + try { + log.error("委托服务接受到期退款任务开始"); + List list = entrustServiceOrderDao.selectList(new LambdaQueryWrapper() + .eq(EntrustServiceOrder::getStatus, EntrustServiceStatusEnum.PENDING_ACCEPT) + .le(EntrustServiceOrder::getAcceptanceDeadline, LocalDateTime.now())); + if (CollUtil.isNotEmpty(list)) { + for (EntrustServiceOrder entrustServiceOrder : list) { + entrustServiceOrder.setOriginalStatus(entrustServiceOrder.getStatus()); + entrustServiceOrder.setStatus(EntrustServiceStatusEnum.CANCELED); + entrustServiceOrder.setPaymentStatus(EntrustServicePaymentStatusEnum.BEING_REFUNDED); + entrustServiceOrder.setRemark("红娘未接单自动取消"); + + OrderRefundApplication orderRefundApplication = OrderRefundApplication.build(entrustServiceOrder.getId(), RefundOrderTypeEnum.ENTRUST_SERVICE, + entrustServiceOrder.getPaidAmount(), entrustServiceOrder.getPaidAmount()); + orderRefundApplication.setOperationStatus(OrderRefundApplicationStatus.UNAUDITED); + orderRefundApplication.setStatus(OrderRefundApplicationStatus.UNAUDITED); + refundEntrustServiceOrderDomainService.handle(entrustServiceOrder, orderRefundApplication); + } + } + log.error("委托服务接受到期退款任务结束"); + } catch (Exception e) { + log.error("委托服务接受到期退款任务异常", e); + } + } +}