Browse Source

基础配置

release
张彭杰 1 year ago
parent
commit
14200c6dd5
26 changed files with 431 additions and 150 deletions
  1. 8
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/valueobj/MarriageBountyOrderRel.java
  2. 29
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/revenuereward/entity/RevenueReward.java
  3. 32
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/revenuereward/valueobj/RevenueRewardAssociateOrderRecord.java
  4. 61
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/revenuereward/valueobj/RevenueRewardRecord.java
  5. 33
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/walletaccount/valueobj/WalletAccountAssociateOrderRecord.java
  6. 26
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/walletaccount/valueobj/WalletAccountRecord.java
  7. 3
      dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/marriagebounty/event/MarriageBountyOrderConfirmedMatchEvent.java
  8. 3
      dating-agency-mall-event/src/main/java/com/qniao/dam/domian/aggregate/marriagebounty/event/MarriageBountyOrderConfirmedMeetingEvent.java
  9. 3
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/reward/user/request/AcquireMatchmakerConfirmMatchRewardDto.java
  10. 3
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/reward/user/request/AcquireMatchmakerConfirmMeetingRewardDto.java
  11. 15
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/marriagebounty/MarriageBountyOrderApplicationService.java
  12. 163
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java
  13. 23
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/marriagebounty/MarriageBountyOrderAggregate.java
  14. 18
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/revenuereward/RevenueRewardAggregate.java
  15. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/revenuereward/repository/RevenueRewardRepository.java
  16. 25
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/service/revenuereward/AcquireRevenueRewardDomainService.java
  17. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/RevenueRewardAssociateOrderRecordDao.java
  18. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/RevenueRewardDao.java
  19. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/RevenueRewardRecordDao.java
  20. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/WalletAccountAssociateOrderRecordDao.java
  21. 53
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/RevenueRewardRepositoryImpl.java
  22. 11
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/repository/impl/WalletAccountRepositoryImpl.java
  23. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/marriagebounty/impl/MarriageBountyOrderQueryServiceImpl.java
  24. 5
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/OrderQueryService.java
  25. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/RevenueRewardQueryService.java
  26. 23
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/impl/RevenueRewardQueryServiceImpl.java

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

@ -6,6 +6,8 @@ import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@TableName("da_marriage_bounty_order_rel") @TableName("da_marriage_bounty_order_rel")
@ -17,9 +19,13 @@ public class MarriageBountyOrderRel extends ValueObject<MarriageBountyOrderRel>
@ApiModelProperty("订单标识") @ApiModelProperty("订单标识")
private Long orderId; private Long orderId;
public static MarriageBountyOrderRel build(Long orderId) {
@ApiModelProperty("订单金额")
private BigDecimal orderAmount;
public static MarriageBountyOrderRel build(Long orderId,BigDecimal orderAmount) {
MarriageBountyOrderRel orderRel = new MarriageBountyOrderRel(); MarriageBountyOrderRel orderRel = new MarriageBountyOrderRel();
orderRel.setOrderId(orderId); orderRel.setOrderId(orderId);
orderRel.setOrderAmount(orderAmount);
return orderRel; return orderRel;
} }
} }

29
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/revenuereward/entity/RevenueReward.java

@ -0,0 +1,29 @@
package com.qniao.dam.domain.aggregate.revenuereward.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qniao.dam.domain.aggregate.revenuereward.valueobj.RevenueRewardRecord;
import com.qniao.domain.Entity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("da_revenue_reward")
public class RevenueReward extends Entity<RevenueReward> {
@ApiModelProperty("用户唯一标识")
private Long userId;
@ApiModelProperty("收益记录")
private transient List<RevenueRewardRecord> recordList;
public static RevenueReward init(Long initiatorUserId) {
RevenueReward revenueReward = new RevenueReward();
revenueReward.setUserId(initiatorUserId);
return revenueReward;
}
}

32
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/revenuereward/valueobj/RevenueRewardAssociateOrderRecord.java

@ -0,0 +1,32 @@
package com.qniao.dam.domain.aggregate.revenuereward.valueobj;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qniao.domain.ValueObject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("da_revenue_reward_associate_order_record")
public class RevenueRewardAssociateOrderRecord extends ValueObject<RevenueRewardAssociateOrderRecord> {
@ApiModelProperty("收益记录标识")
private Long revenueRewardRecordId;
@ApiModelProperty("有关联的订单")
private Long associateOrderId;
@ApiModelProperty("有关联的金额")
private BigDecimal associateOrderAmount;
public static RevenueRewardAssociateOrderRecord build(Long associateOrderId,
BigDecimal associateOrderAmount) {
RevenueRewardAssociateOrderRecord record = new RevenueRewardAssociateOrderRecord();
record.setAssociateOrderId(associateOrderId);
record.setAssociateOrderAmount(associateOrderAmount);
return record;
}
}

61
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/revenuereward/valueobj/RevenueRewardRecord.java

@ -0,0 +1,61 @@
package com.qniao.dam.domain.aggregate.revenuereward.valueobj;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum;
import com.qniao.domain.ValueObject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
import java.util.List;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("da_revenue_reward_record")
public class RevenueRewardRecord extends ValueObject<RevenueRewardRecord> {
@ApiModelProperty("收益标识")
private Long revenueRewardId;
@ApiModelProperty("交易类型")
private TradeTypeEnum tradeType;
@ApiModelProperty("营收额")
private BigDecimal revenue;
@ApiModelProperty("收益额 营收额除去平台服务费")
private BigDecimal earnings;
@ApiModelProperty("订单金额")
private BigDecimal totalAssociateOrderAmount;
@ApiModelProperty("内容")
private String content;
private transient List<RevenueRewardAssociateOrderRecord> associateOrderRecordList;
public static RevenueRewardRecord build(TradeTypeEnum tradeType, BigDecimal revenue, BigDecimal earnings, BigDecimal totalAssociateOrderAmount) {
RevenueRewardRecord record = new RevenueRewardRecord();
record.setTradeType(tradeType);
record.setRevenue(revenue);
record.setEarnings(earnings);
record.setTotalAssociateOrderAmount(totalAssociateOrderAmount);
return record;
}
public void handleContent(List<String> elements) {
if (TradeTypeEnum.GUEST_CERTIFICATION_FEE.equals(tradeType)) {
content = StrUtil.format("悬赏成功,认证嘉宾{}", elements.toArray());
} else if (TradeTypeEnum.PUBLISH_MARRIAGE_BOUNTY_FEE.equals(tradeType)) {
content = StrUtil.format("悬赏成功,嘉宾{}发布悬赏", elements.toArray());
} else if (TradeTypeEnum.MATCH_MARRIAGE_BOUNTY_FEE.equals(tradeType)) {
content = StrUtil.format("悬赏成功,匹配嘉宾{}", elements.toArray());
} else if (TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE.equals(tradeType)) {
content = StrUtil.format("推荐红娘{}入驻平台", elements.toArray());
} else if (TradeTypeEnum.MARRIAGE_BOUNTY_MEETING_FEE.equals(tradeType)) {
content = StrUtil.format("推荐嘉宾{}见面", elements.toArray());
}
}
}

