Browse Source

基础配置

release
张彭杰 1 year ago
parent
commit
b2cfe0f001
14 changed files with 219 additions and 11 deletions
  1. 14
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/entity/MarriageBountyOrder.java
  2. 13
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/entity/MarriageBountyOrderReward.java
  3. 3
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderProductRecord.java
  4. 7
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderProductSpecRecord.java
  5. 5
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderRel.java
  6. 17
      dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/marriagebounty/event/MarriageBountyOrderCreatedEvent.java
  7. 5
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java
  8. 4
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/MarriageBountyOrderAggregate.java
  9. 89
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/MarriageBountyOrderApplicationService.java
  10. 25
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/MarriageBountyOrderAggregate.java
  11. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/repository/MarriageBountyOrderRepository.java
  12. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/MarriageBountyOrderRepositoryImpl.java
  13. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/marriagebounty/MarriageBountyOrderQueryService.java
  14. 37
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/marriagebounty/impl/MarriageBountyOrderQueryServiceImpl.java

14
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/entity/MarriageBountyOrder.java

@ -9,6 +9,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.ArrayList;
import java.util.List; import java.util.List;
@Data @Data
@ -33,7 +34,14 @@ public class MarriageBountyOrder extends Entity<MarriageBountyOrder> {
@ApiModelProperty("悬赏招亲订单奖励") @ApiModelProperty("悬赏招亲订单奖励")
private transient List<MarriageBountyOrderReward> orderRewardList; private transient List<MarriageBountyOrderReward> orderRewardList;
private transient List<MarriageBountyOrderReward> insertOrderRewardList;
private transient List<MarriageBountyOrderReward> updateOrderRewardList;
private transient List<MarriageBountyOrderReward> deleteOrderRewardList;
private transient List<MarriageBountyOrderReward> insertOrderRewardList = new ArrayList<>();
private transient List<MarriageBountyOrderReward> updateOrderRewardList = new ArrayList<>();
private transient List<MarriageBountyOrderReward> deleteOrderRewardList = new ArrayList<>();
public static MarriageBountyOrder build(Long userId, Long miId) {
MarriageBountyOrder marriageBountyOrder = new MarriageBountyOrder();
marriageBountyOrder.setUserId(userId);
marriageBountyOrder.setMiId(miId);
return marriageBountyOrder;
}
} }

13
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/entity/MarriageBountyOrderReward.java

@ -10,6 +10,8 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List; import java.util.List;
@Data @Data
@ -32,4 +34,15 @@ public class MarriageBountyOrderReward extends Entity<MarriageBountyOrderReward>
@ApiModelProperty("悬赏招亲订单奖励领取记录") @ApiModelProperty("悬赏招亲订单奖励领取记录")
private transient List<MarriageBountyOrderRewardReceiveRecord> rewardReceiveRecordList; private transient List<MarriageBountyOrderRewardReceiveRecord> rewardReceiveRecordList;
public static Collection<? extends MarriageBountyOrderReward> build(ProductSubCategoryEnum rewardCategory, BigDecimal rewardAmount, int quantity) {
List<MarriageBountyOrderReward> orderRewardList = new ArrayList<>();
for (int i = 0; i < quantity; i++) {
MarriageBountyOrderReward orderReward = new MarriageBountyOrderReward();
orderReward.setRewardCategory(rewardCategory);
orderReward.setRewardAmount(rewardAmount);
orderReward.setIsReceive(false);
orderRewardList.add(orderReward);
}
return orderRewardList;
}
} }

3
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderProductRecord.java

@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.util.ArrayList;
import java.util.List; import java.util.List;
@Data @Data
@ -17,6 +18,6 @@ public class MarriageBountyOrderProductRecord extends ValueObject<MarriageBounty
private Long marriageBountyOrderId; private Long marriageBountyOrderId;
@ApiModelProperty("悬赏招亲订单产品规格记录") @ApiModelProperty("悬赏招亲订单产品规格记录")
private transient List<MarriageBountyOrderProductSpecRecord> productSpecRecordList;
private transient List<MarriageBountyOrderProductSpecRecord> productSpecRecordList = new ArrayList<>();
} }

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

