Browse Source

虚拟账号

master
188814092560 3 weeks ago
parent
commit
5a90d0cc09
32 changed files with 140 additions and 88 deletions
  1. 3
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/revenuereward/entity/RevenueReward.java
  2. 11
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/walletaccount/entity/WalletAccount.java
  3. 2
      dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/SettleOneOnOneRtcBySdkDto.java
  4. 2
      dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserAcquireLinkMicCardRewardDto.java
  5. 2
      dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserAcquireRewardAmountDto.java
  6. 2
      dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserConsumeVirtualAccountDto.java
  7. 2
      dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserCostChannelGiftSdkDto.java
  8. 2
      dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserCostIMGiftSdkDto.java
  9. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/request/SettleOneOnOneRtcDto.java
  10. 3
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/request/UserConsumeVirtualAccountDto.java
  11. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/request/UserCostChannelGiftDto.java
  12. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/request/UserCostIMGiftDto.java
  13. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/walletaccount/user/request/UserAcquireLinkMicCardRewardDto.java
  14. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/walletaccount/user/request/UserAcquireRewardAmountDto.java
  15. 12
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/walletaccount/user/WalletAccountUserQueryController.java
  16. 3
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/walletaccount/user/request/UsePageWalletAccountRecordByOperatorQueryParams.java
  17. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/walletaccount/user/request/UserPageWalletAccountRecordQueryParam.java
  18. 13
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/order/OrderEventHandler.java
  19. 10
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/revenuereward/RevenueRewardEventHandler.java
  20. 12
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/rpaw/RafflePrizeActivityWinningEventHandler.java
  21. 3
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/siteactivity/SiteActivityEventHandler.java
  22. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/utc/UserTaskCompleteEventHandler.java
  23. 9
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/virtualaccount/VirtualAccountEventHandler.java
  24. 15
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/revenuereward/RevenueRewardApplicationService.java
  25. 25
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java
  26. 25
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/virtualaccount/VirtualAccountApplicationService.java
  27. 13
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/walletaccount/WalletAccountApplicationService.java
  28. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/withdrawaudit/WithdrawAuditApplicationService.java
  29. 3
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/WalletAccountViewDao.java
  30. 6
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/walletaccount/WalletAccountQueryService.java
  31. 22
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/walletaccount/impl/WalletAccountQueryServiceImpl.java
  32. 7
      dating-agency-mall-server/src/main/resources/mapper/walletaccount/PurchaseProductRecordQueryService.xml

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