33
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/walletaccount/valueobj/WalletAccountAssociateOrderRecord.java

@ -1,33 +0,0 @@
package com.qniao.dam.domain.aggregate.walletaccount.valueobj;
import com.baomidou.mybatisplus.annotation.TableName;
import com.qniao.domain.ValueObject;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("da_wallet_account_associate_order_record")
public class WalletAccountAssociateOrderRecord extends ValueObject<WalletAccountAssociateOrderRecord> {
@ApiModelProperty("钱包记录标识")
private Long walletAccountRecordId;
@ApiModelProperty("有关联的订单")
private Long associateOrderId;
@ApiModelProperty("有关联的金额")
private BigDecimal associateOrderAmount;
public static WalletAccountAssociateOrderRecord build(Long associateOrderId,
BigDecimal associateOrderAmount) {
WalletAccountAssociateOrderRecord associateOrderRecord = new WalletAccountAssociateOrderRecord();
associateOrderRecord.setAssociateOrderId(associateOrderId);
associateOrderRecord.setAssociateOrderAmount(associateOrderAmount);
return associateOrderRecord;
}
}

26
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/walletaccount/valueobj/WalletAccountRecord.java

@ -1,6 +1,5 @@
package com.qniao.dam.domain.aggregate.walletaccount.valueobj; package com.qniao.dam.domain.aggregate.walletaccount.valueobj;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum; import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum;
import com.qniao.domain.ValueObject; import com.qniao.domain.ValueObject;
@ -9,8 +8,6 @@ import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List;
import java.util.Objects;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@ -29,37 +26,16 @@ public class WalletAccountRecord extends ValueObject<WalletAccountRecord> {
@ApiModelProperty("是否收入") @ApiModelProperty("是否收入")
private Boolean isIncome; private Boolean isIncome;
@ApiModelProperty("内容")
private String content;
@ApiModelProperty("备注") @ApiModelProperty("备注")
private String remark; private String remark;
private transient List<WalletAccountAssociateOrderRecord> associateOrderRecordList;
public static WalletAccountRecord build(TradeTypeEnum tradeType, public static WalletAccountRecord build(TradeTypeEnum tradeType,
BigDecimal tradeAmount, BigDecimal tradeAmount,
Boolean isIncome,
String remark) {
Boolean isIncome) {
WalletAccountRecord record = new WalletAccountRecord(); WalletAccountRecord record = new WalletAccountRecord();
record.setTradeType(tradeType); record.setTradeType(tradeType);
record.setTradeAmount(tradeAmount); record.setTradeAmount(tradeAmount);
record.setIsIncome(isIncome); record.setIsIncome(isIncome);
record.setRemark(remark);
return record; return record;
} }
public void handleContent(List<String> elements) {
if (TradeTypeEnum.GUEST_CERTIFICATION_FEE.equals(tradeType)) {
content = StrUtil.format("悬赏成功,认证嘉宾{}", elements.toArray());
} else if (TradeTypeEnum.PUBLISH_MARRIAGE_BOUNTY_FEE.equals(tradeType)) {
content = StrUtil.format("悬赏成功,嘉宾{}发布悬赏", elements.toArray());
} else if (TradeTypeEnum.MATCH_MARRIAGE_BOUNTY_FEE.equals(tradeType)) {
content = StrUtil.format("悬赏成功,匹配嘉宾{}", elements.toArray());
} else if (TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE.equals(tradeType)) {
content = StrUtil.format("推荐红娘{}入驻平台", elements.toArray());
} else if (TradeTypeEnum.MARRIAGE_BOUNTY_MEETING_FEE.equals(tradeType)) {
content = StrUtil.format("推荐嘉宾{}见面", elements.toArray());
}
}
} }

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

@ -36,5 +36,8 @@ public class MarriageBountyOrderConfirmedMatchEvent extends BaseDomainEvent {
@ApiModelProperty("领取金额") @ApiModelProperty("领取金额")
private BigDecimal receivedAmount; private BigDecimal receivedAmount;
@ApiModelProperty("相关订单金额")
private BigDecimal totalAssociateOrderAmount;
} }
} }

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

@ -36,6 +36,9 @@ public class MarriageBountyOrderConfirmedMeetingEvent extends BaseDomainEvent {
@ApiModelProperty("领取金额") @ApiModelProperty("领取金额")
private BigDecimal receivedAmount; private BigDecimal receivedAmount;
@ApiModelProperty("相关订单金额")
private BigDecimal totalAssociateOrderAmount;
} }
} }

3
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/reward/user/request/AcquireMatchmakerConfirmMatchRewardDto.java

@ -22,6 +22,9 @@ public class AcquireMatchmakerConfirmMatchRewardDto {
@ApiModelProperty("领取金额") @ApiModelProperty("领取金额")
private BigDecimal receivedAmount; private BigDecimal receivedAmount;
@ApiModelProperty("相关订单金额")
private BigDecimal totalAssociateOrderAmount;
private List<Long> orderIdRelList; private List<Long> orderIdRelList;
} }

3
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/reward/user/request/AcquireMatchmakerConfirmMeetingRewardDto.java