@ -26,4 +26,11 @@ public class MarriageBountyOrderProductSpecRecord extends ValueObject<MarriageBo
@ApiModelProperty("售价") @ApiModelProperty("售价")
private BigDecimal unitSellingPrice; private BigDecimal unitSellingPrice;
public static MarriageBountyOrderProductSpecRecord build(ProductSubCategoryEnum subCategory, BigDecimal unitOriginalPrice, BigDecimal unitSellingPrice) {
MarriageBountyOrderProductSpecRecord productSpecRecord = new MarriageBountyOrderProductSpecRecord();
productSpecRecord.setSubCategory(subCategory);
productSpecRecord.setUnitOriginalPrice(unitOriginalPrice);
productSpecRecord.setUnitSellingPrice(unitSellingPrice);
return productSpecRecord;
}
} }

5
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderRel.java

@ -17,4 +17,9 @@ public class MarriageBountyOrderRel extends ValueObject<MarriageBountyOrderRel>
@ApiModelProperty("订单标识") @ApiModelProperty("订单标识")
private Long orderId; private Long orderId;
public static MarriageBountyOrderRel build(Long orderId) {
MarriageBountyOrderRel orderRel = new MarriageBountyOrderRel();
orderRel.setOrderId(orderId);
return orderRel;
}
} }

17
dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/marriagebounty/event/MarriageBountyOrderCreatedEvent.java

@ -0,0 +1,17 @@
package com.qniao.dam.domian.aggregate.marriagebounty.event;
import com.qniao.domain.BaseDomainEvent;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class MarriageBountyOrderCreatedEvent extends BaseDomainEvent {
private Long id;
}

5
dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java

