diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/order/constant/OrderBelongingEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/order/constant/OrderBelongingEnum.java index 091ce2f..e69d0fe 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/order/constant/OrderBelongingEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/order/constant/OrderBelongingEnum.java @@ -12,7 +12,9 @@ public enum OrderBelongingEnum { CUSTOMER(1, "客户"), - MATCHMAKER(2, "红娘"); + MATCHMAKER(2, "红娘"), + + MATCHMAKING_CORNER(3, "相亲角"); @EnumValue @JsonValue diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java index dc74509..8dee885 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductMainCategoryEnum.java @@ -17,13 +17,15 @@ public enum ProductMainCategoryEnum { DATE_EDITING(2, "资料编辑"), UNLOCKING_INFORMATION(3, "解锁信息"), OFFLINE_SERVICES(4, "线下服务"), - CHAT_CARD(5,"聊天卡"), + CHAT_CARD(5, "聊天卡"), VIP(6, "会员"), MARRIAGE_BOUNTY(7, "悬赏招亲"), SITE_ACTIVITY(8, "线下活动"), - MATCHMAKER(888,"红娘合伙人"); + MATCHMAKER(888, "红娘合伙人"), + + MATCHMAKING_CORNER(999, "相亲角"); @EnumValue @JsonValue diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductSubCategoryEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductSubCategoryEnum.java index b558c23..1360c2b 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductSubCategoryEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductSubCategoryEnum.java @@ -46,7 +46,13 @@ public enum ProductSubCategoryEnum { MATCHMAKER_ONLINE_FEE(88802, "线上红娘"), - MATCHMAKER_TRAINEE_FEE(88803, "实习红娘"); + MATCHMAKER_TRAINEE_FEE(88803, "实习红娘"), + + MATCHMAKING_CORNER_STANDARD_FEE(99901, "相亲角标准版"), + + MATCHMAKING_CORNER_LUXURY_FEE(99902, "相亲角豪华版"), + + MATCHMAKING_CORNER_HONOURABLE_FEE(99903, "相亲角尊贵版"); @EnumValue @JsonValue diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductTypeEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductTypeEnum.java index fe90ea0..76b8f4e 100644 --- a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductTypeEnum.java +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/product/constant/ProductTypeEnum.java @@ -14,7 +14,9 @@ public enum ProductTypeEnum { CUSTOMER_VIRTUAL(2, "客户虚拟物品"), - MATCHMAKER_VIRTUAL(3, "红娘虚拟物品"); + MATCHMAKER_VIRTUAL(3, "红娘虚拟物品"), + + MATCHMAKING_CORNER_VIRTUAL(4, "相亲角虚拟物品"); @EnumValue @JsonValue diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java index 915eefa..fbeea6d 100644 --- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/order/entity/Order.java @@ -76,6 +76,8 @@ public class Order extends Entity { OrderBelongingEnum orderBelonging = OrderBelongingEnum.CUSTOMER; if (ProductTypeEnum.MATCHMAKER_VIRTUAL.equals(productType)) { orderBelonging = OrderBelongingEnum.MATCHMAKER; + }else if (ProductTypeEnum.MATCHMAKING_CORNER_VIRTUAL.equals(productType)) { + orderBelonging = OrderBelongingEnum.MATCHMAKING_CORNER; } return orderBelonging; } 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 cce64ac..d1ca6a3 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 @@ -95,4 +95,14 @@ public class OrderUserCommandController { public void userCompleteOrder(@RequestBody @Valid UserCompleteOrderDto dto) { orderApplicationService.complete(dto.getId()); } + + + @ApiOperation("用户提交相亲角订单") + @PostMapping("submit/matchmaking_corner") + public UserSubmitOrderVo userSubmitMatchmakingCornerOrder(@RequestBody @Valid UserSubmitMatchmakingCornerOrderDto dto, + @RequestParam("userId") Long userId) { + Order order = dto.trans2Domain(); + order.setUserId(userId); + return orderApplicationService.submitMatchmakingCornerOrder(order); + } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserSubmitMatchmakingCornerOrderDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserSubmitMatchmakingCornerOrderDto.java new file mode 100644 index 0000000..8cc9278 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserSubmitMatchmakingCornerOrderDto.java @@ -0,0 +1,35 @@ +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.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 UserSubmitMatchmakingCornerOrderDto implements Trans2DomainAssembler { + + @ApiModelProperty("产品规格标识") + @NotNull(message = "产品规格标识不能为空") + private Long productSpecId; + + @ApiModelProperty("用户名称") + private String userName; + + @Override + public Order trans2Domain() { + Order order = new Order(); + order.setOrderBelongName(userName); + List orderItemList = new ArrayList<>(); + OrderItem orderItem = new OrderItem(); + orderItem.setProductSpecId(productSpecId); + orderItem.setQuantity(1); + orderItemList.add(orderItem); + order.setOrderItemList(orderItemList); + return order; + } +} 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 f8ca6da..7072406 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 @@ -579,4 +579,19 @@ public class OrderApplicationService extends BaseApplicationService { BaseDomainEvent orderCompletedEvent = orderAggregate.complete(order); this.sendEvent(orderCompletedEvent); } + + public UserSubmitOrderVo submitMatchmakingCornerOrder(Order order) { + //1. 填充订单信息 + 同类型权益,不同规格,限制购买和提醒 + fillOrderInfo(order); + //2. 结束历史订单 + cancelHisOrder(order); + //2. 订单金额计算 + countOrderAmount(order, false); + //3. 设置订单号 + order.setOrderCode(snowFlakeUtil.getSnowflakeOrderCode()); + //4. 组织付款单信息 + PaymentOrder paymentOrder = makePaymentOrder(order); + submitOrderDomainService.handle(order, paymentOrder); + return new UserSubmitOrderVo(order.getId(), paymentOrder.getId(), false); + } }