@ -22,5 +22,8 @@ public class AcquireMatchmakerConfirmMeetingRewardDto {
@ApiModelProperty("领取金额") @ApiModelProperty("领取金额")
private BigDecimal receivedAmount; private BigDecimal receivedAmount;
@ApiModelProperty("相关订单金额")
private BigDecimal totalAssociateOrderAmount;
private List<Long> orderIdRelList; private List<Long> orderIdRelList;
} }

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

@ -26,6 +26,7 @@ import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum;
import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum; import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum;
import com.qniao.dam.infrastructure.persistent.dao.domain.ProductSpecDao; import com.qniao.dam.infrastructure.persistent.dao.domain.ProductSpecDao;
import com.qniao.dam.query.marriagebounty.MarriageBountyOrderQueryService; import com.qniao.dam.query.marriagebounty.MarriageBountyOrderQueryService;
import com.qniao.dam.query.order.OrderQueryService;
import com.qniao.dam.query.paymentchannelorder.PaymentChannelOrderQueryService; import com.qniao.dam.query.paymentchannelorder.PaymentChannelOrderQueryService;
import com.qniao.dam.query.paymentorder.PaymentOrderQueryService; import com.qniao.dam.query.paymentorder.PaymentOrderQueryService;
import com.qniao.dam.query.rewardconfig.RewardConfigQueryService; import com.qniao.dam.query.rewardconfig.RewardConfigQueryService;
@ -59,6 +60,8 @@ public class MarriageBountyOrderApplicationService extends BaseApplicationServic
private PaymentOrderRefundApplicationService paymentOrderRefundApplicationService; private PaymentOrderRefundApplicationService paymentOrderRefundApplicationService;
@Resource @Resource
private RewardConfigQueryService rewardConfigQueryService; private RewardConfigQueryService rewardConfigQueryService;
@Resource
private OrderQueryService orderQueryService;
public void save(Long orderId) { public void save(Long orderId) {
Order order = orderRepository.load(orderId); Order order = orderRepository.load(orderId);
@ -68,7 +71,7 @@ public class MarriageBountyOrderApplicationService extends BaseApplicationServic
//新的悬赏招亲 //新的悬赏招亲
marriageBountyOrder = MarriageBountyOrder.build(order.getUserId(), order.getMiId()); marriageBountyOrder = MarriageBountyOrder.build(order.getUserId(), order.getMiId());
//订单关系 //订单关系
MarriageBountyOrderRel orderRel = MarriageBountyOrderRel.build(orderId);
MarriageBountyOrderRel orderRel = MarriageBountyOrderRel.build(orderId, order.getSettlementAmount());
marriageBountyOrder.setOrderRelList(Collections.singletonList(orderRel)); marriageBountyOrder.setOrderRelList(Collections.singletonList(orderRel));
//悬赏招亲订单奖励 //悬赏招亲订单奖励
List<MarriageBountyOrderReward> orderRewardList = new ArrayList<>(); List<MarriageBountyOrderReward> orderRewardList = new ArrayList<>();
@ -94,7 +97,7 @@ public class MarriageBountyOrderApplicationService extends BaseApplicationServic
//修改悬赏招亲订单 //修改悬赏招亲订单
Map<Integer, BigDecimal> rewardCategoryPriceMap = new HashMap<>(); Map<Integer, BigDecimal> rewardCategoryPriceMap = new HashMap<>();
//订单关系 //订单关系
MarriageBountyOrderRel orderRel = MarriageBountyOrderRel.build(orderId);
MarriageBountyOrderRel orderRel = MarriageBountyOrderRel.build(orderId, order.getSettlementAmount());
marriageBountyOrder.setOrderRelList(Collections.singletonList(orderRel)); marriageBountyOrder.setOrderRelList(Collections.singletonList(orderRel));
//悬赏招亲订单产品记录 //悬赏招亲订单产品记录
MarriageBountyOrderProductRecord productRecord = new MarriageBountyOrderProductRecord(); MarriageBountyOrderProductRecord productRecord = new MarriageBountyOrderProductRecord();
@ -235,7 +238,9 @@ public class MarriageBountyOrderApplicationService extends BaseApplicationServic
} }
marriageBountyOrderReward.setRewardReceiveRecordList(rewardReceiveRecordList); marriageBountyOrderReward.setRewardReceiveRecordList(rewardReceiveRecordList);
marriageBountyOrder.setUpdateOrderRewardList(Collections.singletonList(marriageBountyOrderReward)); marriageBountyOrder.setUpdateOrderRewardList(Collections.singletonList(marriageBountyOrderReward));
BaseDomainEvent event = marriageBountyOrderAggregate.confirmMeeting(marriageBountyOrder, existMarriageBountyOrder.getOrderRelList());
//相关订单金额
BigDecimal totalAssociateOrderAmount = existMarriageBountyOrder.getOrderRelList().stream().map(MarriageBountyOrderRel::getOrderAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
BaseDomainEvent event = marriageBountyOrderAggregate.confirmMeeting(marriageBountyOrder, existMarriageBountyOrder.getOrderRelList(), totalAssociateOrderAmount);
this.sendEvent(event); this.sendEvent(event);
} }
} }
@ -315,7 +320,9 @@ public class MarriageBountyOrderApplicationService extends BaseApplicationServic
} }
marriageBountyOrderReward.setRewardReceiveRecordList(rewardReceiveRecordList); marriageBountyOrderReward.setRewardReceiveRecordList(rewardReceiveRecordList);
marriageBountyOrder.setUpdateOrderRewardList(Collections.singletonList(marriageBountyOrderReward)); marriageBountyOrder.setUpdateOrderRewardList(Collections.singletonList(marriageBountyOrderReward));
BaseDomainEvent event = marriageBountyOrderAggregate.confirmMatch(marriageBountyOrder, existMarriageBountyOrder.getOrderRelList());
//相关订单金额
BigDecimal totalAssociateOrderAmount = existMarriageBountyOrder.getOrderRelList().stream().map(MarriageBountyOrderRel::getOrderAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
BaseDomainEvent event = marriageBountyOrderAggregate.confirmMatch(marriageBountyOrder, existMarriageBountyOrder.getOrderRelList(),totalAssociateOrderAmount);
this.sendEvent(event); this.sendEvent(event);
} }
} }

163
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java

