diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/OrderUserCommandController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/OrderUserCommandController.java index 945f57e..beb1246 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/OrderUserCommandController.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/OrderUserCommandController.java @@ -1,6 +1,7 @@ package com.qniao.dam.api.command.order.user; import com.qniao.dam.api.command.order.user.request.*; +import com.qniao.dam.api.command.order.user.response.UserCalculateMatchmakerOrderFeeVo; import com.qniao.dam.api.command.order.user.response.UserCalculateOrderFeeVo; import com.qniao.dam.api.command.order.user.response.UserSubmitOrderVo; import com.qniao.dam.application.service.order.OrderApplicationService; @@ -79,4 +80,14 @@ public class OrderUserCommandController { order.setUserId(userId); return orderApplicationService.submitMatchMakerOrder(order, dto.getMatchmakerOrderType()); } + + @ApiOperation("用户提交红娘订单费用") + @PostMapping("calculate/matchmaker-order/fee") + public UserCalculateMatchmakerOrderFeeVo userCalculateMatchmakerOrderFee(@RequestBody @Valid UserCalculateMatchmakerOrderDto dto, + @RequestParam("userId") Long userId) { + Order order = dto.trans2Domain(); + order.setUserId(userId); + return orderApplicationService.calculateMatchmakerOrderFee(order, dto.getMatchmakerOrderType()); + } + } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserCalculateMatchmakerOrderDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserCalculateMatchmakerOrderDto.java new file mode 100644 index 0000000..11ea925 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserCalculateMatchmakerOrderDto.java @@ -0,0 +1,36 @@ +package com.qniao.dam.api.command.order.user.request; + +import com.qniao.dam.domain.aggregate.order.entity.Order; +import com.qniao.dam.domain.aggregate.order.entity.OrderItem; +import com.qniao.dam.domian.aggregate.order.constant.MatchmakerOrderTypeEnum; +import com.qniao.domain.Trans2DomainAssembler; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.util.ArrayList; +import java.util.List; + +@Data +public class UserCalculateMatchmakerOrderDto implements Trans2DomainAssembler { + + @ApiModelProperty("产品规格标识") + @NotNull(message = "产品规格标识不能为空") + private Long productSpecId; + + @ApiModelProperty("红娘订单类型") + @NotNull(message = "红娘订单类型不能为空") + private MatchmakerOrderTypeEnum matchmakerOrderType; + + @Override + public Order trans2Domain() { + Order order = new Order(); + List orderItemList = new ArrayList<>(); + OrderItem orderItem = new OrderItem(); + orderItem.setProductSpecId(productSpecId); + orderItem.setQuantity(1); + orderItemList.add(orderItem); + order.setOrderItemList(orderItemList); + return order; + } +} \ No newline at end of file diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/response/UserCalculateMatchmakerOrderFeeVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/response/UserCalculateMatchmakerOrderFeeVo.java new file mode 100644 index 0000000..f57c35b --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/response/UserCalculateMatchmakerOrderFeeVo.java @@ -0,0 +1,24 @@ +package com.qniao.dam.api.command.order.user.response; + +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.math.BigDecimal; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class UserCalculateMatchmakerOrderFeeVo { + + @ApiModelProperty("原始金额") + private BigDecimal originalAmount ; + + @ApiModelProperty("折扣金额") + private BigDecimal discountAmount; + + @ApiModelProperty("结算金额") + private BigDecimal settlementAmount; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java index a90be1d..e9a5fa0 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java @@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.qniao.dam.api.command.order.user.request.UserCalculateSiteActivityOrderDto; import com.qniao.dam.api.command.order.user.request.UserSubmitSiteActivityOrderDto; +import com.qniao.dam.api.command.order.user.response.UserCalculateMatchmakerOrderFeeVo; import com.qniao.dam.api.command.order.user.response.UserCalculateOrderFeeVo; import com.qniao.dam.api.command.order.user.response.UserSubmitOrderVo; import com.qniao.dam.application.service.product.ProductApplicationService; @@ -508,4 +509,13 @@ public class OrderApplicationService extends BaseApplicationService { } } } + + public UserCalculateMatchmakerOrderFeeVo calculateMatchmakerOrderFee(Order order, + MatchmakerOrderTypeEnum matchmakerOrderType) { + //1. 填充订单信息 + 同类型权益,不同规格,限制购买和提醒 + fillOrderInfo(order); + //2. 订单金额计算 + countMatchMakerOrderAmount(order, matchmakerOrderType); + return new UserCalculateMatchmakerOrderFeeVo(order.getOriginalAmount(), order.getDiscountAmount(), order.getSettlementAmount()); + } }