Browse Source

悬赏招亲

master
张彭杰 1 year ago
parent
commit
ab0262b606
7 changed files with 111 additions and 9 deletions
  1. 6
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/revenuereward/entity/RevenueReward.java
  2. 15
      dating-agency-mall-entity/src/main/java/com/qniao/dam/domain/aggregate/walletaccount/entity/WalletAccount.java
  3. 72
      dating-agency-mall-server/src/main/java/com/qniao/dam/application/service/reward/RewardApplicationService.java
  4. 2
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/RevenueRewardQueryService.java
  5. 7
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/impl/RevenueRewardQueryServiceImpl.java
  6. 3
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/walletaccount/WalletAccountQueryService.java
  7. 15
      dating-agency-mall-server/src/main/java/com/qniao/dam/query/walletaccount/impl/WalletAccountQueryServiceImpl.java

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

@ -23,7 +23,7 @@ public class RevenueReward extends Entity<RevenueReward> {
private Long orgId;
@ApiModelProperty("身份类型(个人、组织)")
private IdentityTypeEnum buyerIdentityType;
private IdentityTypeEnum identityType;
@ApiModelProperty("收益记录")
private transient List<RevenueRewardRecord> recordList;
@ -31,14 +31,14 @@ public class RevenueReward extends Entity<RevenueReward> {
public static RevenueReward initUser(Long userId) {
RevenueReward revenueReward = new RevenueReward();
revenueReward.setUserId(userId);
revenueReward.setBuyerIdentityType(IdentityTypeEnum.INDIVIDUAL);
revenueReward.setIdentityType(IdentityTypeEnum.INDIVIDUAL);
return revenueReward;
}
public static RevenueReward initOrg(Long orgId) {
RevenueReward revenueReward = new RevenueReward();
revenueReward.setOrgId(orgId);
revenueReward.setBuyerIdentityType(IdentityTypeEnum.ORGANIZATION);
revenueReward.setIdentityType(IdentityTypeEnum.ORGANIZATION);
return revenueReward;
}
}

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

@ -23,7 +23,7 @@ public class WalletAccount extends Entity<WalletAccount> {
private Long orgId;
@ApiModelProperty("身份类型(个人、组织)")
private IdentityTypeEnum buyerIdentityType;
private IdentityTypeEnum identityType;
@ApiModelProperty("总余额")
private BigDecimal totalBalance;
@ -37,9 +37,20 @@ public class WalletAccount extends Entity<WalletAccount> {
@ApiModelProperty("钱包记录")
private transient List<WalletAccountRecord> recordList;
public static WalletAccount init(Long userId) {
public static WalletAccount initUser(Long userId) {
WalletAccount walletAccount = new WalletAccount();
walletAccount.setUserId(userId);
walletAccount.setIdentityType(IdentityTypeEnum.INDIVIDUAL);
walletAccount.setTotalBalance(BigDecimal.ZERO);
walletAccount.setAvailableBalance(BigDecimal.ZERO);
walletAccount.setFrozenBalance(BigDecimal.ZERO);
return walletAccount;
}
public static WalletAccount initOrg(Long orgId) {
WalletAccount walletAccount = new WalletAccount();
walletAccount.setOrgId(orgId);
walletAccount.setIdentityType(IdentityTypeEnum.ORGANIZATION);
walletAccount.setTotalBalance(BigDecimal.ZERO);
walletAccount.setAvailableBalance(BigDecimal.ZERO);
walletAccount.setFrozenBalance(BigDecimal.ZERO);

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

@ -9,6 +9,7 @@ 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.service.revenuereward.AcquireRevenueRewardDomainService;
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.revenuereward.RevenueRewardQueryService;
@ -81,7 +82,71 @@ public class RewardApplicationService {
//钱包信息
WalletAccount walletAccount = walletAccountQueryService.queryByUserId(dto.getInitiatorUserId());
if (Objects.isNull(walletAccount)) {
walletAccount = WalletAccount.init(dto.getInitiatorUserId());
walletAccount = WalletAccount.initUser(dto.getInitiatorUserId());
}
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(revenue));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
WalletAccountRecord record = WalletAccountRecord.build(TradeTypeEnum.MATCHMAKER_JOIN_RECOMMEND_FEE, revenue, true);
walletAccount.setRecordList(Collections.singletonList(record));
acquireRevenueRewardDomainService.handle(revenueReward, walletAccount);
}
}
}
//门店提成
if (Objects.nonNull(dto.getStoreOrgId())) {
synchronized (dto.getStoreOrgId().toString().intern()) {
RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_STORE);
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,
revenue, revenue, associateOrder.getSettlementAmount());
revenueRewardRecord.handleContent(Collections.singletonList(StrUtil.isNotBlank(associateOrder.getOrderBelongName()) ? associateOrder.getOrderBelongName() : ""));
RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount());
revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord));
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包信息
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);
walletAccount.setRecordList(Collections.singletonList(record));
acquireRevenueRewardDomainService.handle(revenueReward, walletAccount);
}
}
}
//运营中心提成
if (Objects.nonNull(dto.getOperationCenterOrgId())) {
synchronized (dto.getOperationCenterOrgId().toString().intern()) {
RewardConfig recommendRewardConfig = rewardConfigQueryService.queryByRewardType(RewardTypeEnum.MATCHMAKER_JOIN_RECOMMEND_OPERATION_CENTER);
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,
revenue, revenue, associateOrder.getSettlementAmount());
revenueRewardRecord.handleContent(Collections.singletonList(StrUtil.isNotBlank(associateOrder.getOrderBelongName()) ? associateOrder.getOrderBelongName() : ""));
RevenueRewardAssociateOrderRecord associateOrderRecord = RevenueRewardAssociateOrderRecord.build(associateOrder.getId(), associateOrder.getSettlementAmount());
revenueRewardRecord.setAssociateOrderRecordList(Collections.singletonList(associateOrderRecord));
revenueReward.setRecordList(Collections.singletonList(revenueRewardRecord));
//钱包信息
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()));
@ -91,7 +156,6 @@ public class RewardApplicationService {
}
}
}
//运营中心 + 门店提成
}
/**
@ -130,7 +194,7 @@ public class RewardApplicationService {
//钱包
WalletAccount walletAccount = walletAccountQueryService.queryByUserId(dto.getReceiver());
if (Objects.isNull(walletAccount)) {
walletAccount = WalletAccount.init(dto.getReceiver());
walletAccount = WalletAccount.initUser(dto.getReceiver());
}
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(earnings));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));
@ -177,7 +241,7 @@ public class RewardApplicationService {
WalletAccount walletAccount = walletAccountQueryService.queryByUserId(dto.getReceiver());
if (Objects.isNull(walletAccount)) {
walletAccount = WalletAccount.init(dto.getReceiver());
walletAccount = WalletAccount.initUser(dto.getReceiver());
}
walletAccount.setAvailableBalance(walletAccount.getAvailableBalance().add(earnings));
walletAccount.setTotalBalance(walletAccount.getAvailableBalance().add(walletAccount.getFrozenBalance()));

2
dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/RevenueRewardQueryService.java

@ -14,4 +14,6 @@ public interface RevenueRewardQueryService {
UseGetRevenueRewardAbstractVo getRevenueRewardAbstract(UseGetRevenueRewardAbstractQueryParams queryParams);
IPage<UseGetRevenueRewardRecordVo> pageRevenueRewardRecord(PageUtil pageUtil, UsePageRevenueRewardRecordQueryParams queryParams);
RevenueReward queryByOrgId(Long orgId);
}

7
dating-agency-mall-server/src/main/java/com/qniao/dam/query/revenuereward/impl/RevenueRewardQueryServiceImpl.java

@ -31,6 +31,13 @@ public class RevenueRewardQueryServiceImpl implements RevenueRewardQueryService
.last("limit 1"));
}
@Override
public RevenueReward queryByOrgId(Long orgId) {
return revenueRewardDao.selectOne(new LambdaQueryWrapper<RevenueReward>()
.eq(RevenueReward::getOrgId, orgId)
.last("limit 1"));
}
@Override
public UseGetRevenueRewardAbstractVo getRevenueRewardAbstract(UseGetRevenueRewardAbstractQueryParams queryParams) {
return revenueRewardViewDao.getRevenueRewardAbstract(queryParams);

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

@ -5,6 +5,7 @@ import com.qniao.dam.api.query.walletaccount.user.request.UserPageWalletAccountR
import com.qniao.dam.api.query.walletaccount.user.response.UserGetWalletAccountRecordVo;
import com.qniao.dam.api.query.walletaccount.user.response.UserGetWalletAccountVo;
import com.qniao.dam.domain.aggregate.walletaccount.entity.WalletAccount;
import com.qniao.dam.domian.aggregate.walletaccount.constant.IdentityTypeEnum;
import com.qniao.framework.utils.PageUtil;
@ -14,4 +15,6 @@ public interface WalletAccountQueryService {
IPage<UserGetWalletAccountRecordVo> pageWalletAccountRecord(UserPageWalletAccountRecordQueryParam queryParam, PageUtil pageUtil);
UserGetWalletAccountVo getWalletAccountView(Long userId);
WalletAccount queryByType(Long identityId, IdentityTypeEnum identityTypeEnum);
}

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

@ -6,6 +6,7 @@ import com.qniao.dam.api.query.walletaccount.user.request.UserPageWalletAccountR
import com.qniao.dam.api.query.walletaccount.user.response.UserGetWalletAccountRecordVo;
import com.qniao.dam.api.query.walletaccount.user.response.UserGetWalletAccountVo;
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.persistent.dao.domain.WalletAccountRecordDao;
import com.qniao.dam.infrastructure.persistent.dao.view.WalletAccountViewDao;
@ -55,4 +56,18 @@ public class WalletAccountQueryServiceImpl implements WalletAccountQueryService
}
return walletAccountVo;
}
@Override
public WalletAccount queryByType(Long identityId,
IdentityTypeEnum identityType) {
if (IdentityTypeEnum.INDIVIDUAL.equals(identityType)) {
return walletAccountDao.selectOne(new LambdaQueryWrapper<WalletAccount>()
.eq(WalletAccount::getUserId, identityId)
.last("limit 1"));
} else {
return walletAccountDao.selectOne(new LambdaQueryWrapper<WalletAccount>()
.eq(WalletAccount::getOrgId, identityId)
.last("limit 1"));
}
}
}
Loading…
Cancel
Save