@ -19,6 +19,9 @@ import java.util.Objects;
@TableName("da_revenue_reward")
public class RevenueReward extends Entity<RevenueReward> {
@ApiModelProperty("APPID")
private Long appId;
@ApiModelProperty("用户唯一标识")
private Long userId;

11
dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/walletaccount/entity/WalletAccount.java

@ -16,6 +16,9 @@ import java.util.List;
@TableName("da_wallet_account")
public class WalletAccount extends Entity<WalletAccount> {
@ApiModelProperty("APPID")
private Long appId;
@ApiModelProperty("用户唯一标识")
private Long userId;
@ -37,8 +40,10 @@ public class WalletAccount extends Entity<WalletAccount> {
@ApiModelProperty("钱包记录")
private transient List<WalletAccountRecord> recordList;
public static WalletAccount initUser(Long userId) {
public static WalletAccount initUser(Long appId,
Long userId) {
WalletAccount walletAccount = new WalletAccount();
walletAccount.setAppId(appId);
walletAccount.setUserId(userId);
walletAccount.setIdentityType(IdentityTypeEnum.INDIVIDUAL);
walletAccount.setTotalBalance(BigDecimal.ZERO);
@ -47,8 +52,10 @@ public class WalletAccount extends Entity<WalletAccount> {
return walletAccount;
}
public static WalletAccount initOrg(Long orgId) {
public static WalletAccount initOrg(Long appId,
Long orgId) {
WalletAccount walletAccount = new WalletAccount();
walletAccount.setAppId(appId);
walletAccount.setOrgId(orgId);
walletAccount.setIdentityType(IdentityTypeEnum.ORGANIZATION);
walletAccount.setTotalBalance(BigDecimal.ZERO);

2
dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/SettleOneOnOneRtcBySdkDto.java

@ -8,6 +8,8 @@ import lombok.Data;
@AllArgsConstructor
public class SettleOneOnOneRtcBySdkDto {
private Long appId;
private RtcChannelTypeEnum rtcChannelType;
private Long payerUserId;

2
dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserAcquireLinkMicCardRewardDto.java

@ -8,6 +8,8 @@ import lombok.Data;
@AllArgsConstructor
public class UserAcquireLinkMicCardRewardDto {
private Long appId;
private Long userId;
private Long anchorUserId;

2
dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserAcquireRewardAmountDto.java

@ -12,6 +12,8 @@ import java.math.BigDecimal;
@NoArgsConstructor
public class UserAcquireRewardAmountDto {
private Long appId;
private Long userId;
private TradeTypeEnum tradeType;

2
dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserConsumeVirtualAccountDto.java

@ -10,6 +10,8 @@ import lombok.NoArgsConstructor;
@Data
public class UserConsumeVirtualAccountDto {
private Long appId;
private Long userId;
private Long anchorUserId;

2
dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserCostChannelGiftSdkDto.java

@ -9,6 +9,8 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
public class UserCostChannelGiftSdkDto {
private Long appId;
private Long fromUserId;
private Long channelId;

2
dating-agency-mall-sdk/src/main/java/com/qniao/dam/application/request/UserCostIMGiftSdkDto.java

@ -9,6 +9,8 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
public class UserCostIMGiftSdkDto {
private Long appId;
private Long fromUserId;
private Long toUserId;

2
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/request/SettleOneOnOneRtcDto.java

@ -6,6 +6,8 @@ import lombok.Data;
@Data
public class SettleOneOnOneRtcDto {
private Long appId;
private RtcChannelTypeEnum rtcChannelType;
private Long payerUserId;

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

@ -8,6 +8,9 @@ import javax.validation.constraints.NotNull;
@Data
public class UserConsumeVirtualAccountDto {
@NotNull
private Long appId;
@NotNull
private Long userId;

2
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/request/UserCostChannelGiftDto.java

@ -5,6 +5,8 @@ import lombok.Data;
@Data
public class UserCostChannelGiftDto {
private Long appId;
private Long fromUserId;
private Long channelId;

2
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/virtualaccount/user/request/UserCostIMGiftDto.java

@ -5,6 +5,8 @@ import lombok.Data;
@Data
public class UserCostIMGiftDto {
private Long appId;
private Long fromUserId;
private Long toUserId;

2
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/walletaccount/user/request/UserAcquireLinkMicCardRewardDto.java

@ -6,6 +6,8 @@ import lombok.Data;
@Data
public class UserAcquireLinkMicCardRewardDto {
private Long appId;
private Long userId;
private Long anchorUserId;

2
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/walletaccount/user/request/UserAcquireRewardAmountDto.java

@ -8,6 +8,8 @@ import java.math.BigDecimal;
@Data
public class UserAcquireRewardAmountDto {
private Long appId;
private Long userId;
private TradeTypeEnum tradeType;

12
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/walletaccount/user/WalletAccountUserQueryController.java

@ -28,16 +28,19 @@ public class WalletAccountUserQueryController {
@GetMapping("get/wallet-account")
@ApiOperation("用户获取钱包账号")
public UserGetWalletAccountVo userGetWalletAccount(@RequestParam("userId") Long userId,
@RequestHeader(name = RequestHeaderFields.FIELD_ORGANIZATION_ID, required = false) Long orgId) {
return walletAccountQueryService.getWalletAccountView(userId, orgId);
@RequestHeader(name = RequestHeaderFields.FIELD_ORGANIZATION_ID, required = false) Long orgId,
@RequestHeader(name = RequestHeaderFields.FIELD_APP_ID) Long appId) {
return walletAccountQueryService.getWalletAccountView(appId, userId, orgId);
}
@GetMapping("page/wallet-account-record")
@ApiOperation("用户获取钱包账号记录")
public QnPage<UserGetWalletAccountRecordVo> userPageWalletAccountRecord(@RequestParam("userId") Long userId,
@RequestHeader(name = RequestHeaderFields.FIELD_ORGANIZATION_ID, required = false) Long orgId,
@RequestHeader(name = RequestHeaderFields.FIELD_APP_ID) Long appId,
PageUtil pageUtil,
UserPageWalletAccountRecordQueryParam queryParam) {
queryParam.setQueryAppId(appId);
if (Objects.isNull(queryParam.getQueryOrgId())) {
queryParam.setQueryOrgId(orgId);
}
@ -64,7 +67,8 @@ public class WalletAccountUserQueryController {
@GetMapping("get/today-live-income")
@ApiOperation("用户获取今日直播收益")
public UserGetTodayLiveIncomeVo userGetTodayLiveIncome(@RequestParam("userId") Long userId) {
return walletAccountQueryService.getTodayLiveIncome(userId);
public UserGetTodayLiveIncomeVo userGetTodayLiveIncome(@RequestParam("userId") Long userId,
@RequestHeader(name = RequestHeaderFields.FIELD_APP_ID) Long appId) {
return walletAccountQueryService.getTodayLiveIncome(appId,userId);
}
}

3
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/walletaccount/user/request/UsePageWalletAccountRecordByOperatorQueryParams.java

@ -9,6 +9,9 @@ import java.time.LocalDateTime;
@Data
public class UsePageWalletAccountRecordByOperatorQueryParams {
@ApiModelProperty("app标识")
private Long queryAppId;
@ApiModelProperty("创建开始时间")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTimeFrom;

2
dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/walletaccount/user/request/UserPageWalletAccountRecordQueryParam.java

@ -9,6 +9,8 @@ import java.time.LocalDateTime;
@Data
public class UserPageWalletAccountRecordQueryParam {
private Long queryAppId;
private Long queryUserId;
private Long queryOrgId;

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

@ -1,21 +1,17 @@
package com.qniao.dam.application.handler.order;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.google.common.eventbus.Subscribe;
import com.qniao.dam.application.service.eso.EntrustServiceOrderApplicationService;
import com.qniao.dam.application.service.marriagebounty.MarriageBountyOrderApplicationService;
import com.qniao.dam.application.service.order.OrderApplicationService;
import com.qniao.dam.application.service.reward.RewardApplicationService;
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.eso.entity.EntrustServiceOrder;
import com.qniao.dam.domain.aggregate.externalorder.ExternalOrderRelAggregate;
import com.qniao.dam.domain.aggregate.externalorder.entity.ExternalOrderRel;
import com.qniao.dam.domain.aggregate.ffpm.entity.FranchiseFeeProfitManagement;
import com.qniao.dam.domain.aggregate.order.OrderAggregate;
import com.qniao.dam.domain.aggregate.order.entity.Order;
import com.qniao.dam.domain.aggregate.order.entity.OrderItem;
@ -46,7 +42,6 @@ import com.qniao.dam.domian.aggregate.product.constant.ProductMainCategoryEnum;
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.domian.aggregate.revenuereward.event.RevenueRewardUpdatedEvent;
import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum;
import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum;
import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeSceneEnum;
@ -73,6 +68,7 @@ import com.qniao.domain.BaseApplicationService;
import com.qniao.domain.BaseDomainEvent;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
@ -141,6 +137,9 @@ public class OrderEventHandler extends BaseApplicationService {
@Resource
private AmqpTemplate amqpTemplate;
@Value("${quzhaoqin_app_id}")
private Long quzhaoqinAppId;
/**
* 订单已完成事件 -> 兑换权益
*
@ -255,7 +254,7 @@ public class OrderEventHandler extends BaseApplicationService {
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包信息
WalletAccount walletAccount = walletAccountQueryService.queryByType(matchmaker.getUserId(), IdentityTypeEnum.INDIVIDUAL);
WalletAccount walletAccount = walletAccountQueryService.queryByType(quzhaoqinAppId, matchmaker.getUserId(), IdentityTypeEnum.INDIVIDUAL);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
@ -320,7 +319,7 @@ public class OrderEventHandler extends BaseApplicationService {
}
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包信息
WalletAccount walletAccount = walletAccountQueryService.queryByType(identityId, identityType);
WalletAccount walletAccount = walletAccountQueryService.queryByType(quzhaoqinAppId, identityId, identityType);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));

10
dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/revenuereward/RevenueRewardEventHandler.java

@ -1,7 +1,6 @@
package com.qniao.dam.application.handler.revenuereward;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.google.common.eventbus.Subscribe;
import com.qniao.dam.application.service.revenuereward.RevenueRewardApplicationService;
import com.qniao.dam.application.service.reward.RewardApplicationService;
@ -10,7 +9,6 @@ import com.qniao.dam.domain.aggregate.ffpm.entity.FranchiseFeeProfitManagement;
import com.qniao.dam.domain.aggregate.order.entity.Order;
import com.qniao.dam.domain.aggregate.revenuereward.RevenueRewardAggregate;
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.aggregate.revenuereward.valueobj.RevenueRewardRecoveredRecord;
import com.qniao.dam.domain.aggregate.rewardconfig.entity.RewardConfig;
@ -53,6 +51,7 @@ import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@ -100,6 +99,9 @@ public class RevenueRewardEventHandler extends BaseApplicationService {
@Resource
private WalletAccountAggregate walletAccountAggregate;
@Value("${quzhaoqin_app_id}")
private Long quzhaoqinAppId;
@RabbitListener(bindings = @QueueBinding(value = @Queue(MqQueue.OPERATION_CENTER_CREATED),
exchange = @Exchange(value = MqExchange.OPERATION_CENTER_CREATED,
type = ExchangeTypes.FANOUT)))
@ -339,7 +341,7 @@ public class RevenueRewardEventHandler extends BaseApplicationService {
private void handleStoreNoviceTaskReward(Long orgId, BigDecimal revenue, String matchmakerName) {
//钱包信息
WalletAccount walletAccount = walletAccountQueryService.queryByType(orgId, IdentityTypeEnum.ORGANIZATION);
WalletAccount walletAccount = walletAccountQueryService.queryByType(quzhaoqinAppId, orgId, IdentityTypeEnum.ORGANIZATION);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().subtract(revenue));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
@ -361,7 +363,7 @@ public class RevenueRewardEventHandler extends BaseApplicationService {
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包信息
WalletAccount walletAccount = walletAccountQueryService.queryByType(matchmakerUserId, IdentityTypeEnum.INDIVIDUAL);
WalletAccount walletAccount = walletAccountQueryService.queryByType(quzhaoqinAppId, matchmakerUserId, IdentityTypeEnum.INDIVIDUAL);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));

12
dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/rpaw/RafflePrizeActivityWinningEventHandler.java

@ -1,10 +1,7 @@
package com.qniao.dam.application.handler.rpaw;
import cn.hutool.core.collection.CollUtil;
import com.google.common.eventbus.Subscribe;
import com.qniao.dam.domain.aggregate.order.entity.Order;
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.aggregate.rpaw.entity.RafflePrizeActivityWinning;
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount;
@ -19,15 +16,13 @@ import com.qniao.dam.infrastructure.persistent.dao.rpaw.RafflePrizeActivityWinni
import com.qniao.dam.query.revenuereward.RevenueRewardQueryService;
import com.qniao.dam.query.walletaccount.WalletAccountQueryService;
import com.qniao.domain.BaseApplicationService;
import com.qniao.framework.exception.BizException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* @author Zpj
@ -46,6 +41,9 @@ public class RafflePrizeActivityWinningEventHandler extends BaseApplicationServi
@Resource
private AcquireRevenueRewardDomainService acquireRevenueRewardDomainService;
@Value("${quzhaoqin_app_id}")
private Long quzhaoqinAppId;
@Subscribe
private void handle(RafflePrizeActivityWinningDrawnEvent event) {
try {
@ -63,7 +61,7 @@ public class RafflePrizeActivityWinningEventHandler extends BaseApplicationServi
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包
WalletAccount walletAccount = walletAccountQueryService.queryByType(winning.getUserId(), IdentityTypeEnum.INDIVIDUAL);
WalletAccount walletAccount = walletAccountQueryService.queryByType(quzhaoqinAppId, winning.getUserId(), IdentityTypeEnum.INDIVIDUAL);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(earnings));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));

3
dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/siteactivity/SiteActivityEventHandler.java

@ -1,6 +1,5 @@
package com.qniao.dam.application.handler.siteactivity;
import cn.hutool.core.collection.CollUtil;
import com.qniao.dam.domain.aggregate.externalorder.entity.ExternalOrderRel;
import com.qniao.dam.domain.aggregate.order.entity.Order;
import com.qniao.dam.domain.aggregate.revenuereward.entity.RevenueReward;
@ -91,7 +90,7 @@ public class SiteActivityEventHandler extends BaseApplicationService {
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包
WalletAccount walletAccount = walletAccountQueryService.queryByType(matchmaker.getUserId(), IdentityTypeEnum.INDIVIDUAL);
WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getAppId(), matchmaker.getUserId(), IdentityTypeEnum.INDIVIDUAL);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(earnings));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));

7
dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/utc/UserTaskCompleteEventHandler.java

@ -14,7 +14,6 @@ import com.qniao.dam.domain.aggregate.walletaccount.valueobj.WalletAccountRecord
import com.qniao.dam.domain.service.utc.CompleteUserTaskCompleteDomainService;
import com.qniao.dam.domian.aggregate.tasktemplate.constant.SubTaskTypeEnum;
import com.qniao.dam.domian.aggregate.tasktemplate.constant.TaskGroupEnum;
import com.qniao.dam.domian.aggregate.tasktemplate.constant.TaskStageEnum;
import com.qniao.dam.domian.aggregate.tasktemplate.constant.TaskTypeEnum;
import com.qniao.dam.domian.aggregate.udtp.event.UserDailyTaskProgressCommittedEvent;
import com.qniao.dam.domian.aggregate.utc.event.EffectiveBlindDateCountCommittedMQ;
@ -39,6 +38,7 @@ import org.springframework.amqp.rabbit.annotation.Exchange;
import org.springframework.amqp.rabbit.annotation.Queue;
import org.springframework.amqp.rabbit.annotation.QueueBinding;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@ -69,6 +69,9 @@ public class UserTaskCompleteEventHandler extends BaseApplicationService {
@Resource
private UserDailyTaskProgressAggregate userDailyTaskProgressAggregate;
@Value("${qulianlian_app_id}")
private Long qulianlianAppId;
@RabbitListener(bindings = @QueueBinding(value = @Queue(MqQueue.EFFECTIVE_LIVE_DURATION_COMMITTED),
exchange = @Exchange(value = MqExchange.EFFECTIVE_LIVE_DURATION_COMMITTED,
@ -200,7 +203,7 @@ public class UserTaskCompleteEventHandler extends BaseApplicationService {
BigDecimal revenue = new BigDecimal(taskTemplate.getRewardValue());
WalletAccount walletAccount = null;
if (revenue.compareTo(BigDecimal.ZERO) > 0) {
walletAccount = walletAccountQueryService.queryByType(userTaskComplete.getUserId(), IdentityTypeEnum.INDIVIDUAL);
walletAccount = walletAccountQueryService.queryByType(qulianlianAppId, userTaskComplete.getUserId(), IdentityTypeEnum.INDIVIDUAL);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));

9
dating-agency-mall-server/src/main/java/com/qniao/dam/application/handler/virtualaccount/VirtualAccountEventHandler.java

@ -8,7 +8,6 @@ import com.qniao.dam.domain.aggregate.rewardconfig.entity.RewardConfig;
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount;
import com.qniao.dam.domain.aggregate.walletaccount.valueobj.WalletAccountRecord;
import com.qniao.dam.domain.service.revenuereward.AcquireRevenueRewardDomainService;
import com.qniao.dam.domian.aggregate.product.constant.ProductSubCategoryEnum;
import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum;
import com.qniao.dam.domian.aggregate.virtualaccount.event.VirtualAccountCostGiftEvent;
import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum;
@ -21,13 +20,12 @@ import com.qniao.dam.query.recommendationrelation.RecommendationRelationQuerySer
import com.qniao.dam.query.revenuereward.RevenueRewardQueryService;
import com.qniao.dam.query.rewardconfig.RewardConfigQueryService;
import com.qniao.dam.query.walletaccount.WalletAccountQueryService;
import com.qniao.das.domian.aggregate.matchmakermarriage.MatchmakerMarriageInformation;
import com.qniao.das.domian.aggregate.recommendationrelation.entity.RecommendationRelation;
import com.qniao.dau.domain.aggregate.livematchmaker.entity.LiveMatchmaker;
import com.qniao.dau.domain.aggregate.matchmaker.entity.Matchmaker;
import com.qniao.dau.domian.aggregate.lmar.constant.LiveMatchmakerTypeEnum;
import com.qniao.domain.BaseApplicationService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
@ -57,6 +55,9 @@ public class VirtualAccountEventHandler extends BaseApplicationService {
@Resource
private RecommendationRelationQueryService recommendationRelationQueryService;
@Value("${qulianlian_app_id}")
private Long qulianlianAppId;
@Subscribe
private void handle(VirtualAccountCostGiftEvent event) {
try {
@ -95,7 +96,7 @@ public class VirtualAccountEventHandler extends BaseApplicationService {
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包
WalletAccount walletAccount = walletAccountQueryService.queryByType(liveMatchmaker.getUserId(), IdentityTypeEnum.INDIVIDUAL);
WalletAccount walletAccount = walletAccountQueryService.queryByType(qulianlianAppId, liveMatchmaker.getUserId(), IdentityTypeEnum.INDIVIDUAL);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));

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

@ -1,6 +1,5 @@
package com.qniao.dam.application.service.revenuereward;
import cn.hutool.core.util.StrUtil;
import com.qniao.dam.application.service.reward.RewardApplicationService;
import com.qniao.dam.domain.aggregate.eso.entity.EntrustServiceOrder;
import com.qniao.dam.domain.aggregate.revenuereward.RevenueRewardAggregate;
@ -11,14 +10,10 @@ import com.qniao.dam.domain.aggregate.rewardconfig.entity.RewardConfig;
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount;
import com.qniao.dam.domain.aggregate.walletaccount.valueobj.WalletAccountRecord;
import com.qniao.dam.domain.service.revenuereward.AcquireRevenueRewardDomainService;
import com.qniao.dam.domian.aggregate.matchmaker.event.MatchmakerFranchiseFeeRewardEvent;
import com.qniao.dam.domian.aggregate.pointaccount.event.PointRewardCreatedMQ;
import com.qniao.dam.domian.aggregate.prc.constant.PointRewardConfigTypeEnum;
import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum;
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.TradeTypeEnum;
import com.qniao.dam.infrastructure.constant.MqExchange;
import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageInformationDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.MatchmakerDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.RevenueRewardRecordDao;
@ -33,10 +28,10 @@ import com.qniao.dau.domain.aggregate.matchmaker.entity.Matchmaker;
import com.qniao.dau.domain.aggregate.operationcenter.entity.OperationCenter;
import com.qniao.dau.domain.aggregate.organization.entity.Organization;
import com.qniao.dau.domain.aggregate.store.entity.Store;
import com.qniao.dau.domian.aggregate.matchmakeraudit.constant.MatchmakerAuditBehaviorEnum;
import com.qniao.dau.domian.aggregate.organization.constant.OrganizationTypeEnum;
import com.qniao.framework.exception.BizException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -73,6 +68,10 @@ public class RevenueRewardApplicationService {
@Resource
private RewardApplicationService rewardApplicationService;
@Value("${quzhaoqin_app_id}")
private Long quzhaoqinAppId;
public void create(RevenueReward revenueReward) {
RevenueReward existRevenueReward = revenueRewardQueryService.queryByUserId(revenueReward.getUserId());
if (Objects.nonNull(existRevenueReward)) {
@ -129,7 +128,7 @@ public class RevenueRewardApplicationService {
WalletAccount walletAccount = null;
if (TradeSceneEnum.ONLINE.equals(tradeScene)) {
//钱包信息
walletAccount = walletAccountQueryService.queryByType(recommendServiceProviderOrgId, IdentityTypeEnum.ORGANIZATION);
walletAccount = walletAccountQueryService.queryByType(quzhaoqinAppId, recommendServiceProviderOrgId, IdentityTypeEnum.ORGANIZATION);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
@ -166,7 +165,7 @@ public class RevenueRewardApplicationService {
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包信息
WalletAccount walletAccount = walletAccountQueryService.queryByType(matchmaker.getUserId(), IdentityTypeEnum.INDIVIDUAL);
WalletAccount walletAccount = walletAccountQueryService.queryByType(quzhaoqinAppId, matchmaker.getUserId(), IdentityTypeEnum.INDIVIDUAL);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));

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

@ -23,7 +23,6 @@ import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum;
import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeSceneEnum;
import com.qniao.dam.infrastructure.constant.MqExchange;
import com.qniao.dam.infrastructure.persistent.dao.domain.*;
import com.qniao.dam.query.ffpm.FranchiseFeeProfitManagementQueryService;
import com.qniao.dam.query.matchmaker.MatchmakerQueryService;
import com.qniao.dam.query.mntp.MatchmakerNoviceTaskProgressQueryService;
import com.qniao.dam.query.operationcenter.OperationCenterQueryService;
@ -47,6 +46,7 @@ import com.qniao.dau.domian.aggregate.matchmaker.event.MatchmakerInvitedMQ;
import com.qniao.dau.domian.aggregate.matchmakeraudit.constant.MatchmakerAuditBehaviorEnum;
import com.qniao.domain.BaseApplicationService;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
@ -89,6 +89,9 @@ public class RewardApplicationService extends BaseApplicationService {
@Resource
private FranchiseFeeProfitManagementAggregate franchiseFeeProfitManagementAggregate;
@Value("${quzhaoqin_app_id}")
private Long quzhaoqinAppId;
/**
* 获得红娘推荐奖励 新政策
*/
@ -121,7 +124,7 @@ public class RewardApplicationService extends BaseApplicationService {
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包信息
WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getInitiatorUserId(), IdentityTypeEnum.INDIVIDUAL);
WalletAccount walletAccount = walletAccountQueryService.queryByType(quzhaoqinAppId, dto.getInitiatorUserId(), IdentityTypeEnum.INDIVIDUAL);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
@ -280,7 +283,7 @@ public class RewardApplicationService extends BaseApplicationService {
revenueReward.handleRevenueReward(revenue);
//钱包信息
WalletAccount walletAccount = walletAccountQueryService.queryByType(orgId, IdentityTypeEnum.ORGANIZATION);
WalletAccount walletAccount = walletAccountQueryService.queryByType(quzhaoqinAppId, orgId, IdentityTypeEnum.ORGANIZATION);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
@ -330,7 +333,7 @@ public class RewardApplicationService extends BaseApplicationService {
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包信息
WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getInitiatorUserId(), IdentityTypeEnum.INDIVIDUAL);
WalletAccount walletAccount = walletAccountQueryService.queryByType(quzhaoqinAppId, dto.getInitiatorUserId(), IdentityTypeEnum.INDIVIDUAL);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
@ -387,7 +390,7 @@ public class RewardApplicationService extends BaseApplicationService {
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包信息
WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getStoreOrgId(), IdentityTypeEnum.ORGANIZATION);
WalletAccount walletAccount = walletAccountQueryService.queryByType(quzhaoqinAppId, dto.getStoreOrgId(), IdentityTypeEnum.ORGANIZATION);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
@ -417,7 +420,7 @@ public class RewardApplicationService extends BaseApplicationService {
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包信息
WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getOperationCenterOrgId(), IdentityTypeEnum.ORGANIZATION);
WalletAccount walletAccount = walletAccountQueryService.queryByType(quzhaoqinAppId, dto.getOperationCenterOrgId(), IdentityTypeEnum.ORGANIZATION);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
@ -470,7 +473,7 @@ public class RewardApplicationService extends BaseApplicationService {
}
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包
WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getReceiver(), IdentityTypeEnum.INDIVIDUAL);
WalletAccount walletAccount = walletAccountQueryService.queryByType(quzhaoqinAppId, dto.getReceiver(), IdentityTypeEnum.INDIVIDUAL);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(earnings));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
@ -531,7 +534,7 @@ public class RewardApplicationService extends BaseApplicationService {
}
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包信息
WalletAccount walletAccount = walletAccountQueryService.queryByType(identityId, identityType);
WalletAccount walletAccount = walletAccountQueryService.queryByType(quzhaoqinAppId, identityId, identityType);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
@ -578,7 +581,7 @@ public class RewardApplicationService extends BaseApplicationService {
}
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getReceiver(), IdentityTypeEnum.INDIVIDUAL);
WalletAccount walletAccount = walletAccountQueryService.queryByType(quzhaoqinAppId, dto.getReceiver(), IdentityTypeEnum.INDIVIDUAL);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(earnings));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
@ -672,7 +675,7 @@ public class RewardApplicationService extends BaseApplicationService {
storeRevenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包信息
WalletAccount walletAccount = walletAccountQueryService.queryByType(store.getOrgId(), IdentityTypeEnum.ORGANIZATION);
WalletAccount walletAccount = walletAccountQueryService.queryByType(quzhaoqinAppId, store.getOrgId(), IdentityTypeEnum.ORGANIZATION);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
@ -704,7 +707,7 @@ public class RewardApplicationService extends BaseApplicationService {
ocRevenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包信息
WalletAccount walletAccount = walletAccountQueryService.queryByType(store.getOperationCenterOrgId(), IdentityTypeEnum.ORGANIZATION);
WalletAccount walletAccount = walletAccountQueryService.queryByType(quzhaoqinAppId, store.getOperationCenterOrgId(), IdentityTypeEnum.ORGANIZATION);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));

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

@ -21,7 +21,6 @@ import com.qniao.dam.domain.aggregate.virtualaccount.entity.VirtualAccount;
import com.qniao.dam.domain.aggregate.walletaccount.WalletAccountAggregate;
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount;
import com.qniao.dam.domain.aggregate.walletaccount.valueobj.WalletAccountRecord;
import com.qniao.dam.domain.service.revenuereward.AcquireRevenueRewardDomainService;
import com.qniao.dam.domain.service.virtualaccount.ConsumeVirtualAccountDomainService;
import com.qniao.dam.domain.service.virtualaccount.CostGiftRewardDomainService;
import com.qniao.dam.domain.service.virtualaccount.SettleOneOnOneRtcDomainService;
@ -33,7 +32,6 @@ import com.qniao.dam.domian.aggregate.productspec.constant.ProductSpecTermNameEn
import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum;
import com.qniao.dam.domian.aggregate.virtualaccount.constant.VirtualAccountTradeTypeEnum;
import com.qniao.dam.domian.aggregate.virtualaccount.event.ChannelCostGiftEvent;
import com.qniao.dam.domian.aggregate.virtualaccount.event.VirtualAccountCostGiftEvent;
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.TradeTypeEnum;
@ -49,7 +47,6 @@ import com.qniao.dam.query.walletaccount.WalletAccountQueryService;
import com.qniao.das.domian.aggregate.marriageinformation.MarriageInformation;
import com.qniao.domain.BaseApplicationService;
import com.qniao.domain.BaseDomainEvent;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -126,7 +123,7 @@ public class VirtualAccountApplicationService extends BaseApplicationService {
if (VirtualAccountTradeTypeEnum.CONNECT_CHANNEL.equals(dto.getTradeType())) {
RewardConfig worthRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.VIRTUAL_ACCOUNT_WORTH);
BigDecimal worthReward = BigDecimal.valueOf(productSpec.getUnitSellingPrice().intValue()).multiply(new BigDecimal(worthRewardConfig.getValue()));
walletAccountApplicationService.handleChannelConnectReward(dto.getAnchorUserId(), dto.getChannelCreatorTodayCrossMicCount(),worthReward);
walletAccountApplicationService.handleChannelConnectReward(dto.getAppId(),dto.getAnchorUserId(), dto.getChannelCreatorTodayCrossMicCount(),worthReward);
}
}
}
@ -179,7 +176,7 @@ public class VirtualAccountApplicationService extends BaseApplicationService {
ProductSpec productSpec = productSpecDao.selectById(dto.getProductSpecId());
Integer costBalance = productSpec.getUnitSellingPrice().intValue() * dto.getQuantity();
if (virtualAccount != null && virtualAccount.getBalance() >= costBalance) {
vo = handleIMGiftReward(virtualAccount, dto.getFromUserId(), dto.getToUserId(), productSpec, costBalance, dto.getQuantity());
vo = handleIMGiftReward(virtualAccount, dto.getAppId(),dto.getFromUserId(), dto.getToUserId(), productSpec, costBalance, dto.getQuantity());
}
vo.setCostBalance(costBalance);
}
@ -188,6 +185,7 @@ public class VirtualAccountApplicationService extends BaseApplicationService {
@Transactional(rollbackFor = Exception.class)
public CostGiftVo handleIMGiftReward(VirtualAccount virtualAccount,
Long appId,
Long fromUserId,
Long toUserId,
ProductSpec productSpec,
@ -217,7 +215,7 @@ public class VirtualAccountApplicationService extends BaseApplicationService {
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包
WalletAccount walletAccount = walletAccountQueryService.queryByType(toUserId, IdentityTypeEnum.INDIVIDUAL);
WalletAccount walletAccount = walletAccountQueryService.queryByType(appId, toUserId, IdentityTypeEnum.INDIVIDUAL);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
@ -239,10 +237,10 @@ public class VirtualAccountApplicationService extends BaseApplicationService {
if (virtualAccount != null && virtualAccount.getBalance() >= costBalance) {
if (dto.getDirection() == 1) {
//直接送主播
vo = handleChannelAnchorGiftReward(virtualAccount, dto.getFromUserId(), dto.getChannelCreatorId(), productSpec, costBalance, dto.getQuantity(), dto.getChannelCreatorTodayCrossMicCount());
vo = handleChannelAnchorGiftReward(virtualAccount,dto.getAppId(), dto.getFromUserId(), dto.getChannelCreatorId(), productSpec, costBalance, dto.getQuantity(), dto.getChannelCreatorTodayCrossMicCount());
} else {
//直接送嘉宾
vo = handleChannelUserGiftReward(virtualAccount, dto.getFromUserId(), dto.getToUserId(), dto.getChannelCreatorId(), productSpec, costBalance, dto.getQuantity(), dto.getChannelCreatorTodayCrossMicCount());
vo = handleChannelUserGiftReward(virtualAccount, dto.getAppId(),dto.getFromUserId(), dto.getToUserId(), dto.getChannelCreatorId(), productSpec, costBalance, dto.getQuantity(), dto.getChannelCreatorTodayCrossMicCount());
}
}
vo.setCostBalance(costBalance);
@ -254,7 +252,7 @@ public class VirtualAccountApplicationService extends BaseApplicationService {
*/
@Transactional(rollbackFor = Exception.class)
public CostGiftVo handleChannelUserGiftReward(VirtualAccount virtualAccount,
Long fromUserId,
Long appId, Long fromUserId,
Long toUserId,
Long anchorId,
ProductSpec productSpec,
@ -281,7 +279,7 @@ public class VirtualAccountApplicationService extends BaseApplicationService {
toRevenueRewardRecord.setContent("直播间礼物");
toRevenueReward.setRecordList(Collections.singletonList(toRevenueRewardRecord));
//钱包
WalletAccount toWalletAccount = walletAccountQueryService.queryByType(toUserId, IdentityTypeEnum.INDIVIDUAL);
WalletAccount toWalletAccount = walletAccountQueryService.queryByType(appId, toUserId, IdentityTypeEnum.INDIVIDUAL);
BigDecimal toOriginalBalance = toWalletAccount.getTotalBalance();
toWalletAccount.setAvailableBalance(toWalletAccount.getAvailableBalance().add(toRevenue));
toWalletAccount.setTotalBalance(toWalletAccount.getAvailableBalance().add(toWalletAccount.getFrozenBalance()));
@ -304,7 +302,7 @@ public class VirtualAccountApplicationService extends BaseApplicationService {
anchorRevenueRewardRecord.setContent("直播间礼物");
anchorRevenueReward.setRecordList(Collections.singletonList(anchorRevenueRewardRecord));
//钱包
WalletAccount anchorWalletAccount = walletAccountQueryService.queryByType(anchorId, IdentityTypeEnum.INDIVIDUAL);
WalletAccount anchorWalletAccount = walletAccountQueryService.queryByType(appId, anchorId, IdentityTypeEnum.INDIVIDUAL);
BigDecimal anchorOriginalBalance = anchorWalletAccount.getTotalBalance();
anchorWalletAccount.setAvailableBalance(anchorWalletAccount.getAvailableBalance().add(anchorRevenue));
anchorWalletAccount.setTotalBalance(anchorWalletAccount.getAvailableBalance().add(anchorWalletAccount.getFrozenBalance()));
@ -323,6 +321,7 @@ public class VirtualAccountApplicationService extends BaseApplicationService {
*/
@Transactional(rollbackFor = Exception.class)
public CostGiftVo handleChannelAnchorGiftReward(VirtualAccount virtualAccount,
Long appId,
Long fromUserId,
Long toUserId,
ProductSpec productSpec,
@ -353,7 +352,7 @@ public class VirtualAccountApplicationService extends BaseApplicationService {
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包
WalletAccount walletAccount = walletAccountQueryService.queryByType(toUserId, IdentityTypeEnum.INDIVIDUAL);
WalletAccount walletAccount = walletAccountQueryService.queryByType(appId, toUserId, IdentityTypeEnum.INDIVIDUAL);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
@ -472,7 +471,7 @@ public class VirtualAccountApplicationService extends BaseApplicationService {
WalletAccount walletAccount = null;
if (dto.getHasProfit()) {
walletAccount = walletAccountQueryService.queryByType(dto.getProfitUserId(), IdentityTypeEnum.INDIVIDUAL);
walletAccount = walletAccountQueryService.queryByType(dto.getAppId(), dto.getProfitUserId(), IdentityTypeEnum.INDIVIDUAL);
RewardConfig worthRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.VIRTUAL_ACCOUNT_WORTH);
RewardConfig rtcRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.RTC_PROFIT_BY_ONE_ON_ONE);

13
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/walletaccount/WalletAccountApplicationService.java

@ -2,18 +2,14 @@ package com.qniao.dam.application.service.walletaccount;
import com.qniao.dam.api.command.walletaccount.user.request.UserAcquireLinkMicCardRewardDto;
import com.qniao.dam.api.command.walletaccount.user.request.UserAcquireRewardAmountDto;
import com.qniao.dam.domain.aggregate.order.entity.Order;
import com.qniao.dam.domain.aggregate.productspec.entity.ProductSpec;
import com.qniao.dam.domain.aggregate.revenuereward.entity.RevenueReward;
import com.qniao.dam.domain.aggregate.revenuereward.valueobj.RevenueRewardRecord;
import com.qniao.dam.domain.aggregate.rewardconfig.entity.RewardConfig;
import com.qniao.dam.domain.aggregate.virtualaccount.entity.VirtualAccount;
import com.qniao.dam.domain.aggregate.walletaccount.WalletAccountAggregate;
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount;
import com.qniao.dam.domain.aggregate.walletaccount.valueobj.WalletAccountRecord;
import com.qniao.dam.domain.service.revenuereward.AcquireRevenueRewardDomainService;
import com.qniao.dam.domian.aggregate.rewardconfig.constant.RewardTypeEnum;
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;
import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum;
@ -65,7 +61,7 @@ public class WalletAccountApplicationService {
}
public void acquireRewardAmount(UserAcquireRewardAmountDto dto) {
WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getUserId(), IdentityTypeEnum.INDIVIDUAL);
WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getAppId(),dto.getUserId(), IdentityTypeEnum.INDIVIDUAL);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(dto.getAmount()));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
@ -78,12 +74,13 @@ public class WalletAccountApplicationService {
public void acquireLinkMicCardReward(UserAcquireLinkMicCardRewardDto dto) {
synchronized (dto.getAnchorUserId().toString().intern()) {
RewardConfig worthRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.CHAT_PROFIT_BY_LINK_MIC_CARD);
handleChannelConnectReward(dto.getAnchorUserId(), dto.getChannelCreatorTodayCrossMicCount(), new BigDecimal(worthRewardConfig.getValue()));
handleChannelConnectReward(dto.getAppId(),dto.getAnchorUserId(), dto.getChannelCreatorTodayCrossMicCount(), new BigDecimal(worthRewardConfig.getValue()));
}
}
public void handleChannelConnectReward(Long userId,
public void handleChannelConnectReward(Long appId,
Long userId,
Integer channelCreatorTodayCrossMicCount,
BigDecimal worthReward) {
//收益信息
@ -102,7 +99,7 @@ public class WalletAccountApplicationService {
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包
WalletAccount walletAccount = walletAccountQueryService.queryByType(userId, IdentityTypeEnum.INDIVIDUAL);
WalletAccount walletAccount = walletAccountQueryService.queryByType(appId, userId, IdentityTypeEnum.INDIVIDUAL);
BigDecimal originalBalance = walletAccount.getTotalBalance();
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));

2
dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/withdrawaudit/WithdrawAuditApplicationService.java

@ -52,7 +52,7 @@ public class WithdrawAuditApplicationService extends BaseApplicationService {
public void applyWithdraw(WithdrawAudit withdrawAudit, List<ThirdPartyField> fieldList, Long appId) {
Long identityId = Objects.nonNull(withdrawAudit.getWalletAccountOrgId()) ? withdrawAudit.getWalletAccountOrgId() : withdrawAudit.getWalletAccountUserId();
synchronized (identityId.toString().intern()) {
WalletAccount walletAccount = walletAccountQueryService.queryByType(identityId, withdrawAudit.getIdentityType());
WalletAccount walletAccount = walletAccountQueryService.queryByType(appId, identityId, withdrawAudit.getIdentityType());
if (Objects.isNull(walletAccount) || walletAccountQueryService.countAvailableWithdrawBalance(walletAccount).compareTo(withdrawAudit.getWithdrawAmount()) < 0) {
throw new BizException("超出可提现金额");
}

3
dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/view/WalletAccountViewDao.java

@ -20,7 +20,8 @@ public interface WalletAccountViewDao {
IPage<UsePageWalletAccountRecordByOperatorVo> pageWalletAccountRecordByOperator(Page<Object> pageWithoutOrders,
@Param("queryParams") UsePageWalletAccountRecordByOperatorQueryParams queryParams);
BigDecimal getTodayLiveIncome(@Param("userId") Long userId,
BigDecimal getTodayLiveIncome(@Param("appId") Long appId,
@Param("userId") Long userId,
@Param("startTime") LocalDateTime startTime,
@Param("endTime") LocalDateTime endTime);
}

6
dating-agency-mall-server/src/main/java/com/qniao/dam/query/walletaccount/WalletAccountQueryService.java

@ -19,9 +19,9 @@ public interface WalletAccountQueryService {
IPage<UserGetWalletAccountRecordVo> pageWalletAccountRecord(UserPageWalletAccountRecordQueryParam queryParam, PageUtil pageUtil);
UserGetWalletAccountVo getWalletAccountView(Long userId, Long orgId);
UserGetWalletAccountVo getWalletAccountView(Long appId, Long userId, Long orgId);
WalletAccount queryByType(Long identityId, IdentityTypeEnum identityTypeEnum);
WalletAccount queryByType(Long appId, Long identityId, IdentityTypeEnum identityTypeEnum);
BigDecimal countAvailableWithdrawBalance(WalletAccount walletAccount);
@ -29,5 +29,5 @@ public interface WalletAccountQueryService {
String exportData(UsePageWalletAccountRecordByOperatorQueryParams queryParams);
UserGetTodayLiveIncomeVo getTodayLiveIncome(Long userId);
UserGetTodayLiveIncomeVo getTodayLiveIncome(Long appId, Long userId);
}

22
dating-agency-mall-server/src/main/java/com/qniao/dam/query/walletaccount/impl/WalletAccountQueryServiceImpl.java

@ -9,21 +9,18 @@ import com.qniao.dam.domain.aggregate.walletaccount.valueobj.WalletAccountRecord
import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum;
import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum;
import com.qniao.dam.infrastructure.easyexcel.EasyExcelUtil;
import com.qniao.dam.infrastructure.persistent.dao.domain.MatchmakerDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.WalletAccountRecordDao;
import com.qniao.dam.infrastructure.persistent.dao.view.WalletAccountViewDao;
import com.qniao.dam.query.matchmaker.MatchmakerQueryService;
import com.qniao.dam.query.walletaccount.WalletAccountQueryService;
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount;
import com.qniao.dam.infrastructure.persistent.dao.domain.WalletAccountDao;
import com.qniao.dau.domian.aggregate.matchmaker.constant.MatchmakerLevelEnum;
import com.qniao.framework.utils.PageUtil;
import com.qniao.framework.utils.TypeConvertUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
@ -57,7 +54,7 @@ public class WalletAccountQueryServiceImpl implements WalletAccountQueryService
}
@Override
public UserGetWalletAccountVo getWalletAccountView(Long userId, Long orgId) {
public UserGetWalletAccountVo getWalletAccountView(Long appId, Long userId, Long orgId) {
Long identityId = userId;
IdentityTypeEnum identityType = IdentityTypeEnum.INDIVIDUAL;
if (Objects.nonNull(orgId)) {
@ -65,7 +62,7 @@ public class WalletAccountQueryServiceImpl implements WalletAccountQueryService
identityType = IdentityTypeEnum.ORGANIZATION;
}
UserGetWalletAccountVo walletAccountVo = new UserGetWalletAccountVo();
WalletAccount walletAccount = queryByType(identityId, identityType);
WalletAccount walletAccount = queryByType(appId, identityId, identityType);
if (Objects.nonNull(walletAccount)) {
walletAccountVo = TypeConvertUtils.convert(walletAccount, UserGetWalletAccountVo.class);
if (Objects.nonNull(walletAccount.getId())) {
@ -74,7 +71,7 @@ public class WalletAccountQueryServiceImpl implements WalletAccountQueryService
.eq(WalletAccountRecord::getWalletAccountId, walletAccount.getId())
.eq(WalletAccountRecord::getTradeType, TradeTypeEnum.WITHDRAW))
.stream().map(WalletAccountRecord::getTradeAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
//可提现金额参考工资为例,15号后结上一个月之前的15-1-14则结算前两个月之前的
//可提现金额
walletAccountVo.setAvailableWithdrawBalance(countAvailableWithdrawBalance(walletAccount));
walletAccountVo.setSettlementBalance(walletAccount.getAvailableBalance().subtract(walletAccountVo.getAvailableWithdrawBalance()));
}
@ -165,9 +162,9 @@ public class WalletAccountQueryServiceImpl implements WalletAccountQueryService
}
@Override
public UserGetTodayLiveIncomeVo getTodayLiveIncome(Long userId) {
public UserGetTodayLiveIncomeVo getTodayLiveIncome(Long appId, Long userId) {
UserGetTodayLiveIncomeVo vo = new UserGetTodayLiveIncomeVo();
BigDecimal todayLiveIncome = walletAccountViewDao.getTodayLiveIncome(userId, LocalDate.now().atStartOfDay(), LocalDate.now().plusDays(1).atStartOfDay());
BigDecimal todayLiveIncome = walletAccountViewDao.getTodayLiveIncome(appId,userId, LocalDate.now().atStartOfDay(), LocalDate.now().plusDays(1).atStartOfDay());
vo.setTodayLiveIncomeStr(todayLiveIncome.stripTrailingZeros().toPlainString());
return vo;
}
@ -188,23 +185,26 @@ public class WalletAccountQueryServiceImpl implements WalletAccountQueryService
}
@Override
public WalletAccount queryByType(Long identityId,
public WalletAccount queryByType(Long appId,
Long identityId,
IdentityTypeEnum identityType) {
WalletAccount walletAccount = null;
if (IdentityTypeEnum.INDIVIDUAL.equals(identityType)) {
walletAccount = walletAccountDao.selectOne(new LambdaQueryWrapper<WalletAccount>()
.eq(WalletAccount::getAppId, appId)
.eq(WalletAccount::getUserId, identityId)
.last("limit 1"));
if (Objects.isNull(walletAccount)) {
walletAccount = WalletAccount.initUser(identityId);
walletAccount = WalletAccount.initUser(appId, identityId);
}
return walletAccount;
} else {
walletAccount = walletAccountDao.selectOne(new LambdaQueryWrapper<WalletAccount>()
.eq(WalletAccount::getAppId, appId)
.eq(WalletAccount::getOrgId, identityId)
.last("limit 1"));
if (Objects.isNull(walletAccount)) {
walletAccount = WalletAccount.initOrg(identityId);
walletAccount = WalletAccount.initOrg(appId, identityId);
}
return walletAccount;
}

7
dating-agency-mall-server/src/main/resources/mapper/walletaccount/PurchaseProductRecordQueryService.xml

@ -16,6 +16,9 @@
FROM da_wallet_account_record as dwar
INNER JOIN da_wallet_account as dwa on dwa.id=dwar.wallet_account_id
where dwa.is_delete=0
<if test="queryParam.queryAppId != null">
and dwa.app_id = #{queryParam.queryAppId}
</if>
<if test="queryParam.queryUserId != null">
and dwa.user_id = #{queryParam.queryUserId}
</if>
@ -49,6 +52,9 @@
INNER JOIN da_wallet_account as dawa on dawar.wallet_account_id=dawa.id
LEFT JOIN da_matchmaker as dam on dam.is_delete=0 and dam.user_id=dawa.user_id
where dawa.is_delete=0 and dawa.identity_type=1
<if test="queryParams.queryAppId != null">
and dawa.app_id = #{queryParams.queryAppId}
</if>
<if test="queryParams.name != null and queryParams.name != '' ">
AND dam.`name` LIKE CONCAT('%', TRIM(#{queryParams.name}), '%')
</if>
@ -66,6 +72,7 @@
From da_wallet_account as dawa
INNER JOIN da_wallet_account_record as dawar on dawar.wallet_account_id = dawa.id
where dawa.is_delete = 0
and dawa.app_id = #{appId}
and dawa.user_id = #{userId}
and dawar.trade_type in (116, 118)
and dawar.create_time BETWEEN #{startTime} and #{endTime}

Loading…
Cancel
Save