Browse Source

基础配置

master
张彭杰 1 year ago
parent
commit
d4656554d2
5 changed files with 88 additions and 19 deletions
  1. 36
      dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/externalorder/constant/ExternalOrderTypeEnum.java
  2. 7
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/externalorder/valueobj/ExternalOrderRel.java
  3. 39
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java
  4. 5
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/service/order/SubmitSiteActivityOrderDomainService.java
  5. 20
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/ActivityRepositoryImpl.java

36
dating-agency-mall-constant/src/main/java/com/qniao/dam/domian/aggregate/externalorder/constant/ExternalOrderTypeEnum.java

@ -0,0 +1,36 @@
package com.qniao.dam.domian.aggregate.externalorder.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 ExternalOrderTypeEnum {
VIP_PRODUCT(1, "vip套餐"),
SITE_ACTIVITY(2, "线下活动");
@EnumValue
@JsonValue
private final Integer value;
private final String desc;
ExternalOrderTypeEnum(Integer value, String desc) {
this.value = value;
this.desc = desc;
}
@JsonCreator
public static ExternalOrderTypeEnum get(Object code) {
for (ExternalOrderTypeEnum e : ExternalOrderTypeEnum.values()) {
if (e.getValue().equals(code)) {
return e;
}
}
return null;
}
}

7
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/externalorder/valueobj/ExternalOrderRel.java

