diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/reward/user/RewardUserCommandController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/reward/user/RewardUserCommandController.java index 0cdef93..0ad835f 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/reward/user/RewardUserCommandController.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/reward/user/RewardUserCommandController.java @@ -27,7 +27,6 @@ public class RewardUserCommandController { @ApiOperation("补充门店+运营中心的红娘加盟佣金--临时") @PostMapping("replenish/matchmaker-join-recommend") - @IgnoreResponseAdvice public void replenishMatchmakerJoinRecommend() { rewardApplicationService.replenishMatchmakerJoinRecommend(); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java index 148dcfc..d1580d6 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java @@ -417,7 +417,83 @@ public class RewardApplicationService extends BaseApplicationService { revenueRewardRecordList.forEach(record -> { RevenueReward revenueReward = revenueRewardDao.selectById(record.getRevenueRewardId()); //判断是否个人收入 + if (IdentityTypeEnum.INDIVIDUAL.equals(revenueReward.getIdentityType())) { + List associateOrderList = revenueRewardQueryService.listAssociateOrderBy(revenueReward.getId()); + if (CollUtil.isNotEmpty(associateOrderList)) { + List allAssociateOrderList = revenueRewardQueryService.listAssociateOrderByOrderId(associateOrderList.get(0).getAssociateOrderId()); + if (allAssociateOrderList.size() == 1) { + //服务没有关联订单,可以补充 + Matchmaker matchmaker = matchmakerQueryService.queryByUserId(revenueReward.getUserId()); + if (Objects.nonNull(matchmaker)) { + //门店提成 + if (Objects.nonNull(matchmaker.getStoreId())) { + Store store = storeQueryService.queryById(matchmaker.getStoreId()); + if (!store.getAdministratorId().equals(revenueReward.getUserId())) { + synchronized (store.getOrgId().toString().intern()) { + RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_STORE); + if (Objects.nonNull(recommendRewardConfig)) { + //收益信息 + RevenueReward storeRevenueReward = revenueRewardQueryService.queryByOrgId(store.getOrgId()); + //营收额 + BigDecimal revenue = recommendRewardConfig.calculateReward(record.getTotalAssociateOrderAmount()); + RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, TradeSceneEnum.ONLINE, + revenue, new BigDecimal(recommendRewardConfig.getValue()), BigDecimal.ZERO, revenue, record.getTotalAssociateOrderAmount()); + revenueRewardRecord.setContent(record.getContent()); + revenueRewardRecord.setCreateTime(record.getCreateTime()); + RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrderList.get(0).getId(), record.getTotalAssociateOrderAmount()); + revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); + revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); + //钱包信息 + WalletAccount walletAccount = walletAccountQueryService.queryByType(store.getOrgId(), IdentityTypeEnum.ORGANIZATION); + BigDecimal originalBalance = walletAccount.getTotalBalance(); + walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); + walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); + WalletAccountRecord storeRecord = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true, originalBalance, walletAccount.getTotalBalance()); + storeRecord.setCreateTime(record.getCreateTime()); + walletAccount.setRecordList(Collections.singletonList(storeRecord)); + acquireRevenueRewardDomainService.handle(storeRevenueReward, walletAccount); + } + } + } + + //运营中心提成 + if (Objects.nonNull(store.getOperationCenterOrgId())) { + OperationCenter operationCenter = operationCenterQueryService.queryByOrg(store.getOperationCenterOrgId()); + if (!operationCenter.getAdministratorId().equals(revenueReward.getUserId())) { + synchronized (store.getOperationCenterOrgId().toString().intern()) { + RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_OPERATION_CENTER); + if (Objects.nonNull(recommendRewardConfig)) { + //收益信息 + RevenueReward ocRevenueReward = revenueRewardQueryService.queryByOrgId(store.getOperationCenterOrgId()); + //营收额 + BigDecimal revenue = recommendRewardConfig.calculateReward(record.getTotalAssociateOrderAmount()); + RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, TradeSceneEnum.ONLINE, + revenue, new BigDecimal(recommendRewardConfig.getValue()), BigDecimal.ZERO, revenue, record.getTotalAssociateOrderAmount()); + revenueRewardRecord.setContent(record.getContent()); + revenueRewardRecord.setCreateTime(record.getCreateTime()); + RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrderList.get(0).getId(), record.getTotalAssociateOrderAmount()); + revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord)); + revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); + + //钱包信息 + WalletAccount walletAccount = walletAccountQueryService.queryByType(store.getOperationCenterOrgId(), IdentityTypeEnum.ORGANIZATION); + BigDecimal originalBalance = walletAccount.getTotalBalance(); + walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); + walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); + WalletAccountRecord ocRecord = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true, originalBalance, walletAccount.getTotalBalance()); + ocRecord.setCreateTime(record.getCreateTime()); + walletAccount.setRecordList(Collections.singletonList(ocRecord)); + acquireRevenueRewardDomainService.handle(ocRevenueReward, walletAccount); + } + } + } + } + } + } + } + } + } }); } } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/RevenueRewardQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/RevenueRewardQueryService.java index 9b2ffe4..1a272af 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/RevenueRewardQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/RevenueRewardQueryService.java @@ -5,6 +5,7 @@ import com.qniao.dam.api.command.revenuereward.user.response.UserGetRevenueRewar import com.qniao.dam.api.query.revenuereward.user.request.*; import com.qniao.dam.api.query.revenuereward.user.response.*; 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.domian.aggregate.walletaccount.constant.IdentityTypeEnum; import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeSceneEnum; @@ -37,4 +38,8 @@ public interface RevenueRewardQueryService { IPage pageMatchmakerRevenueRewardRecord(PageUtil pageUtil, UserListMatchmakerRevenueRewardRecordQueryParams queryParams); List listAllRecordBy(TradeTypeEnum tradeType, TradeSceneEnum tradeScene); + + List listAssociateOrderBy(Long revenueRewardRecordId); + + List listAssociateOrderByOrderId(Long associateOrderId); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/impl/RevenueRewardQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/impl/RevenueRewardQueryServiceImpl.java index 9ac6326..c59358c 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/impl/RevenueRewardQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/impl/RevenueRewardQueryServiceImpl.java @@ -7,11 +7,13 @@ import com.qniao.dam.api.command.revenuereward.user.response.UserGetRevenueRewar import com.qniao.dam.api.query.revenuereward.user.request.*; import com.qniao.dam.api.query.revenuereward.user.response.*; 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.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.easyexcel.EasyExcelUtil; +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 com.qniao.dam.infrastructure.persistent.dao.org.OrganizationDao; @@ -49,6 +51,8 @@ public class RevenueRewardQueryServiceImpl implements RevenueRewardQueryService @Resource private RevenueRewardRecordDao revenueRewardRecordDao; @Resource + private RevenueRewardAssociateOrderRecordDao revenueRewardAssociateOrderRecordDao; + @Resource private OrganizationDao organizationDao; @Resource private StoreQueryService storeQueryService; @@ -200,6 +204,18 @@ public class RevenueRewardQueryServiceImpl implements RevenueRewardQueryService .orderByAsc(RevenueRewardRecord::getCreateTime)); } + @Override + public List listAssociateOrderBy(Long revenueRewardRecordId) { + return revenueRewardAssociateOrderRecordDao.selectList(new LambdaQueryWrapper() + .eq(RevenueRewardAssociateOrderRecord::getRevenueRewardRecordId, revenueRewardRecordId)); + } + + @Override + public List listAssociateOrderByOrderId(Long associateOrderId) { + return revenueRewardAssociateOrderRecordDao.selectList(new LambdaQueryWrapper() + .eq(RevenueRewardAssociateOrderRecord::getAssociateOrderId, associateOrderId)); + } + private List transformExport(List recordList) { List list = new ArrayList<>(); for (UserPageRevenueRewardRecordByOperatorVo record : recordList) {