@ -5,24 +5,25 @@ import cn.hutool.core.util.StrUtil;
import com.qniao.dam.api.command.reward.user.request.AcquireMatchmakerConfirmMatchRewardDto; import com.qniao.dam.api.command.reward.user.request.AcquireMatchmakerConfirmMatchRewardDto;
import com.qniao.dam.api.command.reward.user.request.AcquireMatchmakerConfirmMeetingRewardDto; import com.qniao.dam.api.command.reward.user.request.AcquireMatchmakerConfirmMeetingRewardDto;
import com.qniao.dam.api.command.reward.user.request.UserAcquireMatchmakerJoinRecommendRewardDto; import com.qniao.dam.api.command.reward.user.request.UserAcquireMatchmakerJoinRecommendRewardDto;
import com.qniao.dam.domian.aggregate.right.constant.RightTypeEnum;
import com.qniao.dam.domain.aggregate.revenuereward.entity.RevenueReward;
import com.qniao.dam.domain.aggregate.revenuereward.valueobj.RevenueRewardAssociateOrderRecord;
import com.qniao.dam.domain.aggregate.revenuereward.valueobj.RevenueRewardRecord;
import com.qniao.dam.domain.service.revenuereward.AcquireRevenueRewardDomainService;
import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageInformationDao; import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageInformationDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.OrderDao; import com.qniao.dam.infrastructure.persistent.dao.domain.OrderDao;
import com.qniao.dam.query.revenuereward.RevenueRewardQueryService;
import com.qniao.dam.query.walletaccount.WalletAccountQueryService; import com.qniao.dam.query.walletaccount.WalletAccountQueryService;
import com.qniao.dam.domain.aggregate.order.entity.Order; import com.qniao.dam.domain.aggregate.order.entity.Order;
import com.qniao.dam.domain.aggregate.rewardconfig.entity.RewardConfig; import com.qniao.dam.domain.aggregate.rewardconfig.entity.RewardConfig;
import com.qniao.dam.domain.aggregate.walletaccount.WalletAccountAggregate; import com.qniao.dam.domain.aggregate.walletaccount.WalletAccountAggregate;
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount; import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount;
import com.qniao.dam.domain.aggregate.walletaccount.valueobj.WalletAccountAssociateOrderRecord;
import com.qniao.dam.domain.aggregate.walletaccount.valueobj.WalletAccountRecord; import com.qniao.dam.domain.aggregate.walletaccount.valueobj.WalletAccountRecord;
import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum;
import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardAmountUnitEnum;
import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum; import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum;
import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum; import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum;
import com.qniao.dam.query.order.OrderQueryService; import com.qniao.dam.query.order.OrderQueryService;
import com.qniao.dam.query.rewardconfig.RewardConfigQueryService; import com.qniao.dam.query.rewardconfig.RewardConfigQueryService;
import com.qniao.das.domian.aggregate.marriageinformation.MarriageInformation; import com.qniao.das.domian.aggregate.marriageinformation.MarriageInformation;
import com.qniao.das.domian.aggregate.marriageinformation.constant.GenderEnum;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
@ -44,29 +45,47 @@ public class RewardApplicationService {
private MarriageInformationDao marriageInformationDao; private MarriageInformationDao marriageInformationDao;
@Resource @Resource
private OrderDao orderDao; private OrderDao orderDao;
@Resource
private RevenueRewardQueryService revenueRewardQueryService;
@Resource
private AcquireRevenueRewardDomainService acquireRevenueRewardDomainService;
/** /**
* 获得红娘推荐奖励 * 获得红娘推荐奖励
*/ */
public void acquireMatchmakerJoinRecommendReward(UserAcquireMatchmakerJoinRecommendRewardDto dto) { public void acquireMatchmakerJoinRecommendReward(UserAcquireMatchmakerJoinRecommendRewardDto dto) {
synchronized (dto.getInitiatorUserId().toString().intern()) { synchronized (dto.getInitiatorUserId().toString().intern()) {
RewardConfig rewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND);
if (Objects.nonNull(rewardConfig)) {
WalletAccount walletAccount = walletAccountQueryService.queryByUserId(dto.getInitiatorUserId());
RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND);
RewardConfig serviceFeeRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.PLATFORM_SERVICE_FEE);
if (Objects.nonNull(recommendRewardConfig) && Objects.nonNull(serviceFeeRewardConfig)) {
Order associateOrder = orderQueryService.queryBySubCategory(dto.getReceiveUserId(), ProductSubCategoryEnum.MATCHMAKER_FRANCHISE_FEE); Order associateOrder = orderQueryService.queryBySubCategory(dto.getReceiveUserId(), ProductSubCategoryEnum.MATCHMAKER_FRANCHISE_FEE);
//收益信息
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(dto.getInitiatorUserId());
if (Objects.isNull(revenueReward)) {
revenueReward = RevenueReward.init(dto.getInitiatorUserId());
}
//营收额
BigDecimal revenue = recommendRewardConfig.calculate(associateOrder.getSettlementAmount());
//服务费用
BigDecimal serviceFee = serviceFeeRewardConfig.calculate(revenue);
BigDecimal earnings = revenue.subtract(serviceFee);
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE,
revenue, earnings, associateOrder.getSettlementAmount());
revenueRewardRecord.handleContent(Collections.singletonList(StrUtil.isNotBlank(associateOrder.getOrderBelongName()) ? associateOrder.getOrderBelongName() : ""));
RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount());
revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord));
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包信息
WalletAccount walletAccount = walletAccountQueryService.queryByUserId(dto.getInitiatorUserId());
if (Objects.isNull(walletAccount)) { if (Objects.isNull(walletAccount)) {
walletAccount = WalletAccount.init(dto.getInitiatorUserId()); walletAccount = WalletAccount.init(dto.getInitiatorUserId());
} }
BigDecimal rewardAmount = rewardConfig.calculate(associateOrder.getSettlementAmount());
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(rewardAmount));
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(earnings));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE,
rewardAmount, true, TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE.getDesc());
record.handleContent(Collections.singletonList(StrUtil.isNotBlank(associateOrder.getOrderBelongName()) ? associateOrder.getOrderBelongName() : ""));
WalletAccountAssociateOrderRecord associateOrderRecord = WalletAccountAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount());
record.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord));
WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, earnings, true);
walletAccount.setRecordList(Collections.singletonList(record)); walletAccount.setRecordList(Collections.singletonList(record));
walletAccountAggregate.save(walletAccount);
acquireRevenueRewardDomainService.handle(revenueReward, walletAccount);
} }
} }
} }
@ -76,29 +95,44 @@ public class RewardApplicationService {
*/ */
public void acquireMatchmakerConfirmMeetingReward(AcquireMatchmakerConfirmMeetingRewardDto dto) { public void acquireMatchmakerConfirmMeetingReward(AcquireMatchmakerConfirmMeetingRewardDto dto) {
synchronized (dto.getReceiver().toString().intern()) { synchronized (dto.getReceiver().toString().intern()) {
WalletAccount walletAccount = walletAccountQueryService.queryByUserId(dto.getReceiver());
if (Objects.isNull(walletAccount)) {
walletAccount = WalletAccount.init(dto.getReceiver());
}
BigDecimal rewardAmount = dto.getReceivedAmount();
MarriageInformation meetingMi = marriageInformationDao.selectById(dto.getAssociatedMiId());
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(rewardAmount));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MARRIAGE_BOUNTY_MEETING_FEE,
rewardAmount, true, TradeTypeEnum.MARRIAGE_BOUNTY_MEETING_FEE.getDesc());
record.handleContent(Collections.singletonList(meetingMi.getNickName()));
if (CollUtil.isNotEmpty(dto.getOrderIdRelList())) {
List<WalletAccountAssociateOrderRecord> associateOrderRecordList = new ArrayList<>();
for (Long associateOrderId : dto.getOrderIdRelList()) {
Order associateOrder = orderDao.selectById(associateOrderId);
WalletAccountAssociateOrderRecord associateOrderRecord = WalletAccountAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount());
associateOrderRecordList.add(associateOrderRecord);
RewardConfig serviceFeeRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.PLATFORM_SERVICE_FEE);
if (Objects.nonNull(serviceFeeRewardConfig)) {
MarriageInformation meetingMi = marriageInformationDao.selectById(dto.getAssociatedMiId());
//收益信息
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(dto.getReceiver());
if (Objects.isNull(revenueReward)) {
revenueReward = RevenueReward.init(dto.getReceiver());
} }
record.setAssociateOrderRecordList(associateOrderRecordList);
//营收额
BigDecimal revenue = dto.getReceivedAmount();
//服务费用
BigDecimal serviceFee = serviceFeeRewardConfig.calculate(revenue);
BigDecimal earnings = revenue.subtract(serviceFee);
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MARRIAGE_BOUNTY_MEETING_FEE,
revenue, earnings, dto.getTotalAssociateOrderAmount());
revenueRewardRecord.handleContent(Collections.singletonList(meetingMi.getNickName()));
if (CollUtil.isNotEmpty(dto.getOrderIdRelList())) {
List<RevenueRewardAssociateOrderRecord> associateOrderRecordList = new ArrayList<>();
for (Long associateOrderId : dto.getOrderIdRelList()) {
Order associateOrder = orderDao.selectById(associateOrderId);
RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount());
revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord));
associateOrderRecordList.add(associateOrderRecord);
}
revenueRewardRecord.setAssociateOrderRecordList(associateOrderRecordList);
}
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包
WalletAccount walletAccount = walletAccountQueryService.queryByUserId(dto.getReceiver());
if (Objects.isNull(walletAccount)) {
walletAccount = WalletAccount.init(dto.getReceiver());
}
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(earnings));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
WalletAccountRecord walletAccountRecord = WalletAccountRecord.build(TradeTypeEnum.MARRIAGE_BOUNTY_MEETING_FEE, earnings, true);
walletAccount.setRecordList(Collections.singletonList(walletAccountRecord));
acquireRevenueRewardDomainService.handle(revenueReward, walletAccount);
} }
walletAccount.setRecordList(Collections.singletonList(record));
walletAccountAggregate.save(walletAccount);
} }
} }
@ -107,30 +141,45 @@ public class RewardApplicationService {
*/ */
public void acquireMatchmakerConfirmMatchReward(AcquireMatchmakerConfirmMatchRewardDto dto) { public void acquireMatchmakerConfirmMatchReward(AcquireMatchmakerConfirmMatchRewardDto dto) {
synchronized (dto.getReceiver().toString().intern()) { synchronized (dto.getReceiver().toString().intern()) {
WalletAccount walletAccount = walletAccountQueryService.queryByUserId(dto.getReceiver());
if (Objects.isNull(walletAccount)) {
walletAccount = WalletAccount.init(dto.getReceiver());
}
BigDecimal rewardAmount = dto.getReceivedAmount();
MarriageInformation associatedMi = marriageInformationDao.selectById(dto.getAssociatedMiId());
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(rewardAmount));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
TradeTypeEnum tradeType = transform(dto.getRewardType());
WalletAccountRecord record = WalletAccountRecord.build(tradeType,
rewardAmount, true, Objects.nonNull(tradeType) ? tradeType.getDesc() : null);
record.handleContent(Collections.singletonList(associatedMi.getNickName()));
if (CollUtil.isNotEmpty(dto.getOrderIdRelList())) {
List<WalletAccountAssociateOrderRecord> associateOrderRecordList = new ArrayList<>();
for (Long associateOrderId : dto.getOrderIdRelList()) {
Order associateOrder = orderDao.selectById(associateOrderId);
WalletAccountAssociateOrderRecord associateOrderRecord = WalletAccountAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount());
associateOrderRecordList.add(associateOrderRecord);
RewardConfig serviceFeeRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.PLATFORM_SERVICE_FEE);
if (Objects.nonNull(serviceFeeRewardConfig)) {
MarriageInformation associatedMi = marriageInformationDao.selectById(dto.getAssociatedMiId());
TradeTypeEnum tradeType = transform(dto.getRewardType());
//收益信息
RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(dto.getReceiver());
if (Objects.isNull(revenueReward)) {
revenueReward = RevenueReward.init(dto.getReceiver());
} }
record.setAssociateOrderRecordList(associateOrderRecordList);
//营收额
BigDecimal revenue = dto.getReceivedAmount();
//服务费用
BigDecimal serviceFee = serviceFeeRewardConfig.calculate(revenue);
BigDecimal earnings = revenue.subtract(serviceFee);
RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(tradeType, revenue, earnings, dto.getTotalAssociateOrderAmount());
revenueRewardRecord.handleContent(Collections.singletonList(associatedMi.getNickName()));
if (CollUtil.isNotEmpty(dto.getOrderIdRelList())) {
List<RevenueRewardAssociateOrderRecord> associateOrderRecordList = new ArrayList<>();
for (Long associateOrderId : dto.getOrderIdRelList()) {
Order associateOrder = orderDao.selectById(associateOrderId);
RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount());
revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord));
associateOrderRecordList.add(associateOrderRecord);
}
revenueRewardRecord.setAssociateOrderRecordList(associateOrderRecordList);
}
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
WalletAccount walletAccount = walletAccountQueryService.queryByUserId(dto.getReceiver());
if (Objects.isNull(walletAccount)) {
walletAccount = WalletAccount.init(dto.getReceiver());
}
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(earnings));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
WalletAccountRecord record = WalletAccountRecord.build(tradeType, earnings, true);
walletAccount.setRecordList(Collections.singletonList(record));
acquireRevenueRewardDomainService.handle(revenueReward, walletAccount);
} }
walletAccount.setRecordList(Collections.singletonList(record));
walletAccountAggregate.save(walletAccount);
} }
} }

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