@ -1,6 +1,7 @@
package com.qniao.dam.domain.aggregate.externalorder.valueobj;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qniao.dam.domian.aggregate.externalorder.constant.ExternalOrderTypeEnum;
import com.qniao.domain.ValueObject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ -17,10 +18,14 @@ public class ExternalOrderRel extends ValueObject<ExternalOrderRel> {
@ApiModelProperty("订单标识")
private Long orderId;
public static ExternalOrderRel build(Long externalId, Long orderId) {
@ApiModelProperty("类型")
private ExternalOrderTypeEnum type;
public static ExternalOrderRel build(Long externalId, Long orderId, ExternalOrderTypeEnum type) {
ExternalOrderRel rel = new ExternalOrderRel();
rel.setExternalId(externalId);
rel.setOrderId(orderId);
rel.setType(type);
return rel;
}
}

39
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/order/OrderApplicationService.java

@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.qniao.dam.api.command.order.user.request.UserSubmitSiteActivityOrderDto;
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;
import com.qniao.dam.domain.aggregate.activity.entity.ActivityProduct;
import com.qniao.dam.domain.aggregate.activity.repository.ActivityRepository;
import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrder;
import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrderReward;
import com.qniao.dam.domain.aggregate.order.entity.Order;
@ -77,6 +79,8 @@ public class OrderApplicationService {
@Resource
private SiteActivityDao siteActivityDao;
@Resource
private ActivityRepository activityRepository;
@Resource
private RightQueryService rightQueryService;
@Value("${marriage_bounty_meeting_quantity:5}")
@ -264,27 +268,44 @@ public class OrderApplicationService {
MarriageInformation marriageInformation = marriageInformationDao.selectById(dto.getMiId());
Product product = productQueryService.querySiteActivityBy(dto.getSiteActivityId(), marriageInformation.getGenderCode());
SiteActivity siteActivity = siteActivityDao.selectById(dto.getSiteActivityId());
Order order = Order.build(userId, dto.getMiId(), OrderBelongingEnum.CUSTOMER, marriageInformation.getNickName(), OrderTypeEnum.NORMAL);
Order order = null;
PaymentOrder paymentOrder = null;
if (dto.getOpenVip()) {
//开通会员送活动
order = new Order();
order.setUserId(userId);
order.setMiId(dto.getMiId());
order.setActivityId(siteActivity.getVpiActivityId());
order.setGroupType(1);
Activity activity = activityRepository.load(siteActivity.getVpiActivityId());
List<OrderItem> orderItemList = new ArrayList<>();
activity.getActivityProductList().forEach(activityProduct -> {
OrderItem orderItem = new OrderItem();
orderItem.setProductSpecId(activityProduct.getProductSpecId());
orderItem.setQuantity(1);
orderItemList.add(orderItem);
});
order.setOrderItemList(orderItemList);
//1. 填充订单信息 + 同类型权益不同规格限制购买和提醒
fillOrderInfo(order);
} else {
//是否vip
boolean vip = rightQueryService.checkUserVipRight(userId, dto.getMiId()).getVip();
//报名参加活动
order = Order.build(userId, dto.getMiId(), OrderBelongingEnum.CUSTOMER, marriageInformation.getNickName(), OrderTypeEnum.NORMAL);
ProductSpec productSpec = product.getProductSpecList().get(0);
OrderItem orderItem = OrderItem.build(productSpec.getProductId(), productSpec.getId(), product.getProductType(), product.getMainCategory(), product.getSubCategory(),
product.getProductTitle(), siteActivity.calculateFee(GenderEnum.get(marriageInformation.getGenderCode()), vip), 1);
order.setOrderItemList(Collections.singletonList(orderItem));
//2. 订单金额计算
countOrderAmount(order);
//3. 设置订单号
order.setOrderCode(snowFlakeUtil.getSnowflakeOrderCode());
//4. 组织付款单信息
paymentOrder = makePaymentOrder(order);
submitSiteActivityOrderDomainService.handle(order, paymentOrder, dto.getSiteActivityId());
}
//2. 订单金额计算
countOrderAmount(order);
//3. 设置订单号
order.setOrderCode(snowFlakeUtil.getSnowflakeOrderCode());
//4. 组织付款单信息
paymentOrder = makePaymentOrder(order);
submitOrderDomainService.handle(order, paymentOrder);
submitSiteActivityOrderDomainService.handle(order, paymentOrder, dto.getSiteActivityId(), dto.getOpenVip());
return new UserSubmitOrderVo(order.getId(), paymentOrder.getId());
}
}

5
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/service/order/SubmitSiteActivityOrderDomainService.java

@ -5,6 +5,7 @@ import com.qniao.dam.domain.aggregate.order.OrderAggregate;
import com.qniao.dam.domain.aggregate.order.entity.Order;
import com.qniao.dam.domain.aggregate.paymentorder.PaymentOrderAggregate;
import com.qniao.dam.domain.aggregate.paymentorder.entity.PaymentOrder;
import com.qniao.dam.domian.aggregate.externalorder.constant.ExternalOrderTypeEnum;
import com.qniao.dam.infrastructure.persistent.dao.domain.ExternalOrderRelDao;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -22,11 +23,11 @@ public class SubmitSiteActivityOrderDomainService {
private ExternalOrderRelDao externalOrderRelDao;
@Transactional(rollbackFor = Exception.class)
public void handle(Order order, PaymentOrder paymentOrder, Long siteActivityId) {
public void handle(Order order, PaymentOrder paymentOrder, Long siteActivityId, Boolean openVip) {
orderAggregate.submit(order);
paymentOrder.setOrderId(order.getId());
paymentOrderAggregate.create(paymentOrder);
ExternalOrderRel externalOrderRel = ExternalOrderRel.build(siteActivityId, order.getId());
ExternalOrderRel externalOrderRel = ExternalOrderRel.build(siteActivityId, order.getId(), openVip ? ExternalOrderTypeEnum.VIP_PRODUCT : ExternalOrderTypeEnum.SITE_ACTIVITY);
externalOrderRelDao.insert(externalOrderRel);
}
}

20
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/ActivityRepositoryImpl.java

@ -1,5 +1,6 @@
package com.qniao.dam.infrastructure.persistent.repository.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.qniao.dam.domain.aggregate.activity.entity.Activity;
import com.qniao.dam.domain.aggregate.activity.entity.ActivityProduct;
@ -11,6 +12,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Objects;
@Service
@Slf4j
@ -28,25 +30,29 @@ public class ActivityRepositoryImpl implements ActivityRepository {
@Override
public Activity load(Long id) {
Activity activity = activityDao.selectById(id);
if (Objects.nonNull(activity)) {
activity.setActivityProductList(activityProductDao.selectList(new LambdaQueryWrapper<ActivityProduct>()
.eq(ActivityProduct::getActivityId,id)));
}
return activity;
}
@Override
public Long save(Activity entity) {
if(entity.getId() == null){
if (entity.getId() == null) {
entity.setId(snowFlake.nextId());
activityDao.insert(entity);
if(entity.getActivityProductList() != null){
entity.getActivityProductList().forEach(e->{
if (entity.getActivityProductList() != null) {
entity.getActivityProductList().forEach(e -> {
e.setActivityId(entity.getId());
activityProductDao.insert(e);
});
}
}else{
} else {
activityDao.updateById(entity);
activityProductDao.delete(Wrappers.lambdaUpdate(new ActivityProduct()).eq(ActivityProduct::getActivityId,entity.getId()));
if(entity.getActivityProductList() != null){
entity.getActivityProductList().forEach(e->{
activityProductDao.delete(Wrappers.lambdaUpdate(new ActivityProduct()).eq(ActivityProduct::getActivityId, entity.getId()));
if (entity.getActivityProductList() != null) {
entity.getActivityProductList().forEach(e -> {
e.setActivityId(entity.getId());
activityProductDao.insert(e);
});

Loading…
Cancel
Save