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.order.OrderApplicationService;
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.repository.ActivityRepository;
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.event.ExternalOrderCompletedMQEvent;
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.productspec.constant.ProductSpecTermNameEnum;
import com.qniao.dam.infrastructure.constant.MqExchange;
@ -87,6 +89,8 @@ public class OrderEventHandler extends BaseApplicationService {
@Resource
private OrderApplicationService orderApplicationService;
@Resource
private VirtualAccountApplicationService virtualAccountApplicationService;
@Resource
private SnowFlakeUtil snowFlakeUtil;
@Resource
private AmqpTemplate amqpTemplate;
@ -111,6 +115,10 @@ public class OrderEventHandler extends BaseApplicationService {
if (Objects.nonNull(right)) {
rightList.add(right);
}
if (ProductSubCategoryEnum.VIRTUAL_CURRENCY.equals(product.getSubCategory())) {
//玫瑰充值
virtualAccountApplicationService.recharge(product,productSpec,order);
}
}
}
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.product.entity.Product;
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.valueobj.RevenueRewardRecord;
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.OrderStatusEnum;
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.walletaccount.constant.IdentityTypeEnum;
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.ProductSpecDao;
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.virtualaccount.VirtualAccountQueryService;
import com.qniao.dam.query.walletaccount.WalletAccountQueryService;
@ -61,6 +64,8 @@ public class VirtualAccountApplicationService {
private ConsumeVirtualAccountDomainService consumeVirtualAccountDomainService;
@Resource
private CostGiftRewardDomainService costGiftRewardDomainService;
@Resource
private ProductQueryService productQueryService;
public void create(VirtualAccount virtualAccount) {
virtualAccountAggregate.create(virtualAccount);
@ -309,4 +314,21 @@ public class VirtualAccountApplicationService {
vo.setSuccess(true);
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());
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);
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);
}
@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