Browse Source

线下收益

master
张彭杰 1 year ago
parent
commit
7609662ec1
4 changed files with 97 additions and 1 deletions
  1. 1
      dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/reward/user/RewardUserCommandController.java
  2. 76
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java
  3. 5
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/RevenueRewardQueryService.java
  4. 16
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/impl/RevenueRewardQueryServiceImpl.java

1
dating-agency-mall-server/src/main/java/com/qniao/dam/api/command/reward/user/RewardUserCommandController.java

@ -27,7 +27,6 @@ public class RewardUserCommandController {
@ApiOperation("补充门店+运营中心的红娘加盟佣金--临时") @ApiOperation("补充门店+运营中心的红娘加盟佣金--临时")
@PostMapping("replenish/matchmaker-join-recommend") @PostMapping("replenish/matchmaker-join-recommend")
@IgnoreResponseAdvice
public void replenishMatchmakerJoinRecommend() { public void replenishMatchmakerJoinRecommend() {
rewardApplicationService.replenishMatchmakerJoinRecommend(); rewardApplicationService.replenishMatchmakerJoinRecommend();
} }

76
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 -> { revenueRewardRecordList.forEach(record -> {
RevenueReward revenueReward = revenueRewardDao.selectById(record.getRevenueRewardId()); RevenueReward revenueReward = revenueRewardDao.selectById(record.getRevenueRewardId());
//判断是否个人收入 //判断是否个人收入
if (IdentityTypeEnum.INDIVIDUAL.equals(revenueReward.getIdentityType())) {
List<RevenueRewardAssociateOrderRecord> associateOrderList = revenueRewardQueryService.listAssociateOrderBy(revenueReward.getId());
if (CollUtil.isNotEmpty(associateOrderList)) {
List<RevenueRewardAssociateOrderRecord> 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);
}
}
}
}
}
}
}
}
}
}); });
} }
} }

5
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.request.*;
import com.qniao.dam.api.query.revenuereward.user.response.*; 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.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.RevenueRewardRecord;
import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; 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.TradeSceneEnum;
@ -37,4 +38,8 @@ public interface RevenueRewardQueryService {
IPage<UserPageMatchmakerRevenueRewardRecordVo> pageMatchmakerRevenueRewardRecord(PageUtil pageUtil, UserListMatchmakerRevenueRewardRecordQueryParams queryParams); IPage<UserPageMatchmakerRevenueRewardRecordVo> pageMatchmakerRevenueRewardRecord(PageUtil pageUtil, UserListMatchmakerRevenueRewardRecordQueryParams queryParams);
List<RevenueRewardRecord> listAllRecordBy(TradeTypeEnum tradeType, TradeSceneEnum tradeScene); List<RevenueRewardRecord> listAllRecordBy(TradeTypeEnum tradeType, TradeSceneEnum tradeScene);
List<RevenueRewardAssociateOrderRecord> listAssociateOrderBy(Long revenueRewardRecordId);
List<RevenueRewardAssociateOrderRecord> listAssociateOrderByOrderId(Long associateOrderId);
} }

16
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.request.*;
import com.qniao.dam.api.query.revenuereward.user.response.*; 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.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.RevenueRewardRecord;
import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum; 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.TradeSceneEnum;
import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum; import com.qniao.dam.domian.aggregate.walletaccount.constant.TradeTypeEnum;
import com.qniao.dam.infrastructure.easyexcel.EasyExcelUtil; 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.RevenueRewardDao;
import com.qniao.dam.infrastructure.persistent.dao.domain.RevenueRewardRecordDao; import com.qniao.dam.infrastructure.persistent.dao.domain.RevenueRewardRecordDao;
import com.qniao.dam.infrastructure.persistent.dao.org.OrganizationDao; import com.qniao.dam.infrastructure.persistent.dao.org.OrganizationDao;
@ -49,6 +51,8 @@ public class RevenueRewardQueryServiceImpl implements RevenueRewardQueryService
@Resource @Resource
private RevenueRewardRecordDao revenueRewardRecordDao; private RevenueRewardRecordDao revenueRewardRecordDao;
@Resource @Resource
private RevenueRewardAssociateOrderRecordDao revenueRewardAssociateOrderRecordDao;
@Resource
private OrganizationDao organizationDao; private OrganizationDao organizationDao;
@Resource @Resource
private StoreQueryService storeQueryService; private StoreQueryService storeQueryService;
@ -200,6 +204,18 @@ public class RevenueRewardQueryServiceImpl implements RevenueRewardQueryService
.orderByAsc(RevenueRewardRecord::getCreateTime)); .orderByAsc(RevenueRewardRecord::getCreateTime));
} }
@Override
public List<RevenueRewardAssociateOrderRecord> listAssociateOrderBy(Long revenueRewardRecordId) {
return revenueRewardAssociateOrderRecordDao.selectList(new LambdaQueryWrapper<RevenueRewardAssociateOrderRecord>()
.eq(RevenueRewardAssociateOrderRecord::getRevenueRewardRecordId, revenueRewardRecordId));
}
@Override
public List<RevenueRewardAssociateOrderRecord> listAssociateOrderByOrderId(Long associateOrderId) {
return revenueRewardAssociateOrderRecordDao.selectList(new LambdaQueryWrapper<RevenueRewardAssociateOrderRecord>()
.eq(RevenueRewardAssociateOrderRecord::getAssociateOrderId, associateOrderId));
}
private List<RevenueRewardRecordExportVo> transformExport(List<UserPageRevenueRewardRecordByOperatorVo> recordList) { private List<RevenueRewardRecordExportVo> transformExport(List<UserPageRevenueRewardRecordByOperatorVo> recordList) {
List<RevenueRewardRecordExportVo> list = new ArrayList<>(); List<RevenueRewardRecordExportVo> list = new ArrayList<>();
for (UserPageRevenueRewardRecordByOperatorVo record : recordList) { for (UserPageRevenueRewardRecordByOperatorVo record : recordList) {

Loading…
Cancel
Save