@ -1,11 +1,9 @@
package com.qniao.dam.domain.aggregate.marriagebounty; package com.qniao.dam.domain.aggregate.marriagebounty;
import cn.hutool.core.collection.CollUtil;
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.repository.MarriageBountyOrderRepository; import com.qniao.dam.domain.aggregate.marriagebounty.repository.MarriageBountyOrderRepository;
import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrderRel; import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrderRel;
import com.qniao.dam.domain.aggregate.marriagebounty.valueobj.MarriageBountyOrderRewardReceiveRecord;
import com.qniao.dam.domian.aggregate.marriagebount.constant.MarriageBountyOrderPaymentStatusEnum; 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.MarriageBountyOrderStatusEnum;
import com.qniao.dam.domian.aggregate.marriagebounty.event.MarriageBountyOrderConfirmedMatchEvent; import com.qniao.dam.domian.aggregate.marriagebounty.event.MarriageBountyOrderConfirmedMatchEvent;
@ -16,6 +14,7 @@ import com.qniao.framework.utils.TypeConvertUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -47,27 +46,35 @@ public class MarriageBountyOrderAggregate {
marriageBountyOrderRepository.save(marriageBountyOrder); marriageBountyOrderRepository.save(marriageBountyOrder);
} }
public BaseDomainEvent confirmMeeting(MarriageBountyOrder marriageBountyOrder, List<MarriageBountyOrderRel> orderRelList) {
public BaseDomainEvent confirmMeeting(MarriageBountyOrder marriageBountyOrder,
List<MarriageBountyOrderRel> orderRelList,
BigDecimal totalAssociateOrderAmount) {
marriageBountyOrderRepository.save(marriageBountyOrder); marriageBountyOrderRepository.save(marriageBountyOrder);
MarriageBountyOrderConfirmedMeetingEvent event = new MarriageBountyOrderConfirmedMeetingEvent(); MarriageBountyOrderConfirmedMeetingEvent event = new MarriageBountyOrderConfirmedMeetingEvent();
event.setId(marriageBountyOrder.getId()); event.setId(marriageBountyOrder.getId());
MarriageBountyOrderReward marriageBountyOrderReward = marriageBountyOrder.getUpdateOrderRewardList().get(0); MarriageBountyOrderReward marriageBountyOrderReward = marriageBountyOrder.getUpdateOrderRewardList().get(0);
event.setMarriageBountyOrderRewardId(marriageBountyOrderReward.getId()); event.setMarriageBountyOrderRewardId(marriageBountyOrderReward.getId());
event.setRewardReceiveRecordList(TypeConvertUtils.convert(marriageBountyOrderReward.getRewardReceiveRecordList(),
MarriageBountyOrderConfirmedMeetingEvent.MarriageBountyOrderRewardReceiveRecordEvent.class));
event.setRewardReceiveRecordList(TypeConvertUtils.convertList(marriageBountyOrderReward.getRewardReceiveRecordList(),
MarriageBountyOrderConfirmedMeetingEvent.MarriageBountyOrderRewardReceiveRecordEvent.class, (a, b) -> {
b.setTotalAssociateOrderAmount(totalAssociateOrderAmount);
}));
event.setOrderIdRelList(orderRelList.stream().map(MarriageBountyOrderRel::getOrderId).collect(Collectors.toList())); event.setOrderIdRelList(orderRelList.stream().map(MarriageBountyOrderRel::getOrderId).collect(Collectors.toList()));
return event; return event;
} }
public BaseDomainEvent confirmMatch(MarriageBountyOrder marriageBountyOrder, List<MarriageBountyOrderRel> orderRelList) {
public BaseDomainEvent confirmMatch(MarriageBountyOrder marriageBountyOrder,
List<MarriageBountyOrderRel> orderRelList,
BigDecimal totalAssociateOrderAmount) {
marriageBountyOrder.setStatus(MarriageBountyOrderStatusEnum.MATCH_SUCCESS); marriageBountyOrder.setStatus(MarriageBountyOrderStatusEnum.MATCH_SUCCESS);
marriageBountyOrderRepository.save(marriageBountyOrder); marriageBountyOrderRepository.save(marriageBountyOrder);
MarriageBountyOrderConfirmedMatchEvent event = new MarriageBountyOrderConfirmedMatchEvent(); MarriageBountyOrderConfirmedMatchEvent event = new MarriageBountyOrderConfirmedMatchEvent();
event.setId(marriageBountyOrder.getId()); event.setId(marriageBountyOrder.getId());
MarriageBountyOrderReward marriageBountyOrderReward = marriageBountyOrder.getUpdateOrderRewardList().get(0); MarriageBountyOrderReward marriageBountyOrderReward = marriageBountyOrder.getUpdateOrderRewardList().get(0);
event.setMarriageBountyOrderRewardId(marriageBountyOrderReward.getId()); event.setMarriageBountyOrderRewardId(marriageBountyOrderReward.getId());
event.setRewardReceiveRecordList(TypeConvertUtils.convert(marriageBountyOrderReward.getRewardReceiveRecordList(),
MarriageBountyOrderConfirmedMatchEvent.MarriageBountyOrderRewardReceiveRecordEvent.class));
event.setRewardReceiveRecordList(TypeConvertUtils.convertList(marriageBountyOrderReward.getRewardReceiveRecordList(),
MarriageBountyOrderConfirmedMatchEvent.MarriageBountyOrderRewardReceiveRecordEvent.class, (a, b) -> {
b.setTotalAssociateOrderAmount(totalAssociateOrderAmount);
}));
event.setOrderIdRelList(orderRelList.stream().map(MarriageBountyOrderRel::getOrderId).collect(Collectors.toList())); event.setOrderIdRelList(orderRelList.stream().map(MarriageBountyOrderRel::getOrderId).collect(Collectors.toList()));
return event; return event;
} }