@ -2,6 +2,7 @@ package com.qniao.dam.application.handler.order;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import com.qniao.dam.application.service.marriagebounty.MarriageBountyOrderApplicationService;
import com.qniao.dam.application.service.right.RightApplicationService; import com.qniao.dam.application.service.right.RightApplicationService;
import com.qniao.dam.domain.aggregate.order.entity.Order; import com.qniao.dam.domain.aggregate.order.entity.Order;
import com.qniao.dam.domain.aggregate.order.entity.OrderItem; import com.qniao.dam.domain.aggregate.order.entity.OrderItem;
@ -43,6 +44,8 @@ public class OrderEventHandler extends BaseApplicationService {
private RightAggregate rightAggregate; private RightAggregate rightAggregate;
@Resource @Resource
private UecServerApplicationService uecServerApplicationService; private UecServerApplicationService uecServerApplicationService;
@Resource
private MarriageBountyOrderApplicationService marriageBountyOrderApplicationService;
/** /**
* 订单已完成事件 -> 兑换权益 * 订单已完成事件 -> 兑换权益
@ -74,7 +77,7 @@ public class OrderEventHandler extends BaseApplicationService {
} }
//悬赏招亲 //悬赏招亲
if (OrderTypeEnum.MARRIAGE_BOUNTY.equals(order.getOrderType())) { if (OrderTypeEnum.MARRIAGE_BOUNTY.equals(order.getOrderType())) {
//todo
marriageBountyOrderApplicationService.save(order.getId());
} }
} catch (Exception e) { } catch (Exception e) {
log.error("订单已完成事件处理异常"); log.error("订单已完成事件处理异常");

4
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/MarriageBountyOrderAggregate.java

@ -1,4 +0,0 @@
package com.qniao.dam.application.service.marriagebounty;
public class MarriageBountyOrderAggregate {
}

89
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/MarriageBountyOrderApplicationService.java

@ -0,0 +1,89 @@
package com.qniao.dam.application.service.marriagebounty;
import com.qniao.dam.domain.aggregate.marriagebounty.MarriageBountyOrderAggregate;
import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrder;
import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrderReward;
import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrderProductRecord;
import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrderProductSpecRecord;
import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrderRel;
import com.qniao.dam.domain.aggregate.order.entity.Order;
import com.qniao.dam.domain.aggregate.order.repository.OrderRepository;
import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec;
import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum;
import com.qniao.dam.infrastructure.persistent.dao.domain.ProductSpecDao;
import com.qniao.dam.query.marriagebounty.MarriageBountyOrderQueryService;
import com.qniao.domain.BaseApplicationService;
import com.qniao.domain.BaseDomainEvent;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*;
@Service
public class MarriageBountyOrderApplicationService extends BaseApplicationService {
@Resource
private OrderRepository orderRepository;
@Resource
private MarriageBountyOrderQueryService marriageBountyOrderQueryService;
@Resource
private ProductSpecDao productSpecDao;
@Resource
private MarriageBountyOrderAggregate marriageBountyOrderAggregate;
public void save(Long orderId) {
Order order = orderRepository.load(orderId);
MarriageBountyOrder marriageBountyOrder = marriageBountyOrderQueryService.queryBy(order.getUserId(), order.getMiId());
if (Objects.isNull(marriageBountyOrder)) {
//新的悬赏招亲
marriageBountyOrder = MarriageBountyOrder.build(order.getUserId(), order.getMiId());
//订单关系
MarriageBountyOrderRel orderRel = MarriageBountyOrderRel.build(orderId);
marriageBountyOrder.setOrderRelList(Collections.singletonList(orderRel));
//悬赏招亲订单奖励
List<MarriageBountyOrderReward> orderRewardList = new ArrayList<>();
//悬赏招亲订单产品记录
MarriageBountyOrderProductRecord productRecord = new MarriageBountyOrderProductRecord();
order.getOrderItemList().forEach(orderItem -> {
ProductSpec productSpec = productSpecDao.selectById(orderItem.getProductSpecId());
productRecord.getProductSpecRecordList().add(MarriageBountyOrderProductSpecRecord.build(
orderItem.getSubCategory(), productSpec.getUnitOriginalPrice(), productSpec.getUnitOriginalPrice()));
if (ProductSubCategoryEnum.MARRIAGE_BOUNTY_MEETING_FEE.equals(orderItem.getSubCategory())) {
orderRewardList.addAll(MarriageBountyOrderReward.build(ProductSubCategoryEnum.MARRIAGE_BOUNTY_MEETING_FEE, orderItem.getUnitSettlementPrice(), orderItem.getQuantity()));
} else if (ProductSubCategoryEnum.MARRIAGE_BOUNTY_RESULT_GIFT.equals(orderItem.getSubCategory())) {
orderRewardList.addAll(MarriageBountyOrderReward.build(ProductSubCategoryEnum.MARRIAGE_BOUNTY_RESULT_GIFT, orderItem.getUnitSettlementPrice(), orderItem.getQuantity()));
}
});
marriageBountyOrder.setProductRecordList(Collections.singletonList(productRecord));
marriageBountyOrder.setOrderRewardList(orderRewardList);
marriageBountyOrder.setInsertOrderRewardList(orderRewardList);
BaseDomainEvent event = marriageBountyOrderAggregate.create(marriageBountyOrder);
this.sendEvent(event);
} else {
//修改悬赏招亲订单
Map<Integer, BigDecimal> rewardCategoryPriceMap = new HashMap<>();
//订单关系
MarriageBountyOrderRel orderRel = MarriageBountyOrderRel.build(orderId);
marriageBountyOrder.setOrderRelList(Collections.singletonList(orderRel));
//悬赏招亲订单产品记录
MarriageBountyOrderProductRecord productRecord = new MarriageBountyOrderProductRecord();
order.getOrderItemList().forEach(orderItem -> {
ProductSpec productSpec = productSpecDao.selectById(orderItem.getProductSpecId());
productRecord.getProductSpecRecordList().add(MarriageBountyOrderProductSpecRecord.build(
orderItem.getSubCategory(), productSpec.getUnitOriginalPrice(), productSpec.getUnitOriginalPrice()));
rewardCategoryPriceMap.put(orderItem.getSubCategory().getValue(), orderItem.getUnitSettlementPrice());
});
marriageBountyOrder.setProductRecordList(Collections.singletonList(productRecord));
//悬赏招亲订单奖励
for (MarriageBountyOrderReward orderReward : marriageBountyOrder.getOrderRewardList()) {
if (!orderReward.getIsReceive()) {
BigDecimal addPrice = rewardCategoryPriceMap.get(orderReward.getRewardCategory().getValue());
addPrice = Objects.nonNull(addPrice) ? addPrice : BigDecimal.ZERO;
orderReward.setRewardAmount(orderReward.getRewardAmount().add(addPrice));
marriageBountyOrder.getUpdateOrderRewardList().add(orderReward);
}
}
marriageBountyOrderAggregate.update(marriageBountyOrder);
}
}
}

25
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/MarriageBountyOrderAggregate.java

@ -0,0 +1,25 @@
package com.qniao.dam.domain.aggregate.marriagebounty;
import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrder;
import com.qniao.dam.domain.aggregate.marriagebounty.repository.MarriageBountyOrderRepository;
import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderStatusEnum;
import com.qniao.dam.domian.aggregate.marriagebounty.event.MarriageBountyOrderCreatedEvent;
import com.qniao.domain.BaseDomainEvent;
import javax.annotation.Resource;
public class MarriageBountyOrderAggregate {
@Resource
private MarriageBountyOrderRepository marriageBountyOrderRepository;
public BaseDomainEvent create(MarriageBountyOrder marriageBountyOrder) {
marriageBountyOrder.setStatus(MarriageBountyOrderStatusEnum.MATCHMAKING);
marriageBountyOrderRepository.save(marriageBountyOrder);
return new MarriageBountyOrderCreatedEvent(marriageBountyOrder.getId());
}
public void update(MarriageBountyOrder marriageBountyOrder) {
marriageBountyOrderRepository.save(marriageBountyOrder);
}
}

dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/repository/MarriageBountyOrderRepository.java → dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/repository/MarriageBountyOrderRepository.java

@ -1,4 +1,4 @@
package com.qniao.dam.application.service.marriagebounty.repository;
package com.qniao.dam.domain.aggregate.marriagebounty.repository;
import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrder; import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrder;
import com.qniao.domain.Repository; import com.qniao.domain.Repository;

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

@ -2,7 +2,7 @@ package com.qniao.dam.infrastructure.persistent.repository.impl;
import cn.hutool.core.collection.CollUtil; import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qniao.dam.application.service.marriagebounty.repository.MarriageBountyOrderRepository;
import com.qniao.dam.domain.aggregate.marriagebounty.repository.MarriageBountyOrderRepository;
import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrder; import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrder;
import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrderReward; import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrderReward;
import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrderProductRecord; import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrderProductRecord;

7
dating-agency-mall-server/src/main/java/com/qniao/dam/query/marriagebounty/MarriageBountyOrderQueryService.java

@ -0,0 +1,7 @@
package com.qniao.dam.query.marriagebounty;
import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrder;
public interface MarriageBountyOrderQueryService {
MarriageBountyOrder queryBy(Long userId, Long miId);
}

37
dating-agency-mall-server/src/main/java/com/qniao/dam/query/marriagebounty/impl/MarriageBountyOrderQueryServiceImpl.java

@ -0,0 +1,37 @@
package com.qniao.dam.query.marriagebounty.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrder;
import com.qniao.dam.domain.aggregate.marriagebounty.entity.MarriageBountyOrderReward;
import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderStatusEnum;
import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageBountyOrderDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageBountyOrderRewardDao;
import com.qniao.dam.query.marriagebounty.MarriageBountyOrderQueryService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Objects;
@Service
public class MarriageBountyOrderQueryServiceImpl implements MarriageBountyOrderQueryService {
@Resource
private MarriageBountyOrderDao marriageBountyOrderDao;
@Resource
private MarriageBountyOrderRewardDao marriageBountyOrderRewardDao;
@Override
public MarriageBountyOrder queryBy(Long userId, Long miId) {
MarriageBountyOrder marriageBountyOrder = marriageBountyOrderDao.selectOne(new LambdaQueryWrapper<MarriageBountyOrder>()
.eq(MarriageBountyOrder::getUserId, userId)
.eq(MarriageBountyOrder::getMiId, miId)
.eq(MarriageBountyOrder::getStatus, MarriageBountyOrderStatusEnum.MATCHMAKING)
.orderByDesc(MarriageBountyOrder::getCreateTime)
.last("limit 1"));
if (Objects.nonNull(marriageBountyOrder)) {
marriageBountyOrder.setOrderRewardList(marriageBountyOrderRewardDao.selectList(new LambdaQueryWrapper<MarriageBountyOrderReward>()
.eq(MarriageBountyOrderReward::getMarriageBountyOrderId, marriageBountyOrder.getId())));
}
return marriageBountyOrder;
}
}
Loading…
Cancel
Save