Browse Source

玫瑰

release
张彭杰 4 months ago
parent
commit
267da041cb
5 changed files with 56 additions and 0 deletions
  1. 8
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java
  2. 22
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java
  3. 13
      dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/virtualaccount/VirtualAccountAggregate.java
  4. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/virtualaccount/VirtualAccountQueryService.java
  5. 11
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/virtualaccount/impl/VirtualAccountQueryServiceImpl.java

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

@ -6,6 +6,7 @@ import com.google.common.eventbus.Subscribe;
import com.qniao.dam.application.service.marriagebounty.MarriageBountyOrderApplicationService; import com.qniao.dam.application.service.marriagebounty.MarriageBountyOrderApplicationService;
import com.qniao.dam.application.service.order.OrderApplicationService; import com.qniao.dam.application.service.order.OrderApplicationService;
import com.qniao.dam.application.service.right.RightApplicationService; import com.qniao.dam.application.service.right.RightApplicationService;
import com.qniao.dam.application.service.virtualaccount.VirtualAccountApplicationService;
import com.qniao.dam.domain.aggregate.activity.entity.Activity; import com.qniao.dam.domain.aggregate.activity.entity.Activity;
import com.qniao.dam.domain.aggregate.activity.repository.ActivityRepository; import com.qniao.dam.domain.aggregate.activity.repository.ActivityRepository;
import com.qniao.dam.domain.aggregate.externalorder.ExternalOrderRelAggregate; import com.qniao.dam.domain.aggregate.externalorder.ExternalOrderRelAggregate;
@ -28,6 +29,7 @@ import com.qniao.dam.domian.aggregate.order.constant.OrderBelongingEnum;
import com.qniao.dam.domian.aggregate.order.constant.OrderTypeEnum; import com.qniao.dam.domian.aggregate.order.constant.OrderTypeEnum;
import com.qniao.dam.domian.aggregate.order.event.ExternalOrderCompletedMQEvent; import com.qniao.dam.domian.aggregate.order.event.ExternalOrderCompletedMQEvent;
import com.qniao.dam.domian.aggregate.order.event.OrderCompletedEvent; import com.qniao.dam.domian.aggregate.order.event.OrderCompletedEvent;
import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum;
import com.qniao.dam.domian.aggregate.product.constant.ProductTypeEnum; import com.qniao.dam.domian.aggregate.product.constant.ProductTypeEnum;
import com.qniao.dam.domian.aggregate.productspec.constant.ProductSpecTermNameEnum; import com.qniao.dam.domian.aggregate.productspec.constant.ProductSpecTermNameEnum;
import com.qniao.dam.infrastructure.constant.MqExchange; import com.qniao.dam.infrastructure.constant.MqExchange;
@ -87,6 +89,8 @@ public class OrderEventHandler extends BaseApplicationService {
@Resource @Resource
private OrderApplicationService orderApplicationService; private OrderApplicationService orderApplicationService;
@Resource @Resource
private VirtualAccountApplicationService virtualAccountApplicationService;
@Resource
private SnowFlakeUtil snowFlakeUtil; private SnowFlakeUtil snowFlakeUtil;
@Resource @Resource
private AmqpTemplate amqpTemplate; private AmqpTemplate amqpTemplate;
@ -111,6 +115,10 @@ public class OrderEventHandler extends BaseApplicationService {
if (Objects.nonNull(right)) { if (Objects.nonNull(right)) {
rightList.add(right); rightList.add(right);
} }
if (ProductSubCategoryEnum.VIRTUAL_CURRENCY.equals(product.getSubCategory())) {
//玫瑰充值
virtualAccountApplicationService.recharge(product,productSpec,order);
}
} }
} }
batchCreate(rightList); batchCreate(rightList);

22
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java

