diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/rewardconfig/entity/RewardConfig.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/rewardconfig/entity/RewardConfig.java index 23cec38..1d69267 100644 --- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/rewardconfig/entity/RewardConfig.java +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/rewardconfig/entity/RewardConfig.java @@ -10,6 +10,8 @@ import lombok.EqualsAndHashCode; import java.math.BigDecimal; import java.math.RoundingMode; +import java.time.LocalDateTime; +import java.time.chrono.ChronoLocalDateTime; @Data @EqualsAndHashCode(callSuper = true) @@ -35,4 +37,8 @@ public class RewardConfig extends Entity { return amount.multiply(new BigDecimal(value)).divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP); } } + + public LocalDateTime getRefundableTime(LocalDateTime time) { + return time.plusMonths(Long.parseLong(value)); + } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/marriagebounty/impl/MarriageBountyOrderQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/marriagebounty/impl/MarriageBountyOrderQueryServiceImpl.java index c59d0b0..a46d8b7 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/marriagebounty/impl/MarriageBountyOrderQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/marriagebounty/impl/MarriageBountyOrderQueryServiceImpl.java @@ -8,20 +8,24 @@ import com.qniao.dam.domain.aggregate.marriagebounty.repository.MarriageBountyOr import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrderRel; import com.qniao.dam.domain.aggregate.product.entity.Product; import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec; +import com.qniao.dam.domain.aggregate.rewardconfig.entity.RewardConfig; import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderPaymentStatusEnum; import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderStatusEnum; import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; +import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum; import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageBountyOrderDao; import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageBountyOrderRelDao; import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageBountyOrderRewardDao; import com.qniao.dam.query.marriagebounty.MarriageBountyOrderQueryService; import com.qniao.dam.query.ora.OrderRefundApplicationQueryService; import com.qniao.dam.query.product.ProductQueryService; +import com.qniao.dam.query.rewardconfig.RewardConfigQueryService; import com.qniao.framework.utils.TypeConvertUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.math.BigDecimal; +import java.time.LocalDateTime; import java.util.List; import java.util.Objects; @@ -37,7 +41,7 @@ public class MarriageBountyOrderQueryServiceImpl implements MarriageBountyOrderQ @Resource private MarriageBountyOrderRewardDao marriageBountyOrderRewardDao; @Resource - private OrderRefundApplicationQueryService orderRefundApplicationQueryService; + private RewardConfigQueryService rewardConfigQueryService; @Override public MarriageBountyOrder queryBy(Long userId, Long miId, MarriageBountyOrderStatusEnum status, @@ -75,10 +79,16 @@ public class MarriageBountyOrderQueryServiceImpl implements MarriageBountyOrderQ refundableResultGift = refundableResultGift.add(orderReward.getRewardAmount()); } } - refundInfoVo.setRefundableMeetingFee(refundableMeetingFee); - refundInfoVo.setRefundableMeetingQuantity(refundableMeetingQuantity); - refundInfoVo.setRefundableResultGift(refundableResultGift); - refundInfoVo.setRefundable(refundableMeetingFee.compareTo(BigDecimal.ZERO) > 0 || refundableResultGift.compareTo(BigDecimal.ZERO) > 0); + } + refundInfoVo.setRefundableMeetingFee(refundableMeetingFee); + refundInfoVo.setRefundableMeetingQuantity(refundableMeetingQuantity); + refundInfoVo.setRefundableResultGift(refundableResultGift); + refundInfoVo.setRefundable(refundableMeetingFee.compareTo(BigDecimal.ZERO) > 0 || refundableResultGift.compareTo(BigDecimal.ZERO) > 0); + //服务退款有效期校验 + RewardTypeEnum rewardType = marriageBountyOrder.getRewardType(); + RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(rewardType); + if (Objects.nonNull(rewardConfig)&&LocalDateTime.now().isBefore(rewardConfig.getRefundableTime(marriageBountyOrder.getCreateTime()))) { + refundInfoVo.setRefundable(false); } } return refundInfoVo;