diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/marriagebounty/user/MarriageBountyOrderUserQueryController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/marriagebounty/user/MarriageBountyOrderUserQueryController.java new file mode 100644 index 0000000..d462216 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/marriagebounty/user/MarriageBountyOrderUserQueryController.java @@ -0,0 +1,29 @@ +package com.qniao.dam.api.query.marriagebounty.user; + +import com.qniao.dam.api.query.marriagebounty.user.request.UserGetMarriageBountyOrderPreRefundInfoQueryParam; +import com.qniao.dam.api.query.marriagebounty.user.response.UserGetMarriageBountyOrderPreRefundInfoVo; +import com.qniao.dam.query.marriagebounty.MarriageBountyOrderQueryService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.annotation.Resource; + +@RestController +@RequestMapping("user") +@Api(tags = "悬赏招亲订单") +public class MarriageBountyOrderUserQueryController { + + @Resource + private MarriageBountyOrderQueryService marriageBountyOrderQueryService; + + @GetMapping("get/marriage-bounty-order/pre-refund-info") + @ApiOperation("用户获取悬赏招亲订单预退款信息") + public UserGetMarriageBountyOrderPreRefundInfoVo getMarriageBountyOrderPreRefundInfo(@Validated UserGetMarriageBountyOrderPreRefundInfoQueryParam queryParam, + @RequestParam("userId") Long userId) { + return marriageBountyOrderQueryService.getMarriageBountyOrderPreRefundInfo(userId, queryParam.getMiId()); + } + + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/marriagebounty/user/request/UserGetMarriageBountyOrderPreRefundInfoQueryParam.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/marriagebounty/user/request/UserGetMarriageBountyOrderPreRefundInfoQueryParam.java new file mode 100644 index 0000000..6d80180 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/marriagebounty/user/request/UserGetMarriageBountyOrderPreRefundInfoQueryParam.java @@ -0,0 +1,15 @@ +package com.qniao.dam.api.query.marriagebounty.user.request; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class UserGetMarriageBountyOrderPreRefundInfoQueryParam { + + @ApiModelProperty("征婚资料标识") + @JsonSerialize(using = ToStringSerializer.class) + private Long miId; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/marriagebounty/user/response/UserGetMarriageBountyOrderPreRefundInfoVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/marriagebounty/user/response/UserGetMarriageBountyOrderPreRefundInfoVo.java new file mode 100644 index 0000000..ef283fa --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/marriagebounty/user/response/UserGetMarriageBountyOrderPreRefundInfoVo.java @@ -0,0 +1,19 @@ +package com.qniao.dam.api.query.marriagebounty.user.response; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class UserGetMarriageBountyOrderPreRefundInfoVo { + + @ApiModelProperty("可退款见面费用") + private BigDecimal refundableMeetingFee = BigDecimal.ZERO; + + @ApiModelProperty("可退款结果礼金") + private BigDecimal refundableResultGift = BigDecimal.ZERO; + + @ApiModelProperty("是否可以退款") + private Boolean refundable = false; +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/marriagebounty/MarriageBountyOrderQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/marriagebounty/MarriageBountyOrderQueryService.java index a8d5c44..f6f24c2 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/marriagebounty/MarriageBountyOrderQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/marriagebounty/MarriageBountyOrderQueryService.java @@ -1,8 +1,11 @@ package com.qniao.dam.query.marriagebounty; +import com.qniao.dam.api.query.marriagebounty.user.response.UserGetMarriageBountyOrderPreRefundInfoVo; import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrder; import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderStatusEnum; public interface MarriageBountyOrderQueryService { MarriageBountyOrder queryBy(Long userId, Long miId, MarriageBountyOrderStatusEnum status); + + UserGetMarriageBountyOrderPreRefundInfoVo getMarriageBountyOrderPreRefundInfo(Long userId, Long miId); } 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 eaae3f5..0493bf7 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 @@ -1,15 +1,19 @@ package com.qniao.dam.query.marriagebounty.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.qniao.dam.api.query.marriagebounty.user.response.UserGetMarriageBountyOrderPreRefundInfoVo; import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrder; import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrderReward; import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderStatusEnum; +import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageBountyOrderDao; import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageBountyOrderRewardDao; import com.qniao.dam.query.marriagebounty.MarriageBountyOrderQueryService; +import io.swagger.annotations.ApiModelProperty; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.Objects; @Service @@ -21,7 +25,7 @@ public class MarriageBountyOrderQueryServiceImpl implements MarriageBountyOrderQ private MarriageBountyOrderRewardDao marriageBountyOrderRewardDao; @Override - public MarriageBountyOrder queryBy(Long userId, Long miId,MarriageBountyOrderStatusEnum status) { + public MarriageBountyOrder queryBy(Long userId, Long miId, MarriageBountyOrderStatusEnum status) { MarriageBountyOrder marriageBountyOrder = marriageBountyOrderDao.selectOne(new LambdaQueryWrapper() .eq(MarriageBountyOrder::getUserId, userId) .eq(MarriageBountyOrder::getMiId, miId) @@ -34,4 +38,25 @@ public class MarriageBountyOrderQueryServiceImpl implements MarriageBountyOrderQ } return marriageBountyOrder; } + + @Override + public UserGetMarriageBountyOrderPreRefundInfoVo getMarriageBountyOrderPreRefundInfo(Long userId, Long miId) { + UserGetMarriageBountyOrderPreRefundInfoVo refundInfoVo = new UserGetMarriageBountyOrderPreRefundInfoVo(); + MarriageBountyOrder marriageBountyOrder = queryBy(userId, miId, MarriageBountyOrderStatusEnum.MATCHMAKING); + if (Objects.nonNull(marriageBountyOrder)) { + BigDecimal refundableMeetingFee = BigDecimal.ZERO; + BigDecimal refundableResultGift = BigDecimal.ZERO; + for (MarriageBountyOrderReward orderReward : marriageBountyOrder.getUpdateOrderRewardList()) { + if (!orderReward.getIsReceive()) { + if (ProductSubCategoryEnum.MARRIAGE_BOUNTY_MEETING_FEE.equals(orderReward.getRewardCategory())) { + refundableMeetingFee = refundableMeetingFee.add(orderReward.getRewardAmount()); + } else if (ProductSubCategoryEnum.MARRIAGE_BOUNTY_RESULT_GIFT.equals(orderReward.getRewardCategory())) { + refundableResultGift = refundableResultGift.add(orderReward.getRewardAmount()); + } + } + refundInfoVo.setRefundable(refundableMeetingFee.compareTo(BigDecimal.ZERO) > 0 || refundableResultGift.compareTo(BigDecimal.ZERO) > 0); + } + } + return refundInfoVo; + } }