18
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/revenuereward/RevenueRewardAggregate.java

@ -0,0 +1,18 @@
package com.qniao.dam.domain.aggregate.revenuereward;
import com.qniao.dam.domain.aggregate.revenuereward.entity.RevenueReward;
import com.qniao.dam.domain.aggregate.revenuereward.repository.RevenueRewardRepository;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class RevenueRewardAggregate {
@Resource
private RevenueRewardRepository revenueRewardRepository;
public void save(RevenueReward revenueReward) {
revenueRewardRepository.save(revenueReward);
}
}

7
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/revenuereward/repository/RevenueRewardRepository.java

@ -0,0 +1,7 @@
package com.qniao.dam.domain.aggregate.revenuereward.repository;
import com.qniao.dam.domain.aggregate.revenuereward.entity.RevenueReward;
import com.qniao.domain.Repository;
public interface RevenueRewardRepository extends Repository<RevenueReward, Long> {
}

25
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/service/revenuereward/AcquireRevenueRewardDomainService.java

@ -0,0 +1,25 @@
package com.qniao.dam.domain.service.revenuereward;
import com.qniao.dam.domain.aggregate.revenuereward.RevenueRewardAggregate;
import com.qniao.dam.domain.aggregate.revenuereward.entity.RevenueReward;
import com.qniao.dam.domain.aggregate.walletaccount.WalletAccountAggregate;
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
@Service
public class AcquireRevenueRewardDomainService {
@Resource
private RevenueRewardAggregate revenueRewardAggregate;
@Resource
private WalletAccountAggregate walletAccountAggregate;
@Transactional(rollbackFor = Exception.class)
public void handle(RevenueReward revenueReward, WalletAccount walletAccount) {
revenueRewardAggregate.save(revenueReward);
walletAccountAggregate.save(walletAccount);
}
}

