diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/marriagebount/constant/MarriageBountyOrderVersion.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/marriagebount/constant/MarriageBountyOrderVersion.java new file mode 100644 index 0000000..de69cfd --- /dev/null +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/marriagebount/constant/MarriageBountyOrderVersion.java @@ -0,0 +1,36 @@ +package com.qniao.dam.domian.aggregate.marriagebount.constant; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.Getter; + +@Getter +@JsonFormat(shape = JsonFormat.Shape.OBJECT) +public enum MarriageBountyOrderVersion { + + V1(1, "V1 存在见面费+结果礼金 即存在过程费用"), + + V2(2, "V2 不存在过程费用,只有一个金额"); + + @EnumValue + @JsonValue + private final Integer value; + private final String desc; + + MarriageBountyOrderVersion(Integer value, String desc) { + this.value = value; + this.desc = desc; + } + + @JsonCreator + public static MarriageBountyOrderVersion get(Object code) { + for (MarriageBountyOrderVersion e : MarriageBountyOrderVersion.values()) { + if (e.getValue().equals(code)) { + return e; + } + } + return null; + } +} \ No newline at end of file diff --git a/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/marriagebount/constant/PublishIdentityTypeEnum.java b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/marriagebount/constant/PublishIdentityTypeEnum.java new file mode 100644 index 0000000..0ffd825 --- /dev/null +++ b/dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/marriagebount/constant/PublishIdentityTypeEnum.java @@ -0,0 +1,36 @@ +package com.qniao.dam.domian.aggregate.marriagebount.constant; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.Getter; + +@Getter +@JsonFormat(shape = JsonFormat.Shape.OBJECT) +public enum PublishIdentityTypeEnum { + + GUEST(1, "嘉宾"), + + MATCHMAKER(2, "红娘"); + + @EnumValue + @JsonValue + private final Integer value; + private final String desc; + + PublishIdentityTypeEnum(Integer value, String desc) { + this.value = value; + this.desc = desc; + } + + @JsonCreator + public static PublishIdentityTypeEnum get(Object code) { + for (PublishIdentityTypeEnum e : PublishIdentityTypeEnum.values()) { + if (e.getValue().equals(code)) { + return e; + } + } + return null; + } +} diff --git a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/entity/MarriageBountyOrder.java b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/entity/MarriageBountyOrder.java index 1a59150..be1e5f9 100644 --- a/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/entity/MarriageBountyOrder.java +++ b/dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/entity/MarriageBountyOrder.java @@ -4,9 +4,7 @@ import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.annotation.TableName; import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrderProductRecord; import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrderRel; -import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderPaymentStatusEnum; -import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderStatusEnum; -import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderType; +import com.qniao.dam.domian.aggregate.marriagebount.constant.*; import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; import com.qniao.domain.Entity; import io.swagger.annotations.ApiModelProperty; @@ -29,6 +27,12 @@ public class MarriageBountyOrder extends Entity { @ApiModelProperty("征婚资料标识") private Long miId; + @ApiModelProperty("悬赏招亲版本") + private MarriageBountyOrderVersion version; + + @ApiModelProperty("悬赏招亲发布者类型") + private PublishIdentityTypeEnum publishType; + @ApiModelProperty("悬赏招亲类型") private MarriageBountyOrderType type; 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 4b2f191..0dcdcde 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 @@ -7,6 +7,7 @@ import com.qniao.dam.application.service.order.OrderApplicationService; import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrder; import com.qniao.dam.domain.aggregate.order.entity.Order; import com.qniao.dam.domain.aggregate.product.entity.Product; +import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderVersion; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.*; @@ -50,6 +51,8 @@ public class OrderUserCommandController { List productList = dto.trans2Product(); productList.forEach(product -> product.setUserId(userId)); MarriageBountyOrder marriageBountyOrder = dto.trans2MarriageBountyOrder(); + //不存在过程费用,只有一个金额, 版本1因运营问题需要考虑不再支持更改版本1金额 + marriageBountyOrder.setVersion(MarriageBountyOrderVersion.V2); marriageBountyOrder.setUserId(userId); return orderApplicationService.submitMarriageBountyOrder(order, productList, marriageBountyOrder, dto.getMeetingQuantity()); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserSubmitMarriageBountyOrderDto.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserSubmitMarriageBountyOrderDto.java index 12018dc..08e5ddc 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserSubmitMarriageBountyOrderDto.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserSubmitMarriageBountyOrderDto.java @@ -5,6 +5,7 @@ import com.qniao.dam.domain.aggregate.order.entity.Order; import com.qniao.dam.domain.aggregate.product.entity.Product; import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec; import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderType; +import com.qniao.dam.domian.aggregate.marriagebount.constant.PublishIdentityTypeEnum; import com.qniao.dam.domian.aggregate.product.constant.ProductMainCategoryEnum; import com.qniao.dam.domian.aggregate.product.constant.ProductStatusEnum; import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; @@ -30,19 +31,21 @@ public class UserSubmitMarriageBountyOrderDto implements Trans2DomainAssembler trans2Product() { List list = new ArrayList<>(); //见面费用 - Product meetingFeeProduct = new Product(); - meetingFeeProduct.setMiId(miId); - meetingFeeProduct.setManageEnable(false); - meetingFeeProduct.setProductType(ProductTypeEnum.CUSTOMER_VIRTUAL); - meetingFeeProduct.setMainCategory(ProductMainCategoryEnum.MARRIAGE_BOUNTY); - meetingFeeProduct.setSubCategory(ProductSubCategoryEnum.MARRIAGE_BOUNTY_MEETING_FEE); - meetingFeeProduct.setProductTitle(ProductSubCategoryEnum.MARRIAGE_BOUNTY_MEETING_FEE.getDesc()); - meetingFeeProduct.setStatus(ProductStatusEnum.SOLD_OUTED); - ProductSpec meetingFeeProductSpec = new ProductSpec(); - meetingFeeProductSpec.setUnitOriginalPrice(meetingFee); - meetingFeeProductSpec.setUnitSellingPrice(meetingFee); - meetingFeeProductSpec.setAvailableStockNumber(-1); - meetingFeeProduct.setProductSpecList(Collections.singletonList(meetingFeeProductSpec)); - list.add(meetingFeeProduct); + if (Objects.nonNull(meetingFee) + && meetingFee.compareTo(BigDecimal.ZERO) > 0 + && MarriageBountyOrderType.MEETING.equals(type) + && meetingQuantity > 0) { + Product meetingFeeProduct = new Product(); + meetingFeeProduct.setMiId(miId); + meetingFeeProduct.setManageEnable(false); + meetingFeeProduct.setProductType(ProductTypeEnum.CUSTOMER_VIRTUAL); + meetingFeeProduct.setMainCategory(ProductMainCategoryEnum.MARRIAGE_BOUNTY); + meetingFeeProduct.setSubCategory(ProductSubCategoryEnum.MARRIAGE_BOUNTY_MEETING_FEE); + meetingFeeProduct.setProductTitle(ProductSubCategoryEnum.MARRIAGE_BOUNTY_MEETING_FEE.getDesc()); + meetingFeeProduct.setStatus(ProductStatusEnum.SOLD_OUTED); + ProductSpec meetingFeeProductSpec = new ProductSpec(); + meetingFeeProductSpec.setUnitOriginalPrice(meetingFee); + meetingFeeProductSpec.setUnitSellingPrice(meetingFee); + meetingFeeProductSpec.setAvailableStockNumber(-1); + meetingFeeProduct.setProductSpecList(Collections.singletonList(meetingFeeProductSpec)); + list.add(meetingFeeProduct); + } //结果礼金 if (Objects.nonNull(resultGift) && !MarriageBountyOrderType.MEETING.equals(type)) { Product resultGiftProduct = new Product(); 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 4236739..521e1ab 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 @@ -22,6 +22,7 @@ import com.qniao.dam.domain.service.order.SubmitOrderDomainService; import com.qniao.dam.domain.service.order.SubmitSiteActivityOrderDomainService; import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderPaymentStatusEnum; import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderStatusEnum; +import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderVersion; import com.qniao.dam.domian.aggregate.order.constant.OrderBelongingEnum; import com.qniao.dam.domian.aggregate.order.constant.OrderTypeEnum; import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; @@ -245,6 +246,10 @@ public class OrderApplicationService extends BaseApplicationService { } order.setOrderItemList(orderItemList); } else { + //修改招亲榜价格 + if (MarriageBountyOrderVersion.V1.equals(marriageBountyOrder.getVersion())) { + throw new BizException("该悬赏榜单暂不支持修改"); + } List orderRewardList = marriageBountyOrder.getOrderRewardList(); List orderItemList = new ArrayList<>(); for (Product product : productList) {