From 2dfae06097d6d8b87595eeec5cb5f23f573c8c07 Mon Sep 17 00:00:00 2001 From: Derran Date: Wed, 21 Aug 2024 16:06:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=82=AC=E8=B5=8F=E6=8B=9B=E4=BA=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WalletAccountUserQueryController.java | 12 +- ...UserPageWalletAccountRecordQueryParam.java | 2 + .../reward/RewardApplicationService.java | 138 +++++++++++++----- .../persistent/dao/domain/StoreDao.java | 7 + .../RevenueRewardQueryService.java | 3 + .../impl/RevenueRewardQueryServiceImpl.java | 30 +++- .../dam/query/store/StoreQueryService.java | 7 + .../store/impl/StoreQueryServiceImpl.java | 20 +++ .../WalletAccountQueryService.java | 2 +- .../impl/WalletAccountQueryServiceImpl.java | 33 ++++- .../walletaccount/WalletAccountViewMapper.xml | 8 +- 11 files changed, 212 insertions(+), 50 deletions(-) create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/StoreDao.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/query/store/StoreQueryService.java create mode 100644 dating-agency-mall-server/src/main/java/com/qniao/dam/query/store/impl/StoreQueryServiceImpl.java diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/walletaccount/user/WalletAccountUserQueryController.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/walletaccount/user/WalletAccountUserQueryController.java index 594380b..d2fac1b 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/walletaccount/user/WalletAccountUserQueryController.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/walletaccount/user/WalletAccountUserQueryController.java @@ -5,6 +5,7 @@ import com.qniao.dam.api.query.walletaccount.user.response.UserGetWalletAccountR import com.qniao.dam.api.query.walletaccount.user.response.UserGetWalletAccountVo; import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount; import com.qniao.dam.query.walletaccount.WalletAccountQueryService; +import com.qniao.dau.infrastructure.constant.RequestHeaderFields; import com.qniao.domain.QnPage; import com.qniao.framework.utils.PageUtil; import com.qniao.framework.utils.TypeConvertUtils; @@ -25,18 +26,23 @@ public class WalletAccountUserQueryController { @GetMapping("get/wallet-account") @ApiOperation("用户获取钱包账号") - public UserGetWalletAccountVo userGetWalletAccount(@RequestParam("userId") Long userId) { - return walletAccountQueryService.getWalletAccountView(userId); + public UserGetWalletAccountVo userGetWalletAccount(@RequestParam("userId") Long userId, + @RequestHeader(name = RequestHeaderFields.FIELD_ORGANIZATION_ID, required = false) Long orgId) { + return walletAccountQueryService.getWalletAccountView(userId, orgId); } @GetMapping("page/wallet-account-record") @ApiOperation("用户获取钱包账号记录") public QnPage userPageWalletAccountRecord(@RequestParam("userId") Long userId, + @RequestHeader(name = RequestHeaderFields.FIELD_ORGANIZATION_ID, required = false) Long orgId, PageUtil pageUtil, UserPageWalletAccountRecordQueryParam queryParam) { - if (Objects.isNull(queryParam.getQueryUserId())){ + if (Objects.isNull(queryParam.getQueryUserId())) { queryParam.setQueryUserId(userId); } + if (Objects.isNull(queryParam.getQueryOrgId())) { + queryParam.setQueryOrgId(orgId); + } return PageUtil.convert(walletAccountQueryService.pageWalletAccountRecord(queryParam, pageUtil), UserGetWalletAccountRecordVo.class); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/walletaccount/user/request/UserPageWalletAccountRecordQueryParam.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/walletaccount/user/request/UserPageWalletAccountRecordQueryParam.java index cd59a99..5b7beca 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/walletaccount/user/request/UserPageWalletAccountRecordQueryParam.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/walletaccount/user/request/UserPageWalletAccountRecordQueryParam.java @@ -11,6 +11,8 @@ public class UserPageWalletAccountRecordQueryParam { private Long queryUserId; + private Long queryOrgId; + @ApiModelProperty("交易收益类型:101认证 102发布 103匹配 104推荐 202提现") private Integer tradeType; 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 566a201..0beb26e 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 @@ -12,7 +12,9 @@ import com.qniao.dam.domain.service.revenuereward.AcquireRevenueRewardDomainServ import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; import com.qniao.dam.infrastructure.persistent.dao.domain.MarriageInformationDao; import com.qniao.dam.infrastructure.persistent.dao.domain.OrderDao; +import com.qniao.dam.query.matchmaker.MatchmakerQueryService; import com.qniao.dam.query.revenuereward.RevenueRewardQueryService; +import com.qniao.dam.query.store.StoreQueryService; import com.qniao.dam.query.walletaccount.WalletAccountQueryService; import com.qniao.dam.domain.aggregate.order.entity.Order; import com.qniao.dam.domain.aggregate.rewardconfig.entity.RewardConfig; @@ -25,6 +27,8 @@ import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum; import com.qniao.dam.query.order.OrderQueryService; import com.qniao.dam.query.rewardconfig.RewardConfigQueryService; import com.qniao.das.domian.aggregate.marriageinformation.MarriageInformation; +import com.qniao.dau.domain.aggregate.matchmaker.entity.Matchmaker; +import com.qniao.dau.domain.aggregate.store.entity.Store; import org.springframework.stereotype.Service; import javax.annotation.Resource; @@ -50,6 +54,10 @@ public class RewardApplicationService { private RevenueRewardQueryService revenueRewardQueryService; @Resource private AcquireRevenueRewardDomainService acquireRevenueRewardDomainService; + @Resource + private MatchmakerQueryService matchmakerQueryService; + @Resource + private StoreQueryService storeQueryService; /** * 获得红娘推荐奖励 @@ -80,10 +88,7 @@ public class RewardApplicationService { revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); //钱包信息 - WalletAccount walletAccount = walletAccountQueryService.queryByUserId(dto.getInitiatorUserId()); - if (Objects.isNull(walletAccount)) { - walletAccount = WalletAccount.initUser(dto.getInitiatorUserId()); - } + WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getInitiatorUserId(), IdentityTypeEnum.INDIVIDUAL); walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true); @@ -99,9 +104,6 @@ public class RewardApplicationService { if (Objects.nonNull(recommendRewardConfig)) { //收益信息 RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(dto.getStoreOrgId()); - if (Objects.isNull(revenueReward)) { - revenueReward = RevenueReward.initOrg(dto.getStoreOrgId()); - } //营收额 BigDecimal revenue = recommendRewardConfig.calculate(rewardAmount); RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, @@ -113,9 +115,6 @@ public class RewardApplicationService { //钱包信息 WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getStoreOrgId(), IdentityTypeEnum.ORGANIZATION); - if (Objects.isNull(walletAccount)) { - walletAccount = WalletAccount.initOrg(dto.getStoreOrgId()); - } walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true); @@ -131,9 +130,6 @@ public class RewardApplicationService { if (Objects.nonNull(recommendRewardConfig)) { //收益信息 RevenueReward revenueReward = revenueRewardQueryService.queryByOrgId(dto.getOperationCenterOrgId()); - if (Objects.isNull(revenueReward)) { - revenueReward = RevenueReward.initOrg(dto.getOperationCenterOrgId()); - } //营收额 BigDecimal revenue = recommendRewardConfig.calculate(rewardAmount); RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, @@ -145,9 +141,6 @@ public class RewardApplicationService { //钱包信息 WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getStoreOrgId(), IdentityTypeEnum.ORGANIZATION); - if (Objects.isNull(walletAccount)) { - walletAccount = WalletAccount.initOrg(dto.getOperationCenterOrgId()); - } walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true); @@ -159,14 +152,16 @@ public class RewardApplicationService { } /** - * 获得红娘推荐奖励 + * 获得见面费用 + * 原门店享受红娘服务嘉宾(悬赏)5%提成奖励(来源于平台抽佣30%),分配情况为:红娘原门店5%、现门店10%、运营中心5%,平台10% */ public void acquireMatchmakerConfirmMeetingReward(AcquireMatchmakerConfirmMeetingRewardDto dto) { + BigDecimal serviceFee = BigDecimal.ZERO; + TradeTypeEnum tradeType = transform(dto.getRewardType()); + MarriageInformation meetingMi = marriageInformationDao.selectById(dto.getAssociatedMiId()); synchronized (dto.getReceiver().toString().intern()) { RewardConfig serviceFeeRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.PLATFORM_SERVICE_FEE); if (Objects.nonNull(serviceFeeRewardConfig)) { - MarriageInformation meetingMi = marriageInformationDao.selectById(dto.getAssociatedMiId()); - TradeTypeEnum tradeType = transform(dto.getRewardType()); //收益信息 RevenueReward revenueReward = revenueRewardQueryService.queryByUserId(dto.getReceiver()); if (Objects.isNull(revenueReward)) { @@ -175,7 +170,7 @@ public class RewardApplicationService { //营收额 BigDecimal revenue = dto.getReceivedAmount(); //服务费用 - BigDecimal serviceFee = serviceFeeRewardConfig.calculate(revenue); + serviceFee = serviceFeeRewardConfig.calculate(revenue); BigDecimal earnings = revenue.subtract(serviceFee); RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(tradeType, revenue, earnings, dto.getTotalAssociateOrderAmount()); @@ -192,10 +187,7 @@ public class RewardApplicationService { } revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); //钱包 - WalletAccount walletAccount = walletAccountQueryService.queryByUserId(dto.getReceiver()); - if (Objects.isNull(walletAccount)) { - walletAccount = WalletAccount.initUser(dto.getReceiver()); - } + WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getReceiver(), IdentityTypeEnum.INDIVIDUAL); walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(earnings)); walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); WalletAccountRecord walletAccountRecord = WalletAccountRecord.build(tradeType, earnings, true); @@ -203,26 +195,85 @@ public class RewardApplicationService { acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); } } + + Matchmaker matchmaker = matchmakerQueryService.queryByUserId(dto.getReceiver()); + if (Objects.nonNull(matchmaker) && Objects.nonNull(matchmaker.getStoreId())) { + //门店收益 + Store store = storeQueryService.queryById(matchmaker.getStoreId()); + handleAcquireReward(store.getOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_STORE_REWARD, serviceFee, meetingMi, + dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType); + //门店升级收益 + if (Objects.nonNull(store.getParentStoreId())) { + Store parentStore = storeQueryService.queryById(store.getParentStoreId()); + handleAcquireReward(parentStore.getOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_STORE_UPGRADE_REWARD, serviceFee, meetingMi, + dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType); + } + //运营中心 + if (Objects.nonNull(store.getOperationCenterOrgId())) { + handleAcquireReward(store.getOperationCenterOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_OPERATION_CENTER_REWARD, serviceFee, meetingMi, + dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType); + } + } + } + + private void handleAcquireReward(Long identityId, + IdentityTypeEnum identityType, + RewardTypeEnum rewardType, + BigDecimal amount, + MarriageInformation meetingMi, + BigDecimal totalAssociateOrderAmount, + List orderIdRekList, + TradeTypeEnum tradeType) { + if (Objects.nonNull(identityId)) { + synchronized (identityId.toString().intern()) { + RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(rewardType); + if (Objects.nonNull(recommendRewardConfig)) { + //收益信息 + RevenueReward revenueReward = revenueRewardQueryService.queryByType(identityId, identityType); + //营收额 + BigDecimal revenue = recommendRewardConfig.calculate(amount); + RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(tradeType, + revenue, revenue, totalAssociateOrderAmount); + revenueRewardRecord.handleContent(Collections.singletonList(meetingMi.getNickName())); + if (CollUtil.isNotEmpty(orderIdRekList)) { + List associateOrderRecordList = new ArrayList<>(); + for (Long associateOrderId : orderIdRekList) { + 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.queryByType(identityId, identityType); + walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue)); + walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); + WalletAccountRecord record = WalletAccountRecord.build(tradeType, revenue, true); + walletAccount.setRecordList(Collections.singletonList(record)); + acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); + } + } + } } /** * 确认匹配 */ public void acquireMatchmakerConfirmMatchReward(AcquireMatchmakerConfirmMatchRewardDto dto) { + BigDecimal serviceFee = BigDecimal.ZERO; + MarriageInformation associatedMi = marriageInformationDao.selectById(dto.getAssociatedMiId()); + TradeTypeEnum tradeType = transform(dto.getRewardType()); synchronized (dto.getReceiver().toString().intern()) { 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.initUser(dto.getReceiver()); - } + RevenueReward revenueReward = revenueRewardQueryService.queryByType(dto.getReceiver(), IdentityTypeEnum.INDIVIDUAL); //营收额 BigDecimal revenue = dto.getReceivedAmount(); //服务费用 - BigDecimal serviceFee = serviceFeeRewardConfig.calculate(revenue); + serviceFee = serviceFeeRewardConfig.calculate(revenue); BigDecimal earnings = revenue.subtract(serviceFee); RevenueRewardRecord revenueRewardRecord = RevenueRewardRecord.build(tradeType, revenue, earnings, dto.getTotalAssociateOrderAmount()); revenueRewardRecord.handleContent(Collections.singletonList(associatedMi.getNickName())); @@ -238,11 +289,7 @@ public class RewardApplicationService { } revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord)); - - WalletAccount walletAccount = walletAccountQueryService.queryByUserId(dto.getReceiver()); - if (Objects.isNull(walletAccount)) { - walletAccount = WalletAccount.initUser(dto.getReceiver()); - } + WalletAccount walletAccount = walletAccountQueryService.queryByType(dto.getReceiver(), IdentityTypeEnum.INDIVIDUAL); walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(earnings)); walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance())); WalletAccountRecord record = WalletAccountRecord.build(tradeType, earnings, true); @@ -250,6 +297,25 @@ public class RewardApplicationService { acquireRevenueRewardDomainService.handle(revenueReward, walletAccount); } } + + Matchmaker matchmaker = matchmakerQueryService.queryByUserId(dto.getReceiver()); + if (Objects.nonNull(matchmaker) && Objects.nonNull(matchmaker.getStoreId())) { + //门店收益 + Store store = storeQueryService.queryById(matchmaker.getStoreId()); + handleAcquireReward(store.getOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_STORE_REWARD, serviceFee, associatedMi, + dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType); + //门店升级收益 + if (Objects.nonNull(store.getParentStoreId())) { + Store parentStore = storeQueryService.queryById(store.getParentStoreId()); + handleAcquireReward(parentStore.getOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_STORE_UPGRADE_REWARD, serviceFee, associatedMi, + dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType); + } + //运营中心 + if (Objects.nonNull(store.getOperationCenterOrgId())) { + handleAcquireReward(store.getOperationCenterOrgId(), IdentityTypeEnum.ORGANIZATION, RewardTypeEnum.PLATFORM_SERVICE_OPERATION_CENTER_REWARD, serviceFee, associatedMi, + dto.getTotalAssociateOrderAmount(), dto.getOrderIdRelList(), tradeType); + } + } } private TradeTypeEnum transform(RewardTypeEnum rewardType) { diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/StoreDao.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/StoreDao.java new file mode 100644 index 0000000..94652a1 --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/StoreDao.java @@ -0,0 +1,7 @@ +package com.qniao.dam.infrastructure.persistent.dao.domain; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.qniao.dau.domain.aggregate.store.entity.Store; + +public interface StoreDao extends BaseMapper { +} 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 7c72705..cc2df94 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 @@ -6,6 +6,7 @@ import com.qniao.dam.api.query.revenuereward.user.request.UsePageRevenueRewardRe import com.qniao.dam.api.query.revenuereward.user.response.UseGetRevenueRewardAbstractVo; import com.qniao.dam.api.query.revenuereward.user.response.UseGetRevenueRewardRecordVo; import com.qniao.dam.domain.aggregate.revenuereward.entity.RevenueReward; +import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; import com.qniao.framework.utils.PageUtil; public interface RevenueRewardQueryService { @@ -16,4 +17,6 @@ public interface RevenueRewardQueryService { IPage pageRevenueRewardRecord(PageUtil pageUtil, UsePageRevenueRewardRecordQueryParams queryParams); RevenueReward queryByOrgId(Long orgId); + + RevenueReward queryByType(Long identityId, IdentityTypeEnum identityType); } 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 adedecd..155edfd 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,6 +7,7 @@ import com.qniao.dam.api.query.revenuereward.user.request.UsePageRevenueRewardRe import com.qniao.dam.api.query.revenuereward.user.response.UseGetRevenueRewardAbstractVo; import com.qniao.dam.api.query.revenuereward.user.response.UseGetRevenueRewardRecordVo; import com.qniao.dam.domain.aggregate.revenuereward.entity.RevenueReward; +import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; import com.qniao.dam.infrastructure.persistent.dao.domain.RevenueRewardDao; import com.qniao.dam.infrastructure.persistent.dao.view.RevenueRewardViewDao; import com.qniao.dam.query.revenuereward.RevenueRewardQueryService; @@ -15,6 +16,7 @@ import com.qniao.framework.utils.PageUtil; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Objects; @Service public class RevenueRewardQueryServiceImpl implements RevenueRewardQueryService { @@ -33,9 +35,35 @@ public class RevenueRewardQueryServiceImpl implements RevenueRewardQueryService @Override public RevenueReward queryByOrgId(Long orgId) { - return revenueRewardDao.selectOne(new LambdaQueryWrapper() + RevenueReward revenueReward = revenueRewardDao.selectOne(new LambdaQueryWrapper() .eq(RevenueReward::getOrgId, orgId) .last("limit 1")); + if (Objects.isNull(revenueReward)) { + revenueReward = RevenueReward.initOrg(orgId); + } + return revenueReward; + } + + @Override + public RevenueReward queryByType(Long identityId, + IdentityTypeEnum identityType) { + RevenueReward revenueReward = null; + if (IdentityTypeEnum.INDIVIDUAL.equals(identityType)) { + revenueReward = revenueRewardDao.selectOne(new LambdaQueryWrapper() + .eq(RevenueReward::getUserId, identityId) + .last("limit 1")); + if (Objects.isNull(revenueReward)) { + revenueReward = RevenueReward.initUser(identityId); + } + } else { + revenueReward = revenueRewardDao.selectOne(new LambdaQueryWrapper() + .eq(RevenueReward::getOrgId, identityId) + .last("limit 1")); + if (Objects.isNull(revenueReward)) { + revenueReward = RevenueReward.initOrg(identityId); + } + } + return revenueReward; } @Override diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/store/StoreQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/store/StoreQueryService.java new file mode 100644 index 0000000..d5484dc --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/store/StoreQueryService.java @@ -0,0 +1,7 @@ +package com.qniao.dam.query.store; + +import com.qniao.dau.domain.aggregate.store.entity.Store; + +public interface StoreQueryService { + Store queryById(Long id); +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/store/impl/StoreQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/store/impl/StoreQueryServiceImpl.java new file mode 100644 index 0000000..711695b --- /dev/null +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/store/impl/StoreQueryServiceImpl.java @@ -0,0 +1,20 @@ +package com.qniao.dam.query.store.impl; + +import com.qniao.dam.infrastructure.persistent.dao.domain.StoreDao; +import com.qniao.dam.query.store.StoreQueryService; +import com.qniao.dau.domain.aggregate.store.entity.Store; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; + +@Service +public class StoreQueryServiceImpl implements StoreQueryService { + + @Resource + private StoreDao storeDao; + + @Override + public Store queryById(Long id) { + return storeDao.selectById(id); + } +} diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/walletaccount/WalletAccountQueryService.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/walletaccount/WalletAccountQueryService.java index 9d5a0b1..9df09a1 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/walletaccount/WalletAccountQueryService.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/walletaccount/WalletAccountQueryService.java @@ -14,7 +14,7 @@ public interface WalletAccountQueryService { IPage pageWalletAccountRecord(UserPageWalletAccountRecordQueryParam queryParam, PageUtil pageUtil); - UserGetWalletAccountVo getWalletAccountView(Long userId); + UserGetWalletAccountVo getWalletAccountView(Long userId, Long orgId); WalletAccount queryByType(Long identityId, IdentityTypeEnum identityTypeEnum); } diff --git a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/walletaccount/impl/WalletAccountQueryServiceImpl.java b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/walletaccount/impl/WalletAccountQueryServiceImpl.java index 09b48c6..0379a21 100644 --- a/dating-agency-mall-server/src/main/java/com/qniao/dam/query/walletaccount/impl/WalletAccountQueryServiceImpl.java +++ b/dating-agency-mall-server/src/main/java/com/qniao/dam/query/walletaccount/impl/WalletAccountQueryServiceImpl.java @@ -44,15 +44,23 @@ public class WalletAccountQueryServiceImpl implements WalletAccountQueryService } @Override - public UserGetWalletAccountVo getWalletAccountView(Long userId) { + public UserGetWalletAccountVo getWalletAccountView(Long userId, Long orgId) { + Long identityId = userId; + IdentityTypeEnum identityType = IdentityTypeEnum.INDIVIDUAL; + if (Objects.nonNull(orgId)) { + identityId = orgId; + identityType = IdentityTypeEnum.ORGANIZATION; + } UserGetWalletAccountVo walletAccountVo = new UserGetWalletAccountVo(); - WalletAccount walletAccount = queryByUserId(userId); + WalletAccount walletAccount = queryByType(identityId, identityType); if (Objects.nonNull(walletAccount)) { walletAccountVo = TypeConvertUtils.convert(walletAccount, UserGetWalletAccountVo.class); - walletAccountVo.setTotalWithdrawBalance(walletAccountRecordDao.selectList(new LambdaQueryWrapper() - .eq(WalletAccountRecord::getWalletAccountId, walletAccount.getId()) - .eq(WalletAccountRecord::getTradeType, TradeTypeEnum.WITHDRAW)) - .stream().map(WalletAccountRecord::getTradeAmount).reduce(BigDecimal.ZERO, BigDecimal::add)); + if (Objects.nonNull(walletAccount.getId())) { + walletAccountVo.setTotalWithdrawBalance(walletAccountRecordDao.selectList(new LambdaQueryWrapper() + .eq(WalletAccountRecord::getWalletAccountId, walletAccount.getId()) + .eq(WalletAccountRecord::getTradeType, TradeTypeEnum.WITHDRAW)) + .stream().map(WalletAccountRecord::getTradeAmount).reduce(BigDecimal.ZERO, BigDecimal::add)); + } } return walletAccountVo; } @@ -60,14 +68,23 @@ public class WalletAccountQueryServiceImpl implements WalletAccountQueryService @Override public WalletAccount queryByType(Long identityId, IdentityTypeEnum identityType) { + WalletAccount walletAccount = null; if (IdentityTypeEnum.INDIVIDUAL.equals(identityType)) { - return walletAccountDao.selectOne(new LambdaQueryWrapper() + walletAccount = walletAccountDao.selectOne(new LambdaQueryWrapper() .eq(WalletAccount::getUserId, identityId) .last("limit 1")); + if (Objects.isNull(walletAccount)) { + walletAccount = WalletAccount.initUser(identityId); + } + return walletAccount; } else { - return walletAccountDao.selectOne(new LambdaQueryWrapper() + walletAccount = walletAccountDao.selectOne(new LambdaQueryWrapper() .eq(WalletAccount::getOrgId, identityId) .last("limit 1")); + if (Objects.isNull(walletAccount)) { + walletAccount = WalletAccount.initOrg(identityId); + } + return walletAccount; } } } diff --git a/dating-agency-mall-server/src/main/resources/mapper/walletaccount/WalletAccountViewMapper.xml b/dating-agency-mall-server/src/main/resources/mapper/walletaccount/WalletAccountViewMapper.xml index 83cb9c1..9ed9853 100644 --- a/dating-agency-mall-server/src/main/resources/mapper/walletaccount/WalletAccountViewMapper.xml +++ b/dating-agency-mall-server/src/main/resources/mapper/walletaccount/WalletAccountViewMapper.xml @@ -14,7 +14,13 @@ dwar.is_income 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 and dwa.user_id=#{queryParam.queryUserId} + where dwa.is_delete=0 + + and dwa.user_id = #{queryParam.queryUserId} + + + and dwa.org_id = #{queryParam.queryOrgId} + and dwar.trade_type = #{queryParam.tradeType}