7
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/RevenueRewardAssociateOrderRecordDao.java

@ -0,0 +1,7 @@
package com.qniao.dam.infrastructure.persistent.dao.domain;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qniao.dam.domain.aggregate.revenuereward.valueobj.RevenueRewardAssociateOrderRecord;
public interface RevenueRewardAssociateOrderRecordDao extends BaseMapper<RevenueRewardAssociateOrderRecord> {
}

7
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/RevenueRewardDao.java

@ -0,0 +1,7 @@
package com.qniao.dam.infrastructure.persistent.dao.domain;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qniao.dam.domain.aggregate.revenuereward.entity.RevenueReward;
public interface RevenueRewardDao extends BaseMapper<RevenueReward> {
}

7
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/RevenueRewardRecordDao.java

@ -0,0 +1,7 @@
package com.qniao.dam.infrastructure.persistent.dao.domain;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qniao.dam.domain.aggregate.revenuereward.valueobj.RevenueRewardRecord;
public interface RevenueRewardRecordDao extends BaseMapper<RevenueRewardRecord> {
}

7
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/WalletAccountAssociateOrderRecordDao.java

@ -1,7 +0,0 @@
package com.qniao.dam.infrastructure.persistent.dao.domain;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qniao.dam.domain.aggregate.walletaccount.valueobj.WalletAccountAssociateOrderRecord;
public interface WalletAccountAssociateOrderRecordDao extends BaseMapper<WalletAccountAssociateOrderRecord> {
}

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

@ -0,0 +1,53 @@
package com.qniao.dam.infrastructure.persistent.repository.impl;
import cn.hutool.core.collection.CollUtil;
import com.qniao.dam.domain.aggregate.revenuereward.entity.RevenueReward;
import com.qniao.dam.domain.aggregate.revenuereward.repository.RevenueRewardRepository;
import com.qniao.dam.domain.aggregate.revenuereward.valueobj.RevenueRewardAssociateOrderRecord;
import com.qniao.dam.infrastructure.persistent.dao.domain.RevenueRewardAssociateOrderRecordDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.RevenueRewardDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.RevenueRewardRecordDao;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Objects;
@Service
public class RevenueRewardRepositoryImpl implements RevenueRewardRepository {
@Resource
private RevenueRewardDao revenueRewardDao;
@Resource
private RevenueRewardRecordDao revenueRewardRecordDao;
@Resource
private RevenueRewardAssociateOrderRecordDao revenueRewardAssociateOrderRecordDao;
@Override
public RevenueReward load(Long id) {
return revenueRewardDao.selectById(id);
}
@Transactional(rollbackFor = Exception.class)
@Override
public Long save(RevenueReward entity) {
if (Objects.isNull(entity.getId()) || Objects.isNull(revenueRewardDao.selectById(entity.getId()))) {
revenueRewardDao.insert(entity);
} else {
revenueRewardDao.updateById(entity);
}
if (CollUtil.isNotEmpty(entity.getRecordList())) {
entity.getRecordList().forEach(record -> {
record.setRevenueRewardId(entity.getId());
revenueRewardRecordDao.insert(record);
if (CollUtil.isNotEmpty(record.getAssociateOrderRecordList())) {
record.getAssociateOrderRecordList().forEach(associateOrderRecord -> {
associateOrderRecord.setRevenueRewardRecordId(record.getId());
revenueRewardAssociateOrderRecordDao.insert(associateOrderRecord);
});
}
});
}
return entity.getId();
}
}

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

