Browse Source

悬赏招亲

master
张彭杰 1 year ago
parent
commit
2dfae06097
11 changed files with 212 additions and 50 deletions
  1. 12
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/walletaccount/user/WalletAccountUserQueryController.java
  2. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/query/walletaccount/user/request/UserPageWalletAccountRecordQueryParam.java
  3. 138
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java
  4. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/infrastructure/persistent/dao/domain/StoreDao.java
  5. 3
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/RevenueRewardQueryService.java
  6. 30
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/impl/RevenueRewardQueryServiceImpl.java
  7. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/store/StoreQueryService.java
  8. 20
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/store/impl/StoreQueryServiceImpl.java
  9. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/walletaccount/WalletAccountQueryService.java
  10. 33
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/walletaccount/impl/WalletAccountQueryServiceImpl.java
  11. 8
      dating-agency-mall-server/src/main/resources/mapper/walletaccount/WalletAccountViewMapper.xml

12
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<UserGetWalletAccountRecordVo> 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);
}

2
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;

138
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<Long> 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<RevenueRewardAssociateOrderRecord> 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) {

7
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<Store> {
}

3
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<UseGetRevenueRewardRecordVo> pageRevenueRewardRecord(PageUtil pageUtil, UsePageRevenueRewardRecordQueryParams queryParams);
RevenueReward queryByOrgId(Long orgId);
RevenueReward queryByType(Long identityId, IdentityTypeEnum identityType);
}

30
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 revenueReward = revenueRewardDao.selectOne(new LambdaQueryWrapper<RevenueReward>()
.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<RevenueReward>()
.eq(RevenueReward::getUserId, identityId)
.last("limit 1"));
if (Objects.isNull(revenueReward)) {
revenueReward = RevenueReward.initUser(identityId);
}
} else {
revenueReward = revenueRewardDao.selectOne(new LambdaQueryWrapper<RevenueReward>()
.eq(RevenueReward::getOrgId, identityId)
.last("limit 1"));
if (Objects.isNull(revenueReward)) {
revenueReward = RevenueReward.initOrg(identityId);
}
}
return revenueReward;
}
@Override

7
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);
}

20
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);
}
}

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

@ -14,7 +14,7 @@ public interface WalletAccountQueryService {
IPage<UserGetWalletAccountRecordVo> pageWalletAccountRecord(UserPageWalletAccountRecordQueryParam queryParam, PageUtil pageUtil);
UserGetWalletAccountVo getWalletAccountView(Long userId);
UserGetWalletAccountVo getWalletAccountView(Long userId, Long orgId);
WalletAccount queryByType(Long identityId, IdentityTypeEnum identityTypeEnum);
}

33
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<WalletAccountRecord>()
.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<WalletAccountRecord>()
.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>()
walletAccount = walletAccountDao.selectOne(new LambdaQueryWrapper<WalletAccount>()
.eq(WalletAccount::getUserId, identityId)
.last("limit 1"));
if (Objects.isNull(walletAccount)) {
walletAccount = WalletAccount.initUser(identityId);
}
return walletAccount;
} else {
return walletAccountDao.selectOne(new LambdaQueryWrapper<WalletAccount>()
walletAccount = walletAccountDao.selectOne(new LambdaQueryWrapper<WalletAccount>()
.eq(WalletAccount::getOrgId, identityId)
.last("limit 1"));
if (Objects.isNull(walletAccount)) {
walletAccount = WalletAccount.initOrg(identityId);
}
return walletAccount;
}
}
}

8
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
<if test="queryParam.queryUserId != null">
and dwa.user_id = #{queryParam.queryUserId}
</if>
<if test="queryParam.queryOrgId != null">
and dwa.org_id = #{queryParam.queryOrgId}
</if>
<if test="queryParam.tradeType != null">
and dwar.trade_type = #{queryParam.tradeType}
</if>

Loading…
Cancel
Save