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 42e200f..a01b80f 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,9 +1,7 @@ package com.qniao.dam.api.command.order.user; -import com.qniao.dam.api.command.order.user.request.UserBatchSubmitOrderDto; -import com.qniao.dam.api.command.order.user.request.UserSubmitMarriageBountyOrderDto; -import com.qniao.dam.api.command.order.user.request.UserSubmitOrderDto; -import com.qniao.dam.api.command.order.user.request.UserSubmitSiteActivityOrderDto; +import com.qniao.dam.api.command.order.user.request.*; +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; import com.qniao.dam.domain.aggregate.order.entity.Order; @@ -53,6 +51,13 @@ public class OrderUserCommandController { return orderApplicationService.submitMarriageBountyOrder(order, productList); } + @ApiOperation("用户计算线下活动订单费用") + @PostMapping("calculate/site-activity-order/fee") + public UserCalculateOrderFeeVo userSubmitSiteActivityOrder(@RequestBody @Valid UserCalculateSiteActivityOrderDto dto, + @RequestParam("userId") Long userId) { + return orderApplicationService.calculateSiteActivityOrderFee(dto, userId); + } + @ApiOperation("用户提交线下活动订单") @PostMapping("submit/site-activity-order") public UserSubmitOrderVo userSubmitSiteActivityOrder(@RequestBody @Valid UserSubmitSiteActivityOrderDto dto, diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserCalculateSiteActivityOrderDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserCalculateSiteActivityOrderDto.java new file mode 100644 index 0000000..d63c86d --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserCalculateSiteActivityOrderDto.java @@ -0,0 +1,19 @@ +package com.qniao.dam.api.command.order.user.request; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; + +@Data +public class UserCalculateSiteActivityOrderDto { + + @ApiModelProperty("活动标识") + @NotNull + private Long siteActivityId; + + @ApiModelProperty("征婚资料标识") + @NotNull + private Long miId; + +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/response/UserCalculateOrderFeeVo.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/response/UserCalculateOrderFeeVo.java new file mode 100644 index 0000000..de43275 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/response/UserCalculateOrderFeeVo.java @@ -0,0 +1,20 @@ +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 UserCalculateOrderFeeVo { + + @ApiModelProperty("原价") + private BigDecimal unitOriginalPrice; + + @ApiModelProperty("结算单价") + private BigDecimal unitSettlementPrice; +} 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 d7e7272..e0acf78 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 @@ -2,7 +2,9 @@ package com.qniao.dam.application.service.order; 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.UserCalculateOrderFeeVo; import com.qniao.dam.api.command.order.user.response.UserSubmitOrderVo; import com.qniao.dam.application.service.product.ProductApplicationService; import com.qniao.dam.domain.aggregate.activity.entity.Activity; @@ -321,4 +323,16 @@ public class OrderApplicationService extends BaseApplicationService { this.sendEvent(eventList); return new UserSubmitOrderVo(order.getId(), paymentOrder.getId(), Objects.isNull(paymentOrder.getId())); } + + public UserCalculateOrderFeeVo calculateSiteActivityOrderFee(UserCalculateSiteActivityOrderDto dto, Long userId) { + //是否vip + boolean vip = rightQueryService.checkUserVipRight(userId, dto.getMiId()).getVip(); + CalculateSiteActivityFeeDto calculateDto = new CalculateSiteActivityFeeDto(dto.getSiteActivityId(), userId, + dto.getMiId(), vip ? VIPEnum.YES.getValue() : VIPEnum.NO.getValue()); + CalculateSiteActivityFeeVo calculateVo = datingAgencyServiceApplicationService.calculateSiteActivityFeeBySdk(calculateDto); + if (calculateVo.getUnitOriginalPrice().compareTo(BigDecimal.ZERO) <= 0) { + throw new BizException("下单异常"); + } + return new UserCalculateOrderFeeVo(calculateVo.getUnitOriginalPrice(), calculateVo.getUnitSettlementPrice()); + } }