@ -1,11 +1,8 @@
package com.qniao.dam.infrastructure.persistent.repository.impl; 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.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount; import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount;
import com.qniao.dam.domain.aggregate.walletaccount.repository.WalletAccountRepository; import com.qniao.dam.domain.aggregate.walletaccount.repository.WalletAccountRepository;
import com.qniao.dam.domain.aggregate.walletaccount.valueobj.WalletAccountRecord;
import com.qniao.dam.infrastructure.persistent.dao.domain.WalletAccountAssociateOrderRecordDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.WalletAccountDao; import com.qniao.dam.infrastructure.persistent.dao.domain.WalletAccountDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.WalletAccountRecordDao; import com.qniao.dam.infrastructure.persistent.dao.domain.WalletAccountRecordDao;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -20,8 +17,6 @@ public class WalletAccountRepositoryImpl implements WalletAccountRepository {
private WalletAccountDao walletAccountDao; private WalletAccountDao walletAccountDao;
@Resource @Resource
private WalletAccountRecordDao walletAccountRecordDao; private WalletAccountRecordDao walletAccountRecordDao;
@Resource
private WalletAccountAssociateOrderRecordDao walletAccountAssociateOrderRecordDao;
@Override @Override
public WalletAccount load(Long id) { public WalletAccount load(Long id) {
@ -39,12 +34,6 @@ public class WalletAccountRepositoryImpl implements WalletAccountRepository {
entity.getRecordList().forEach(record -> { entity.getRecordList().forEach(record -> {
record.setWalletAccountId(entity.getId()); record.setWalletAccountId(entity.getId());
walletAccountRecordDao.insert(record); walletAccountRecordDao.insert(record);
if (CollUtil.isNotEmpty(record.getAssociateOrderRecordList())) {
record.getAssociateOrderRecordList().forEach(associateOrderRecord -> {
associateOrderRecord.setWalletAccountRecordId(record.getId());
walletAccountAssociateOrderRecordDao.insert(associateOrderRecord);
});
}
}); });
} }
return entity.getId(); return entity.getId();

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

@ -59,7 +59,7 @@ public class MarriageBountyOrderQueryServiceImpl implements MarriageBountyOrderQ
public UserGetMarriageBountyOrderPreRefundInfoVo getMarriageBountyOrderPreRefundInfo(Long marriageBountyOrderId) { public UserGetMarriageBountyOrderPreRefundInfoVo getMarriageBountyOrderPreRefundInfo(Long marriageBountyOrderId) {
UserGetMarriageBountyOrderPreRefundInfoVo refundInfoVo = new UserGetMarriageBountyOrderPreRefundInfoVo(); UserGetMarriageBountyOrderPreRefundInfoVo refundInfoVo = new UserGetMarriageBountyOrderPreRefundInfoVo();
MarriageBountyOrder marriageBountyOrder = marriageBountyOrderRepository.load(marriageBountyOrderId); MarriageBountyOrder marriageBountyOrder = marriageBountyOrderRepository.load(marriageBountyOrderId);
if (Objects.nonNull(marriageBountyOrder)) {
if (Objects.nonNull(marriageBountyOrder) && MarriageBountyOrderPaymentStatusEnum.PAID.equals(marriageBountyOrder.getPaymentStatus())) {
refundInfoVo.setMarriageBountyOrderId(marriageBountyOrder.getId()); refundInfoVo.setMarriageBountyOrderId(marriageBountyOrder.getId());
BigDecimal refundableMeetingFee = BigDecimal.ZERO; BigDecimal refundableMeetingFee = BigDecimal.ZERO;
BigDecimal refundableResultGift = BigDecimal.ZERO; BigDecimal refundableResultGift = BigDecimal.ZERO;

5
dating-agency-mall-server/src/main/java/com/qniao/dam/query/order/OrderQueryService.java

@ -9,11 +9,9 @@ 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;
import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec; import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec;
import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum; import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum;
import com.qniao.dau.infrastructure.constant.RequestHeaderFields;
import com.qniao.domain.QnPage; import com.qniao.domain.QnPage;
import com.qniao.framework.utils.PageUtil; import com.qniao.framework.utils.PageUtil;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestParam;
public interface OrderQueryService { public interface OrderQueryService {
IPage<UserPageOrderByOperatorVo> pageOrderByOperator(PageUtil pageUtil, UserPageOrderByOperatorQueryParam queryParam); IPage<UserPageOrderByOperatorVo> pageOrderByOperator(PageUtil pageUtil, UserPageOrderByOperatorQueryParam queryParam);
@ -25,4 +23,5 @@ public interface OrderQueryService {
QnPage<UserOrderRecordVo> userUserOrderRecord(PageUtil pageUtil,Long miId,Long userId); QnPage<UserOrderRecordVo> userUserOrderRecord(PageUtil pageUtil,Long miId,Long userId);
Order queryBySubCategory(Long userId,ProductSubCategoryEnum subCategory); Order queryBySubCategory(Long userId,ProductSubCategoryEnum subCategory);
} }

7
dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/RevenueRewardQueryService.java

@ -0,0 +1,7 @@
package com.qniao.dam.query.revenuereward;
import com.qniao.dam.domain.aggregate.revenuereward.entity.RevenueReward;
public interface RevenueRewardQueryService {
RevenueReward queryByUserId(Long userId);
}

23
dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/impl/RevenueRewardQueryServiceImpl.java

@ -0,0 +1,23 @@
package com.qniao.dam.query.revenuereward.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qniao.dam.domain.aggregate.revenuereward.entity.RevenueReward;
import com.qniao.dam.infrastructure.persistent.dao.domain.RevenueRewardDao;
import com.qniao.dam.query.revenuereward.RevenueRewardQueryService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@Service
public class RevenueRewardQueryServiceImpl implements RevenueRewardQueryService {
@Resource
private RevenueRewardDao revenueRewardDao;
@Override
public RevenueReward queryByUserId(Long userId) {
return revenueRewardDao.selectOne(new LambdaQueryWrapper<RevenueReward>()
.eq(RevenueReward::getUserId, userId)
.last("limit 1"));
}
}
Loading…
Cancel
Save