Browse Source

悬赏招亲

master
张彭杰 1 year ago
parent
commit
0425165797
6 changed files with 119 additions and 21 deletions
  1. 36
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/marriagebount/constant/MarriageBountyOrderVersion.java
  2. 36
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/marriagebount/constant/PublishIdentityTypeEnum.java
  3. 10
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/entity/MarriageBountyOrder.java
  4. 3
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/OrderUserCommandController.java
  5. 50
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/order/user/request/UserSubmitMarriageBountyOrderDto.java
  6. 5
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java

36
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;
}
}

36
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;
}
}

10
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<MarriageBountyOrder> {
@ApiModelProperty("征婚资料标识")
private Long miId;
@ApiModelProperty("悬赏招亲版本")
private MarriageBountyOrderVersion version;
@ApiModelProperty("悬赏招亲发布者类型")
private PublishIdentityTypeEnum publishType;
@ApiModelProperty("悬赏招亲类型")
private MarriageBountyOrderType type;

3
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<Product> 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());
}

50
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<O
@NotNull(message = "征婚资料标识不能为空")
private Long miId;
@ApiModelProperty("悬赏招亲发布者类型")
private PublishIdentityTypeEnum publishType;
@ApiModelProperty("悬赏招亲类型")
@NotNull(message = "悬赏招亲类型不能为空")
private MarriageBountyOrderType type;
@ApiModelProperty("见面费用")
@NotNull(message = "见面费用不能为空")
@DecimalMin(value = "0.01", message = "见面费用不等低于0.01元")
@DecimalMin(value = "0", message = "见面费用不等低于0元")
private BigDecimal meetingFee;
@ApiModelProperty("可见面费用次数")
@Max(value = 5, message = "可见面次数最多5次")
@Min(value = 1, message = "可见面次数最少1次")
private Integer meetingQuantity = 5;
@Min(value = 0, message = "可见面次数最少0次")
private Integer meetingQuantity = 0;
@ApiModelProperty("结果礼金")
@DecimalMin(value = "0", message = "结果礼金不等低于0元")
@ -59,26 +62,37 @@ public class UserSubmitMarriageBountyOrderDto implements Trans2DomainAssembler<O
MarriageBountyOrder marriageBountyOrder = new MarriageBountyOrder();
marriageBountyOrder.setMiId(miId);
marriageBountyOrder.setType(type);
if (Objects.isNull(publishType)) {
//默认嘉宾自己发布
marriageBountyOrder.setPublishType(PublishIdentityTypeEnum.GUEST);
} else {
marriageBountyOrder.setPublishType(publishType);
}
return marriageBountyOrder;
}
public List<Product> trans2Product() {
List<Product> 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();

5
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<MarriageBountyOrderReward> orderRewardList = marriageBountyOrder.getOrderRewardList();
List<OrderItem> orderItemList = new ArrayList<>();
for (Product product : productList) {

Loading…
Cancel
Save