@ -9,6 +9,7 @@ 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.product.entity.Product; import com.qniao.dam.domain.aggregate.product.entity.Product;
import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec; import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec;
import com.qniao.dam.domain.aggregate.productspec.valueobj.ProductSpecTerm;
import com.qniao.dam.domain.aggregate.revenuereward.entity.RevenueReward; import com.qniao.dam.domain.aggregate.revenuereward.entity.RevenueReward;
import com.qniao.dam.domain.aggregate.revenuereward.valueobj.RevenueRewardRecord; import com.qniao.dam.domain.aggregate.revenuereward.valueobj.RevenueRewardRecord;
import com.qniao.dam.domain.aggregate.virtualaccount.VirtualAccountAggregate; import com.qniao.dam.domain.aggregate.virtualaccount.VirtualAccountAggregate;
@ -20,6 +21,7 @@ import com.qniao.dam.domain.service.virtualaccount.CostGiftRewardDomainService;
import com.qniao.dam.domian.aggregate.order.constant.OrderBelongingEnum; import com.qniao.dam.domian.aggregate.order.constant.OrderBelongingEnum;
import com.qniao.dam.domian.aggregate.order.constant.OrderStatusEnum; import com.qniao.dam.domian.aggregate.order.constant.OrderStatusEnum;
import com.qniao.dam.domian.aggregate.order.constant.OrderTypeEnum; import com.qniao.dam.domian.aggregate.order.constant.OrderTypeEnum;
import com.qniao.dam.domian.aggregate.productspec.constant.ProductSpecTermNameEnum;
import com.qniao.dam.domian.aggregate.virtualaccount.constant.VirtualAccountTradeTypeEnum; import com.qniao.dam.domian.aggregate.virtualaccount.constant.VirtualAccountTradeTypeEnum;
import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum;
import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeSceneEnum; import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeSceneEnum;
@ -27,6 +29,7 @@ import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum;
import com.qniao.dam.infrastructure.persistent.dao.domain.ProductDao; import com.qniao.dam.infrastructure.persistent.dao.domain.ProductDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.ProductSpecDao; import com.qniao.dam.infrastructure.persistent.dao.domain.ProductSpecDao;
import com.qniao.dam.infrastructure.utils.SnowFlakeUtil; import com.qniao.dam.infrastructure.utils.SnowFlakeUtil;
import com.qniao.dam.query.product.ProductQueryService;
import com.qniao.dam.query.revenuereward.RevenueRewardQueryService; import com.qniao.dam.query.revenuereward.RevenueRewardQueryService;
import com.qniao.dam.query.virtualaccount.VirtualAccountQueryService; import com.qniao.dam.query.virtualaccount.VirtualAccountQueryService;
import com.qniao.dam.query.walletaccount.WalletAccountQueryService; import com.qniao.dam.query.walletaccount.WalletAccountQueryService;
@ -61,6 +64,8 @@ public class VirtualAccountApplicationService {
private ConsumeVirtualAccountDomainService consumeVirtualAccountDomainService; private ConsumeVirtualAccountDomainService consumeVirtualAccountDomainService;
@Resource @Resource
private CostGiftRewardDomainService costGiftRewardDomainService; private CostGiftRewardDomainService costGiftRewardDomainService;
@Resource
private ProductQueryService productQueryService;
public void create(VirtualAccount virtualAccount) { public void create(VirtualAccount virtualAccount) {
virtualAccountAggregate.create(virtualAccount); virtualAccountAggregate.create(virtualAccount);
@ -309,4 +314,21 @@ public class VirtualAccountApplicationService {
vo.setSuccess(true); vo.setSuccess(true);
return vo; return vo;
} }
/**
* 玫瑰充值
*/
public void recharge(Product product,
ProductSpec productSpec,
Order order) {
synchronized (order.getUserId().toString().intern()) {
VirtualAccount virtualAccount = virtualAccountQueryService.queryOrInit(order.getUserId());
ProductSpecTerm specTerm = productQueryService.getTermByName(productSpec.getProductSpecTermList(), ProductSpecTermNameEnum.PURCHASE_TIME);
int quantity = Integer.parseInt(specTerm.getValue());
virtualAccountAggregate.handleRechargeData(virtualAccount, quantity, VirtualAccountTradeTypeEnum.RECHARGE);
virtualAccountAggregate.edit(virtualAccount);
}
}
} }

13
dating-agency-mall-server/src/main/java/com/qniao/dam/domain/aggregate/virtualaccount/VirtualAccountAggregate.java

@ -44,4 +44,17 @@ public class VirtualAccountAggregate {
record.setCurrentBalance(virtualAccount.getBalance()); record.setCurrentBalance(virtualAccount.getBalance());
virtualAccount.setRecordList(Collections.singletonList(record)); virtualAccount.setRecordList(Collections.singletonList(record));
} }
public void handleRechargeData(VirtualAccount virtualAccount,
Integer tradeBalance,
VirtualAccountTradeTypeEnum tradeType) {
Integer originalBalance = virtualAccount.getBalance();
virtualAccount.setBalance(originalBalance + tradeBalance);
VirtualAccountRecord record = new VirtualAccountRecord();
record.setTradeType(tradeType);
record.setTradeBalance(tradeBalance);
record.setOriginalBalance(originalBalance);
record.setCurrentBalance(virtualAccount.getBalance());
virtualAccount.setRecordList(Collections.singletonList(record));
}
} }

2
dating-agency-mall-server/src/main/java/com/qniao/dam/query/virtualaccount/VirtualAccountQueryService.java

@ -14,4 +14,6 @@ public interface VirtualAccountQueryService {
VirtualAccount queryBy(Long userId); VirtualAccount queryBy(Long userId);
IPage<VirtualAccountRecordVo> pageVirtualAccountRecord(UserPageVirtualAccountRecordQueryParams queryParams, PageUtil pageUtil); IPage<VirtualAccountRecordVo> pageVirtualAccountRecord(UserPageVirtualAccountRecordQueryParams queryParams, PageUtil pageUtil);
VirtualAccount queryOrInit(Long userId);
} }

11
dating-agency-mall-server/src/main/java/com/qniao/dam/query/virtualaccount/impl/VirtualAccountQueryServiceImpl.java

@ -47,4 +47,15 @@ public class VirtualAccountQueryServiceImpl implements VirtualAccountQueryServic
return virtualAccountRecordDao.page(pageUtil.toPageWithoutOrders(), queryParams); return virtualAccountRecordDao.page(pageUtil.toPageWithoutOrders(), queryParams);
} }
@Override
public VirtualAccount queryOrInit(Long userId) {
VirtualAccount virtualAccount = queryBy(userId);
if (Objects.isNull(virtualAccount)) {
virtualAccount = new VirtualAccount();
virtualAccount.setUserId(userId);
virtualAccount.setBalance(0);
}
return virtualAccount;
}
} }
Loading…
Cancel
Save